Spring.NET學習筆記22——整合WCF(應用篇)

  Spring.NETWCF(Windows Communication Foundation)有很好的支持,Spring.Services程序集下封裝了創建和調用WCF的方法。以往,我們使用svc文件來承載WCF;使用自動生產的代理來調用服務。這樣便對產生了諸多依賴。而使用Spring.NET則會令應用程序得到良好的改善。

 

  讓我們從實例中學習今天的內容:

  

  首先創建服務契約和其實現

 

 

把服務契約的實現類加入Spring.NET中管理

 

 

  創建一個WCF的WCF項目,並引用Common.Logging.dll、Spring.Core.dll、Spring.Data.dll、Spring.Web.dll、Spring.Services.dll(在Spring.NET庫下的3.0文件夾裏)

  Spring.ServiceModel.Activation.ServiceHostFactory類繼承自System.ServiceModel.Activation.ServiceHostFactory,用於在BS架構中承載WCF

 

  建立svc文件

 

 

指定Service屬性爲服務契約的實現類(WcfServer)

 

  配置web.config文件

 

 

 

指定Service節點的name屬性爲剛纔配置的Spring.NET對象(WcfServer)。

在Global的Application_Start方法中實例化Spring.NET對象(Spring.Context.Support.ContextRegistry.GetContext();)

 

這樣WEB宿主的WCF就搭建成功了。

 

而在winform或者控制檯等程序中無法使用svc文件來承載WCF,但這一點被Spring.NET開發團隊考慮到了。Spring.Services程序集下的Spring.ServiceModel.Activation.ServiceHostFactoryObject則是用於非WEB環境的WCF創建。

 

我們以控制檯程序爲例,來講解在非WEB環境的WCF創建:

在控制檯程序中創建一項Spring.NET對象的配置

 

 

 

 

指明TargetName屬性爲實現服務契約的Spring.NET對象(WcfServer)

配置app.config文件,這裏爲了區別WEB環境,我使用netTcpBinding的綁定方式。

 

 

 

指明baseAddress是爲了便於生成WCF的代理類。

 

 最後在控制檯程序的Main方法中實例化Spring.NET容器,這樣一個以控制檯爲宿主的WCF環境便搭建成功了。

 

  然而對於調用WCF,我們通常使用“添加服務應用”的方式來生成WCF的代理類。這樣,在整個項目都使用Spring.NET框架的環境下,很難管理WCF的代理類。

爲了讓Spring.NET來管理WCF的代理類,我們需要配置System.ServiceModel.ChannelFactory<T>這個泛型類,再配置代理類中的factory-method屬性。
至於System.ServiceModel.ChannelFactory<T>類,是用來創建和管理客戶端用來將消息發送到服務終結點的通道,這裏不細講,請查看MSDN。

 

 

注意的是System.ServiceModel.ChannelFactory<T>的構造函數中需要指明endpointConfigurationName屬性爲endpoint的name屬性

 

 

客戶端中調用WCF代理類

 

 

 

 

程序運行的效果:

 

 

代碼下載

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章