2014-01-06 49 views
1

我們正在使用MVC 4.0和web API重寫我們的系統,目前我們正在使用決策分離器。Web API多重或單一調用

難道是更有效的/最佳實踐,以用於在MVC網頁上顯示的數據做多個小的呼叫到一個Web API,而不是一個單一的大單: -

多個呼叫

呼叫1 - 返回關於用戶的核心數據(用戶模型)

呼叫2 - 關於用戶狀態返回數據(狀態模型)

呼叫3 - 返回用戶歷史(歷史模型)

單呼: 返回一個完整的視圖模型,其中包括有關用戶,他目前的狀態和歷史的項目列表中的所有核心數據

public string UserName { get;set;} 
    public Status UserStatus { get;set;} 
    public List<history> { get;set;} 

任何意見,將不勝感激(附加信息,呼叫的每一個都是一個單獨的數據庫調用)

+3

此API *的用戶是否總是*執行全部3個呼叫,*經常*執行全部3個呼叫,或者*有時*執行全部3個呼叫? –

+0

爲當前用戶頁面,然後是,所有3個電話,但回答你的問題,然後id設想,用戶的詳細信息也可以被稱爲seperatly,所以「有時」 – Simon

+0

這真的是設計師的意見。 –

回答

2

雖然我不能肯定這是這個問題(我認爲這可能屬於最好的地方更多的進入程序員領域),我會說這實際上取決於你最需要的數據。如果您的應用中的每個頁面都需要整個對象,那麼是否真的會爲您節省任何時間以進行多個小調用?如果某些數據可以緩存在客戶端,那麼可能很多小的調用會更有效,但否則,您將增加客戶端的數量(客戶端必須檢索,解析並輸出三個流數據)和服務器(呼叫必須被路由,檢索數據和返回數據)的工作幾乎沒有什麼好處。其次,正如@Damien_The_Unbeliever指出的那樣,外部人員稱這個API爲問題。如果API是公開的,或者由多個應用程序調用,那麼這個問題是什麼是大多數/應用程序需要的最有效的包,而不僅僅是這個應用程序需要什麼。如果/ most/apps將需要整個對象,那麼給它們調用僅檢索那個對象的片斷是沒有意義的。如果他們只需要狀態,那麼只需檢索狀態的API方法是一個很好的調用。

0

當您設計API操作時,請始終考慮性能,您的操作將在一秒鐘內消耗多少次,您的單獨操作是否需要很長時間才能響應。通過使用Stopwatch爲每個操作做簡單的基準測試,然後進行幾次並行調用,看看是否有任何操作產生瓶頸。

在我看來,每一個行動都應該是簡單而原子的。