본문 바로가기

전체 글

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.. 더보기
[연재 01] XAML Browser Application- 사설(辭說)하기 XAML Browser Application- 사설(辭說)하기 이전의 Windows Forms 애플리케이션은 주로 기본적으로 2가지의 형태의 애플리케이션을 제작하는데 사용했다. ▶설치 애플리케이션(Installed Application) ▶컨트롤 라이브러리(Control Library) .NET3.0의 WPF(Windows Presentation Foundation)애플리케이션에는 여기에 하나의 타입이 더 추가된다. ▶XAML(‘재믈’) 브라우저 애플리케이션(XAML Browser Applications) 이 타입의 애플리케이션을 줄여서 XBAP('엑스밥')이라고 발음한다. 한때는(지금도) “WBA(‘우바’, Web Browser Application)”라고 한 적도 있었다. 이 XBAP 타입은 .NET.. 더보기
시스템시작 또는 사용자가 로그인시 자동으로 프로그램 실행시키기 출근해서 컴을 켜자 RSS리더기의 알림창이 쑤욱 올라온다. 누가 블로그에 포스트를 새로 하나 올린 모양이다. 제목을 클릭해서 해당 블로그로 가 보니 다음과 같은 내용이 있다. 시스템을 시작하거나 또는 사용자가 로그인하면 자동으로 어떤 일을 할 수 있도록 설정할 수 있다는 것인데, 유용한 팁이 될 것 같아 이곳에 캐시해둔다. 원본 주소는 이곳(http://blogs.msdn.com/junfeng/archive/2006/09/19/761765.aspx)을 참조하면 된다. 참고로 달봉이 노트북의 레지스트리 키 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 을 보면 다음처럼 컴이 부팅될때 시작되는 프로그램들이 등록되어 있는 것을 볼 수 있다... 더보기
13 Where Are We? 이 포스트는 MSDN 메거진에 실린 아티클을 번역한 글의 일부이다. WPF 애플리케이션 모델은 매우 유연하다. 기본적으로 독립형 애플리케이션과 브라우저 호스팅 애플리케이션을 만들수 있고 그리고 애플리케이션 모델은 메뉴 스타일과 하이퍼링크 스타일의 네비게이션을 지원하다. 또한 애플리케이션의 컨텐트는 애플리케이션 어셈블리나 또는 참조되는 어셈블리에 패키징될 수도 있고 또는 자유로운(loose) 파일로서 여러 곳에 위치할 수도 있다. 결론적으로 말하면, WPF 애플리케이션 모델이 만들어내는 사용자 경험은 풍부하다. 개발자의 선택에 의해서만 제한될 수 있다. ----------------------------------------------------------------------- Michael Weinha.. 더보기
12 PageFunction 이 포스트는 MSDN 메거진에 실린 아티클을 번역한 글의 일부이다. 이처럼 컨텐트가 다양한 곳에서 올 수 있고, 하이퍼링크 기반의 애플리케이션에서는 다른 어떤 곳으로의 네비게이션을 허락하기 때문에 어떤 태스크를 완수하기가 어려워질 수 있다. 하이퍼링크 기반의 애플리케이션은 사용자들을 특정 페이지에 국한시키는 것이 쉬운 문제가 아니기 때문이다. 애플리케이션이 하이퍼링크를 제공하는가 여부에 상관없이 사용자들은 브라우저의 주소창을 이용해서 어떤 페이지로든지 이동할 수 있다. 결과적으로 사용자는 아직 태스크가 완료되지 않은 상태에서 태스크를 시작했던 페이지를 떠나버릴 수 있다. Web에서는 세션 상태 등을 이용해서 다이얼 로그 창 스타일을 만들어 낼 수 있는 많은 트릭이 있지만 불행히도 많은 부하가 걸리는 작업.. 더보기