Windows 스토어 앱 및 Windows 런타임에 대한 .NET Framework 지원.NET Framework Support for Windows Store Apps and Windows Runtime

.NET Framework 4.5는 Windows 런타임을 사용 하 여 소프트웨어 개발 시나리오를 지원합니다.The .NET Framework 4.5 supports a number of software development scenarios with the Windows Runtime. 이러한 시나리오는 다음 세 가지 범주로 구분됩니다.These scenarios fall into three categories:

이 항목에서는.NET Framework 모든 세 범주를 제공 하 고 Windows 런타임 구성 요소에 대 한 시나리오를 설명 지원을 간략하게 설명 합니다.This topic outlines the support that the .NET Framework provides for all three categories, and describes the scenarios for Windows Runtime Components. 첫 번째 섹션은.NET Framework와 Windows 런타임 간의 관계에 대 한 기본 정보를 포함 하 고 도움말 시스템 및 IDE에서 발생할 수 있는 몇 가지 oddities를 설명 합니다.The first section includes basic information about the relationship between the .NET Framework and the Windows Runtime, and explains some oddities you might encounter in the Help system and the IDE. 합니다 섹션을 두 번째 Windows 런타임 구성 요소를 개발 하기 위한 시나리오에 설명 합니다.The second section discusses scenarios for developing Windows Runtime Components.

기본 사항The Basics

.NET Framework 지원 함으로써 앞서 나열한 세 가지 개발 시나리오 Windows 8.x 스토어 앱용 .NET.NET for Windows 8.x Store apps, Windows 런타임 자체를 지원 합니다.The .NET Framework supports the three development scenarios listed earlier by providing Windows 8.x 스토어 앱용 .NET.NET for Windows 8.x Store apps, and by supporting the Windows Runtime itself.

  • .NET framework 및 Windows Runtime 네임 스페이스 .NET Framework 클래스 라이브러리의 간결한 뷰를 제공 하 고는 형식 및 멤버를 만드는 데 사용할 수 있는 Windows 8.x 스토어Windows 8.x Store 앱 및 Windows 런타임 구성 요소입니다..NET Framework and Windows Runtime namespaces provides a streamlined view of the .NET Framework class libraries and include only the types and members you can use to create Windows 8.x 스토어Windows 8.x Store apps and Windows Runtime Components.

    • Visual Studio (Visual Studio 2012 이상 버전) 개발에 사용 하는 경우는 Windows 8.x 스토어Windows 8.x Store 참조 어셈블리 집합으로 관련 형식 및 멤버만 표시 되도록 앱 또는 Windows 런타임 구성 요소입니다.When you use Visual Studio (Visual Studio 2012 or later) to develop a Windows 8.x 스토어Windows 8.x Store app or a Windows Runtime component, a set of reference assemblies ensures that you see only the relevant types and members.

    • 이 간소화 된 API 집합은 단순화 하는 추가 기능을.NET Framework 내에서 중복 되는 또는 Windows 런타임을 복제 하는 기능 제거 합니다.This streamlined API set is simplified further by the removal of features that are duplicated within the .NET Framework or that duplicate Windows Runtime features. 예를 들어, 컬렉션 형식의 제네릭 버전만 포함 하 고 Windows 런타임 XML API를 위해 제거 하는 XML 문서 개체 모델을 설정 합니다.For example, it contains only the generic versions of collection types, and the XML document object model is eliminated in favor of the Windows Runtime XML API set.

    • Windows 런타임에서 관리 코드에서 쉽게 호출할 수 있으므로 운영 체제 API를 래핑하는 기능 또한 제거 됩니다.Features that simply wrap the operating system API are also removed, because the Windows Runtime is easy to call from managed code.

    에 대 한 자세한 합니다 Windows 8.x 스토어 앱용 .NET.NET for Windows 8.x Store apps를 참조 합니다 .NET Windows 스토어 용 앱 개요.To read more about the Windows 8.x 스토어 앱용 .NET.NET for Windows 8.x Store apps, see the .NET for Windows Store apps overview. API 선택 프로세스에 대 한 자세한 내용은 참조는 Metro 스타일 앱 용.NET .NET 블로그의 항목입니다.To read about the API selection process, see the .NET for Metro style apps entry in the .NET blog.

  • Windows 런타임 건물에 대 한 사용자 인터페이스 요소를 제공 Windows 8.x 스토어Windows 8.x Store 응용 프로그램, 운영 체제 기능에 대 한 액세스를 제공 합니다.The Windows Runtime provides the user interface elements for building Windows 8.x 스토어Windows 8.x Store apps, and provides access to operating system features. .NET Framework와 같은 Windows 런타임이 사용 하도록 설정 하는 메타 데이터는 C# 및.NET Framework를 사용 하는 방법은 Windows 런타임을 사용 하도록 Visual Basic 컴파일러 클래스 라이브러리입니다.Like the .NET Framework, the Windows Runtime has metadata that enables the C# and Visual Basic compilers to use the Windows Runtime the way they use the .NET Framework class libraries. .NET Framework에서는 몇 가지 차이점을 숨겨 Windows 런타임을 사용 하기 쉽게 합니다.The .NET Framework makes it easier to use the Windows Runtime by hiding some differences:

    • .NET Framework 및 Windows 런타임 이벤트 처리기 추가 및 제거에 대 한 패턴과 같은 사이의 프로그래밍 패턴의 일부 차이점이 숨겨져 있습니다.Some differences in programming patterns between the .NET Framework and the Windows Runtime, such as the pattern for adding and removing event handlers, are hidden. .NET Framework 패턴을 그대로 사용하면 됩니다.You simply use the .NET Framework pattern.

    • 자주 사용되는 형식(예: 기본 형식 및 컬렉션)의 일부 차이점이 숨겨져 있습니다.Some differences in commonly used types (for example, primitive types and collections) are hidden. 에 설명 된 대로 단순히.NET Framework 형식에 사용할 차이점 표시 되는 IDE에서이 문서의 뒷부분에 나오는.You simply use the .NET Framework type, as discussed in Differences That Are Visible in the IDE, later in this article.

