2015-12-10 42 views
0

目前,我们有一个业务用例,其中我们显示一个屏幕,其中包含处理,解决和关闭的选项卡状态选项卡,当用户单击该选项卡时,我们将显示前20个记录。WEB API multiple calls vs Single

现在,当它首先加载时间,那么我们需要显示选择默认选项卡,并计数每个选项卡即制程(10),完成(50和有源标签下显示列表

下面是设计接近我们认为,想知道哪一个更好,更易于维护

设计1

  1. 如前所述API暴露的名单。拨打多次调用不同的过滤器,即状态相同的API并获得只计算每个段落llel

  2. 使一个单一的调用来获取列表主动

设计2

  1. 有一个存储过程,这将给所有的罪名,并为同创建一个新的API

  2. 拨打一个电话即可获取活动列表

可能是巨大的,如果有人能提供的宝贵意见

回答

0

分隔出你的功能,还允许重复使用是一件好事任何设计。

如果您有初始屏幕的模型,您可以包含所有选项卡和计数并将其返回给客户端。喜欢的东西:

public class TicketTabList 
{ 
    public IEnumerable<TicketTab> TicketTabs {get;set;} 
} 

public class TicketTab 
{ 
    public string Name {get;set;} 
    public int Id {get;set;} 
    public int Count {get;set;} 
} 

你的控制器则可以从一个端点返回这个(这是在使用的WebAPI的例子):

[HttpGet] 
[ResponseType(typeof (TicketTabList))] 
[Route("api/tickets/getTicketTabList")] 
public IHttpActionResult GetTicketTabList() 
{ 
    var ticketTabList = ... 
    return new OkNegotiatedContentResult<TicketTabList>(ticketTabList, this); 
} 

然后,您可以有通过ID或名称使用检索门票一个单独的终结点像{跳跃}和{}取变量,使您能够分页门票:

public class SearchFilter 
{ 
    public int Skip {get;set;} 
    public int Take {get;set;} 
    ... other variables you may wish to search with 
} 

[HttpPost] 
[ResponseType(typeof (IEnumerable<Ticket>))] 
[Route("api/tickets/search")] 
public IHttpActionResult GetTickets(SearchFilter searchFilter) 
{ 
    var tickets = ... 
    return new OkNegotiatedContentResult<IEnumerable<Ticket>>(tickets, this); 
} 

的搜索功能很可能被重复使用在未来的业务需求给你。

希望这会有所帮助。