.NET Framework 4 Beta 2의 일부인 .NET Framework 4 Client Profile이 일부 변경된 것이 있어 공유하고자 한다. 일반적인 .NET Framework 3.5 SP1의 Client Profile에 대해서는 이전 포스트를 참고하면 좋을 듯 하다.
.NET Framework Client Profile
.NET Framework Client Profile 정리

.NET Framework 4 Client Profile은 .NET Framework 4 Beta 2의 일부로서 제공되며 일반적으로 많이 사용되는 WPF, WCF, Windows Forms, ClickOnce 등의 기능을 포함하고 있다. .NET Framework 3.5 SP1 Client Profile과 .NET Framework 4 Client Profile의 차이를 정리하면 다음과 같다.

.NET Framework 3.5 SP1 Client Profile .NET Framework 4 Client Profile
웹을 통한 설치만 지원한다. 웹 및 로컬 패키지를 통한 설치 모두 지원한다.
Windows XP SP3/SP3 w/ x86 아키텍처만 지원한다. IA64를 제외한 .NET Framework 4 Beta 2가 지원하는 모든 플랫폼과 CPU 타입 지원한다.
.NET Framework과 별도 패키지로 존재한다. .NET Framework의 일부이다. 즉, .NET Framework은 Client Profile과 확장 부분으로 구성되어 있어서 제어판에서 별개로 설치 및 제거 가능하다.
Windows Update 실행하며 풀버전 .NET Framework으로 업그레이드된다. .NET Framework과 독립적인 패키지로 볼 수 있으며, 각각 따로 서비스된다.

.NET Framework 4 Client Profile에 포함되어 있는 기능은 다음과 같다.

  • Common Language Runtime (CLR)

  • ClickOnce

  • Windows Forms

  • Windows Presentation Foundation (WPF)

  • Windows Communication Foundation (WCF)

  • Entity Framework

  • Windows Workflow Foundation

  • Speech

  • XSLT support

  • LINQ to SQL

  • Runtime design libraries for Entity Framework and ADO.NET Data Services

  • Managed Extensibility Framework (MEF)

  • Dynamic types

  • Parallel-programming features, such as Task Parallel Library (TPL), Parallel LINQ (PLINQ), and Coordination Data Structures (CDS)

  • Debugging client applications

위에서 언급한 대로 .NET Framework 4 Client Profile Beta 2는 이전 버전과 다르게 재배포 패키지로도 제공되며 아래에서 다운로드 가능하며, 다운로드 용량은 .NET Framework 3.5 SP1 때보다 약간 커진 30.9 MB이다.
Microsoft .NET Framework 4 Client Profile Beta 2

Posted by 장현춘

.NET Framework Client Profile (이하 Client Profile)에 대해 오해 혹은 과장된 희망 사항이 많은 듯 보여서 개발 주특기가 아닌 사람들을 위해 간략히 정리해보았다.

첫째, Client Profile은 일반 사용자를 위한 클라이언트용 닷넷 런타임이다. 따라서 개발자가 Visual Studio에서 개발할 때 사용하는 용도가 아니며, 개발자는 Client Profile용 애플리케이션을 만들고자 할 경우에도 .NET Framework 3.5 SP1 풀 버전을 깔아야한다. Client Profile을 런타임으로 사용하는 애플리케이션 개발시 Visual Studio에서 프로젝트 속성에서 "Client-only Framework subset" 항목을 체크해주기만 하면 된다.
둘째, 사용자 PC에 Client Profile이 설치되어야 하는 경우 다운로드될 전체 크기는 26.5MB이며, 설치된 후 약 50MB의 하드 디스크를 점유하게 된다.
셋째, Client Profile은 .NET Framework 3.5 SP1의 기능 일부를 모은 것으로 여기에 포함되는 것은 일반적인 데스크탑 애플리케이션에서 자주 사용하는 Windows Forms, WPF, WCF, XML 관련 기능 등이며, WF, LINQ to SQL 등은 포함되지 않는다.
넷째, Client Profile은 Windows XP SP2 이상의 운영체제에 .NET Framework이 전혀 설치되어 있지 않은 32비트 사용자 PC를 대상으로 만들어진 것이다. 따라서 이전 버전 혹은 현 버전의 .NET Framework 요소들이 설치되어 있다면 Client Profile은 설치되지 않으며 .NET Framework 3.5 SP1 풀 버전 설치할 것을 요구하게 된다. 이유는 Client Profile은 .NET Framework 3.5 SP1의 부분집합이며 따라서 .NET Framework 2.0 SP2, .NET Framework 3.0 SP2, .NET Framework 3.5 SP1의 요소들이 포함되어 있다.

