본문 바로가기

IT 살이/04. 기술 - 프로그래밍

호스트 타입별 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에서는 세션 상태 등을 이용해서 다이얼 로그 창 스타일을 만들어 낼 수 있는 많은 트릭이 있지만 불행히도 많은 부하가 걸리는 작업.. 더보기
11 WPF 리소스 이 포스트는 MSDN 메거진에 실린 아티클을 번역한 글의 일부이다. 지금까지 애플리케이션 어셈블리에 임베딩되는 페이지드에 대해서 이야기했다. 그러나 컨텐트는 다양한곳으로부터 로딩될 수 있다. 소스 코드가 있는 어셈블리에 같이 포함(embedding)되어 있을 수도 있지만 참조되는 어셈블리에 있을 수도 있고, 또는 어셈블리에 포함되어 있지 않은 다른 자유로운 파일(loose file)들로 되어 있을 수도 있다. 그런 자유로운 파일들은 로컬 디스크, 파일 공유 서버, 또는 웹 사이트에 있을 수 있다. 그리고 컨텐트가 어셈블리에 포함되어 있든 자유로운 파일로 존재하든간에 그것이 꼭 페이지(Page)일 필요는 없다. 컨텐트는 이미지, 비디오, 오디오 같은 다양한 미디어를 가질 수 있다. 그리고 컨텐트는 반드시 .. 더보기
10 Frame 이 포스트는 MSDN 메거진에 실린 아티클을 번역한 글의 일부이다. Frame은 다른 스타일의 네비게이터(독립형 또는 브라우저 기반, 메뉴 기반 또는 하이퍼링크 기반) 가 호스팅하는 컨텐트에 브라우저 스타일의 사용자 경험을 포함시킬 수 있다. 그것의 유연성을 고려해서 개발자는 Frame을 사용하는 방법을 결정할때는 의도된 사용자 경험에 맞도록 잘 결정해야 한다. 독립형, 메뉴 기반의 애플리케이션은 도움말 파일 같은 문서 스타일의 컨텐트로 네비게이팅하는 적절한 모델이 되지 못한다. 대신에 그림 10처럼 하이퍼링크 방식이 좀더 적절할 것이고 쉽게 독립형 애플리케이션의 윈도우(Window)에 임베딩될 수 있을 것이다. 그림 10 독립형 윈도우에서의 브라우징 가능한 컨텐트 이것은 다음과 같은 마크업으로 가능하다.. 더보기
09 XAML Browser Applications 이 포스트는 MSDN 메거진에 실린 아티클을 번역한 글의 일부이다. NavigationWindow, Page, 그리고 Hyperlink는 독립형 애플리케이션에서 브라우저 스타일의 사용자 경험을 제공해 줄 수 있는 좋은 방법이다. 비록 즐겨찾기, 브라우징 탭과 같은 장식용 기능들을 가지고 있지는 않지만 NavigationWindow는 어떤 의미에서는 하나의 브라우저이다. 많은 사용자들이 브라우저에 익숙해져 있기 때문에 브라우저와 같은 기능들 또는 브라우저와 통합될 수 있는 애플리케이션에 좀 더 편안함을 느끼게 될 것이다. 만약 애플리케이션이 브라우저의 호스팅을 받고 하이퍼링크가 기반이 되는 환경을 제공받을 수 있다면 그곳이 바로 WPF XAML 애플리케이션(XBAP)이 가야 할 방향일 것이다. 예제 애플리.. 더보기
08 NavigationService 이 포스트는 MSDN 메거진에 실린 아티클을 번역한 글의 일부이다. WPF에서 NavigationService를 이용하면 앞에서와 같은 페이지와 페이지 호스트간의 서로 독립적인 관계를 이룰 수 있다. NavigationService는 네비게이션, 네비게이션 히스토리, 네비게이션 생명주기(lifetime)등을 포함한 네비게이션 엔진의 기본적인 기능들을 구현하고 있다. 다음은 NavigationService타입의 주요 멤버들을 보여주고 있다. sealed class NavigationService : IContentContainer { // Navigation public bool Navigate(Uri source); // Navigate to URI public void Refresh(); // Re-n.. 더보기
07 NavigationWindow 이 포스트는 MSDN 메거진에 실린 아티클을 번역한 글의 일부이다. 지금쯤이면 몇가지 의문 사항들이 있을 수 있을 것이다. Page가 윈도우는 아니라고 했다. 그렇다면 그것을 호스팅하는 윈도우는 어디서 왔는가? 하이퍼링크를 클릭하면 그 네비게이션을 실제로 처리하는 것은 무엇인가? 그리고 어떻게 해서 HTML 웹 페이지가 WPF 애플리케이션에서 출력될 수 있게 되는가? 이 모든 것을 담당하는 것은 NavigationWindow이다. Application.StartupUri 속성이 XAML 또는 HTML 페이로 설정되면 Application(이 페이지들은 자신들을 호스팅할 윈도우가 없다는 것을 알고 있다)은 그것들을 호스팅할 NavigationWindow 인스턴스를 생성한다. NavigationWindow는.. 더보기
06 Hyperlink 이 포스트는 MSDN 메거진에 실린 아티클을 번역한 글의 일부이다. 문서의 모든 차례를 보려면 SmartClient3.0 카테고리를 참조하기 바란다. 하이퍼링크 기반의 애플리케이션은 하나 이상의 XAML 페이지를 갖게 될 것이고 사용자들에게 이런 페이지들간에 네비게이트할 수 있는 방법을 제공할 필요가 있을 것이다. 해서 WPF는 Hyperlink 클래스를 제공하고 있다. ... Ordering Guidelines ... Hyperlink는 HTML의 HREF와 동일한 프로그래밍 모델을 사용하여 다른 XAML 페이지로 네비게이트할 수 있다. 개발자는 이동할 대상 페이지의 URI(이 경우는 OrderingGuidelinesPage.xaml)와 그리고 사용자들이 보고 클릭할 수 있는 텍스트(이 경우는 "Ord.. 더보기
05 Page 이 포스트는 MSDN 메거진에 실린 아티클을 번역한 글의 일부이다. Page는 웹을 대중화시키는데 일조를 한 HTML웹 페이지에 대응되는 WPF 버전이다. 이전에 언급한 것처럼 하이퍼링크 기반의 네비게이션은 독립형과 브라우저형 애플리케이션 모두에서 지원된다. WPF에서 하이퍼링크 네비게이션 경험의 기본이 되는 컨텐트가 바로 Page이다. Visual Studio 2005의 프로젝트에서 Project | Add New File | Page(WPF)를 선택하면 마크업과 코드 비하인드로 된 Page를 프로젝트에 추가할 수 있다. 이때 다음과 비슷한 코드가 생성된다. ... ... // HomePage.xaml.cs (codebehind) using System.Windows.Controls; // Page p.. 더보기
04 Window 이 포스트는 MSDN 메거진에 실린 아티클을 번역한 글의 일부이다. 문서의 모든 차례를 보려면 SmartClient3.0 카테고리를 참조하기 바란다. WPF에서 윈도우는 Window로 구현된다. Window는 항상 독립형 애플리케이션에서는 컨텐트를 호스팅하는 기본적인 단위가 되어 왔다. Visual Studio 2005에서 Project | Add New Item | Window(WPF) 를 선택하면 Window가 하나 프로젝트에 추가된다. 더보기
03 애플리케이션 타입(Application Type) 이 포스트는 MSDN 메거진에 실린 아티클을 번역한 글의 일부이다. 그림 1과 같은 간단한 예제 박스 애플리케이션을 생각해보자. 독립형의 메뉴 기반 애플리케이션으로서 사용자들은 필요한 박스들의 목록을 보고 주문하고 주문을 삭제할 수도 있다. 이런 사용자 경험을 제공하기 위해서, 애플리케이션 제작의 가장 기본적인 것부터 시작할 필요가 있다 : 애플리케이션 생성. 그림 1 박스 애플리케이션 윈도우 기반의 애플리케이션은 몇가지 표준적인 기반 구조를 가지고 있다 : 엔트리 포인트와 메시지 루프. 그리고 다음과 같은 공통적인 애플리케이션 서비스가 필요할 수도 있다. l 커맨드 라인 파라미터 처리 l 종료 코드(exit code) 반환 l 애플리케이션 영역의 상태 l 처리하지 않은 예외 처리 l 애플리케이션 생명주.. 더보기
02 사용자 경험(User Experience) 이 포스트는 MSDN 메거진에 실린 아티클을 번역한 글의 일부이다. UX(사용자 경험)은 애플리케이션의 컨텐트와 그것을 호스팅하는 방법이다. WPF에서는 일반 컨트롤,2D, 3D 그래픽 그리고 애니메이션, 데이터바인딩, 레이아웃, 템플릿등을 사용해서 컨텐트를 출력한다. 그러나 사용자가 그 컨텐트를 보고 그것과 상호 작용을 할 수 있도록 호스팅이 되기 전까지는 거의 쓸모가 없다. 윈도우 애플리케이션에서는 바로 애플리케이션이 컨텐트를 패키징하고 윈도우를 통해서 그것을 출력한다. 이곳이 바로 ‘애플리케이션 모델’ 개념이 등장하게 되는 문맥이다. 즉 컨텐트 패키징과 출력 방법에 따라 애플리케이션 모델이 구분될 수 있다는 것이다. WPF 애플리케이션은 두 가지 타입으로 구분될 수 있다. : 독립형(standalo.. 더보기
01 WPF로 사용자 경험(User Experience) 높이기 Build A Great User Experience With Windows Presentation Foundation 이번 포스트는 MSDN 매거진 10월에 실린 아티클을 번역(번역은 달봉이한테 무리이고 그냥 나름대로 해석한 것이다.)한 내용을 올려 볼려고 한다. Smart Client 애플리케이션은 역시나 WPF(Windows Presentation Foundation)을 알아야 한다. SmartClient 기술이 나오고 웹 브라우저도에서도 Windows Form 기술의 컨트롤들을 호스팅하고 그리고 Windows Forms의 WebControl에서는 웹 페이지를 불러와 보여주고 하는 것이 지금의 상황이다. 즉 동일한 컨텐트인데 그것을 호스팅하는 컨테이너만 Windows Form으로 하느냐 아니면 웹 .. 더보기
ClickOnce에서 변경되지 않은 어셈블리의 다운 여부 테스트 Q&A 게시판에 올라온 질문중에서 “ClickOnce 배포에서 애플리케이션을 게시할때마다(기본적으로 게시 버전은 계속 높아진다), 어셈블리는 변경이 없더라도 다시 다운받는가” 라는 질문이 있었다. 이에 대해서 간단히 테스트를 해 봤다. 달봉이의 테스트 노트북 환경은 이렇다. ▶.NET 2.0 설치 ▶HTTP를 통한 어셈블리 다운 관찰 툴 : IE Inspector(http://www.ieinspector.com/index.html) 테스트를 해 본 결과 ClickOnce 애플리케이션의 버전은 올라가도 그 구성 어셈블리들은 버전이 동일하면 다운되지 않음을 알 수 있었다. ■ 테스트 #1 : 최초 다운 로드 모습 먼저 로컬 머신에 이미 다운된 ClickOnce 어셈블리들을 mage.exe –cc 명령을 통해.. 더보기