2012-01-18 58 views
0

我們有一個多服務應用程序。我們已經移動了一個涉及到數據庫訪問WCF端點公開的單獨組件的方法。
我們有2個選項:
1.對該方法的WCF調用。
2.直接調用該方法,由我們的DI引擎解決。
系統性能是一個關鍵問題,所以我們希望通過配置文件在無需重新編譯客戶端應用程序的情況下在選項1和選項2之間切換。
這個想法/架構的任何提示或建議?對這個想法/架構有何建議或建議?

回答

1

你可以教Unity來通過接口解決WCF服務。因此,解決本地服務實現或WCF問題並不重要。您將始終將IMyService注入您的課程。這只是您的配置更改。

您可以配置爲使用的app.config或WCF發現或明確地在代碼中指定綁定的EndpointAddress擴展。

查看TecX project瞭解更多信息。源代碼位於TecX.ServiceModel.AutoMagic。演示使用了一些測試可以在TecX.ServiceModel.Test


更新中找到

定義一個接口爲您服務(如IMyService),並與必要的屬性裝飾它(DataContract,OperationContract)。實施該界面(例如在MyService)。 MyService調用您的方法。現在告訴團結要麼直接IMyService映射到的MyService或添加容器擴展,使您可以IMyService映射到由WCF 的ChannelFactory生成的代理。部署你的服務,你就完成了。 Unity會將任何實施IMyService注入到那些需要它們的類的構造函數中。

+0

「我們希望通過配置文件在選項1和選項2之間切換,無需重新編譯客戶端應用程序」我知道知道權衡,主要是我該如何實現這個構造。 – shahzad 2012-01-19 04:26:12

+0

偉大的說明....塞巴斯蒂安韋伯.....謝謝.... – shahzad 2012-01-19 09:56:57

+0

@shahzad如果我的答案是有幫助的,這將是很好,如果你可以標記爲這樣。 – 2012-01-19 13:20:35

1

我想你應該避免額外的WCF層,如果系統性能是一個關鍵問題,並沒有任何其他的需求驅動設計這種方式。您可能會執行一些性能測試,看看它的開銷是否會被您接受。最後,您可以決定哪個選項更適合您,因此無需切換。

+1

如果需要某些WCF功能(例如,加密呼叫,認證,身份傳播,交易投票,授權,安全審計,事務傳播,呼叫超時,可靠性,持久性,錯誤屏蔽,故障隔離,緩衝和限制,數據版本容忍,遠程管理,互操作性,排隊,發現.. .. )WCF是你可以做的最好的選擇。市場上沒有其他框架可以與其表現相抗衡。 – 2012-01-18 19:22:39

+0

是的,但只有在有需要時... – henginy 2012-01-19 07:31:11