11

WebAPI を使用して、さまざまなクライアントに使用されるサービス レイヤーを作成することにした場合。Web クライアントを設計する最良の方法は何ですか?

WebAPI は Web フレンドリーであるため、javascript を使用してクライアントから直接これを使用できます。ただし、これはすぐに混乱する可能性があり、javascript は単体テストが最も簡単なテクノロジではないのではないかと心配しています。

別の方法は、HttpClient クラスを使用して、MVC コントローラーから REST サービスを呼び出すことです。これは有効なアプローチですか?

上記の2つのアプローチを組み合わせることができると思いますが、これが面倒になるのではないかと心配しています。どちらかのアプローチを採用した方がよいという意見に同意しますか?

申し訳ありませんが、WebAPI と MVC のどちらを使用するかについて多くの投稿を見てきましたが、2 つを組み合わせることについての投稿はありませんでした。

考え?

4

2 に答える 2

17

別の方法は、HttpClient クラスを使用して、MVC コントローラーから REST サービスを呼び出すことです。これは有効なアプローチですか?

そのとおり。コントローラーはデータの取得元 (フラット ファイル、データベース、Web API など) を認識できないため、このコードはコントローラーではなく DAL レイヤーに配置する必要があります。

したがって、2つのアプローチがあります。

  • HTTP プロトコルを使用して、MVC クライアント アプリケーションから Web API を使用することにしました。この場合、HTTP クライアントを使用してドメイン モデルを直接返すリポジトリ (DAL レイヤー) の実装を作成します。
  • HTTP 要求を送信せずに、この Web API に含まれるサービスを直接使用することにしました。この場合、MVC クライアント アプリケーションで Web API のサービス レイヤーを含むアセンブリを参照すると、このアセンブリが直接 MVC アプリケーションのサービス レイヤーになります。この場合、HTTP を介した Web API は、他のクライアント (javascript、モバイルなど) にサービスを提供します。

どのアプローチを選択するかは、特定のシナリオと要件によって異なります。MVC クライアント アプリケーション以外の相互運用可能なクライアントをサポートする必要がありますか? いずれにせよ、ドメイン モデルなどを含む別のアセンブリでサービス レイヤーを定義することから始めます。次に、Web API (または WCF サービスなど) を介してこのサービス層をいつでも公開したり、.NET クライアントから直接参照したりできます。

于 2012-07-16T12:01:27.337 に答える
1

MVC プロジェクトがあり、API 操作を MVC プロジェクトから別の Web API プロジェクトに分離しようとしていると思いますか? その場合は、ジャンプして別のサービス プロジェクトを作成する前に、メリットを比較検討する必要があります。

別の Web API プロジェクトを作成すると、ドメイン間の障壁があるため、MVC プロジェクトで JavaScript から直接サービス メソッドを簡単に使用することはできません (もちろん、JSONP と CORS はありますが、それほど簡単ではありません)。そのためHttpClient、サービスと通信するには、コントローラーで不要なラッパー メソッドを作成するクラスに依存する必要があります。

APIメソッドによって提供されるデータを必要とするビューがある場合、同じMVCプロジェクトにAPIを含めることを考える価値がありますがApiControllerController.

于 2012-07-16T12:55:45.440 に答える