我想構建這樣我的WCF的解決方案:
合同(類庫)
包含所有的服務,運營,故障和數據合同。可在純.NET到.NET情景服務器和客戶端之間共享
服務實現(類庫)
包含實現服務的代碼,並在需要的任何支持/輔助方法來實現這一目標。沒有其他的。
服務主機(S)(可選 - 可以的WinForms,控制檯應用程序,NT服務)
包含用於調試/測試服務的主機上,或者也可能用於生產。
這基本上給了我的服務器端的東西。
在客戶端:
客戶端代理(類庫)
我喜歡我的打包客戶端代理到一個單獨的類庫,使他們可以通過多個實際的客戶端應用程序重複使用。這可以通過使用svcutil或「添加服務參考」並手動調整生成的可怕app.config,或通過使用ClientBase<T>
或ChannelFactory<T>
結構手動實現客戶端代理(共享合同組件)來完成。
1-正實際客戶(任何類型的應用程序)
通常只引用客戶機代理組件,或也許合同組件也一樣,如果它是被共享的。這可以是ASP.NET,WPF,Winforms,控制檯應用程序,其他服務 - 您的名稱。
那樣;我有一個很好的和乾淨的佈局,我一遍又一遍地使用它,我真的認爲這使我的代碼更清潔,更容易維護。
這是靈感來自Miguel Castro的Extreme WCF screen cast在與富蘭克林DotNet岩石電視 - 強烈推薦屏幕演員!