OS No Fx .NET Fx 1.1 .NET Fx 2.0/SP1 .NET Fx 3.0/SP1 .NET Fx 3.5
Windows XP SP2+ Client Profile Full Install Full Install Full Install Full Install
Windows Vista N/A N/A Full Install Full Install Full Install
Windows Server 2003 Full Install Full Install Full Install Full Install Full Install
Windows Server 2008 N/A N/A Full Install Full Install Full Install

위 표에서 보듯이, Client Profile에는 이전 버전의 어셈블리들에 대한 서비스 팩이 포함되어 있기 때문에 사용자 PC에 설치되어 있는 이전 버전에 대한 업그레이드가 필요하기 때문에 .NET Framework 3.5 SP1 풀 버전을 깔 것을 요구하고 있다. Windows Server 2003에서 풀 버전을 깔아야하는 이유는 원칙적으로 이는 클라이언트용 OS가 아니기 때문이다.
이것은 결국 많은 이들이 바라고 있지만 26.5MB 짜리 Client Proflie 오프라인 인스톨 버전이 존재하지 않은 것임을 시사한다. 그 대신 255MB의 오프라인 인스톨 버전이 존재한다. 즉, 사용자 PC의 상태에 따라서 Client Profile이 설치될 수도 혹은 .NET Framework 3.5 SP1 풀 버전이 설치될 수도 있다는 얘기다.

좀더 자세한 사항은 아래 링크를 참고하시길...
.NET Framework Client Profile Deployment Guide
.NET Framework Client Profile Readme
Client Profile 설치 및 사용에 관한 이전 포스트

Posted by 장현춘

.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) 작성
client_profile_000

2. 프로젝트 속성에서 Client-only Framwork subset 선택image
 
주의하여야 할 것은 Client Profile은 자주 쓰는 모듈들, 즉, Windows Forms, WPF, WCF, Web Services 등을 포함하고 있기에 여기에 포함되지 않은 다른 기능을 쓰고자 한다면 에러를 발생시킨다. 즉, 아래는 이번에 함께 출시된 ADO.NET Entity Framework의 기술 요소인 System.Data.Entity을 추가했을 때, 곧바로 Visual Studio가 에러창에 경고를 띄우는 모습을 보여준다.
client_profile_002 
"Client-only Framework subset"을 선택하면 애플리케이션의 설정 파일, 즉 이경우 app.config에 이에 대한 정보가 다음과 같이 기록된다. Client-only Framework subset을 선택하는 순간, app.config에 아래처럼 sku="Client"가 기록되면 클라이언트에서 실행시 바로 이 속성때문에 전체 .NET Framework 풀 버전이 아닌 Client Profile 을 실행환경으로 생각하게 된다.
image

3. 애플리케이션 Publish 속성 중 런타임을 Client Profile로 지정
Smart Client 애플리케이션을 다양한 방법으로 배포하고자 할 경우 아래처럼 애플리케이션 속성 중에 Publish 탭에서 제공하는 많은 기능을 통해 원하는 정보를 지정할 수 있다. 가령, 사용자 PC에 인스톨될 때, 아이콘이라든지, 시작 메뉴에 들어갈 애플리케이션 이름이라든지 하는 것들은 아래 "Option..."을 선택하여 지정할 수 있고, 자동 업데이트 기능을 사용할지, 사용한다면 얼마주기로 할지, 버전 정보는 어떤 방식으로 제공할지 등은 "Updates..."를 선택하여 지정한다. 아래는 이 애플리케이션이 .NET Framework 풀 버전이 아닌 Client Profile에서 동작하도록 지정하는 것을 보여주는 것으로 이를 위해서는 "Prerequisites..."를 선택한다.
image   image
위 그림처럼 .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이 필요하다고 쓰여져 있는 것을 볼 수 있다.
image

5. 애플리케이션 설치
Install을 클릭하면, setup.exe가 나타나고....
client_profile_xp_002  
6. Client Profile 설치
실행을 클릭하면, Client Profile을 설치한다.
client_profile_xp_003 client_profile_xp_004

