2016-08-18 2 views
1

私は過去にServiceStack ORMLiteを使用していましたが、今はServiceStack RESTful DTOパターンを手に入れています。私は過去にWCF/Web APIを使用していましたが、別の方法でサービスを受けるという私には、何か必要なときにRPC呼び出しを行うという自然なパラダイムがあります。しかし、ServicestackのDTOパターンについて読んで、それ旗艦引数ながら:サービススタックのDTOパターンは本当に役に立ちますか?

あなたは、リモートインタフェースで作業している、このようなリモートファサード (388)のように、それへの各呼び出しは高価です。その結果、 のコール数を減らす必要があります。つまり、各コールでさらに データを転送する必要があります。これを行う1つの方法は、多くのパラメータを使用することです。 しかし、これはプログラムにはしばしば厄介です。実際には の値を返すJavaなどの言語では は不可能です。

解決策は、すべての データを保持できるデータ転送オブジェクトを作成することです。 接続を経由するには、シリアル化可能である必要があります。通常、アセンブラはサーバ側で使用され、 はDTOと任意のドメインオブジェクト間でデータを転送します。

引数自体が私のために多くの質問を頼む:

  1. それは時にProductオブジェクトを扱うページが読み込まその後、私達はちょうどProductテーブルからすべてのデータを持参し、周りにそれを維持することを意味しています再利用(潜在的な再利用)のために?
  2. 1つのコールがすべて大量のデータになる場合はどうなりますか?あるコールで「GetAll」が不必要なデータを多く取得した場合、必要になったときにサーバに戻ってくることが良いアイデアであると、私は主張できませんか?
  3. また、パターンはクライアントサイドの開発者がDTOパターンであることを前提としていると私は思っています。このサービスは一度呼び出され、返されたデータはその後の再利用のためにしばらくの間メモリに保持されます。私が悪い開発者であり、このサービスが多くの再利用のために設計されており、データが必要なたびにサービスを終了するという事実を完全に無視するとどうなりますか?それは2本の剣ではないでしょうか?

答えて

4

Data Transfer Object patternからのみパターンServiceStackのメッセージベースのサービスのメリットはありませんが、それはまた、この前の回答describes benefits it gains by leveraging clean DTOsとドキュメントリストAdvantages of message-based Services、関連Remote FacadeService Gatewayパターンを採用しています。

は、それがProductオブジェクトを扱うページのロードが、我々はちょうどProductテーブルから

ませ粗粒のインターフェイスを、すべてのデータを持っていないとき、全体の製品のデータセットとキャッシングをもたらす程度ではないことを意味していますクライアント上でそのコンテキストで役立つデータだけを返すので、商品についての情報が必要な場合は、商品を見るときにクライアントに役立つ商品や関連メタデータを返します。カテゴリ/サプライヤ情報を使用して、クライアントが複数のサービスコールを実行して必要な情報を取得して待ち時間を短縮し、維持/文書化/学習する必要のあるAPIの面積を縮小し、同じサービスを異なるクライアントの使用状況クライアント固有のRPC呼び出しではなく、UIが変更されたときにサービスを書き直す必要があります。

1つのコールがすべて大量のデータになる場合はどうなりますか?

いいえ、サマリー検索結果が必要な場合は、完全なデータセットを削除しないでください。検索結果に表示する必要があるデータだけを返すように検索を最適化します。 1つのデータセットを表示するときに、Products関連のメタデータを取得できます。私は悪い開発者だと完全にこのサービスは再利用の多くのために設計されており、サービスにどのようなデータが必要とされるたびに呼び出して終了しているという事実を無視したらどう

。それは2本の剣ではないでしょうか?

既存のサービスが必要なデータを返すときに、APIのコンシューマがさまざまなAPIを呼び出して呼び出す可能性は低くなります。粗粒度のAPI呼び出しを少なくすると、キャッシュが簡単な呼び出しが減り、効率的な並行APIコールを構築する方法がわからない素朴な開発者であっても、待ち時間が短縮されます。

+1

いつものように包括的な回答をいただきありがとうございます。 – TeaLeave

関連する問題