【问题标题】:Asp.Net MVC Consuming a web api from a Class LibraryAsp.Net MVC 使用类库中的 web api
【发布时间】:2013-03-20 02:20:10
【问题描述】:
我想知道是否有办法创建一个包含 Web API 的类库,这样我就可以使用 dll 作为插件,注入到 MVC 应用程序中。
提前感谢您的帮助。
【问题讨论】:
标签:
asp.net-mvc
plugins
asp.net-web-api
class-library
【解决方案1】:
Web API 方法通过 HTTP 调用,因此调用 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 容器中为此类提供单例生命周期。