without meaning

組み込み系SIerのメモ。

(個人的な)WindowsGUIアプリのアーキテクチャ選択早見表

自分用に記載しているので、詳細は参考に貼ったリンク参照で。

クロスプラットフォームは意識していないため、QtやElectronは除外

 

項目名 Win32アプリ Windowフォーム WPF UWP
プログラミング言語 C/C++ C# C# C++/WinRT、C#
特徴 OS制御をWin32APIを通して
かなり自由に行うことができる。
画面の描画は面倒
ポチペタで画面作成できるので、
単純なGUIアプリなら簡単に作成可能。
Win32APIはラッパーを通して使用可能
C#なのでテストやソフトウェア開発に便利な機能は
揃っている。
Win32アプリ程ではないが、リッチUIの作成は
面倒くさい。
XAMLを使うことでリッチUIの作成が比較的簡単
しかし、UWPと違い、UI部品自体は揃っていないため自作する必要がある。
C#なのでテストやソフトウェア開発に便利な機能は揃っている。
Windowフォーム同様、Win32APIはラッパーを通して使用可能
UWPとWin32APIの間を取ったような存在
Win10で使用できるUI部品が
たくさん作られており、オシャレなUIが
作りやすい。
反面、Win32APIを呼べないため、
OS制御は不自由。
インストールも基本的にMicrosoftストアから
ダウンロードしないといけないなど結構面倒
MS一押し。
アーキテクチャ M+VC M+VC MVVM MVVM
(個人的に)
どんな時に選択するか
他装置と通信する、組み込みWindowsアプリなど、
リアルタイム性が要求される場合や
OS単位での制御が必要となる場合
※組み込み(FA系など)製品はタクトタイムが存在するので、
 ガベコレが働く言語は選択されづらい。
ツール作成

密にリアルタイム性が求められない場合の
中規模〜大規模アプリケーション作成

OS制御が不要でリッチなUIが必要な場合
※個人のPCに入れるようなBtoCアプリ作成時など

 

なお、Windows10 1903以降は、XamlIslandsという技術によって、

Win32アプリやWindowフォーム・WPFでもUWPのオシャレなUI部品が使用できるらしい。

 発表されて間もないので、知見が少ないが使いこなせると良さそう。

 

参考:

 

docs.microsoft.com

docs.microsoft.com

 

qiita.com

littlewing.hatenablog.com