【发布时间】:2015-01-03 02:07:18
【问题描述】:
我目前正在使用 ASP.NET MVC 和单个控制器来实现各种“API”。我正在使用从每个操作方法调用的服务/存储库模式。
类似于下面:
存储库:
public IQueryable<Order> GetOrders()
{
return from sqlOrder in DB.Orders
select new Order
{
Id = sqlOrder.Id,
Name = sqlOrder.Name,
Price = sqlOrder.Price
};
}
服务:
public List<Order> GetOrders()
{
return Repo.GetOrders().ToList();
}
控制器/动作:
public JsonResult GetOrders()
{
var orders = Service.GetOrders();
return Json(orders, JsonRequestBehavior.AllowGet);
}
一切都很好,但是我正在考虑转移到 WEB API 和 Async/Await
类似于下面:
存储库:(无变化)
public IQueryable<Order> GetOrders()
{
return from sqlOrder in DB.Orders
select new Venue
{
Id = sqlOrder.Id,
Name = sqlOrder.Name,
Price = sqlOrder.Price
};
}
服务:
public async Task<List<Order>> GetOrders()
{
return await Repo.GetOrders().ToListAsync();
}
控制器/动作:
[ResponseType(typeof(List<Order>))]
public async Task<IHttpActionResult> GetOrders()
{
var orders = await Service.GetOrders();
return Ok(orders);
}
首先,这种 async/await 和 Repository 模式有什么问题吗?
将原始 MVC 框架用作端点的“API”有什么主要缺点吗?而不是使用“Web API”?
【问题讨论】:
-
为什么投反对票.. 这不是意见我正在寻找关于为什么切换到异步/等待的事实
-
不是 d/v'ter,但您的问题可以解释为“我为什么要搬家”。也许澄清/编辑最后几段以澄清这一点?
-
应该没有任何缺点。功能本质上是一样的,WebAPI 只是提供了一种更加 RESTful-API 驱动的语义方式来实现功能。正如您所建议的,使用普通 MVC 可以实现相同的功能。
-
是的。是否考虑过使用 - 啊 - 工作量更少但功能更多的东西?我的意思是,说真的,你遵循“确保我的 web api 尽可能地笨拙地使用,因为我需要数百次调用任何东西”的反模式。
-
@TomTom 除了没有 WebApi 之外,我不确定我是否听懂了你的意思。
标签: c# asp.net-mvc entity-framework asp.net-web-api async-await