4

まず、この質問が以前に尋ねられた場合は申し訳ありませんが、これに直接答えるものは見つかりませんでした。

これが私の問題です。私は非常に柔軟に設計された製品を継承しており、(silverlight) フォームのほぼすべてのコンボボックスとテキストブロックにデータを入力するにはサービス リクエストが必要です。一部の画面では、入力するだけで 15 回以上の個別のリクエストが必要になります。

現在、私は WCF Web サービスを何度も使用してきましたが、サービス コントラクトを小さな個別の操作に分割することは、あまりヒットしたことはありません..悲しいことに、これはこのプロジェクトには当てはまりません。それで、それは私に疑問を残しました...

私たち自身の壁の外にサービスを公開する計画はありません。この特定のサービス用に別のクライアントを作成する予定はありません。では、サービス エンドで「ユース ケース コントローラ」を作成することはできませんか? したがって、「苦情の作成」画面では、次のようなリクエストのリストを表示する代わりに...

  1. GetComplaintTypes
  2. GetCustomerTypes
  3. GetAreaDetails
  4. 等々...

フォームに入力するには、'GetCreateComplaintData' という単一の操作コントラクトが必要です。クライアントが 1 つしかない場合に、これほど多くの操作がこのような粒度で公開されるのは、クレイジーに思えます。クライアントは、これらすべてのリクエストを集約して同期し、意味のあるものにする必要があります。そもそも意味のあるものを公開しないのはなぜですか?

さらに言えば、サービス API をサードパーティに公開するつもりがない場合、これは DB 内のテーブルの CRUD ops を公開するよりも優れた戦略ではないでしょうか?

すべてのヘルプと意見をお待ちしております。前もって感謝します。

4

5 に答える 5

2

あなたの考えはかなり正しいと思います。

その中間の方法として、複数の WCF 要求を 1 つにバッチ処理する方法も考えられます。このアプローチとそのプログラミング方法については、こちらで説明しています

于 2010-08-31T12:11:36.770 に答える
1

最初に、パフォーマンスの問題がどこにあるかを正確に判断する必要があると思います。IIS に送信する要求の量を IIS が処理できないというのは本当ですか? または、データベースがデータを提供できず、IIS がこのために圧力を処理できないように見えるため、個々の要求に時間がかかりすぎていますか?

次の 2 つのシナリオに実際の違いがあるかどうかはわかりません。

  • それぞれがデータベースの select ステートメントを実行する小さな要求。
  • 多くのデータベース選択ステートメントを実行する 1 つの大きな要求。

もちろん、特定の状況についてはわかりませんが、パフォーマンスが関係する場合は、最適化する理由を正確に事前に知ることが常に賢明です.

于 2010-08-31T12:29:49.457 に答える
1

ビジネス ロジックの最上位にある WCF サービスは、低レベルの CRUD 操作ではなく、高レベルのビジネス操作のファサードを公開する必要があります。CRUD 操作サービスは、データを公開するためのものです (WCF データ サービスと同様)。

于 2010-08-31T12:31:56.350 に答える
1

これが私の見解です。答えはいつものように、場合によります。

ここでは、WCF を使用して SOA を構築する方法の実際的な例をいくつか示します。

Thomas Erl と Roger Sessions の記事を読むことをお勧めします。これにより、SOA とは何かをしっかりと把握できます。

SOA の構築

SOA 設計パターン

SOA で整合性を達成する

SOA が VW ビートルのようであるべき理由

上司向けの SOA の説明

于 2010-09-02T08:18:55.700 に答える
0

WCF で CRUD パターンを使用して DB からデータを公開する最も簡単な方法は、WCF Data Services を使用することです。実際には、公開したいモデル以外にサーバー側で何も開発しません。これは、データベースへのアクセスに使用している場合、EF モデルから自動的に推論される可能性もあります。

パブロ。

于 2010-09-02T16:03:40.220 に答える