IT 살이/04. 기술 - 프로그래밍 썸네일형 리스트형 [연재 06] ClickOnce 보안 모델 어셈블리가 로딩될 때, 어셈블리의 근원지가 로컬 PC가 아닌 경우 즉 로컬 PC의 외부에서 유입된 모든 어셈블리에서 대해서는 기본적으로 CAS가 적용된다. 달봉이는 처음에 보안(권한)과 관련해서, 로컬 PC에서 실행되는 일반 애플리케이션과 “온/오프라인용” 모드로 설치된 ClickOnce의 차이점이 궁금했다. ClickOnce 애플리케이션은 “온/오프라인용”으로 설정되면 로컬에 캐시된 애플리케이션이 구동된다. 이런 경우 스마트클라이언트 애플리케이션은 로컬 PC에서 구동되는 애플리케이션과 어떻게 구분되어서 적절한 보안 정책을 적용시킬 수 있게 되는 것일까? 이 포스트를 읽고 나면 답이 나올 것이다. ■ ClickOnce 애플리케이션 권한 설정 ClickOnce 애플리케이션의 권한은 애플리케이션 메너페스트(.. 더보기 [연재 05] HOW TO : Upate ClickOnce Application 이곳에서는 ClickOnce 애플리케이션의 업데이트와 롤백(roll-back) 그리고 업데이트를 선택적으로 하거나 필수적으로 설정할 수 있는 방법에 대해서도 알아본다. 1. 업데이트 2. 버전 롤백 3. 선택적 업데이트 참조 문서 ClickOnce Deployment Manifest - msdn http://msdn2.microsoft.com/en-us/k26e96zf.aspx http://msdn2.microsoft.com/en-us/t7050f3w(VS.80).aspx ClickOnce Deployment Technology - Peter Bromberg http://www.wise.com/Library/ClickOnce.pdf ClickOnce : Bringing Ease and Reliabilit.. 더보기 [연재 04] ClickOnce : Look Into The Internals 앞의 포스트까지는 "보이는대로, 하라는대로" 했다. 이제 그 이면에서 무슨 일들이 일어나는지에 포커스를 두겠다. 주로 다음 3가지 주제를 다루려고 한다. - ClickOnce와 관련된 메너페스트 파일(애플리케이션 메너페스트, 배포 메너페스트) - 클라이언트측 캐시 - 애플리케이션 구동 메커니즘 1. 메너페스트 파일 Visual Studio.NET 2005를 이용하면 애플리케이션에 포함된 파일을 지정된 곳으로 복사할뿐만 아니라 몇 개의 메너페스트(manifest) 파일을 자동 생성해준다 : 배포 메너페스트(.application), 애플리케이션 메너페스트(.exe.manifest). ClickOnce 애플리케이션은 인스톨 패키지가 없이 이 두 메너페스트 파일에 애플리케이션 인스톨에 필요한 모든 정보가 기술.. 더보기 [연재 03] ClickOnce : Enjoy The Appearance 2 "보이는대로 하라는대로" 하면서 ClickOnce를 즐기는 두번째 시간이다. 앞 포스트에서 본 것처럼 다음 메뉴를 선택하면 Visual Studio.NET 2005의 게시마법사를 만날 수 있다. 프로젝트 선택->빌드 메뉴->게시 선택 프로젝트 오른쪽 클릭->게시...선택 이런 메뉴를 통해서 게시 마법사를 바로 실행할 수 있지만, Visual Studio.NET에서는 그전에 여러가지 설정을 할 수 있도록 하고 있다. 이 포스트에서는 게시전에 여러 가지 설정들을 수행할 수 있는 Visual Studio 2005의 게시 디자이너를 소개한다. 배포할 EXE 프로젝트 오른쪽 클릭->속성->게시탭 이 순서대로 수행하면 다음과 같은 게시용 디자이너가 출력된다. 게시 디자이너 각 설정들을 알아보면 다음과 같다. 게시 .. 더보기 [연재 02] ClickOnce : Enjoy The Appearance 1 이번 포스트부터는 되도록이면 목차를 자세히 잡더라도 좀 짧게 할려고 한다. 포스트가 너무 길면 지쳐서 또는 질려서 끝까지 읽어보는데도 상당한 수고가 필요할 것이라는 생각에서다. 이번 포스트에서는 ClickOnce 배포를 위해서 Visual Studio.NET 2005에서 지원해주는 내용을 "보이는대로 하라는 대로" 따라 하면서 즐기는 시간이다. 이름하여 "Enjoy The Appearance"이다. 다음 포스트도 마찬가지일 것이다. 그런 다음 그 보이는 이면을 이해하는 시간을 갖게 될 것이다. 이름하여 "Look Into The Internals" 시간을 갖겠다. 1. ClickOnce 작업 절차 개요 애플리케이션이 ClickOnce 배포 방식에 의해서 최종적으로 사용자 PC까지 다운되기 까지의 절차를 .. 더보기 [연재 01] What is ClickOnce 1. What is ClickOnce? ClickOnce! 최초 한번만 클릭하는 수고를 해 주면 모든 것을 알아서 해 주겠다는 말인데, 이제 그 속 사정을 알아보도록 하자. ClickOnce나 NTD(No-Touch Deployment)는 배포 기술이다. 개발에 의해 제작된 실제 애플리케이션은 Windows Forms애플리케이션과 동일하다고 보면 된다. 즉 Windows Forms 애플리케이션을 어떻게 클라이언트로 배포할것인가에 대한 솔루션인 것이다. 클라이언트로의 배포는 항상 말도 많고 탈도 많은 여러모로 비용이 많이 드는 프로세스이다. 모든 클라이언트 PC에 초기 배포/설치뿐 아니라 애플리케이션이 수정되면 다시 모든 클라이언트 PC에 업데이트 버전이 설치되도록 해야 한다. 어떻게 해서든지 최종적인 목.. 더보기 이벤트 핸들링 패턴 요즘은 달봉이가 맡았던 업무를 전산실 직원에게 백업을 하는 것이 주요 하루 일과다. 오늘 백업도중 어쩌다 .NET의 이벤트 핸들링 패턴에 대한 얘기가 나왔었다. 예전에 달봉이가 처음 이벤트를 배울려고 했을때 잘 이해하지 못했던 부분이 있었는데, 생각난 김에 함 정리를 해 볼려고 한다. 우리는 어떤 이벤트를 이용하기 위해서 사용하는 방법에 대해서 알고 있다. - 이벤트( 멤버)에 이벤트 핸들러를 등록하거나 - 또는 해당 이벤트 On이벤트 메소드를 오버라이드하기 이 두 방법의 차이점은 무엇일까? 이 두 방법을 모두 이용할 수 있는 것은 .NET의 이벤트 핸들링 패턴 때문이다. 다음 코드는 이벤트 "Loaded"라는 것을 정의해서 이 이벤트에 대한 핸들링을 하는 두 방법을 보여주고 있다. 다시 한번 상기시키면.. 더보기 [개발환경구성] Deploying Microsoft .NET Framework Version 3.0 프로젝트 진행시, .NETv3.0 배포와 관련된 정보가 있습니다. http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=1&pageno=0&detail=1&wid=350 더보기 [개발환경구성] 대규모 사이트의 Web Application Projects 구조 잡기 가이드 대규모 사이트의 Web Application Projects 구조 잡기 가이드 [정성태] http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=1&pageno=0&detail=1&wid=349 Visual Web Developer Team Blog http://blogs.msdn.com/webdevtools/archive/2006/11/27/part-3-of-3-creating-sub-projects-with-web-applicaiton-projects-and-built-in-asp-net-development-server.aspx 더보기 MIME타입이란? MIME 타입이 뭔지를 쉽게 정리해놓은 문서입니다. http://www.emh.co.kr/xhtml/mime.html 더보기 NTD 애플리케이션의 초기설정 NTD 애플리케이션의 초기설정 애플리케이션이 구동되기 위해서 미리 설치되어 있어야 하는 필수 프로그램들이 있다. 아직까지 NTD나 ClickOnce는 배포만을 다루는 기술이다. 스마트클라이언트 애플리케이션이 실행되기 위한 초기설정을 위해서는 배포와는 다른 작업으로 생각해야 한다. 초기설정단계에서 해야 할 일중의 하나는 스마트클라이언트 애플리케이션이 구동되기 전에 필요한 필수 프로그램이 미리 설치되어 있어야 한다. ClickOnce에서는 부트스트래퍼(BootStrapper) 기술을 이용해서 애플리케이션이 시작되기 전에 필수 프로그램을 설치할 수 있다. 그러나 NTD 애플리케이션에서는 필수 프로그램을 설치하는 프로그램을 직접 코딩해야 할 것이다. 또한 NTD 애플리케이션의 경우는 또한 필요한 CAS 권한 설.. 더보기 C# 2.0 iterators 벌써 C#이 버전 3.0까지 나왔다는데, 달봉이는 아직도 2.0 버전에 당황을 하곤 한다. 지금 소개할 문법도 오늘 아침 처음으로 본 것이다. using System; using System.Collections.Generic; class Test { public static void Main() { foreach (string s in GetItems()) Console.WriteLine(s); } private static IEnumerable GetItems() { yield return "Hello yield 1"; yield return "Hello yield 2"; yield return "Hello yield 3"; yield return "Hello yield 4"; yield return.. 더보기 애플리케이션 도메인 FAQ .NET의 애플리케이션 도메인과 관련해서 괜찮은 FAQ이다. http://www.gotdotnet.com/team/clr/AppdomainFAQ.aspx 더보기 IE에서 어셈블리가 로딩되는 과정 http://support.microsoft.com/default.aspx?scid=kb;en-us;313892 이 문서는 IE가 어셈블리를 로딩하는 과정에서 발생하는 에러를 로컬 PC에 로깅할 수 있는 방법을 보여주고 있다. 이 방법은 달봉이가 디버깅 툴을 소개하면서 함께 설명한 적이 있다. 이 문서에는 더불어서 IE에서 어셈블리가 로딩되는 과정을 설명하고 있는데, 이것이 더 중요한 정보이다. MIME 필터가 들어오는 스트림의 MIE 타입을 모리터링하다가 .NET 어셈블리라고 판단되면 IEHost.dll을 로딩하고 요청 인스턴스를 생성하게 된다는 내용이 있다. http://msdn2.microsoft.com/en-us/library/ms775147.aspx 이 문서는 IE 브라우저가 MIME 타입을 결.. 더보기 IE 임베딩 방식 스마트클라이언트 애플리케이션의 도메인 중복 생성?? IE 임베딩 방식에서의 애플리케이션 도메인의 중복 생성 ?? 현재 달봉이가 참여하고 있는 L 기업의 프로젝트에서는 Plumtree라는 EP 솔루션이 들어오기로 되어 있다. 시스템의 메뉴와 권한 관리는 이 EP 솔루션이 담당하고 업무 화면은 스마트클라이언트로 구현하겠다는 것이 대세가 되고 있는 분위기이다. 서버측 기술인 Plumtree 솔루션과 클라이언트측 기술인 스마트클라이언트를 같이 사용한다는 것 자체가 달갑지는 않다. 그러나 도입되는 솔루션과 기술을 결정하는 것은 다분히 기업들간의 영업적 성격이 강한 문제들이다. 이런 상황을 겪고 있자면 가끔 그런 유머가 생각난다. 펜대만 돌리는 경영자님께서 그랬단다. "왜 우리 회사는 오라클을 버리고 자바를 도입하지 않는거야? 통합성도 좋다는데!!" 하여튼 그런 식.. 더보기 IE 임베딩 방식 스마트클라이언트 App에서 웹 페이지간 데이터 전달 지난 포스트에서, 웹 페이지 하나에 스마트클라이언트 컨트롤 하나씩을 로딩하는 IE 임베딩 방식의 구조에서도 애플리케이션 도메인은 하나만 생성된다고 했었다. 단 모든 웹 페이지에 설정된 베이스 디렉토리 값은 같아야 한다는 것이다. 모든 웹 페이지의 스마트클라이언트 컨트롤들이 동일한 애플리케이션 도메인으로 로딩된다는 것은 도메인의 속성을 모든 컨트롤에서 공유할 수 있다는 의미이다. 이 속성을 공유 저장소로 이용하면 페이지에서 페이지로의 데이터 전달에 사용할 수 있다는 것이다. 이미 지난 포스트에서 테스트를 하면서도 이 방식을 사용하고 있었다. 더보기 기본 AppDomain 생성자 변경하기 기본 AppDomain 생성자를 변경하는 작업이 왜 필요한지, 어디에 이용하는지를 묻는 사람이 있어서 달봉이가 어떻게 해서 여기까지 오게 되었는가를 잠시 덧붙인다. 달봉이가 현재 참여하고 있는 프로젝트에서 IE 페이지 하나에 스마트클라이언트 컨트롤 하나씩을 임베딩한다는 이야기가 있었다(현재는 EXE 컨테이너를 사용하는 방식으로 변경되긴 했지만). 그때 달봉이의 머리에 스친 의문을 해결하는 과정에서 AppDomain 생성이라는 것에까지 관심을 갖게 되었다. 달봉이가 가졌던 구체적인 의문은 지난 포스트(IE 임베딩 방식 스마트클라이언트 애플리케이션의 도메인 중복 생성??)에서 볼 수 있다. 달봉이의 의문을 간단히 요약을 하면 다음과 같다. 『만약 태그로 스마트클라이언트 컨트롤을 로딩할때마다 클라이언트 PC에.. 더보기 CLR의 Global 예외처리 애플리케이션단에서 처리되지 않은 예외를 CLR에서 처리하는 방식이 .NET의 버전에 따라서 약간 다르다. 참조 문서는 v1.1과 v2.0에서의 Global 예외 처리를 비교하고 있다. "CLR의 Global 예외처리"라는 것은 달봉이가 사용하는 용어로서, .NET 애플리케이션에서 처리하지 못하고 결국은 CLR까지 전달되어온 예외를 처리하는 방식을 말하고 있다. v1.1의 방식은 문서를 참고하고, v2.0을 기준으로 해서 요약하겠다. 처리되지 않은 예외가 전파될때 최종적으로 작동하는 예외 처리기는 애플리케이션의 타입에 따라 다르다. ■ Windows Forms 애플리케이션이 아닌 경우 최종 예외 처리기 : AppDomain.UnhandledException 처리기 사용 예 AppDomain.CurrentD.. 더보기 Reducing Startup Time Due To Strong Name Verification 닷넷 애플리케이션의 시작 시간을 줄이는 것에 대해서 이야기하고 있습니다. http://blogs.msdn.com/shawnfa/archive/2006/06/23/644648.aspx 더보기 로딩되는 CLR 버전 결정하기 얼마전에 달봉이 여자 친구가 업체로부터 질문을 하나 받았다는 것이다. 내용을 보면 .NETv1.?에서 개발한 스마트클라이언트 애플리케이션을 .NETv1.?과 .NETv2.0이 설치된 클라이언트 PC에서 다운해서 구동시켰더니 이전과는 다른 거동을 하더라는 것이다. 그 다른 내용이 무엇이든지 간에 이렇게 다른 버전의 CLR이 설치되어 있는 PC에서 특정 버전의 CLR을 사용하려면 어떻게 해야 하는지 그 동안 달봉이는 궁금했다. 1. CLR의 Facade : MSCOREE.DLL CLR의 실제 DLL은 MSCORWKS.DLL 이다. 만약 멀티 프로세서를 사용하는 PC에서라면 MSCORSVR.DLL이 사용된다. 그리고 하나의 PC에는 여러 버전의 CLR이 설치될 수 있다. .NET 프레임워크가 설치된 PC에는 .. 더보기 이전 1 ··· 3 4 5 6 7 8 9 10 다음