私は決定的な選択をすることができず、誰か(または数人の組み合わせ)がRestSharpとServiceStackのクライアントサービスの使用の違いを指摘できることを望んでいました(サービスにすでにServiceStackを使用していることに注意してください) 。これが私がこれまで持ってきたものです(違いのみ)。それらは確かに非常に似ているので、リストはかなり小さいです:
私はRestSharpに傾いていました。POCOを直接使用し、文字列操作をほとんど行わない傾向があるためですが、ServiceStackは、より簡単に検証とコードを取得するのに適していると思います。
だから、ここに質問があります:
私はこれが完全に主観的な質問ではないことを知っていますが、最低限、私はこの質問に対する回答を探しています(これは主観的です)。
ServiceStack のプロジェクトリーダーとして、ServiceStackサービスクライアントのいくつかの機能をリストできます。
ServiceStackサービスクライアントは、ServiceStack Webサービスとその規約の利用に積極的です。つまり、それらは 構造化検証とエラー処理 の組み込みサポートを備えており、すべてのクライアントが同じインターフェイスを実装しているため、 同じユニットテストを統合テストとして使用できます =各JSON、JSV、XML、SOAPおよび Protobuf サービスクライアント-コードの変更なしでサービスが使用するエンドポイント/フォーマットを簡単に変更できるようにします。
基本的に、ServiceStack Webサービスを使用している場合は、ServiceStackクライアントを使用することをお勧めします。これにより、Webサービスを定義したDTOを再利用でき、エンドツーエンドで型指定されたAPIが提供されます。
サードパーティのAPIを使用している場合は、より一般的な目的であるRestSharpをお勧めしますRESTタスクに適しています。ServiceStackはクリーンなDTOをネットワーク経由で返すだけなので、また、RestSharpから簡単に消費できます。必要に応じて、APIも適切なオプションです。
ServiceStackは、 HTTP Client Util拡張メソッド を使用してサードパーティAPIを使用するための代替オプションを提供します。これにより、一般的なHttpWebRequestアクセスパターンに関連するDRY、読み取り可能なAPIが提供されます。
List<GithubRepo> repos = "https://api.github.com/users/{0}/repos".Fmt(user)
.GetJsonFromUrl()
.FromJson<List<GithubRepo>>();
URL拡張子
var url ="http://api.Twitter.com/statuses/user_timeline.json?screen_name={0}"
.Fmt(name);
if (sinceId != null)
url = url.AddQueryParam("since_id", sinceId);
if (maxId != null)
url = url.AddQueryParam("max_id", maxId);
var tweets = url.GetJsonFromUrl()
.FromJson<List<Tweet>>();
代替Content-Type
var csv = "http://example.org/users.csv"
.GetStringFromUrl(acceptContentType:"text/csv");
HTTP Utils wiki page から利用できる他の例。