私はASP.NET MVC 5(Visual Studio 2015)を学習中で、基本的なMVC Webアプリケーションを作成しました。プロジェクトを作成したときには、「フォルダとコア参照を追加する:」で「MVC」と「Web API」を選択しました。私はまた、認証の下で「Individual User Accounts」を選択しました。 EFを使用していくつかのモデル、コントローラー、およびビューを作成しました。それらは認証と共にうまくいっています。また、私のモデルの1つにAPI機能を追加するために、「Entity Frameworkを使ったアクションを備えたWeb API 2 Controller」を作成しました。再度これはうまく動作します。MVC 5 WebアプリケーションとWeb APIの共有
OAuthをWeb APIで動作させようとしていますが、Tokenを要求するときに問題が発生しました.Webアプリケーションテンプレートにはその部分が付属していないと思います。多くの読んだら、Stack Overflowに関するいくつかの推奨事項を見つけました。通常は、Web APIのために別のプロジェクトを作成する方が良いでしょう。
だから私の質問は以下のとおりです。
私が最も可能性の高い一つのサーバおよび/またはサブドメインと別のWebアプリケーションでWeb APIを展開します。そうであれば、どうしても別々のプロジェクトに参加する必要があります。
2つのプロジェクトを持つ場合、モデルのような一般的なコンポーネントを共有するための最良の方法は何ですか?私のWeb APIでは、Webアプリケーションへの参照を追加し、そのようなWeb API Controllerを作成するか、モデルからコードをコピーしてWeb APIで新しいモデルを作成すべきですか?
私は私のソリューションで新しいクラスライブラリプロジェクトを作成し、モデルを作成し、次にWeb APIとWebアプリケーションの両方でプロジェクトへの参照を追加し、それに対するコントローラを作成しますか? Webアプリケーションでモデルを作成してWeb APIでモデルを参照するよりも、それが優れている理由を説明できますか?認証のために、私はテンプレートのデフォルト設定を使用しているだけで、WebアプリケーションはWeb APIととにかく通信する必要はありません。 – user1624184
共通コードを別の場所に配置することで、Web APIとWeb Appの両方から共通コードを分離することになります。これにより、これらのソリューションの両方から独立してこのコードをテストすることができます。さらに、Web APIプロジェクトがWeb Appプロジェクトと決して衝突しないことを保証します。 –