私はモバイルアプリケーションを持つMVCのプロジェクトに取り組んでいるので、モバイルアプリケーションで使用できるようにWeb APIを使用する必要があることは明らかです。
Webサイトの開発を開始したときにAPIを作成した後、私たちは混乱し、APIを使用するか、ビジネスオブジェクトに直接アクセスするかについて議論しました。そして、ビジネスオブジェクトを直接使用する代わりに、Web APIを使用する経験豊富な開発者の意見を聞いた後、私たちは終わりました。
このソリューション構造に関して混乱が生じています。
1)Web APIを使用し、HTTP要求(時間のかかる)を行って、同じソリューションにあるビジネスオブジェクトの代わりにデータを直接取得または配置する必要がある理由。
2)引数を取得した後、クライアントが別のクラウドサーバーでAPIとWebをホストし、APIのみにスケーリングを適用する場合、またはAPIとWebにアクセスするために別のURLを使用する場合(論理的)その場合、同じソリューションでMVCアプリケーションからWeb APIを呼び出す必要がありますか?
3)APIとWebを異なるホスティングでホストしている場合、WebはWebClientを使用し、各ナビゲーションでHTTP呼び出しを行います。正しいですか?
4)別のサーバーでAPIとWebホスティングの両方からビジネスオブジェクトを作成する場合、BLで何か変更を加えた場合は、両方のサーバーでビルドを更新する必要があります。
5)または、API用のプロジェクトを1つだけ作成し、ビューまたはhtmlページを追加してWebインターフェースを開発することで、ajaxから直接APIを呼び出すことができます。
私の知る限りでは、#5が最適なソリューションであるか、APIはサードパーティアクセス専用です。同じソリューションにDB、EF、データ層、ビジネス層がある場合、APIを使用してHTTP呼び出しを行ったり、ビジネスオブジェクトに直接アクセスしたりしないでください。(間違っている場合は修正してください)APIは、モバイルアプリケーションやデスクトップ、またはアプリケーションにアクセスしたいときに同じリポジトリとデータレイヤーを持つために必要です。
私のシナリオでは、モバイルアプリケーションもあるため、APIを作成する必要があります。プロジェクトAPI側では、ビジネスレイヤー(別のプロジェクト)と呼ばれ、ビジネスレイヤーはデータアクセスレイヤー(別のプロジェクト)と通信します。したがって、私の質問は、APIとWebを異なるサーバーにホストする場合、プロジェクトを作成してビジネスレイヤーの.dllを作成するときに、ビジネスレイヤーのメソッドを使用するよりも、HTTPリクエストであるAPIの呼び出しに時間がかかる場合があります APIコントローラーでは、ビジネスの出力をJSON形式に変換するだけです。
インターネットで検索しましたが、納得のいく答えが得られませんでした。私はブログ見つけたhttp://odetocode.com/blogs/scott/archive/2013/07/01/on-the-coexistence-of-asp-net-mvc-and-webapi.aspxを同じポイントを議論したが、再びそのブログで私の質問は、シナリオ#3を検討する必要がある理由です。
更新:異なるAPIプロジェクトとMVCプロジェクトを使用でき、jvascriptを使用してWebからAPIを呼び出すか、MVVMパターンを使用できます。