2

私は 2 つの層 (クライアント (MVVM を使用する WPF) のプレゼンテーションとビジネス ロジック、および 1 つの SQL サーバーのデータ) で構造化されたアプリを持っていますが、必要性のためにクライアントであまりにも多くの RAM を使用するという問題に直面しています。操作するオブジェクトの大規模なコレクション。

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

私の質問は、これを適切に行う方法についてです。このサーバーとデータ (SQL サーバー内) の間の通信は非常に簡単ですが、サーバーからクライアントに何を送信すればよいでしょうか?

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

これの実際の例をいくつか教えてもらえますか?

4

1 に答える 1

1

サーバーからクライアントにデータを運ぶために、ビジネス オブジェクトと組み合わせてサービス層を追加することを検討してください。

Microsoft のMicrosoft Application Architecture Guideから:

カスタム ビジネス オブジェクト。これらは、システム内のエンティティを記述する共通言語ランタイム (CLR) オブジェクトです。ADO.NET Entity Framework (EF) や NHibernate などのオブジェクト/リレーショナル マッピング (O/RM) テクノロジを使用して、これらのオブジェクトを作成できます。

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

サービス層を追加することで、メモリの問題を回避し、オブジェクトを持ち運ぶ負担を管理できます。これらのオブジェクトには、Microsoft の Entity Framework のようなオブジェクト リレーショナル マッパーを使用するか、パフォーマンスを向上させるために、 StackOverflow 独自の Dapper.net のような軽量の ORM を使用することを検討してください。最後に、遅延クエリ実行を慎重に利用するIEnumerableことで、パフォーマンスの問題を解決できるはずです。

この設計には多くの方向性があるため、この段階でハイレベルな議論が役に立ちます。このようなシステムの設計に関する詳しいガイダンスについては、Microsoft の Application Architecture Guide のChapter 5: Layered Application Guidelinesを参照してください。下の画像は必要以上のレイヤーを説明しているかもしれませんが、参考にしてください。サービス層は、クライアントに提示されるビジネス オブジェクトを管理できます。

ここに画像の説明を入力

于 2016-04-06T18:39:46.733 に答える