我想知道是否有办法创建一个包含web API的类库,所以我可以使用dll作为插件,注入MVC应用程序。
提前感谢您的帮助。
答案 0 :(得分:1)
通过HTTP调用Web API方法,因此调用Web API服务需要将其托管在某处并使用@David's link中详述的合适客户端进行调用。你可以 self-host Web API,所以理论上你可以有一个MVC应用程序本地的程序集,它包含一个设置然后称为自托管Web API服务的类。
您可以在界面后面注入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
}
}
Configure your DI container将SelfHostedWebApiProductsService
用于IProductsService
界面,然后离开。 This article详细说明了如何设置和调用自托管Web API。
由于SelfHostedWebApiProductsService
在其构造函数中设置自托管Web API(相对昂贵的操作),您可能需要考虑在DI容器中为此类提供单例生存期。
答案 1 :(得分:0)
您可以自行托管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