7. 실행
애플리케이션 설치가 끝나면 다음과 같이 동작하는 것을 볼 수 있다.
client_profile_xp_005 client_profile_xp_006

8. 사용자 PC 제어판 모습
사용자 PC에 설치되어 있는 모습은 다음과 같다. Windows 폴더내에 .NET Framework 설치때처럼, Microsoft.NET이라는 폴더가 생성되며 Client Profile이 설치된다. 아래 그림에서 보듯이, 디렉토리 구조는 일반 .NET Framework과 같지만, 아래에서 보듯이 설치된 후 용량이 50MB 정도임을 알 수 있다. 전체 .NET Framework 3.5 SP1을 설치하면 대략 300MB 정도의 하드디스크를 차지하는 것과 확연히 대비됨을 알 수 있다.client_profile_xp_007
아래그림은 사용자 PC의 제어판을 보여준다. Microsoft .NET Framework Client Profile이라는 이름으로 0.71MB라고 등록되어 있는 것을 볼 수 있다.
client_profile_xp_008

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

  • System.Deployment

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

  • System.Net

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이다.

Posted by 장현춘

.NET Framework 3.5 SP1 (이하 3.5 SP1)이 올 하반기 예정되어 있는 가운데 베타가 발표되었다.(Visual Studio 2008 SP1 베타도 함께 발표됨) 3.5 SP1에는 .NET Framework 3.5에 ASP.NET Dynamic Data, ADO.NET Data Services, ADO.NET Entity Framework등이 포함되며 이러한 주요 기능외에도 이전 버전에 없던 클라이언트용 런타임이 새롭게 선보일 예정이다. 3.5 SP1에 포함될 개선된 사항은 다음과 같다.

  • 2D, 3D 그래픽 기능 개선
  • 새로운 컨트롤 추가 및 확장
  • 닷넷 초기 기동 시 혹은 실행시 성능 개선, 유연한 설치
  • DirectX 및 HTML DOM과의 연동

유연한 설치의 일환으로, .NET Framework 3.5 Client Profile (이하 Client Profile)이라는 정식 명칭으로 클라이언트용 런타임이 배포되며 크기는 최대로 깔렸을 경우라도 26MB 이하이다. Client Profile에 포함되는 것은 전형적인 닷넷 클라이언트 애플리케이션이 사용하는 기본적인 어셈블리들로써 CLR Core, System.Data, JScript 관련, Windows Forms, WPF, WCF 등이며 .NET Framework 3.5 SP1의 부분집합이지 전혀 새롭게 만들어지는 어셈블리 집합은 아니다.

Client Profile을 지원하기 위해 Visual Studio 2008 SP1에서는 "Client-only Framework Subset"이라는 옵션 설정이 추가되는데, 이는 multi-targeting 기능과 함께 쓰여 .NET Framework 2.0, 3.0, 3.5 중에서 선택한 타겟의 클라언트용 어셈블리로 만들게 된다. "Client-only Framework Subset"을 선택하고 컴파일을 하였을 때, 만약 Client Profile에 없는 기능이 쓰였다면 경고나 에러 메시지를 컴파일시에 보여주게 된다. 또한 "Client-only Framework Subset" 옵션은 애플리케이션의 Configuration 설정에 "client" 애플리케이션임을 명시하며, 이 설정에 따라서 해당 애플리케이션은 Client Profile 조건에서도 동작하도록 설정되고, 만약 .NET Framework이 실행 머신에 없을 경우 Client Profile만 설치하도록 요청하게 된다.

3.5 SP1은 애플리케이션에 따라 달라지겠지만, 닷넷 초기 기동시간을 20~45% 개선할 것으로 기대하고 있다. 또한 .NET Framework 설치도 다운로드와 동시에 NGEN을 통한 빠른 설치를 가능하게 할 예정이다.

3.5 SP1와 이와 관련된 툴은 아래에서 다운로드 받을 수 있다.

3.5 SP1을 설치하기 위해서는 이전 버전의 다음과 같은 툴은 제거하여야 한다.

  • ADO.Net Entity Framework Beta 3 + Tools
  • ASP.Net 3.5 Extensions Preview
  • Visual Studio 2008 Support for SQL Server 2008 February CTP
Posted by 장현춘