2016-04-06 61 views
2

2つの層(クライアントのプレゼンテーションとビジネスロジック(MVVMを使用するWPF)と1つのSQLサーバー内のデータ)で構造化されたアプリケーションがありますが、あまりに多く使用するという問題に直面しています大量のオブジェクトを処理する必要があるため、クライアントのRAMを使用する必要があります。WCFを使用した3層アーキテクチャ

サーバーのサービスを追加してすべてのビジネスロジックを処理し、クライアントにWCFを使用して表示する必要があるものだけをメモリに提供するという3段階アーキテクチャに変更することを考えました。

私の質問はこれを正しく行う方法です。このサーバーとデータ(SQLサーバー内)との間の通信は簡単ですが、サーバーからクライアントに何を送信する必要がありますか?

たとえば、MVVMのアプローチに従って、モデル、ビューモデル、または何を(サーバーからクライアントに)送信する必要がありますか? ViewModelのプロパティがモデルを参照していて、ViewModelのリストのみを送信する場合、クライアントは情報を読み取ることができますか?

実際の例を教えてください。

+2

は、サービス/ドメイン層を追加しますか? https://programmers.stackexchange.com/questions/159283/mvvm-ddd-and-wpf-layered-application-project-structure-guidance –

答えて

1

サービスレイヤービジネスオブジェクトを組み合わせて、サーバーからクライアントにデータを伝送することを検討してください。 MicrosoftのMicrosoft Application Architecture Guideから

カスタムビジネスオブジェクト。これらは、システムのエンティティを表す共通言語ランタイム(CLR) のオブジェクトです。オブジェクト/リレーショナル マッピング(O/RM)ADO.NET Entity Frameworkの(EF)または NHibernateのような技術は、これらのオブジェクトに

あなたの質問を作成するために使用することができ、「は、私は(を送信する必要がありますモデル、ビューモデル、または何か "は、UIパターン(MVVM)の責任をサーバからクライアントに送信することと混合しています。

サービスレイヤを追加することで、メモリの問題を回避し、オブジェクトを持ち運ぶ負担を管理できます。 MicrosoftのEntity Frameworkのようなオブジェクトに対してオブジェクトリレーショナルマッパーを使用することを検討するか、パフォーマンスを向上させるため軽量のORMをStackOverflow's own Dapper.netのように使用することを検討してください。最後にcareful utilization of delayed query executionIEnumerableとすると、パフォーマンスの問題を解決できるはずです。

この段階では、この設計を行うための多くの方向性があるため、高度なディスカッションは参考になります。このようなシステムの設計の詳細については、MicrosoftのApplication Architecture Guide、Chapter 5: Layered Application Guidelinesを参照してください。下の画像は、必要以上に多くのレイヤーを記述していますが、参考になります。サービス層は、クライアントに提示されたビジネス・オブジェクトを管理することができます。

enter image description here

関連する問題