1 Results for '4.0.60310.0'

  1. 2011.04.23 조용한 업데이트, Silverlight 4 GDR 4 (4.0.60310.0) (1)

실버라이트 개발자라면, 그리고 윈도 업데이트를 꼬박꼬박 하는 분이라면 현재 실버라이트 런타임 버전을 살펴보세요.
아마도 다음과 같이 4.0.60310.0으로 업데이트 되어 있을 거에요.

네, 쥐도 새도 모르게 조용~히 GDR4가 릴리즈되어 심지어 자동으로 설치까지 되었네요.
이번 업데이트는 조금은 특별한 사정이 있는데요, 우선 통상적인 버그 픽스 내용 부터 훑고 넘어가죠.

http://support.microsoft.com/kb/2526954

 

이번 업데이트로 수정된 이슈

이슈1

시나리오

  • HtmlPage.RegisterScriptableObject 메서드를 호출하여 스크립터블 타입을 등록합니다.
  • 실버라이트 4 애플리케이션을 실행하고 자바 스크립트 기반의 스크립트가 스크립터블 타입의 멤버에 접근할 수 있도록 합니다.
  • 애플리케이션이 모덜 윈도에 표시됩니다.

이 시나리오에서 다음의 경고 메시지를 받게 될 것입니다.

This page has an unspecified potential security risk. Would you like to continue?

(※한국어로는 뭐라고 나올지 모르겠네요.)

참고: 이 이슈는 보통 Microsoft Office 365 사용자가 Microsoft SharePoint Online을 이용할 때 나타납니다.

 

이슈2

시나리오

  • 실버라이트 4 애플리케이션에서 Control 클래스를 상속받는 사용자 컨트롤을 만듭니다. 이 사용자 컨트롤은 DefaultStyleKey를 오버라이드 하고 DependencyProperty를 하나 추가합니다.
  • 이 컨트롤의 ContentTemplate 속성은 팝업 컨트롤을 포함하고, 팝업 컨트롤은 ContentPresenter 오브젝트 한개만 포함합니다.
  • 이 오브젝트는 TemplateBinding 기능을 이용하여 앞서 만든 DependencyProperty 속성을 바인딩합니다.
  • 해당 팝업 컨트롤은 열리지 않을 것입니다.

이 시나리오에서 팝업 컨트롤의 메모리는 가비지 수집되지 않습니다. 때문에 메모리 누수가 나타납니다.

 

이슈3

시나리오

  • 인터넷 익스플로러 9를 이용하여 실버라이트 4 애플리케이션을 엽니다.
  • 윈도를 풀스크린 모드로 전환했다가 다시 원래 크기로 돌아옵니다.

이 시나리오에서 윈도의 내용이 제대로 표시되지 않을 수 있습니다. 예를 들어, 윈도에 빈 영역이 나타날 수 있습니다. 이 이슈는 BrowserInteropHelper 클래스가 호스트 HTML 페이지에 있는 자식 엘리먼트의 개수를 잘못 알려주기 때문입니다.

 

이슈4

실버라이트 4 애플리케이션이 DataGrid 컨트롤을 포함한다고 가정합시다. 컨트롤에 있는 각 컬럼의 크기는 다릅니다. 이 시나리오에서 컨트롤의 스크롤을 가로로 움직이면 컨트롤의 행이 잘못 표시됩니다.

 

이슈5

시나리오

  • DataGrid 컨트롤을 포함하는 실버라이트 4 애플리케이션을 실행합니다.
  • 이 컨트롤은 INotifyDataErrorInfo 인터페이스를 이용하여 유효성을 검사하는 타입을 바인딩합니다.
  • INotifyDataErrorInfo.ErrorsChanged 이벤트를 여러번 수신하게 됩니다.

이 시나리오에서 DataGrid 컨트롤의 메모리가 해제되지 않습니다. 때문에 메모리 누수가 나타납니다.

 

이슈6

실버라이트 4 애플리케이션에서 BindingExpression 인스턴스의 대상 엘리먼트가 DataGridCell 오브젝트에 들어있는 TextBlock 엘리먼트 또는 TextBox 엘리먼트라고 가정합시다. 이 상황에서 애플리케이션을 실행하여 해당 엘리먼트를 수정하면 DataGrid 컨트롤의 메모리가 해제되지 않습니다. 때문에 메모리 누수가 나타납니다.

 

이번 업데이트에 추가된 기능

이번 업데이트는 다음 경로의 레지스트리 키가 설정되어 있으면 IsolatedStorageExceptionInnerException 속성을 설정하는 기능을 추가합니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Silverlight\IsolatedStorageInnerExceptionsAllowedDomains

이 레지스트리 키의 값은 콤마(,)로 구분된 도메인 목록입니다.

 

몇몇 메모리 누수 문제를 해결하는 점에서는 꽤 중요한 문제지만, 사실 이것보다는 좀 더 재밌는 점들이 레이더(?)에 잡히네요^^

FirstFloor Software 운영자이자 마이크로소프트 실버라이트 MVP인 Koen Zwikstra씨가 이번 GDR4에서 새로 추가된(!) API를 정리했는데요, 다음 링크에 들어가보면 깔끔하게 정리되어 있어요.

http://firstfloorsoftware.com/files/DiffLists/Silverlight%204%20GDR%203-vs-Silverlight%204%20GDR%204.html

업데이트된 타입이 들어있는 네임스페이스는 총 6개.

  • System.Net.Sockets
  • System.Windows
  • System.Windows.Controls
  • System.Windows.Input
  • System.Windows.Media.Imaging
  • System.Windows.Navigation

그러나 재밌게도 이번 업데이트로 추가된 모든 기능은 MSDN 문서에서 “DO NOT USE”라고 심플하게만 설명되어 있을 뿐이죠. 실제로 비주얼 스튜디오에서도 해당 기능이 인텔리센스에 표시되지 않는지만, Reflector로 해당 어셈블리를 열어보면 존재하는 걸 확인할 수 있어요.

비밀은 바로 EditBrowsable 어트리뷰트! 이 어트리뷰트로 에디터(VS나 Blend)에서 해당 기능이 표시되지 않게 해놓은 것 뿐이죠.

아마도 이 기능들은 실버라이트 5를 위한 일종의 플레이스홀더(placeholder) 역할을 하는 걸로 보이는데요, 소켓에 UDP 필드가 추가된다거나 UIElement의 이벤트에 빌트인으로 Tap, DoubleTap, Hold가 추가된다거나, GestureEventArgs가 추가되는 등 상당히 흥미롭네요.

여튼 지금와서 이것들이 크게 영향을 주는건 아니고 다만 실버라이트 5가 빨리 나왔으면…하는 생각이에요. :)

저작자 표시 동일 조건 변경 허락
신고
Posted by gongdo


티스토리 툴바