C# WPF(Prism, MVVM) + ASP.NET Web API 2 + EntityFrameworkのサンプルプロジェクトを作成しました。


C# WPF(Prism, MVVM) + ASP.NET Web API 2 + EntityFramework のサンプルプロジェクト

C# WPF(Prism, MVVM) + ASP.NET Web API 2 + EntityFrameworkで動くサンプルプロジェクトが見つからなかったので作成しました。

初級エンジニア?の私には業務系システム開発で、C#、WPFアプリ + MVVMパターン、ORM、Webサービスが使えて、ショートコードかつ整理して書ける仕組みが必要だったからです。

せっかくなので記事を読んでくださってる方にも試してみてもらえればと思い、ソースコードを公開します。Visual Studio 2012で動きます。

GitHubに置いてます。

https://github.com/yuchan1/C-Sharp-WPF-Prism-MVVM-and-ASP.NET-Web-API-2-Sample


【全体イメージ】

wpf_webapi_image.png


【画面イメージ】

wpf_client_image.png


【Prismで利用している主な機能】

・ViewModelLocator(View-ViewModel関連付け)

・ViewModel→Viewへのエラー通知機能(BindableBaseを継承したAddBindableBaseに追加)

・Region + Navigation(画面遷移)

・Delegate command(デリゲートコマンド)

・Notification, Confirmation(ダイアログ)

・PropertyChange(画面へ反映)

・ViewDiscovery(起動時にログイン画面を表示)

・BootStrapper

※サンプルプログラムにはカスタムダイアログ(モーダルウィンドウ)を省略。別途追加予定。

サンプルソースのWPFアプリケーションで使用しているPrism Wpfにより、Prismを利用したことがない人でも、基本的な利用を始めやすいと思います。


【ASP.NET Web API 2 with Entity Framework】

Microsoft公式ドキュメント「Entity Framework 6 で Web API 2 を使用」にある、サンプルコードに準じたものです。

また、認証処理ではForms認証を利用してます。

最初にプロジェクト実行時にMainWindowViewModelで、CookieContainerとHttpClientを準備します。

WPFアプリケーションのログイン画面でログイン要求して

→ ASP.NET Web API 2のAuthControllerで認証、レスポンスから、ユーザー名と権限IDをWPF側のMainWindowViewModelのプロパティに格納します。

ASP.NET Web API 2で作成したEntityFrameworkで使用するPoco Modelは、WPFアプリケーション側にコピーして使用してます。

問題点あれば何かコメント頂けると幸いです。

(ご指摘はお手柔らかに)

追伸 〜

IISに乗せる時は以下の記事もご参考に。

IIS7.5にASP.NET Web API 2を載せる方法と、HTTP Put, Deleteで失敗するの回避策