2015-12-10 43 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); 
} 

的搜索功能很可能被重複使用在未來的業務需求給你。

希望這會有所幫助。