Windows ストア アプリ用 .NET の概要
.NET Framework には、C# または Visual Basic を使用した、Windows ストア アプリの作成に使用できるマネージ型のサブセットが用意されています。マネージ型のこのサブセットは Windows ストア アプリ用 .NET と呼ばれ、.NET Framework 開発者はこのサブセットを使用することで、一般的なプログラミング フレームワークで Windows ストア アプリを作成できます。Windows ストア アプリの開発に関係のない型は、このサブセットに含まれていません。
これらのマネージ型は、Windows ランタイム API の型と共に Windows ストア アプリの作成に使用します。マネージ型が System から始まる名前空間内に存在し、Windows ランタイム 型が Windows から始まる名前空間内に存在する点を除いて、通常、マネージ型の使用と Windows ランタイム 型の使用で違いに気付くことはありません。Windows ストア アプリ用 .NET と Windows ランタイム の両方を合わせて、C# または Visual Basic を使用した Windows ストア アプリの開発に使用できる型とメンバーの一式となります。
マネージ型とメンバーから成るこのサブセットは、Windows ストア アプリの開発に焦点を絞って設計されています。そのため、以下のものは除外されています。
Windows ストア アプリの開発に適用できない型とメンバー (console 型や ASP.NET 型など)。
旧式の型と従来の型。
Windows ランタイム 型と重なる型。
オペレーティング システム機能をラップする型とメンバー (EventLog やパフォーマンス カウンターなど)。
混同しやすいメンバー (I/O 型の Close メソッドなど)。
.NET Framework デスクトップ アプリで使用した型が Windows ストア アプリ用 .NET に存在しない場合もあります。このような場合、代わりに Windows ランタイム の型を使用できます。たとえば、System.IO.IsolatedStorage.IsolatedStorageSettings クラスは Windows ストア アプリ用 .NET に含まれませんが、Windows.Storage.ApplicationDataContainer クラスは、アプリケーション設定を格納する目的で同様の動作を提供します。必要となる可能性がある一般的な変更の例は、「Converting your existing .NET Framework code (既存の .NET Framework コードの変換)」セクションに挙げられています。
C# または Visual Basic を使用する Windows ストア アプリの作成時には、Windows ストア アプリ用 .NET のアセンブリ セット全体がプロジェクト内で自動的に参照されます。このため、付加的な処理をせずに、Windows ストア アプリ用 .NET でサポートされている型はどれでもプロジェクトで使用できます。Windows ストア アプリ用 .NET と Windows ランタイム で用意されている名前空間の組み合わせの一覧 (機能領域別にグループ化されたもの) については、「.NET Framework 名前空間と Windows ランタイム名前空間」セクションを参照してください。
.NET Framework サブセットに含まれている名前空間と型の一覧については、「.NET for Windows Store apps – supported APIs」を参照してください。
汎用性のあるクラス ライブラリ プロジェクトを作成し、Windows ストア アプリから使用できる .NET Framework ライブラリを開発することもできます。このプロジェクトには、対象プラットフォームの 1 つとして、Windows ストア アプリ用 .NET も含める必要があります。汎用性のあるクラス ライブラリ は、各種プラットフォーム (Windows Phone アプリ、デスクトップ アプリ、Windows ストア アプリなど) のアプリから使用できるクラスを開発する場合に特に便利です。以下を参照してください。Portable Class Libraries
このトピックでは、次の内容について説明します。
既存の .NET Framework コードの変換
型を変換する拡張メソッド
.NET Framework 名前空間と Windows ランタイム名前空間
次のトピックは、アプリのその他の部分を Windows ランタイムに変換することに関する情報を説明しています。
既存の .NET Framework コードの変換
一般に、既存の .NET Framework アプリを Windows ストア アプリに単純に変換することはありません。新たなユーザー体験を提供するために .NET Framework アプリを設計し直します。しかし、新しい Windows ストア アプリで使用できるように、既存の .NET Framework アプリの一部を変換することもできます。既存の .NET Framework コードを変換する場合は、必要に応じて Windows ストア アプリで次の変更を加える必要があることに注意してください。
UI の変更
I/O の変更
ストレージの変更
ネットワークの変更
スレッドの変更
リフレクションの変更
セキュリティの変更
リソースの変更
例外の変更
WCF の変更
.NET Framework の一般的な型の変更
UI の変更
Silverlight ベースのアプリまたは Windows Phone アプリから UI コードを変換する場合は、多数の同じ UI 型を使用できますが、型は現在 System.Windows 名前空間ではなく Windows.UI.Xaml 名前空間に配置されています。これらの新しい UI 型は以前の .NET Framework UI 型に似ていますが、異なるメンバーがいくつか含まれています。
以前の型 |
新しい型 |
---|---|
System.Windows.* 名前空間の UI 型 |
Windows.UI.Xaml.* 名前空間の UI 型 (たとえば、Border クラスは Windows.UI.Xaml.Controls 名前空間に配置されています) |
UI コードの移植の詳細については、「Windows Phone 7 アプリから XAML に移行する」を参照してください。
I/O の変更
I/O 型には、非同期プログラミング モデルにおける新しい await キーワードをサポートするための新しいメンバーが含まれています。
ストレージの変更
System.IO.IsolatedStorage クラスを使用する代わりに、Windows.Storage 名前空間の型を使用してローカルのデータとファイルを保存します。
以前の型 |
新しい型 |
---|---|
System.IO.IsolatedStorage.IsolatedStorageFile クラス |
Windows.Storage.ApplicationData クラスの LocalFolder プロパティ
|
System.IO.IsolatedStorage.IsolatedStorageSettings クラス |
Windows.Storage.ApplicationData クラスの LocalSettings プロパティ
|
詳細については、「アプリ データ」を参照してください。
ネットワークの変更
以前の型 |
新しい型 |
---|---|
System.Net.WebClient クラス |
HTTP 要求の送信と HTTP 応答の受信を行う HttpClient クラス または 大量のデータをアップロードまたはダウンロードする Windows.Networking.BackgroundTransfer 名前空間の型 |
System.Net.Sockets 名前空間の型 |
Windows.Networking.Sockets 名前空間の型 |
相対 URI (Windows ランタイム 型に渡される場合) |
絶対 URI 詳細については、以下を参照してください。Passing a URI to the Windows Runtime |
UriFormatException 例外をキャッチする例外処理コード |
UriFormatException の親クラスである FormatException 例外をキャッチするコード |
スレッドの変更
.NET Framework スレッド メンバーの一部が変更され、一部の型が現在 Windows ランタイム API で使用できます。
以前の型 |
新しい型 |
---|---|
System.Threading.Thread.MemoryBarrier メソッド |
System.Threading 名前空間内の Interlocked.MemoryBarrier メソッド |
System.Threading.Thread.ManagedThreadId プロパティ |
System 名前空間の Environment.CurrentManagedThreadId プロパティ |
System.Threading.Thread.CurrentCulture プロパティ |
System.Globalization 名前空間の CultureInfo.CurrentCulture プロパティ |
System.Threading.Thread.CurrentUICulture プロパティ |
System.Globalization 名前空間の CultureInfo.CurrentUICulture プロパティ |
System.Threading.Timer クラス |
|
System.Threading.ThreadPool クラス |
|
作業をプールのキューに配置するコード |
|
作業をプールのキューに配置し、完了を待機するコード |
|
長時間実行される作業項目を作成するコード |
|
リフレクションの変更
System.Type クラスのほとんどのメンバーは、System.Reflection.TypeInfo クラスに移動しました。TypeInfo オブジェクトは、System.Reflection.IntrospectionExtensions.GetTypeInfo(System.Type) メソッド (Type の拡張メソッド) を呼び出すことで取得できます。
以前の型 |
新しい型 |
---|---|
type.Assembly |
type.GetTypeInfo().Assembly |
type.GetMethods(BindingFlags.DeclaredOnly) |
type.GetTypeInfo().DeclaredMethods |
type.GetMethod("MethodName", BindingFlags.DeclaredOnly) |
type.GetTypeInfo().GetDeclaredMethod("MethodName") |
type.GetNestedTypes() |
type.GetTypeInfo().DeclaredNestedTypes |
System.Delegate.CreateDelegate メソッド |
MethodInfo.CreateDelegate メソッド |
詳細については、MSDN ライブラリの「Reflection in the .NET Framework for Windows Store Apps」を参照してください。
セキュリティの変更
セキュリティ、認証、および暗号化の各操作の型の多くは、Windows ランタイム 型を介して使用できます。Windows ストア アプリに使用できるセキュリティ名前空間の完全な一覧については、このトピックで後述するセキュリティ名前空間の一覧を参照してください。
リソースの変更
Windows ストア アプリの場合、デスクトップ アプリで使用されるハブ アンド スポーク モデルではなく、単一のリソース ファイルを作成します。さらに、System.Resources 名前空間ではなく、Windows.ApplicationModel.Resources および Windows.ApplicationModel.Resources.Core 名前空間にあるリソースの種類を使用します。
詳細については、以下を参照してください。Windows ストア アプリでのリソースの作成と取得
例外の変更
Windows ストア アプリ用 .NET に含まれていない例外がマネージ型によってスローされることもあります。このような場合は、含まれていない例外の親クラスをキャッチできます。たとえば、デスクトップ アプリでは UriFormatException 例外をキャッチして無効な URI を処理しますが、Windows ストア アプリでは FormatException 例外をキャッチします。これは、UriFormatException が Windows ストア アプリ用 .NET に含まれていないためです。FormatException は UriFormatException の親クラスです。
WCF の変更
Windows ストア アプリでは、Windows Communication Foundation (WCF) クライアント機能を利用して WCF サービスからデータを取得できます。ただし、データを提供するために WCF サービスを作成することはできません。
.NET Framework の一般的な型の変更
以前の型 |
新しい型 |
---|---|
System.Xml.XmlConvert.ToDateTime メソッド |
XmlConvert.ToDateTimeOffset メソッド |
System.ICloneable インターフェイス |
適切な型を返すカスタム メソッド |
System.Array.AsReadOnly および System.Collections.Generic.List<T>.AsReadOnly メソッド |
次のように作成される、ReadOnlyCollection クラスの新しいインスタンス
|
型を変換する拡張メソッド
ほとんどの場合、特別な考慮や変換をせずに、.NET Framework 型と Windows ランタイム 型を一緒に使用して Windows ストア アプリを開発できます。ただし、.NET Framework 型と Windows ランタイム 型の相互作用をシンプルにするために、.NET Framework によって拡張メソッドが用意される場合もあります。これらの拡張メソッドは次のクラスのものです。
WindowsRuntimeStreamExtensions – マネージ ストリームと Windows ランタイム 内のストリーム間の変換用。
WindowsRuntimeStorageExtensions – Windows ランタイム ファイルおよびフォルダーをマネージ ストリームとして開くために使用される。
WindowsRuntimeBufferExtensions – IBuffer との間で変換するために使用される。
.NET Framework 名前空間と Windows ランタイム 名前空間
以下のセクションでは、Windows ストア アプリ用 .NET と Windows ランタイム に用意されている名前空間を機能別に示します。
コレクション
コア
データとコンテンツ
デバイス
診断
ファイルとフォルダー
グローバリゼーション
グラフィックス
MEF (Managed Extensibility Framework)
次の名前空間をインストールするには、Visual Studio 2012 以降でプロジェクトを開き、[プロジェクト] メニューの [Manage NuGet Packages] をクリックし、Microsoft.Composition パッケージをオンライン検索します。
メディア
ネットワーク
プレゼンテーション
印刷
リフレクション
リソース
セキュリティ
ソーシャル
スレッド
UI オートメーション
ユーザー操作
言語およびコンパイラ
参照
その他の技術情報
.NET for Windows Store apps – supported APIs
Creating Windows Runtime Components for Javascript, in C# and Visual Basic
.NET Framework Support for Windows Store Apps and Windows Runtime