Web API を含むクラス ライブラリを作成する方法があるかどうか疑問に思っているので、dll をプラグインとして使用して、MVC アプリケーションに挿入できます。
よろしくお願いいたします。
Web API を含むクラス ライブラリを作成する方法があるかどうか疑問に思っているので、dll をプラグインとして使用して、MVC アプリケーションに挿入できます。
よろしくお願いいたします。
Web API メソッドは HTTP 経由で呼び出されるため、Web API サービスを呼び出すには、それをどこかにホストし、適切なクライアントを使用して呼び出す必要があります (詳細は@David のリンク を参照) 。Web APIを自己ホストできる ため、理論的には、自己ホスト型 Web API サービスをセットアップして呼び出すクラスを含む MVC アプリケーションに対してローカルなアセンブリを作成できます。
次のように、インターフェイスの背後に Web API サービスを挿入します。
public interface IProductsService
{
IEnumerable<Product> GetAllProducts();
}
...次のようなものを実装しました:
public class SelfHostedWebApiProductsService
{
public SelfHostedWebApiProductsService()
{
// Set up a self-hosted Web API service
}
public IEnumerable<Product> GetAllProducts()
{
// Call your self-hosted WebApi to get the products
}
}
インターフェイスに使用する DI コンテナーをSelfHostedWebApiProductsService
構成したらIProductsService
、すぐに使用できます。この記事では、セルフホステッド Web API をセットアップして呼び出す方法について詳しく説明します。
SelfHostedWebApiProductsService
コンストラクターでセルフホステッド Web API をセットアップするため (比較的コストのかかる操作です)、DI コンテナーでこのクラスに単一の有効期間を与えることを検討することをお勧めします。
Web API を自己ホストできます: http://www.asp.net/web-api/overview/hosting-aspnet-web-api/self-host-a-web-api
すべてのコントローラーをクラス ライブラリ プロジェクトに配置できます。
次に、Autofac を使用してホスト プロジェクトの依存関係を解決します: https://code.google.com/p/autofac/wiki/WebApiIntegration