2011-06-20 90 views
3

我有一個名爲ServiceLayer的類庫,它充當ASP.NET MVC應用程序的存儲庫此服務層具有對稱爲ProfileService的WCF服務的引用,該服務包含Profile方法以在數據庫上執行CRUD操作等WCF SOA命名約定

我現在需要允許移動設備與我的應用程序通信,所以我創建了另一個稱爲ProfileService的WCF服務。此服務具有對ServiceLayer類庫的引用,並調用它來執行配置文件操作。

現在這很混亂,因爲我現在有2個ProfileServices。第一次與我的數據庫進行通信等,並將其展示給我的服務層。第二個與我的服務層進行通信並將其展示給移動設備。

什麼是在SOA環境中命名您的服務的最佳方式,以避免混淆哪種類型是哪種?尤其是在類型之間映射時。

我可能還想創建另一個服務,作爲系統用戶的API。我會命名這個服務ProfileAPI?我知道每個ProfileService都在它自己的命名空間中,但是這在創建AutoMapperSettings或執行手動映射時無助於可讀性。

因此,如果有人知道在這個環境中命名服務的好方法,那將是非常值得讚賞的。

回答

2

你正在尋找一個Service Facade

你要做一個門面,這僅僅是一個專用接口爲您的真正的服務結束。您可以根據需要定義不同的服務(移動設備,用戶,數據庫)

+0

感謝Nix,這就是我的服務層正在做的事情。它充當應用程序的外觀。然而,由於它引用了ProfileService,所以服務的所有DataMembers(即UserRequest/UserResponse對象)都在我的移動設備ProfileService中可見,我也在使用Request/Response設計。爲我的服務模式,也有UserRequest/UserResponse對象。 – Cragly

+0

您的服務層正在訪問ProfileService?那看起來不正確?它應該是相反的?一個真正的外觀應該用通俗的語言說話嗎因此,所有外牆都可以利用現有的服務層,並且真正用作服務層 - >客戶端的翻譯。 – Nix

+0

是的我的服務層使用net.tcp在內部通過Wcf進行調用。因爲數據庫在不同的服務器上,所以我需要這樣靈活一切都引用服務層(或使用IoC在運行時表示它)。然後,我的移動設備服務利用服務層將其調用到系統中。 – Cragly