2013-10-28 45 views
1

我有一個web服務getEmployee(),當一個id被傳遞時,這個getEmployee()可以爲單個員工獲取員工的詳細信息。在服務器內部調用web服務

同一臺服務器上的另一個web服務getEmployeeList()在部門通過時獲取員工的整個列表。這將獲取部門的ID,然後調用getEmployee()服務來獲取所有細節。

Web服務getEmployeeList()的響應基本上是getEmployee()的響應的集合。

我的問題在這裏是如何最好地實現它?每次從getEmployeeList()內部調用getEmployee()多少次,還是每次只調用getEmployee()的process方法(在getEmployee()中有一個處理方法,它將xml作爲輸入並返回響應xml )

+0

員工數據的整體存儲方式如何?你提到個別員工的XML文件。他們是分開的XML文件?它是一個數據庫中的XML數據?它是一個大的xml文件,你在尋找getEmployee()中的特定元素來解析? – Chill

+0

@Chill它存儲在數據庫中。 xml文件只是web服務的輸入,傳入了id。它必須查詢數據庫,獲取詳細信息,並用細節構建一個響應xml – Chillax

回答

3

確切的答案將取決於您的應用程序的內部結構,但通常我會而不是調用運行在同一臺服務器上的另一個Web服務API來爲請求提供服務。這將是低效的,並將一個實現與另一個實現聯繫起來。

如果您需要返回員工列表,您的前端REST層應該調用業務或中間層的方法來檢索相關信息,通常以一組域對象的形式檢索相關信息。這個中間層將負責從持久層獲取實際數據或某種類型 - 即從某種數據庫中獲取合適的員工列表,儘管確切的實現細節應該不相關。

然後可以將它們轉換爲適當的格式,用於構建對客戶端的響應 - 即XML的JAXB對象。 (您的中間層也可以直接返回這些JAXB對象,但這種方法有利/弊)

0

如果有多種功能可以在多個Web服務中重用,那麼該功能是一個很好的選擇,可以作爲單獨的功能可以由另一個函數調用,而不是僅僅有生活端點代碼本身內部的功能

當我來到的一點是這些類型的功能需要被創建,問題通常會成爲一個問題無論它是否爲model功能或helper功能。

在一天結束的時候,如果你要從一個API發出一個curl請求到同一個API中的另一個終端,你只需要花費不必要的時間在網絡帶寬上忙碌......這往往會導致一個本地到本地的場景,但有時候不是,在這種情況下,你會立即注意到它不是一個好主意。