3

最近、ASP.NET WebAPIを試してみました。これには、結果を表示するHtml-Pages、ブラウザー/フィドラーでのODataクエリの試行などが含まれ、非常に感銘を受けました。これまでのところ、すべてがうまく機能しています。

しかし...今、WebAPIが公開するすべてのメソッドに簡単にアクセスできる再利用可能な.Netクライアントライブラリを構築しようとしています。私はLinq2Rest(素晴らしいIQueryable-Interface!)を介して、そしてHttpClientを使用して自分でラッパーを実装することでこれを実行しようとしました。

Linq2Restに関する私の問題:

  • これはMicrosoftによるものではなく、Microsoftによる多くの変更があり、ある時点でLinq2Restに反映されないのではないかと心配しています。
  • また、Linq2Restを使用してPut / Delete / Postを呼び出す方法がよくわかりません。すべての「Linq2Rest-Context」内にHttpClientがあると、非常に見苦しくなります。

HttpClientを使用して自分でクライアントを実装しようとすると、方法がわかりません。

  • IQueryable-WebAPIに対して呼び出しを発行します-最初にすべてのレコードをクライアントにロードせずに取得します(私のシナリオでは、最大20000レコードが非常に一般的です)
  • すべての「APIController」に対して非常に類似したコードを記述しないでください-クライアント、最終的には約15〜20個のコントローラーがあり、非常に類似していますが、異なる「オブジェクト」を返します

すべての提案をありがとう...

4

2 に答える 2

4

私はLinq2Restの開発者であり、あなたのポイントは非常に有効です。Linq2Restは、WebAPIの外部でODataサポートを追加するために作成されました。すでにWebAPIを使用している場合は、必ずMicrosoftを使用してください。

これはMicrosoftによるものではありませんが、ODataはオープンスタンダードであり、Linq2Restは標準ドキュメントに従って実装されています。オープンソースであることは、Linq2RestがMicrosoftよりも頻繁にリリースできることを意味します。このため、Microsoftが現在サポートしていないOData3仕様のAny/Allクエリをすでにサポートしています。

クライアントを各コンテキストに注入することは、クライアントがサポートするサービスについての制限を緩和することです。エンドポイントを定義するのはあなた次第です。単一のコンテキストから複数のエンドポイントをサポートする方法を考えています。

現在、PUT / POST / DELETEはサポートされていませんが、プロジェクトの機能リクエストとして投稿すると(https://bitbucket.org/jjrdk/linq2rest/issues?status=new&status=open)、確実にサポートされます。パイプラインに追加されました。

編集:最新のプレリリースでは、PUT / POST/DELETE操作のサポートが追加されています。APIは現在テスト中です。2.5.0.0からバージョンをダウンロードすると、そのサポートが見つかります。

于 2012-07-31T13:34:27.857 に答える
0

OdataLibraryをお探しの場合。次に、Micrsoftからこれを試してください

http://blogs.msdn.com/b/astoriateam/archive/2011/10/14/introducing-the-odata-library.aspx

于 2012-07-24T15:11:58.210 に答える