Asp.Net MVC从类库中使用Web api

时间:2013-03-29 11:26:08

标签: asp.net-mvc plugins asp.net-web-api class-library

我想知道是否有办法创建一个包含web API的类库,所以我可以使用dll作为插件,注入MVC​​应用程序。

提前感谢您的帮助。

2 个答案:

答案 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 containerSelfHostedWebApiProductsService用于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