대부분의 경우 Windows 런타임용.NET Framework 지원은 투명 합니다.Most of the time, .NET Framework support for the Windows Runtime is transparent. 다음 섹션에서는 관리 코드와 Windows 런타임 간 명백한 차이점 중 일부를 설명합니다.The next section discusses some of the apparent differences between managed code and the Windows Runtime.

.NET Framework 및 Windows 런타임 참조 설명서The .NET Framework and the Windows Runtime Reference Documentation

Windows 런타임 및.NET Framework 설명서 집합 구분 됩니다.The Windows Runtime and the .NET Framework documentation sets are separate. 형식이나 멤버에 도움말을 표시하기 위해 F1 키를 누르면, 적절한 집합의 참조 설명서가 표시됩니다.If you press F1 to display Help on a type or member, reference documentation from the appropriate set is displayed. 그러나 탐색할 경우 합니다 Windows 런타임 참조 같이 난해해 보이는 예제를 발생할 수 있습니다.However, if you browse through the Windows Runtime reference you might encounter examples that seem puzzling:

  • 와 같은 항목을 IIterable<T> 인터페이스는 Visual Basic 또는 C# 용 선언 구문이 없는 합니다.Topics such as the IIterable<T> interface don't have declaration syntax for Visual Basic or C#. 구문 섹션 위에 메모가 표시 하는 대신 (이 경우 ".NET: 이 인터페이스 System.Collections.Generic.IEnumerable 요소로<T > ").Instead, a note appears above the syntax section (in this case, ".NET: This interface appears as System.Collections.Generic.IEnumerable<T>"). 이.NET Framework와 Windows 런타임 다른 인터페이스를 사용 하 여 비슷한 기능을 제공 합니다.This is because the .NET Framework and the Windows Runtime provide similar functionality with different interfaces. 게다가 동작의 차이점도 있습니다. 예를 들면 IIterableFirst 메서드 대신에 GetEnumerator 메서드를 사용하여 열거자를 반환합니다.In addition, there are behavioral differences: IIterable has a First method instead of a GetEnumerator method to return the enumerator. 일반적인 작업을 수행 하는 다른 방법을 배워야 할 필요 없이,.NET Framework는 관리 코드가 익숙한 형식을 사용 하도록 표시 하 여 Windows 런타임 지원 합니다.Instead of forcing you to learn a different way of performing a common task, the .NET Framework supports the Windows Runtime by making your managed code appear to use the type you're familiar with. 표시 되지 않습니다는 IIterable IDE에서 인터페이스 이므로 Windows 런타임 참조 설명서에서 발생 하는 유일한 방법은 해당 설명서를 통해 직접 이동 하 여 합니다.You won't see the IIterable interface in the IDE, and therefore the only way you'll encounter it in the Windows Runtime reference documentation is by browsing through that documentation directly.

  • SyndicationFeed(String, String, Uri) 설명서는 밀접 하 게 관련 된 문제를 보여 줍니다. 해당 매개 변수 형식이 언어 마다 다른 것으로 나타납니다.The SyndicationFeed(String, String, Uri) documentation illustrates a closely related issue: Its parameter types appear to be different for different languages. C# 및 Visual Basic의 경우 매개 변수 형식은 System.StringSystem.Uri입니다.For C# and Visual Basic, the parameter types are System.String and System.Uri. 즉, .NET Framework에 자체 StringUri 형식이 있고, 이같이 자주 사용되는 형식에 대해 다른 작업 방식을 배우도록 .NET Framework 사용자를 강요하는 것이 적합하지 않기 때문입니다.Again, this is because the .NET Framework has its own String and Uri types, and for such commonly used types it doesn't make sense to force .NET Framework users to learn a different way of doing things. IDE에서.NET Framework 숨기는 해당 Windows 런타임 형식입니다.In the IDE, the .NET Framework hides the corresponding Windows Runtime types.

  • 몇 가지 경우에 같은 GridLength 구조를.NET Framework 이름은 같지만 더 많은 기능을 사용 하 여 형식을 제공 합니다.In a few cases, such as the GridLength structure, the .NET Framework provides a type with the same name but more functionality. 예를 들어, 생성자 및 속성 항목 집합은 GridLength와 연관되어 있지만, 멤버를 관리 코드에서만 사용할 수 있기 때문에 Visual Basic 및 C#용 구문 블록만 있습니다.For example, a set of constructor and property topics are associated with GridLength, but they have syntax blocks only for Visual Basic and C# because the members are available only in managed code. Windows 런타임에서 구조체는 필드만 포함 되어 있습니다.In the Windows Runtime, structures have only fields. Windows 런타임 구조체에 도우미 클래스인 필요 GridLengthHelper, 해당 기능을 제공 합니다.The Windows Runtime structure requires a helper class, GridLengthHelper, to provide equivalent functionality. 관리 코드를 작성할 때 IDE에서 도우미 클래스를 볼 수 없습니다.You won't see that helper class in the IDE when you're writing managed code.

  • IDE에서 Windows 런타임 형식에서 파생 시키는 표시 System.Object합니다.In the IDE, Windows Runtime types appear to derive from System.Object. Object과 같은 Object.ToString에서 상속된 멤버를 가진 것으로 나타납니다.They appear to have members inherited from Object, such as Object.ToString. 이러한 멤버에서 형식을 실제로 상속 하는 경우와 같이 작동할 Object, Windows 런타임 형식으로 캐스팅 될 수 있습니다 Object합니다.These members operate as they would if the types actually inherited from Object, and Windows Runtime types can be cast to Object. 이 기능에는 Windows 런타임용.NET Framework에서 제공 하는 지원의 일부입니다.This functionality is part of the support that the .NET Framework provides for the Windows Runtime. 그러나 Windows 런타임 참조 설명서에서 형식의 보면 이러한 멤버가 나타납니다.However, if you view the types in the Windows Runtime reference documentation, no such members appear. 이 상속된 명백한 멤버에 대한 문서는 System.Object 참조 문서에서 제공합니다.The documentation for these apparent inherited members is provided by the System.Object reference documentation.

