2009-11-30 66 views
0

我們正在開始使用Entity Framework v1構建公共實體模型。目標是將各種常見操作公開爲可供多個不同客戶端使用的服務。我們遇到的問題是重複使用多個服務中的類型。例如:WCF - 在多個服務中使用相同類型

服務1(在http://example/service1/service.svc)返回一個List

服務2(在http://example/service2/service.svc)返回其具有參照產品對象評論對象。

我想在我的客戶端應用程序(通常是Silverlight)中引用這兩項服務,但要求兩種服務的產品類型相同。我如何去做這件事?

+0

我有六個未被接受的問題。 3應該真的是社區wiki。我現在改變了這些。其他3個人之間總共有4個答案,其中沒有一個看起來是正確的。我不會接受一個不正確的答案。這個問題在這些元提到SO帖子 http://meta.stackexchange.com/questions/17579/showing-the-accept-rate-discourages-asking-hard-questions http://meta.stackexchange.com/questions/16712/will-the-accept-rate-score-encourage-unwanted-behavior – 2009-11-30 20:27:12

回答

1

聽起來像一個通用的接口/數據合同庫是需要的。

它將包含您的服務應返回的IProduct/IProductDataContract。

然後這將在所有三個共享。只要符合數據契約/接口,具體的實現就可以歸結爲每個服務。

+0

這看起來像很多工作,似乎打敗了很多構建到VS中的代理生成的東西的目的。在很多情況下,這似乎是矯枉過正。但是,根據這兩篇文章,創建類的客戶端副本似乎是採取的方法 http://compiledexperience.com/blog/posts/Resuing-types-in-Silverlight-Service-References http: //inquisitorjax.blogspot.com/2008/07/silverlight-2-sharing-code-between.html – 2009-12-04 05:00:52

+0

由於每次撥打電話時都會創建一個ChannelFactory,所以VS中的通用代理生成並不是最快的。是的,這是更多的工作。從我的角度來看,我認爲我喜歡界面驅動的方法(即單獨的lib),因爲它允許我刪除系統中WCF的依賴性/可見性。如果我所有的客戶端應用程序都知道他們正在查詢一個工廠,那麼他們永遠不會知道WCF正在做什麼。只允許更換存根和模擬對象,甚至更容易替換服務層通信。 – MattC 2009-12-04 11:22:22

相關問題