私は現在、MVVMデザインパターンを使用してエンタープライズWPFLOBデスクトップアプリケーションに取り組んでいます。開発マシンの現在のソリューション構造は次のとおりです。
- メインプロジェクト-すべてのビューを含むWPFアプリケーション(XAML)
- ビューモデル-メインプロジェクトのビューをバックアップするすべてのビューモデルが含まれます
- BLL-ビジネスロジックレイヤー
- DAL-データアクセス層-MS-SQLサーバーに接続し、ストアドプロシージャを呼び出します
- モデル-すべての事業体が含まれます
独自のサーバーにあるデータベースを除いて、現時点ではすべてが同じマシンにあるため、現在WCFを使用していません。ただし、将来的には、コードベースを3層に分割することを計画しています。
私が抱えている問題は、ある同僚が、アプリケーションを次のように3つの別々のサーバー/マシンに分割する必要があると主張していることです。
- プレゼンテーション層-ユーザーのマシンのクライアントWPFアプリケーション(表示)。これは、Webクライアントアプリケーションである可能性もあります
- ロジック層サーバー-ビューモデル+モデル+ビジネスロジックレイヤー+データアクセスレイヤー
- データ層サーバー-データベースサーバー
私はビューモデルがビューから離れて(別のサーバーで)生きているとは想像できません。彼はそれが可能であると主張しています。
編集:私の同僚は、サーバー側にビューモデルがあると、将来の展開が容易になり、変更はサーバー側でのみ行われるため、保守が容易になると主張しています。ただし、ClickOnceを使用して.NETアプリケーションを展開したので、それほど大したことではありません。
私が読んだことから、ViewとViewModelを含むユーザーのコンピューターにWPFクライアントアプリケーションをインストールし、WCFなどの通信レイヤーを介して下位レイヤーでサービスを公開することができます。
別の投稿でのこの回答は、次のように述べています。「MVVMでは、UIレイヤーは2つのレイヤーに分かれています。アプリケーションロジックを担当するViewModelと、プレゼンテーションのみを担当するViewです。」これに基づいて、私の基本的な質問は、ViewレイヤーとViewModel UIレイヤーを別々の層(サーバー)に配置できるかどうかです。もしそうなら、それはお勧めですか?そしてそれはどのように達成できるでしょうか?
ありがとう!