IDE에서 표시되는 차이점Differences That Are Visible in the IDE

더 많은 고급 프로그래밍 시나리오에서 작성 된 Windows 런타임 구성 요소를 사용 하는 등 C# 에 대 한 응용 프로그램 논리를 제공 하는 Windows 8.x 스토어Windows 8.x Store JavaScript를 사용 하 여 Windows 용으로 빌드된 앱에서 이러한 차이점은 에서처럼도 IDE에서 명확 합니다 설명서입니다.In more advanced programming scenarios, such as using a Windows Runtime component written in C# to provide the application logic for a Windows 8.x 스토어Windows 8.x Store app built for Windows using JavaScript, such differences are apparent in the IDE as well as in the documentation. 구성 요소가 반환 하는 경우는 IDictionary<int, string> JavaScript를 JavaScript 디버거에서 살펴보면의 메서드를 보면 IMap<int, string> JavaScript Windows 런타임 형식을 사용 합니다.When your component returns an IDictionary<int, string> to JavaScript, and you look at it in the JavaScript debugger, you'll see the methods of IMap<int, string> because JavaScript uses the Windows Runtime type. 두 언어에서 다르게 나타나는 일반적으로 사용되는 컬렉션 형식의 일부는 다음 표에 표시됩니다.Some commonly used collection types that appear differently in the two languages are shown in the following table:

