次の要件を持つクライアント用のクエリ サービスを構築しています。
- 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 つを実装するために何を選択しますか? ありがとう。