【问题标题】:Web API as decoupled service layerWeb API 作为解耦的服务层
【发布时间】:2013-12-08 03:54:53
【问题描述】:
【问题讨论】:
标签:
asp.net-mvc
asp.net-web-api
【解决方案1】:
您可以使用 HttpClient 类通过 http 从您的 MVC 应用程序中使用您的 Web API 方法。像这样:
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost/");
string actionString = string.Format("api/GetSomething/{0}?count={1}", "someId", 5);
HttpResponseMessage response = client.GetAsync(actionString).Result;
if (response.IsSuccessStatusCode)
{
// do something
}
}
【解决方案2】:
我猜你的前端 MVC 和 Web API 在同一个项目中,可能共享相同的模型对象,这是正确的吗?
如果这是正确的并且您想将它们解耦,这就是我的处理方式。
首先,创建 3 个单独的项目。一个将包含您的前端,第二个,您的 Web API,可能还有数据访问逻辑(如果您愿意,这甚至可以是另一个仅由 Web API 调用的数据访问层项目),最后,一个公共对象定义库。
通用对象库不包含任何超出可继承对象和接口定义的代码。该项目将作为对 Web API 和前端 MVC 项目的引用添加,并且应该很容易在您的移动开发语言中复制。这会将您的所有应用按对象放在同一页面上,从而使您的开发任务更加轻松。
其次,我创建了 MVC 前端用来调用 Web API 的 ApiGateway 类。此类使用反射将 API 调用的结果加载到我的定义库中的对象中。此时还可以介绍一些常见的服务器端缓存和错误处理。
如果您需要进一步说明这项技术,请告诉我。