Windows 런타임 형식Windows Runtime type 해당 .NET Framework 형식Corresponding .NET Framework type
IIterable<T> IEnumerable<T>
IIterator<T> IEnumerator<T>
IVector<T> IList<T>
IVectorView<T> IReadOnlyList<T>
IMap<K, V> IDictionary<TKey, TValue>
IMapView<K, V> IReadOnlyDictionary<TKey, TValue>
IBindableIterable IEnumerable
IBindableVector IList
Windows.UI.Xaml.Data.INotifyPropertyChanged System.ComponentModel.INotifyPropertyChanged
Windows.UI.Xaml.Data.PropertyChangedEventHandler System.ComponentModel.PropertyChangedEventHandler
Windows.UI.Xaml.Data.PropertyChangedEventArgs System.ComponentModel.PropertyChangedEventArgs

Windows 런타임에서 IMap<K, V> 하 고 IMapView<K, V> 사용 하 여 반복 됩니다 IKeyValuePair합니다.In the Windows Runtime, IMap<K, V> and IMapView<K, V> are iterated using IKeyValuePair. 관리 코드에 전달되면 이들은 IDictionary<TKey, TValue>IReadOnlyDictionary<TKey, TValue>로 표시되므로 당연히 System.Collections.Generic.KeyValuePair<TKey, TValue>를 사용하여 열거해야 합니다.When you pass them to managed code, they appear as IDictionary<TKey, TValue> and IReadOnlyDictionary<TKey, TValue>, so naturally you use System.Collections.Generic.KeyValuePair<TKey, TValue> to enumerate them.

인터페이스가 관리 코드에 표시되는 방식은 이러한 인터페이스를 구현하는 형식이 표시되는 방식에 영향을 미칩니다.The way interfaces appear in managed code affects the way types that implement these interfaces appear. 예를 들어 PropertySet 클래스는 관리되는 코드에 IDictionary<TKey, TValue>로 나타나는 IMap<K, V>를 구현합니다.For example, the PropertySet class implements IMap<K, V>, which appears in managed code as IDictionary<TKey, TValue>. PropertySet에서 IMap<K, V> 대신 IDictionary<TKey, TValue>가 구현된 것으로 나타나므로 관리되는 코드에서는 .NET Framework 사전의 Add 메서드처럼 동작하는 Add 메서드가 있는 것으로 나타납니다.PropertySet appears as if it implemented IDictionary<TKey, TValue> instead of IMap<K, V>, so in managed code it appears to have an Add method, which behaves like the Add method on .NET Framework dictionaries. 이 클래스는 Insert 메서드를 가지고 있는 것으로 보이지 않습니다.It doesn't appear to have an Insert method.

