在 VS 類庫項目中 Add Service References 和 Add Web References 的區別


出身問題:

1.在vs2005時代,Add Web Reference(添加Web服務引用)的功能主要是添加Web Service引用。基於.NET Framework 2.0。

2.自VS2008以后,為了對.NET Framework 3.0 或 3.5版本上WCF Service Library的支持。增加了Add Service Reference(添加服務引用)功能。但為了版本向前兼容而保留了Add Web Reference(添加Web服務引用)。

生成引用文件的區別(本段來自於網上評論,僅供參考):

用兩種方式添加同一個WebService,生成 Reference.cs的區別:
1.主要添加引用都有一個獲取服務元數據,反序列話本地類文件的過程。這個結構也基本類似。都包含wsdl\discovery等文件。
這個也和WCF Service支持Web Service的核心行業標准有關系。畢竟WCF的特性之一就是兼容Web Service的特性。
2.不同的地方時Add Web Reference 生成的 Reference.cs文件里,包含一個服務代理類,他負責與Web服務通信,它繼承一個Soap類,使用SOAP協議,SOAP簡單對象訪問協議,基於XML語言。此外還包含一些Web服務類里定義的方法,和與之相關的異步調用方法和事件。遵守.NET Web Service 的主要規則。
3.Add Service Reference生成的客戶端文件 Reference.cs。我看了一下,這個也會反序列化一個本地代理類,很相似和前者。不過除了服務類和其相關的一些別的類和契約接口。其中比較重要就是一個契約和一個通信管道。這個主要和WCF框架的編程模型和反序列話機制有關系。因為WCF 強調的是 契約的概念,還有就是綁定協議,這個就直接決定了客戶端和服務端通信的通道類型。你在這個文件里也能看到。此外還有服務請求和相應對應的信息。遵循WCF服務框架的規則。

使用區別:

1.Add Web Reference:

構造實例 WebReference1.Service1 webs1 = new WebReference1.Service1()的構造方法不可重載。使用實例webs1時,可以通過webs1.Url來改變引用的地址。如:webs1.Url = "http://localhost:7280/Service1.asmx"。

2.Add Service Reference:

構造實例WebReference1.Service1 webs1 = new WebReference1.Service1()提供重載構造方法,默認構造方法引用的地址為<client>節點下<endpoint>中的配置地址,也可用ServiceReference1.Service1SoapClient webs2 = new ServiceReference1.Service1SoapClient("Service1Soap", "http://localhost:7280/Service1.asmx")來指定服務地址。不可以再用webs2.Url = "http://localhost:7280/Service1.asmx"來改變服務地址。

使用區表小結:

Add Service Reference只能在構造實例實例時指定服務地址,不可動態改變。這樣可以再編譯時檢查出錯誤,以減少運行時錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM