0

サービスアーキテクチャを使用するように再設計している既存のasp.netWebアプリケーションがあります。WCFサービスの始まりがあり、問題なく呼び出して関数を実行できます。データを更新する限り、それはすべて理にかなっています。たとえば、[注文を送信]というボタンがあり、データをサービスに送信して処理を実行します。

懸念事項は次のとおりです。注文のリストを表示するASP.NETページ([注文の表示]ページ)があり、上部に注文タイプのドロップダウンリストや、クエリによって入力されるその他の検索条件があります。データベースとは異なるテーブル(ルックアップテーブルなど)。最終的には、WebアプリケーションをDBから完全に切り離し、データコントラクトを使用して、BLL、SOA、およびWebアプリ間で情報を渡すことを望んでいます。そうは言っても、[注文の表示]ページを読み込むために必要なWCF呼び出しの数を減らすにはどうすればよいですか?BLLの個々の関数によって入力されるため、注文のリストを取得するために1回の呼び出しを行い、ドロップダウンリストごとに1回の呼び出しを行う必要があります。

[注文の表示]ページを1回のショットで表示するために必要なすべてのもので構成される特殊なデータコントラクトを返すWebサービスメソッドを作成するのは良いアーキテクチャですか?この擬似コードのようなもの:

パブリッククラスViewOrderPageDTO
{{
  public OrderDTO [] Orders {get; セットする; }
  public OrderTypesDTO [] OrderTypes {get; セットする; }
  public OrderStatusesDTO [] OrderStatuses {get; セットする; }
  public CustomerListDTO [] CustomerList {get; セットする; }
}

または、page_loadイベントで、ページのロードに必要なデータを取得するために、SOAに対して5、6、または15の個別の呼び出しを行う方が適切ですか?したがって、他のDTOを統合する特殊なwcfメソッドまたはDTOの必要性を回避しますか?

ご意見、ご提案ありがとうございます。

4

2 に答える 2

0

特定の「ビジネス オブジェクト」を表示するために必要な完全なデータ セットを提供するための専用の Web サービス メソッド/操作を持つことは、絶対に優れた設計です。

実際、そのタイプの設計はWeb サービスと SOA の本質そのものです。単なる CRUD のようなデータ アクセス方法ではなく、インテリジェンス抽象化を提供しています。

これは、1 つの Web ページから 5 つまたは 6 つの Web サービス呼び出しを行うよりもはるかに優れたパフォーマンスを発揮します。5 ~ 6 回の呼び出しは非常に多く、特にそれを 1 回に減らすことができる場合はなおさらです。Web サービスの呼び出しは、少なくとも基本的なデータ アクセスやキャッシュ ルックアップに比べてコストがかかる傾向にあり、「おしゃべり」できれば。

あなたの最初の直感は正しかった。必要なものをすべて提供する粗粒度の Web サービスを使用してください。

于 2010-04-30T22:51:55.390 に答える
0

最初は単純にして、取得する必要があるエンティティの種類ごとに 1 つの呼び出しを行うことをお勧めします。考えてみれば、ブラウザーが Web ページをロードするとき、html とすべてのコンテンツ ファイルを取得するために大量の HTTP 要求が行われるため、そのプロセスでいくつかのサービス メソッドを呼び出すことは問題ではありません。サービスが迅速かつ小規模である限り、それほど大きな問題にはなりません。

パフォーマンスの問題が発生している場合は、何かを事前に最適化しようとするのではなく、それらに焦点を当てます. いくつかのサービス呼び出しをまとめたり、サーバー側またはクライアント側にキャッシュ層を実装したりすることを検討できます。

于 2010-04-30T22:40:55.470 に答える