.NET Framework를 사용 하 여 Windows 런타임 구성 요소를 만들고 JavaScript를 사용 하 여 이러한 구성 요소를 사용 하는 방법을 보여 주는 연습에 대 한 자세한 내용은 참조 하세요. Creating Windows Runtime Components in C# 및 Visual Basic.For more information about using the .NET Framework to create a Windows Runtime component, and a walkthrough that shows how to use such a component with JavaScript, see Creating Windows Runtime Components in C# and Visual Basic.

기본 형식Primitive Types

관리 코드에서 Windows 런타임 자연스럽 게 사용할 수 있도록, 코드에서 Windows 런타임 기본 형식 대신.NET Framework 기본 형식 표시 됩니다.To enable the natural use of the Windows Runtime in managed code, .NET Framework primitive types appear instead of Windows Runtime primitive types in your code. .NET Framework에서 Int32 구조체와 같은 기본 형식에는 Int32.TryParse 메서드 등 유용한 속성 및 메서드가 많이 포함되어 있습니다.In the .NET Framework, primitive types like the Int32 structure have many useful properties and methods, such as the Int32.TryParse method. 반면, 기본 형식 및 Windows 런타임 구조에는 필드만 있습니다.By contrast, primitive types and structures in the Windows Runtime have only fields. 관리 코드에서 기본 형식을 사용할 때 .NET Framework 형식으로 표시되고, 평소와 같이 .NET Framework 형식의 속성 및 메서드를 사용할 수 있습니다.When you use primitives in managed code, they appear to be .NET Framework types, and you can use the properties and methods of the .NET Framework types as you normally would. 다음 목록은 요약을 제공합니다.The following list provides a summary:

  • Windows 런타임 기본 형식에 대해 Int32, Int64, Single, DoubleBooleanString (유니코드 문자를 변경할 수 없는 컬렉션), EnumUInt32, UInt64, 및 Guid에 있는 동일한 이름의 형식을 사용 합니다 System 네임 스페이스입니다.For the Windows Runtime primitives Int32, Int64, Single, Double, Boolean, String (an immutable collection of Unicode characters), Enum, UInt32, UInt64, and Guid, use the type of the same name in the System namespace.

  • UInt8에 대해 System.Byte를 사용합니다.For UInt8, use System.Byte.

  • Char16에 대해 System.Char를 사용합니다.For Char16, use System.Char.

  • IInspectable 인터페이스에 대해 System.Object를 사용합니다.For the IInspectable interface, use System.Object.

  • HRESULT에 대해 하나의 System.Int32 멤버가 있는 구조체를 사용합니다.For HRESULT, use a structure with one System.Int32 member.

와 마찬가지로 인터페이스 형식에이 표현의 증거 때 표시 될 수 있습니다.NET Framework 프로젝트에서 사용 되는 Windows 런타임 구성 요소는 Windows 8.x 스토어Windows 8.x Store JavaScript를 사용 하 여 빌드된 앱입니다.As with interface types, the only time you might see evidence of this representation is when your .NET Framework project is a Windows Runtime component that is used by a Windows 8.x 스토어Windows 8.x Store app built using JavaScript.

해당.NET Framework 포함 관리 코드에 표시 되는 다른 기본, 자주 사용 되는 Windows 런타임 형식 합니다 Windows.Foundation.DateTime 구조는 관리 코드에 나타나는 System.DateTimeOffset 구조 및 Windows.Foundation.TimeSpan 구조체는 으로 표시 되는 System.TimeSpan 구조입니다.Other basic, commonly used Windows Runtime types that appear in managed code as their .NET Framework equivalents include the Windows.Foundation.DateTime structure, which appears in managed code as the System.DateTimeOffset structure, and the Windows.Foundation.TimeSpan structure, which appears as the System.TimeSpan structure.

기타 차이점Other Differences

몇 가지 경우에 Windows 런타임 형식 대신 코드에서.NET Framework 형식을 표시 하는 사용자의 조치가 필요 합니다.In a few cases, the fact that .NET Framework types appear in your code instead of Windows Runtime types requires action on your part. 예를 들어 합니다 Windows.Foundation.Uri 으로 표시 되는 클래스 System.Uri .NET Framework 코드에서.For example, the Windows.Foundation.Uri class appears as System.Uri in .NET Framework code. System.Uri 상대 URI를 사용할 수 있지만 Windows.Foundation.Uri 는 절대 URI가 필요 합니다.System.Uri allows a relative URI, but Windows.Foundation.Uri requires an absolute URI. 따라서 Windows 런타임 메서드에 URI를 전달 하는 경우가 절대적인 지 확인 해야 합니다.Therefore, when you pass a URI to a Windows Runtime method, you must ensure that it's absolute. (참조 Windows 런타임에 URI 전달.)(See Passing a URI to the Windows Runtime.)

Windows 런타임 구성 요소를 개발하기 위한 시나리오Scenarios for Developing Windows Runtime Components

관리 되는 Windows 런타임 구성 요소에 대 한 지원 되는 시나리오는 다음 일반 원칙에 따라 달라 집니다.The scenarios that are supported for managed Windows Runtime Components depend on the following general principles:

  • .NET Framework를 사용 하 여 작성 된 Windows 런타임 구성 요소는 다른 Windows Runtimelibraries와에서 명백한 차이점이 없습니다.Windows Runtime Components that are built using the .NET Framework have no apparent differences from other Windows Runtimelibraries. 예를 들어 관리 되는 코드를 사용 하 여 네이티브 Windows 런타임 구성 요소를 다시 구현 하는 경우 두 구성 않습니다 외부적으로 구별할 수 있습니다.For example, if you re-implement a native Windows Runtime component by using managed code, the two components are outwardly indistinguishable. 코드 그 자체가 관리 코드이더라도 구성 요소가 관리 코드로 작성되었다는 사실은 그것을 사용하는 코드에 표시되지 않습니다.The fact that your component is written in managed code is invisible to the code that uses it, even if that code is itself managed code. 그러나 내부적으로 구성 요소는 실제 관리 코드이며 CLR(공용 언어 런타임)에서 실행됩니다.However, internally, your component is true managed code and runs on the common language runtime (CLR).

  • 구성 요소는 응용 프로그램 논리, Windows 8.x 스토어Windows 8.x Store UI 컨트롤 또는 둘 모두를 구현하는 형식을 포함할 수 있습니다.Components can contain types that implement application logic, Windows 8.x 스토어Windows 8.x Store UI controls, or both.

    참고

    UI 요소를 응용 프로그램 논리에서 분리하는 것이 좋습니다.It's good practice to separate UI elements from application logic. 또한 JavaScript 및 HTML을 사용하여 Windows용으로 빌드된 Windows 8.x 스토어Windows 8.x Store 앱에서 Windows 8.x 스토어Windows 8.x Store UI 컨트롤을 사용할 수 없습니다.Also, you can't use Windows 8.x 스토어Windows 8.x Store UI controls in a Windows 8.x 스토어Windows 8.x Store app built for Windows using JavaScript and HTML.

  • 구성 요소는 Windows 8.x 스토어Windows 8.x Store 앱을 위한 Visual Studio 솔루션 내의 프로젝트이거나 여러 솔루션에 추가할 수 있는 재사용 가능한 구성 요소일 수 있습니다.A component can be a project within a Visual Studio solution for a Windows 8.x 스토어Windows 8.x Store app, or a reusable component that you can add to multiple solutions.

    참고

    구성 요소와만 함께 사용할 경우 C# 또는 Visual Basic의 경우는 Windows 런타임 구성 요소를 만들 필요가 없습니다.If your component will be used only with C# or Visual Basic, there's no reason to make it a Windows Runtime component. 만들 경우 일반.NET Framework 클래스 라이브러리를 대신, Windows 런타임 형식으로 공용 API 화면을 제한할 필요가 없습니다.If you make it an ordinary .NET Framework class library instead, you don't have to restrict its public API surface to Windows Runtime types.

  • Windows 런타임을 사용 하 여 다양 한 재사용 가능한 구성 요소를 해제할 수 있습니다 VersionAttribute 형식 (및 형식 내 멤버)를 식별 하기 위한 특성 서로 다른 버전에 추가 되었습니다.You can release versions of reusable components by using the Windows Runtime VersionAttribute attribute to identify which types (and which members within a type) were added in different versions.

  • 구성 요소의 유형을 Windows 런타임 형식에서 파생 될 수 있습니다.The types in your component can derive from Windows Runtime types. 컨트롤의 기본 컨트롤 형식에서 파생 될 수 있습니다 합니다 Windows.UI.Xaml.Controls.Primitives 네임 스페이스 또는 좀 더 완료 된 컨트롤 같은 Button합니다.Controls can derive from the primitive control types in the Windows.UI.Xaml.Controls.Primitives namespace or from more finished controls such as Button.

    중요

    부터 Windows 8Windows 8 및.NET Framework 4.5에서 관리 되는 Windows 런타임 구성 요소에서 모든 공용 형식은 봉인 되어야 합니다.Starting with Windows 8Windows 8 and the .NET Framework 4.5, all public types in a managed Windows Runtime component must be sealed. 다른 Windows 런타임 구성 요소에서 형식에서 파생 될 수 없습니다.A type in another Windows Runtime component can't derive from them. 구성 요소에서 다형 동작을 제공하려면 인터페이스를 만들어 다형 형식에서 구현할 수 있습니다.If you want to provide polymorphic behavior in your component, you can create an interface and implement it in the polymorphic types.

  • 구성 요소에서 공용 형식에서 모든 매개 변수 및 반환 형식에는 Windows 런타임 형식 (구성 요소를 정의 하는 Windows 런타임 형식 포함) 여야 합니다.All parameter and return types on the public types in your component must be Windows Runtime types (including the Windows Runtime types that your component defines).

