Scott Gu 아저씨가 계속해오고 있는 Visual Studio 2010과 닷넷 4.0 시리즈 중에 WPF 4에 대한 포스트가 올라와서 요약해보고자 한다.
Controls
Controls for Building Rich Clients
- WPF 4에는 훌륭한 UI의 LOB(line-of-business) 응용프로그램을 쉽고 빠르게 만들 수 있는 새로운 컨트롤들이 많이 추가되었다.
- DataGrid, DatePicker, Calendar 등이 새로 추가되었다.
- Silverlight와 WPF 사이의 코드 재사용성을 높이기 위해서, 새로 추가된 컨트롤들은 99%의 API 호환성을 보장한다.
Bag O'Tricks is back
- WPF Bag O' Tricks 라고 불리는 여덟 개의 컨트롤 모음을 릴리스할 것이다.
- AnimatingTilePanel, ColorPicker, InfoTextBox, ListPager, NumericUpDown, Reveal, TransitionsPresenter, TreeMappanel
Windows 7 & Office Ribbon Control
- WPF 4가 릴리스 된 후 곧 이어 새로운 WPF Ribbon 컨트롤을 다운로드 할 수 있게 될 것이다.
- Windows 7과 Office 스킨을 입힐 수 있다.
- 제한된 기능을 가진 CTP 버전은 여기서 다운로드 가능하다.
GRAPHICS
Cached Composition
- 임의의 컨트롤들을 비디오 메모리에 비트맵으로 캐시할 수 있는 기능으로 극적인 성능 개선이 가능할 것이다.
- 캐시된 비트맵은 GPU가 바로 렌더링하게 된다.
- 변경된 부분만 효율적으로 그릴 수 있다. 따라서 깜빡이는 커서가 있다 하더라도 커서 부분만 새롭게 그리고 그외의 부분은 캐시된 비트맵을 사용할 것이다.
- 이런 지능적인 캐시와 같이 사용할 수 있는 새로운 Brush가 제공된다.
Pixel Shader 3 Support
- WPF 3.5 SP1에서 지원하는 PS 2.0에 더해서 Pixel Shader 3.0을 사용하는 이펙트를 사용할 수 있다.
LayoutRounding
- Silverlight 2에서 도입된 UseLayoutRounding 프로퍼티가 추가된다.
- WPF의 레이아웃 엔진은 sub-pixel 경계에 있는 엘리먼트들이 물리적으로 여러 픽셀에 걸쳐 안티-알리아스 되도록 한다.
- UseLayoutRounding 프로퍼티는 레이아웃 엔진이 엘리먼트들을 픽셀 경계에 맞추도록 강제하여 더 깨끗하고 깔끔한 UI를 제공한다.
Animation Easing Function
- 기본 제공되는 easing function으로는 circular, exponential, elastic, bouncy animation progress가 있다.
- custom easing function을 작성하 수 있다.
- 쓰기 쉬운 easing function 덕분에 디자이너들은 쉽게 fluid, organic animation을 만들 수 있게 된다.
CleartypeHint
- 이전에는 Layerd Window의 텍스트, VisualBrush 내부의 텍스트, DrawingBrush, BitmapCacheBrush 등에서는 grayscale 텍스트 렌더링이 사용되었다.
- 새로운 CleartypeHint attached property는 이전에는 Cleartype이 비활성화되던 상황에서도 Cleartype을 사용한 텍스트 렌더링을 할 수 있게 해준다.
TEXT STACK
New Text Rendering Stack
- WPF text rendering stack이 완전히 교체되었다.
- 그로 인해 텍스트 렌더링 결과의 선명도, 설정가능성, 다국어 지원이 엄청나게 향상되었다.
- 새로운 텍스트 스택은 display-optimized 캐릭터 레이아웃을 제공하여 Win32/GDI 텍스트의 선명함에 비길만한 품질을 보인다.
- aliased, grayscale, ClearType 렌더링 모드를 명시적으로 선택할 수 있게 된다.
- embedded bitmap 폰트를 지원한다. 수많은 동아시아 폰트들은 이제 Win32 사용자들에게 익숙한 선명한 품질로 렌더링 가능하다.
BindableRun
- Run.Text는 dependency property가 아닌 일반 CLR 프로퍼티였다.
- 따라서 dependency property의 훌륭한 기능들, 특히 바운딩 기능을 사용할 수 없었다.
- 이제 Run.Text가 dependency property로 변경되었다. 자세한 내용은 이곳에서 볼 수 있다.
Custom Dictionaries
- 기존의 맞춤법 검사기에서는 OS 기본 제공되는 사전 밖에 쓸 수 없어서 특수한 용어를 많이 쓰는 사용자들은 수많은 맞춤법 오류로 뒤덮힌 화면을 보아야 했다.
- 이제 사전에 새 단어를 추가할 수 있는 API가 도입되었다. 자세한 내용은 이곳에서 볼 수 있다.
Selection and Caret Brush
- 이제 SelectionBrush와 CaretBrush 프로퍼티를 사용해서 아주 간단히 멋진 룩앤필을 제공할 수 있다.
WINDOWS 7 LIGHT UP
Windows 7 Multi-touch Support
- 다음과 같은 멀티 터치 지원 기능이 추가되었다.
- UIElement에 Multi-touch Manipulation, Inertia (Pan, Zoom, Rotate) 이벤트가 추가됨.
- UIElement, UIElement3D, ContentElement에 Raw 멀티 터치 이벤트들(Up, Move, Down)이 추가됨.
- 다수의 활성화된 컨트롤을 지원하는 다중 캡처.
- 멀티 터치 panning을 지원하기 위한 ScrollViewer 개선.
- Touch 디바이스 확장성.
- Surface SDK 호환성.
Windows 7 Shell Integration
- Windows 7의 Jump List 기능 포함.
- Windows 7의 작업표시줄 기능 포함.
- 프로그레스 바, 오버레이 아이콘, commanding을 지원하는 썸네일 버튼, Description Text DWM Thumbnail Clipping
- TaskbarItemInfo 클래스가 추가되어 Windows 7 작업표시줄의 모든 새로운 기능을 제공한다.
WPF FUNDAMENTALS
New XAML/BAML Parser Engine
- 새로운 System.Xaml.dll 상에 XamlReader.Load(), BAML 로딩, 컨트롤과 데이터 템플릿 기능 등을 새로 구현하였다. 많은 버그와 기능 개선이 있었다.
- 이제 XamlReader.Load()를 쓰게 되면 제너릭 타입 지원과 같은 XAML2009의 신 기능을 사용할 수 있게 된다.
- System.Xaml.dll에서 제공되는 새로운 저수준 API를 사용하면 XAML을 분석하거나 조작하는 도구를 더 작성하기 쉽게 될 것이다.
Data Binding Support for DLR
- .NET 4의 DynamicObject 라는 새로운 추상 클래스를 통해 개발자들은 IDynamicMetaObjectProvider 인터페이스를 쉽게 구현할 수 있게 된다.
- C#의 'dynamic' 키워드를 사용한 새로운 DLR 지원을 통해, 우리는 DynamicObject와 IDynamicMetaObjectProvider를 사용하는 것이 런타임에 정의되는 프로퍼티와 멤버를 노출시키는 표준적인 방법이 되기를 기대한다.
- IDynamicMetaObjectProvider를 통한 WPF 4 데이터 바인딩 지원 덕분에, 동적 프로퍼티를 바인딩할 때에도 자연스러운 프로퍼티 접군 문법을 사용할 수 있게 된다.
Visual State Manager (VSM)
- WPF-Silverlight에 공통적으로 적용되는 새로운 기능으로 VisualStateManager가 있다.
- VSM은 매우 유연해서 각각의 상태 사이의 전환 효과를 자동으로 생성한다. 따라서 컨트롤 제작자는 코드 작성 시간을 줄이고 컨트롤 템플릿에 정의될 모양에 더 집중할 수 있게 된다.
- 이 기능은 Expression Blend를 통해서도 완벽히 지원된다.
HTML-XBAP Script Interop
- XBAP가 HTML frame이나 iframe에 로드되었을 때, XBAP와 호스트 HTML 페이지의 스크립트 사이의 직접적인 접근이 가능하다.
- XBAP에서 HTML DOM에 접근 가능하다. HTML 페이지에 포함된 ActiveX 컨트롤, 스크립트 함수, 전역 변수에 접근할 수 있게 된다.
- 이 기능은 partial-trust XBAP에서 사용 가능하고, 공식 지원되는 IE와 Firefox 버전에서 모두 사용 가능하다.
UIAutomation Virtualization
- 지난 릴리스에서 WPF에 가상화된 컨트롤 개념이 도입되었으나, automation 클라이언트들이 가상화된 컨트롤과 상호 작용하는 데에 표준화된 방법이 제공되지 않았다.
- 그러한 시나리오를 지원하기 위해 ItemsContainerPattern과 VirtualizedItemPattern 이라는 두 가지 컨트롤 패턴이 추가되었다.
SynchronizedInput Pattern
- 이 패턴은 WPF 4에 추가된 또다른 새 UIAutomation 컨트롤 패턴이다.
- 이 패턴은 입력 이벤트가 WPF 프레임워크에 의해 제대로 라우팅 되었는지 automation 클라이언트가 추적할 수 있게 해준다.
- 입력이 어떻게 처리되었는지 알려주는 InputReachedTargetEvent, InputReachedOtherElementEvent, InputDiscardedEvent 라는 세 개의 이벤트가 제공된다.
CLIENT DEPLOYMENT
.NET Framework 4 Client Profile
- 배포 시 사용자 경험을 더욱 개선하기 위해서 .NET Framework 4 Client Profile이 제공된다. 현재 클라이언트 프로필의 재배포 패키지 용량은 30MB이다.
- WinForm과 WPF 등 클라이언트 응용프로그램에 공통적인 기능을 모두 포함하고 있다.
- VS 2010 Beta 2의 클라이언트용 프로젝트 템플릿들의 기본 빌드 타겟은 클라이언트 프로필로 지정되어 있다.
- .NET 3.5 클라이언트 프로필과 달리 Vista, XP, Server 2003, Server 2007, Win 7을 지원하고, 이 OS들의 x86, x64 플랫폼을 모두 지원한다.
Enhancements in NET4 Client Profile vs. NET 3.5 SP1 Client Profile
.NET 4 Client Profile(NEW) | .NET 3.5 SP1 Client Profile | |
지원 OS | .NET Framework이 지원하는 모든 플랫폼과 OS(IA64, Server Core role in Server 2008) | .NET Framework이 설치되지 않은 Win XP 32-bit (이외의 환경에서는 자동으로 Full 버전을 설치함.) |
재배포 패키지 | 웹 다운로드 방식 외에 재배포 패키지도 제공 | 웹 다운로드 방식만 제공 |
프로그램 추가 제거 항목 | Full 패키지는 Client Profile과 "Extended" 파트로 구성된다. 따라서 프로그램 추가 제거에 두 개의 항목이 보인다. "Extended" 항목을 언인스톨하면 클라이언트 프로필과 동일해진다. |
하나의 항목만 표시됨 |
Visual Studio | VS 2010에서는 클라이언트 프로필 지원이 개선되었음 클라이언트 프로젝트 템플릿은 기본적으로 클라이언트 프로필을 빌드 타겟으로 사용함 |
VS 2008 SP1의 프로젝트 속성에서는 클라이언트 프로필을 지원하지 않음 |
포함 기능 | .NET 3.5 SP1 에서 지원하던 기능에 추가적으로 Managed Extensibility Framework(MEF)나 C# 4 dynamic 키워드 같은 새 기능이 추가되었음 | .NET 3.5 SP1 Full의 일부분 |
- .NET 4.0은 이전 닷넷 프레임워크 버전과 병행적으로(side-by-side) 설치된다.
- 즉, .NET 4.0 설치 시에, 이미 설치되어 있는 이전 버전의 닷넷 프레임워크가 업그레이드 될 필요가 없다.
- 따라서 .NET 4.0 Client Profile은 이전의 .NET 3.5 SP1 Client Profile 보다 훨씬 빠르게 설치된다.
Full Trust XBAP Deployment
- WPF 4부터는 인트라넷이나 신뢰할 수 있는 영역의 XBAP도 ClickOnce 권한 상승 프롬프트를 표시할 수 있다.
- minimum code access 수준보다 높은 권한을 요구하는 XBAP가 실행되면 권한 상승 프롬프트가 표시되고, 사용자 'Run'을 선택하면 요구된 권한으로 XBAP가 실행된다.