Spring.NET學習筆記21——整合Web Service(應用篇)

  雖然目前.NET對WebService支持的非常好,Spring.NET認爲還是有幾個方面可以改進:

  第一、.NET在.asmx文件中保存WebService請求和服務對象的關聯關係,這些.asmx文件不管有用沒用都得放在那兒。

  第二、Spring.NET希望能通過IoC容器對WebService進行依賴注入。一般說來WebService總會依賴其它服務對象,所以,如果能用配置方式來選擇服務對象,這個功能就相當強大了。

  第三、目前在.NET中WebService的創建完全是一個實現(特定類型)的過程。多數服務(雖不能說是全部)都應實現爲使用粗粒度服務接口的普通類型,並且,某個對象能否發佈爲遠程對象、WebService還是企業(COM+)組件應該只與配置有關,而不應該取決於它的實現方式。

  ASP.NET用.aspx文件來保存表示層代碼,用code-behind文件中的類保存應用邏輯,.aspx與類代碼文件各有分工;但WebService卻不同,WebService的邏輯完全是在code-behind的類中實現的。.asmx文件並沒有什麼真正的用途,實際上,這個文件既沒有必要存在、也不應該存在。

在將WebServiceFactoryHandler類註冊爲響應*.asmx請求的HTTP Handler之後,開發人員就可以在IoC容器中用標準的Spring.NET對象定義來發布WebService。在以外編寫WebService的過程中,需要增加兩個特性:方法級的[WebMethod]及類型級的[WebService]。要想將這個對象發佈爲WebService,只需依次作以下操作:在web.config文件中,將Spring.Web.Services.WebServiceFactoryHandler註冊爲響應*.asmx請求的HTTP Handler。

  在客戶端,.NET本身最大的缺陷是將客戶端代碼綁定在了代理類而非服務接口上。除非按照Jubal Lowy的著作《Programming .NET Components》中提到的方法,手工讓代理類實現某個服務接口,否則應用程序代碼的靈活性會很低,同時,如果需要使用一個新的、改進過的WebService類,或者打算用一個本地服務替換掉WebService時,相應的更換工作會很複雜。 在Spring.NET的支持下,可以很方便的爲WebService創建實現了指定服務接口的客戶端代理。

  

  準備條件:

 

 

 

 

 

 服務器端:

  首先讓我在Web.config中增加配置

 

 

 

 

 在Global.asax的Application_Start中實例化Spring.NET容器
  WebApplicationContext ctx = ContextRegistry.GetContext() as WebApplicationContext;

 

  運行效果:

 

 

  客戶端:

 

 

 

  運行效果:

 

  代碼下載

 

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