プロジェクト

全般

プロフィール

Windowsアプリケーションの種類

Windows 10におけるWindowsアプリケーションの種類

  • 従来のデスクトップアプリケーション
  • WinRTアプリケーション
  • UWP(Universal Windows Program)アプリケーション

従来のデスクトップアプリケーション

Win32 APIを使ったプログラムや、Win32 APIをラップしたフレームワーク(.NET Framework)を使って作られたプログラムなどが該当します。
Windows OSのアクセス制御/セキュリティのもと実行されます。

WinRTアプリケーション

Windows 8で新たに登場したWinRTをベースとするアプリケーションで、別名ストアアプリケーションとも呼ばれています。ストアアプリケーションの命名は、Windowsストアで配布可能な形式から来ています。ストアアプリケーションは、サンドボックス内で動作し、デスクトップアプリケーションに比べて制限があります。

WinRTは、C++で実装され、COM APIで提供されています。APIはメタフォーマットで定義されているので、.NET からはP/Invokeを介さずに利用可能です。

UWPアプリケーション

Windows 10で新たに登場したアプリケーションで、ストアアプリケーションと類似していますが、互換性はありません。
UWPアプリケーションの配布はストア経由が基本となります。
ストアアプリケーション同様、制限付きランタイム環境(サンドボックス)上で実行されますが、制限は緩和されているようです。

基盤

UWPは、Windowsランタイム上で動作するアプリケーションです。
GUIは、XAMLを使う独自な形式(WPFと似ているが別もの)です。
同期処理を多用するので、async/awaitが多用されます。

制限

UWPアプリケーションには、次の制約があります。

管理者権限でのOS機能の実行

管理者権限を必要とする機能は実行することができません。管理者権限を持つユーザーで実行してもできません。

ネイティブAPIの利用

Wind32 API、COM、CRT APIの呼び出しは原則禁止されています。
一方、スタティックリンクライブラリのリンクは可能です。

ファイルアクセス

UWPアプリケーションから利用可能なファイル領域は、アプリケーション毎に割り当てられるアプリケーションデータ記憶域です。
マニフェストに宣言することでアクセスできる規定のフォルダがあります(ピクチャ等)。
任意のフォルダにアクセスするには、エンドユーザーの操作が必要となります(ファイルピッカー、フォルダピッカーを介して)。

印刷

印刷を自動的に開始することができません。

データベースサーバーへのアクセス

データベースサーバーへのアクセスはできません。
Webサービスを呼び出すことのみ可能です。

プロセス間通信

同じマシン上の他のプロセスとのプロセス間通信ができません。
TCP/IP通信が隠蔽されており、HTTPのクライアントとしてHTTPサーバーと通信することが可能です。
ただし、HTTPでもlocalhost宛の接続はできません。

なお、UWPアプリケーション同士の通信は、共有コントラクトという機能が用意されています。
UWPアプリケーションとデスクトップアプリケーション間では、ドラッグ・アンド・ドロップ、クリップボードを介したコピー・アンド・ペーストが可能です。

参考資料