0

次の要件を持つクライアント用のクエリ サービスを構築しています。

  • Where、Begin、Contains、And、Or、Paging、Select をサポートします。(1-メイン)
  • ある値から別の値への複数の値のルックアップ/マッピング。クライアントは何百もの値を渡し、同じ量の値を返します。(2)
  • 無効なリクエストに対していくつかの明確なエラー コードを返す (パラメーターが見つからない、不明なフィールドが指定されている、不明な Where 条件が指定されているなど) (3)

(1)(2)については、ODataにはそれらをサポートするための強力な構文があり、(OData + WebAPI)は優れた柔軟なソリューションである可能性がありますが、いくつかの懸念があります。

  • (2)のフィルタ サイズが大きいため、クライアントはGETではなくPOSTでクエリを渡したいと考えています。いくつかのオプションを見たので、ODataの次の 2 つのソリューションについて考えます
  • OData エンドポイントクエリのパフォーマンスに関して、いくつかの懸念事項があります。それで十分でしょうか、それともPOST OData URIを使用してカスタム ストア プロシージャを使用して最高のパフォーマンスを得ることができますか?
  • (3)については、OData エンドポイントを呼び出して正しいエラー コードを返す方法がまだ見つかっていないようです。

また、 ODataQueryOptionとほとんど同じカスタム JSON オブジェクトを構築することも考えており、OData が優れたパフォーマンスで要件を完全に処理できない場合に備えて、これらの要件のそれぞれに Web.API アクションを使用します。しかし、それは私たちの最後の選択です。

では、上記の 3 つを実装するために何を選択しますか? ありがとう。

4

1 に答える 1

0

最初にOData バッチ処理を調査して、それで十分かどうかを判断します。そうすれば、2 番目の要件に対して低レベルのものを再実装する必要はありません (それが最初のソリューションになります)。

通常、クエリのパフォーマンスはバックエンドと同じくらい優れているため、この時点では URI の解析を考慮する必要はありません。Entity Framework を使用している場合は、Linq クエリがどのように見えるか、そして最終的にそれらが実際のバックエンドにどのように変換されるかを見てください。

エラー報告はここで指定されています。OData 4.0 では、同じ応答で複数のエラーを返すことができることに注意してください。ASP.NET Web API + OData 拡張機能を使用して、このような応答を作成する方法は複数あります。ODataErrorsCreateODataErrorResponseを見てください。

あなたの最初の要件は完全にカバーされていると思います。

最終的には、直感に従うか、技術評価に十分な時間が割り当てられている場合は、いくつかのプロトタイプで遊んで実際の数値を実行する必要があります.

于 2013-10-04T16:54:20.673 に答える