Windows 8 런타임(WinRT / Windows Store 앱 / Windows 10 Universal App)은 Silverlight 및 WPF와 비교하면 어떻습니까?
저는 메트로 스타일의 앱을 만드는 데 사용되는 새로운 윈도우 8 런타임을 이해하려고 노력하고 있습니다.XAML과 함께 사용할 수 있다는 것을 알고 있으며, 기반을 두고 있습니다.NET so C#과 VB.NET은 앱을 작성하는 데 사용될 수 있지만 HTML, CSS, DOM 및 JavaScript와 관련이 있는 것 같습니다.
누군가 몇 단락에서 그것이 무엇인지 설명할 수 있습니까, a라는 용어로.NET UI 프로그래머가 이해할 수 있습니까?(나는 그것을 이해하는 데 필요한 "키"를 놓치고 있습니다.)
WPF, Silverlight, Windows Forms 등은 적어도 Intel 시스템에서는 Windows 8(및 Windows 10)에서 계속 작동한다는 것을 알고 있습니다. 그러니 제발...
가장 낮은 수준에서 WinRT는 ABI 수준에서 정의된 객체 모델입니다. 모든 객체는 COM을 합니다).IUnknown.refcounting).기존의 COM과 비교하여 상당히 많은 새로운 개념을 추가합니다. 대부분은 에서 직접 제공됩니다.NET - 예를 들어 WinRT 객체 모델에는 대리인이 있고 이벤트가 수행됩니다.이벤트 소스 및 싱크의 기존 COM 모델이 아닌 NET 스타일(이벤트당 하나씩 대리인 및 가입자 추가/제거 방법 포함).다른 주목할 만한 것들 중에서 WinRT는 매개 변수화된 ("일반적인") 인터페이스도 가지고 있습니다.
또 다른 큰 변화는 모든 WinRT 구성 요소에 사용 가능한 메타데이터가 있다는 것입니다.NET 어셈블리.COM에서 당신은 일종의 타입리브를 가지고 있었지만, 모든 COM 구성 요소가 그것들을 가지고 있지는 않았습니다.WinRT의 경우 메타데이터가 .winmd 파일에 포함되어 있습니다. "C:\프로그램 파일(x86)\Windows 키트 8.0\Windows 메타데이터\"가 개발자 미리 보기에 있습니다.둘러보면 코드 없이 메타데이터 테이블만 있는 CLI 어셈블리라는 것을 알 수 있습니다.실제로 ILDASM으로 열 수 있습니다.이것은 WinRT 자체가 관리된다는 것을 의미하는 것이 아니라 단순히 파일 형식을 재사용한다는 것을 의미합니다.
그런 다음 WinRT 인터페이스와 클래스를 정의하는 객체 모델의 관점에서 구현된 많은 라이브러리가 있습니다.위에서 언급한 "Windows 메타데이터" 폴더를 확인하거나 VS에서 Object Browser를 실행하고 프레임워크 선택기에서 "Windows 8.0"을 선택하여 무엇이 포함되는지 확인하십시오.것들이, 것이 - 은 거에는만많있 UI루것아다와 를 얻을 수 또한 다음과 같은 네임스페이스도 있습니다.Windows.Data.Json또는Windows.Graphics.Printing또는Windows.Networking.Sockets.
그런 다음 특별히 UI를 다루는 여러 라이브러리를 얻을 수 있습니다. 대부분 아래에 다양한 네임스페이스가 있을 것입니다.Windows.UI또는Windows.UI.Xaml WPF합니다. 를 들어, WPF/Silverlight 네임스페이스와 유사합니다.Windows.UI.Xaml.Controls 일치합니다.System.Windows.Controls을 위해 헌신하는.Windows.UI.Xaml.Documents기타
은 WinRT nt인 할 수 .NET은 WinRT 구성요소를 마치 WinRT 구성요소처럼 직접 참조할 수 있습니다.NET 어셈블리. Interop과합니다 - COM Interop만 사용하면 . Interop 어셈블리와 같은 중간 아티팩트는 필요하지 않습니다./r파일 및볼 수.winmd 파일 및 메타데이터의 모든 유형과 해당 멤버를 볼 수 있습니다.NET 개체입니다.WinRT 라이브러리 자체는 완전히 네이티브이므로 WinRT를 사용하는 네이티브 C++ 프로그램은 CLR이 전혀 필요하지 않습니다. 관리되는 모든 항목을 노출시키는 마법은 CLR 자체 내부에 있으며 상당히 낮은 수준입니다.만약에 네가 바보라면.참조처럼 winmd를 참조하는 NET 프로그램은 실제로 외부 어셈블리 참조처럼 보입니다. 유형 임베딩과 같은 교묘한 속임수가 없습니다.
또한 무뚝뚝한 매핑도 아닙니다. CLR은 WinRT 유형을 가능한 한 동등한 유형으로 조정하려고 합니다., 및 URI는 "" "GUID", "URI"가 됩니다System.Guid,System.DateTime그리고.System.Uri 각각, 다음같과 WinRT IIterable<T>그리고.IVector<T> 되다IEnumerable<T>그리고.IList<T> 됩니다.이것은 양방향으로 진행됩니다 - 만약 당신이 가 있다면.을 IEnumerable<T>됩니다.RT에 다시 전달하면 다음과 같이 보일 것입니다.IIterable<T>.
궁극적으로, 이것이 의미하는 것은 당신의 것입니다.NET Metro 앱은 기존 표준의 하위 집합에 액세스할 수 있습니다. 라이브러리 ( - NET 네및리리러 (NET 브티이러특히일브부그중이라라이브▁win네rt▁net,)특,일히▁- - native그,▁win) WinRT 라이브러리.Windows.UIAPI 측면에서 Silverlight와 매우 유사합니다.UI를 정의할 수 있는 XAML이 있으며, 데이터 바인딩, 리소스, 스타일, 템플릿 등 Silverlight와 동일한 기본 개념을 처리합니다.의 경우 할 수 있습니다.using새로운 네임스페이스와 API가 조정된 코드의 몇 자리를 조정합니다.
WinRT 자체는 HTML 및 CSS와 아무런 관련이 없으며, 그것이 수행되는 방식과 유사하게 그곳에서도 노출된다는 점에서만 JavaScript와 관련이 있습니다.NET. 에서 WinRT UI 라이브러리를 사용할 때 HTML/CSS/JS를 처리할 필요가 없습니다.앱 (, NET Metro를 호스팅할 수 있을 것 같습니다.)WebView컨트롤...).당신의 모든 것.NET 및 Silverlight 기술은 이 프로그래밍 모델과 매우 관련이 있습니다.
빌드 키노트에서:

