IT 살이 썸네일형 리스트형 [연재 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 권한 설.. 더보기 Proxiable Types-모든 웹 서비스 호출을 가로챌 수 있다 달봉이는 얼마전에 L기업의 ERP 프로젝트에 참여하고 있었다. 이 시스템은 스마트클라이언트 애플리케이션으로 구현했는데, 서버와의 통신은 웹 서비스를 사용하고 있다. 웹 서비스 호출시는 VS.NET이 자동 생성하는 프락시 클래스를 확장해서 사용하고 있다. 이것을 이름하여 "웹 참조 차원의 프락시"라고 하고 있다. 그러나 또 하나의 프락시를 제작해서 사용하고 있는데, 모든 웹 서비스 호출이 일단 이 프락시를 거치고 난 다음 각각의 원하는 "웹 참조 차원의 프락시"를 호출한다고 해서 "시스템 차원의 프락시"라 칭하기로 했다. 이 포스트에서는 시스템 차원의 프락시 클래스에 대해서 이야기할 것이다. 이 시스템 차원의 프락시를 사용하면 모든 웹 서비스 호출을 가로채서 웹 서비스 호출을 서버로 보내기 전에 전처리 작.. 더보기 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에는 .. 더보기 호스트 타입별 CLR 호스팅 및 AppDomain 관리 방법 지금까지 CLR을 로딩하고 AppDomin을 생성하는 것에 대해 필요에 따라 여기 저기서 산발적으로 다뤘다. 윈도우 프로세스와 AppDomain의 관계 2009/04/23 - [01. 기술-APP] - 애플리케이션 도메인과 속성들(베이스 디렉토리) IE와 AppDomain 그리고 MIME 타입 및 MIME 필터 2009/04/23 - [01. 기술-APP] - IE 임베딩 방식 스마트클라이언트 애플리케이션의 도메인 중복 생성??2009/04/23 - [01. 기술-APP] - NTD 배포 및 어셈블리 로딩 그리고 IIS 설정2009/04/23 - [01. 기술-APP] - IE에서 어셈블리가 로딩되는 과정 이제 이곳에서 호스트 애플리케이션별 CLR 인스턴스가 생성되는 차이점 및 호스트가 어떻게 AppDo.. 더보기 .NET 3.0 으로 갈아타기 Windows Vista니 .NET3.0이니 정말 난리도 아니다. 무슨 일인가 눈만 멀뚱거리다 드디어 달봉이도 무슨 일인지 함 알아보고 싶었다. 간단하게 3.0의 물결에 살짝 올라타 볼 생각으로 우선 SmartClient 애플리케이션과 관련한 얘기를 정리해 볼 것이다. 해서 카테고리 이름도 SmartClient 3.0이라고 했다. 우선 웹 브라우저 기반의 애플리케이션인 XAML Browser Application 부터 알아볼 것이다. 1. XAML Browser Application 개요 2. How-To : XAML Browser Application 만들기 3. How-To : 웹 서버로 게시하기 4. 클라이언트로 배포하기 - 3.0에서는 브라우저 임베딩 타입의 스마트클라이언트 애플리케이션에서도 Cl.. 더보기 [연재 03] .NET3.0관련 MIME 타입 3. 웹 서버 설정하기 다음은 WPF 애플리케이션을 웹 서버를 이용해서 배포하는 경우, 웹 서버(IIS)에 필요한 설정을 알아본다. 우선 IIS 버전은 5.0 이상이어야 한다. 그리고 클라이언트 PC가 서버에서 내려오는 WPF 애플리케이션을 인식할 수 있기 위해서는 클라이언트에 .NET 3.0이 설치되어 있어야 할뿐만 아니라 웹 서버에 WPF관련의 MIME 타입들이 추가되어야 한다. MIME 타입에 대해서는 이전 포스트를 참고하기 바란다. 3.1 파일 확장자와 MIME 타입 클라이언트의 브라우저에 적절한 핸들러를 구동시키기 위해서는 다음과 같은 확장자에 매핑된 MIME 타입을 등록해야 한다. 이런 MIME 타입은 서버에 .NET3.0이 설치되면 자동 등록된다. 더보기 [연재 02] XAML Browser Application 만들기 1.2 개발 환경 세팅하기 WPF 애플리케이션을 작성하기 위해서는 미리 설치되어야 하는 것들이 있다. .NET 3.0 Runtime Components, Windows SDK Visual Studio 2005 Extensions Microsoft Visual Studio Code Name “Orcas” Community Technology Preview - Development Tools for .NET Framework 3.0® 이 컴포넌트들은 여러 버전이 있다. 자신의 컴퓨터에 설치된 OS에 따라 어떤 버전을 설치해야 하는지는 다음 링크에서 정리해 놓고 있다. “Orcas” 개발툴에는 WPF 폼 디자이너(코드명 “Cider”)을 포함하고 있다. 아직 제한적이긴 하지만 .NET Framework 3.0.. 더보기 이전 1 ··· 8 9 10 11 12 13 14 ··· 16 다음