다음 섹션에서는 일반적인 시나리오의 예제를 제공합니다.The following sections provide examples of common scenarios.

JavaScript을 사용한 Windows 8.x 스토어Windows 8.x Store 앱에 대한 응용 프로그램 논리Application Logic for a Windows 8.x 스토어Windows 8.x Store App with JavaScript

JavaScript를 사용하여 Windows용으로 Windows 8.x 스토어Windows 8.x Store 앱을 개발할 때 관리 코드에서 응용 프로그램 논리의 일부가 더 잘 수행되거나 개발하기 더 쉬울 수도 있습니다.When you develop a Windows 8.x 스토어Windows 8.x Store app for Windows using JavaScript, you might find that some parts of the application logic perform better in managed code, or are easier to develop. JavaScript는 .NET Framework 클래스 라이브러리를 직접 사용할 수 없지만, 이 클래스 라이브러리를 .WinMD 파일로 만들 수 있습니다.JavaScript can't use .NET Framework class libraries directly, but you can make the class library a .WinMD file. 이 시나리오에서는 Windows 런타임 구성 요소 이므로 앱의 핵심 버전 특성을 제공에 적합 하지 않습니다.In this scenario, the Windows Runtime component is an integral part of the app, so it doesn't make sense to provide version attributes.

다시 사용 가능한 Windows 8.x 스토어Windows 8.x Store UI 컨트롤Reusable Windows 8.x 스토어Windows 8.x Store UI Controls

재사용 가능한 Windows 런타임 구성 요소에서 관련된 UI 컨트롤 집합을 패키징할 수 있습니다.You can package a set of related UI controls in a reusable Windows Runtime component. 구성 요소는 직접 시장에 출시하거나 사용자가 만든 앱의 요소로서 사용할 수 있습니다.The component can be marketed on its own or used as an element in the apps you create. 이 시나리오에서는 Windows 런타임을 사용 하는 것이 있도록 VersionAttribute 호환성을 개선 하는 특성입니다.In this scenario, it makes sense to use the Windows Runtime VersionAttribute attribute to improve compatibility.