HTML/CSS/JavaScript 앱과 C#/XAML 앱 모두에 공통 API를 제공하고 있습니다.C#과 XAML이 사용되겠지만 정확히 WPF나 Silverlight가 아닐 것입니다.
핵심 아이디어는 이제 데스크톱과 메트로라는 두 가지 개발 트랙이 있다는 것입니다.
- 데스크톱은 오래된 앱들이 사는 곳입니다.
- 새로운 종류의 애플리케이션인 Metro 애플리케이션은 VB를 포함하여 다양한 방식으로 구축할 수 있습니다.NET, C# 또는 C++.이 세 가지 언어 옵션은 XAML을 사용하여 UI를 구축할 수 있습니다.대안은 UI와 응용 프로그램 코드 개발을 위해 JavaScript/HTML5/CSS를 사용하는 것입니다.
몇 가지 중요한 사항:
- 윈도우 8은 일종의 고급 휴대폰 OS처럼 느껴집니다.
- 메트로에서는 휴대폰에 창이 없는 것처럼 최상위 창이 겹치지 않습니다.MDI 스타일 애플리케이션을 사용하려면 데스크톱에 있어야 합니다.
- 메트로 스타일 앱은 보이지 않으면 자동으로 일시 중단됩니다.이는 배터리 수명을 연장하기 위해 수행되었습니다.이는 사용자가 상호 작용하지 않는 동안에도 백그라운드 처리를 수행하는 기존의 많은 데스크톱 앱이 Metro로 포팅되는 것이 의미가 없다는 것을 의미합니다.
- ARM 버전의 Windows 8(윈도우 8)은 데스크톱 응용 프로그램을 지원하지 않습니다.따라서 앱을 작성하고 어떤 버전의 Windows에서도 작동하려면 Metro 앱이어야 합니다.
이 아키텍처의 수정된 버전은 정확한 위치를 이해하는 데 도움이 될 것입니다.텔레리크 닌자 중 한 명이 CLR 팀과 대화를 나누며 사진을 수정했습니다.

여기서 CLR의 위치를 확인할 수 있습니다..NET 프레임워크에는 이제 두 개의 프로파일이 있습니다.
1- .NET Metro 프로필(Metro 애플리케이션을 처리하는 CLR)
2 - .NET 클라이언트 프로필(C# 및 VB의 CLR 런타임).NET 애플리케이션)
저는 이것이 당신에게 더 명확한 그림을 주기를 바랍니다.나쁜 그림은 천 번의 긴 토론을 할 가치가 있습니다.
여기 마이크로소프트에서 제공한 많은 세부 사항.
윈도우즈 런타임은 API 메타데이터(.winmd 파일)를 사용하여 노출됩니다.이 형식은 에서 사용하는 형식과 동일합니다.NET 프레임워크(Ecma-335).기본 이진 계약을 사용하면 원하는 개발 언어로 Windows Runtime API에 쉽게 액세스할 수 있습니다.C#과 같은 정적 언어와 JavaScript와 같은 동적 언어는 Windows 런타임 API의 모양과 구조를 모두 이해할 수 있습니다.IntelliSense는 JavaScript, C#, Visual Basic 및 C++로 제공됩니다.
간단히 말해서, Windows 런타임은 Windows 기능을 노출하는 새로운 라이브러리 집합이며 JavaScript/C#/VB/C++에서 사용할 수 있습니다.각 언어는 어떤 생각의 층을 거치지 않고 직접 이해하고 부를 수 있도록 만들어졌습니다.
Silverlight 및 WPF는 CLR에서 실행되는 XAML의 종류입니다.다른 기능 중에서도 Windows Runtime은 Silverlight와 매우 유사한 버전의 XAML을 제공하지만 CLR을 통해가 아닌 기본 방식으로 제공합니다.CLR에서 액세스할 수 있지만 C++에서도 액세스할 수 있습니다.
언급URL : https://stackoverflow.com/questions/7416826/how-does-windows-8-runtime-winrt-windows-store-apps-windows-10-universal-ap
'programing' 카테고리의 다른 글
| 모든 핵심 데이터 관계에 역관계가 있어야 합니까? (0) | 2023.05.04 |
|---|---|
| Microsoft Excel은 파일을 저장할 때 어떤 문자 집합을 사용합니까? (0) | 2023.05.04 |
| IIS7 응답을 설정할 때 사용자 지정 오류를 재정의합니다.상태 코드? (0) | 2023.05.04 |
| Windows에서 "gitbash" 설치에 man 및 zip을 추가하는 방법 (0) | 2023.05.04 |
| 모든 하위 보기를 제거하는 방법은 무엇입니까? (0) | 2023.05.04 |