.NET Framework 3.5 SP1에 포함되어 있는 중요한 요소 가운데 Client Profile이라는 것이 있다. 한마디로, .NET Framework의 클라이언트 런타임이라고 할 수 있는데, 다운로드되는 전체 크기가 26.5MB 이다. .NET Framework 3.5 SP1의 많은 기능 가운데, 대부분의 데스크탑용 애플리케이션에서 많이 사용하는 요소들을 묶어 배포하는 것으로, 데스크탑 애플리케이션을 구축하는데 있어서 부담이 되는 .NET Framework 자체의 배포 문제를 완화시켜 줄 수 있는 것이다.
.NET Framework 3.5 SP1 기반의 Client Profile 사용법 및 동작 방식에 대해 살펴보자. 여기 나와 있는 아주 우스운 예제는 이전 포스트에서 소개한 .NET Framework 3.5 SP1 Training Kit에 들어있는 예제이기에 다운로드 받아 실행해 보길 추천한다.
1. 데스크탑 애플리케이션 (Smart Client) 작성
2. 프로젝트 속성에서 Client-only Framwork subset 선택
주의하여야 할 것은 Client Profile은 자주 쓰는 모듈들, 즉, Windows Forms, WPF, WCF, Web Services 등을 포함하고 있기에 여기에 포함되지 않은 다른 기능을 쓰고자 한다면 에러를 발생시킨다. 즉, 아래는 이번에 함께 출시된 ADO.NET Entity Framework의 기술 요소인 System.Data.Entity을 추가했을 때, 곧바로 Visual Studio가 에러창에 경고를 띄우는 모습을 보여준다.
"Client-only Framework subset"을 선택하면 애플리케이션의 설정 파일, 즉 이경우 app.config에 이에 대한 정보가 다음과 같이 기록된다. Client-only Framework subset을 선택하는 순간, app.config에 아래처럼 sku="Client"가 기록되면 클라이언트에서 실행시 바로 이 속성때문에 전체 .NET Framework 풀 버전이 아닌 Client Profile 을 실행환경으로 생각하게 된다.
3. 애플리케이션 Publish 속성 중 런타임을 Client Profile로 지정
Smart Client 애플리케이션을 다양한 방법으로 배포하고자 할 경우 아래처럼 애플리케이션 속성 중에 Publish 탭에서 제공하는 많은 기능을 통해 원하는 정보를 지정할 수 있다. 가령, 사용자 PC에 인스톨될 때, 아이콘이라든지, 시작 메뉴에 들어갈 애플리케이션 이름이라든지 하는 것들은 아래 "Option..."을 선택하여 지정할 수 있고, 자동 업데이트 기능을 사용할지, 사용한다면 얼마주기로 할지, 버전 정보는 어떤 방식으로 제공할지 등은 "Updates..."를 선택하여 지정한다. 아래는 이 애플리케이션이 .NET Framework 풀 버전이 아닌 Client Profile에서 동작하도록 지정하는 것을 보여주는 것으로 이를 위해서는 "Prerequisites..."를 선택한다.
위 그림처럼 .NET Framework Client Profile을 선택한 후 Publish를 진행한다.
주의하여야 할 점은 2번 과정에서 "Client-only Framework subset"을 선택하였다고 하여 "Prerequisites..."에 .NET Framework Client Profile"이 자동으로 선택되는 것은 아니다. 이유는, Client Profile은 전체 .NET Framework의 일부이기 때문에 사용자 PC에 Client Profile이 아닌 전체 .NET Framework이 설치되어 있어도 당연히 동작하기 위함이다. 즉, 애플리케이션 설정이 Client Profile로 지정되어 있어도, 배포 차원에서 전체 .NET Framework을 지정할 수 있다는 것이고 따라서 Client Profile를 배포하기를 원한다면 반드시 Publish-->Prerequisites...을 선택하여 제대로 지정되었는지 확인하는 것이 필요하다.
4. 사용자 PC에서 인스톨
위에서 작성한 애플리케이션을 웹을 통해 배포한다고 가정할 경우, 일반 사용자는 다음과 같이 웹을 통해 접근한다. 아래는 Visual Studio에서 웹을 통해 배포시 자동으로 생성해 준 웹 페이지이며 .NET Framework Client Profile이 필요하다고 쓰여져 있는 것을 볼 수 있다.
5. 애플리케이션 설치
Install을 클릭하면, setup.exe가 나타나고....
6. Client Profile 설치
실행을 클릭하면, Client Profile을 설치한다.
7. 실행
애플리케이션 설치가 끝나면 다음과 같이 동작하는 것을 볼 수 있다.
8. 사용자 PC 제어판 모습
사용자 PC에 설치되어 있는 모습은 다음과 같다. Windows 폴더내에 .NET Framework 설치때처럼, Microsoft.NET이라는 폴더가 생성되며 Client Profile이 설치된다. 아래 그림에서 보듯이, 디렉토리 구조는 일반 .NET Framework과 같지만, 아래에서 보듯이 설치된 후 용량이 50MB 정도임을 알 수 있다. 전체 .NET Framework 3.5 SP1을 설치하면 대략 300MB 정도의 하드디스크를 차지하는 것과 확연히 대비됨을 알 수 있다.
아래그림은 사용자 PC의 제어판을 보여준다. Microsoft .NET Framework Client Profile이라는 이름으로 0.71MB라고 등록되어 있는 것을 볼 수 있다.
9. .NET Framework Client Profile에 포함되는 어셈블리 (아래 리스트는 BCL Team Blog에서 퍼옴)
BCL, "Core FX," and LINQ
- CustomMarshalers
- ISymWrapper
- mscorlib
- sysglobl
- System
- System.AddIn
- System.AddIn.Contract
- System.Configuration
- System.Configuration.Install
- System.Core
- System.Security
Visual Basic and Visual C++ Language Support
- Microsoft.VisualBasic
- Microsoft.VisualC
XML
- System.Xml
- System.Xml.Linq
Windows Forms
- Accessibility
- System.Drawing
- System.Windows.Forms
WPF
- PresentationCore
- PresentationFramework
- PresentationFramework.Aero
- PresentationFramework.Classic
- PresentationFramework.Luna
- PresentationFramework.Royale
- PresentationUI
- ReachFramework
- System.Printing
- System.Windows.Presentation
- UIAutomationClient
- UIAutomationClientsideProviders
- UIAutomationProvider
- UIAutomationTypes
- WindowsBase
- WindowsFormsIntegration
ClickOnce
WCF, Web Services, Remoting, and Serialization
- System.IdentityModel
- System.Runtime.Remoting
- System.Runtime.Serialization
- System.Runtime.Serialization.Formatters.Soap
- System.ServiceModel
- System.ServiceModel.Web
- System.ServiceModel.Install
- System.Transactions
- System.Web.Services
Data Access
- System.Data
- System.Data.SqlXml
- System.Data.DataSetExtensions
- System.Data.Services.Client
Peer to Peer
Active Directory and Enterprise Services
- System.DirectoryServices
- System.EnterpriseServices
10. 기타 참고할 만한 리소스
http://blogs.windowsclient.net/trickster92/archive/2008/05/21/introducing-the-net-framework-client-profile.aspx
http://blogs.msdn.com/bclteam/archive/2008/05/21/net-framework-client-profile-justin-van-patten.aspx
11. .NET Framework Client Profile redistributable package
여러 정황이나 내부 메시지를 종합해보면 redistributable package 형태로 별도 다운로드 받도록 되어 있으나 아직 공개된 링크는 없다. Client Profile redistributable package의 크기는 26.5 MB이다.
댓글을 달아 주세요