기존 .NET Framework 앱의 재사용 가능한 응용 프로그램 논리Reusable Application Logic from Existing .NET Framework Apps

독립 실행형 Windows 런타임 구성 요소로 기존 데스크톱 앱에서 관리 되는 코드를 패키지할 수 있습니다.You can package managed code from your existing desktop apps as a standalone Windows Runtime component. 따라서 C++ 또는 JavaScript를 사용하여 빌드한 Windows 8.x 스토어Windows 8.x Store 앱 및 C# 또는 Visual Basic을 사용하여 빌드한 Windows 8.x 스토어Windows 8.x Store 앱 모두에서 구성 요소를 사용할 수 있습니다.This enables you to use the component in Windows 8.x 스토어Windows 8.x Store apps built using C++ or JavaScript, as well as in Windows 8.x 스토어Windows 8.x Store apps built using C# or Visual Basic. 코드를 재사용하는 시나리오가 여러 개일 경우 버전 관리는 옵션입니다.Versioning is an option if there are multiple reuse scenarios for the code.

제목Title 설명Description
Windows 스토어 앱용 .NET 개요.NET for Windows Store apps overview .NET Framework 형식 및 멤버를 만드는 데 사용할 수 있는 설명 Windows 8.x 스토어Windows 8.x Store 앱 및 Windows RuntimeComponents 합니다.Describes the .NET Framework types and members that you can use to create Windows 8.x 스토어Windows 8.x Store apps and Windows RuntimeComponents. (Windows 개발자 센터)(In the Windows Dev Center.)
C# 또는 Visual Basic을 사용 하 여 Windows 스토어 앱 용 로드맵Roadmap for Windows Store apps using C# or Visual Basic C# 또는 Visual Basic을 사용하여 Windows 8.x 스토어Windows 8.x Store 앱을 개발하기 시작할 때 도움을 주기 위해 다양한 퀵 스타트 항목, 지침 및 모범 사례를 포함한 주요 리소스를 제공합니다.Provides key resources to help you get started developing Windows 8.x 스토어Windows 8.x Store apps by using C# or Visual Basic, including many Quickstart topics, guidelines, and best practices. (Windows 개발자 센터)(In the Windows Dev Center.)
방법 tos (XAML)How tos (XAML) C# 또는 Visual Basic을 사용하여 Windows 8.x 스토어Windows 8.x Store 앱을 개발하기 시작할 때 도움을 주기 위해 다양한 퀵 스타트 항목, 지침 및 모범 사례를 포함한 주요 리소스를 제공합니다.Provides key resources to help you get started developing Windows 8.x 스토어Windows 8.x Store apps by using C# or Visual Basic, including many Quickstart topics, guidelines, and best practices. (Windows 개발자 센터)(In the Windows Dev Center.)
C# 및 Visual Basic으로 Windows 런타임 구성 요소 만들기Creating Windows Runtime Components in C# and Visual Basic .NET Framework를 사용 하 여 Windows 런타임 구성 요소를 만드는 방법에 설명의 일부로 사용 하는 방법에 설명는 Windows 8.x 스토어Windows 8.x Store 앱에서 JavaScript를 사용 하 여 Windows 용으로 빌드된 및 Visual Studio로 조합을 디버깅 하는 방법에 설명 합니다.Describes how to create a Windows Runtime component using the .NET Framework, explains how to use it as part of a Windows 8.x 스토어Windows 8.x Store app built for Windows using JavaScript, and describes how to debug the combination with Visual Studio. (Windows 개발자 센터)(In the Windows Dev Center.)
Windows 런타임 참조Windows Runtime reference Windows 런타임에 대 한 참조 설명서입니다.The reference documentation for the Windows Runtime. (Windows 개발자 센터)(In the Windows Dev Center.)
Windows 런타임에 URI 전달Passing a URI to the Windows Runtime Windows 런타임 및 방지 방법은 관리 되는 코드에서 URI를 전달 하는 경우 발생할 수 있는 문제를 설명 합니다.Describes an issue that can arise when you pass a URI from managed code to the Windows Runtime, and how to avoid it.