(1)VS2005裡提供的Add Web Reference(添加Web服務引用)的功能主要是添加Web Service引用。
(2)VS2008保留了Add Web Reference(添加Web服務引用)也是為了版本向前相容。目前很多項目還是基於.NET Framework 2.0。
(3)VS2008在升級以後為了對.NET Framework 3.0 或 3.5版本上WCF Service Library的支援。增加了Add Service Reference(加入服務參考)功能。Framework3.0 或 3.5 時可用。
你說的情況我自己做了一下實驗,同時存在Add Service Reference、Add Web Reference 兩者情況的項目類型是Web服務程式。包括Web Service項目。普通的控制台等類型是沒有Add Web Reference 。
我仔細對比了兩種方式添加同一個 WebService產生的用戶端檔案 Reference.cs, 有差別。
1.主要添加引用都有一個擷取服務中繼資料,反序列話本地類檔案的過程。這個結構也基本類似。都包含wsdl/discovery等檔案。
這個也和WCF Service支援Web Service的核心行業標準有關係。畢竟WCF的特性之一就是相容Web Service的特性。
2.不同的地方時Add Web Reference 產生的 Reference.cs檔案裡,包含一個服務代理類,他負責與Web服務通訊,它繼承一個Soap類,使用SOAP協議,SOAP簡易物件存取通訊協定 (SOAP),基於XML語言。此外還包含一些Web服務類裡定義的方法,和與之相關的非同步呼叫方法和事件。遵守.NET Web Service 的主要規則。
3.Add Service Reference產生的用戶端檔案 Reference.cs。我看了一下,這個也會還原序列化一個本地代理類,很相似和前者。不過除了服務類和其相關的一些別的類和契約介面。其中比較重要就是一個契約和一個通訊管道。這個主要和WCF架構
的編程模型和反序列話機制有關係。因為WCF 強調的是 契約的概念,還有就是綁定協議,這個就直接決定了用戶端和服務端通訊的通道類型。你在這個檔案裡也能看到。此外還有服務要求和相應對應的資訊。遵循WCF服務架構的規則。
http://social.msdn.microsoft.com/Forums/zh-CN/wcfzhchs/thread/6bb53cc3-142d-462f-8c70-1d75407f4973