2

ServiceStack の JsonServiceClient.Get に IReturn または IReturnVoid 参照を提供する必要がある理由はありますか? 正当な理由があるに違いありません (私はフレームワークにまったく慣れていません) が、オブジェクトを IReturn ラッパーに変換したり、ServiceStack に依存させたりする必要がある理由がわかりません。

これらの投稿を読みましたが、探している説明が見つかりませんでした (回避策のみ):

ありがとう!

4

1 に答える 1

6

JSON は型指定されていないデータ形式です。文字列と数値、配列とキーと値のペアがあります。それだけです。

JSON over HTTP は型情報を提供しません。

ServiceStack は、HTTP+JSON を実行する他のほとんどの RESTful サービスと同様に、他の言語で記述された他のサービスと同じように機能し、JSON をやり取りします。

サービス メソッドに IReturn を追加しても、サービスが ServiceStack に依存することはありません。他の HTTP クライアントを使用してリクエストを作成し、レスポンスで JSON を取得できます。

さらに、「厳密に型指定された」http クライアント (JsonServiceClient) を使用するオプションが提供されます。これは、サーバー側と同じ .NET タイプにクライアントで自動的にマップされます。そのため、サービス用のネイティブ C#/.NET クライアントを作成する場合は、非常に簡単です。

同時に、あなたや他のクライアントが一般的な「型指定のない」Web サービス クライアントを作成したい場合、それらも期待どおりに機能します。

ajax クライアント、型指定されていない http+json Web サービス クライアント、および ServiceStack クライアントを使用して、次のように考えます。

汎用 Web ブラウザ:

  • リクエスト (JSON) -> HTTP -> ServiceStack サービス
  • レスポンス (JSON) ← HTTP ← ServiceStack サービス

汎用 HTTP クライアント:

  • リクエスト (JSON) -> HTTP -> ServiceStack サービス
  • レスポンス (JSON) ← HTTP ← ServiceStack サービス

ServiceStack の JsonServiceClient:

  • リクエスト (JSON x/.NET タイプ情報) -> HTTP -> ServiceStack Service IReturn
  • レスポンス (JSON x/.NET タイプ情報) <- HTTP <- ServiceStack Service IReturn

通常、クライアントとサーバー プロジェクトからの DTO 型情報を *.ServiceModel アセンブリで参照します。これは、両端で使用できます。DTO とサービスの型情報は「そこに」あるため、クライアントは JSON を正しい型に逆シリアル化する方法を認識します。IReturn は、オブジェクトの「マーカー」(メタデータ) です。古い SS API は、同じことを行うために異なるインターフェイスを使用していましたが、より冗長で柔軟性が低かった (REST と SOAP のリターンが異なるようです)。

また、DTO は IReturn を実装する必要がないことに注意してください。したがって、DTO は SS に依存する必要はありません。IReturn は、「操作」または通信 DTO (パラメーターを渡す DTO) でのみ使用することを好みます。IReturn に依存せずに、データベース テーブル (つまり、OrmLite) にマップする DTO を保持するのが好きです。

https://github.com/ServiceStack/ServiceStack/wiki/C%23-client

于 2013-09-15T01:32:14.553 に答える