【转】Web Reference和Service Reference的区别
今天因為項目需要使用服務引用,就按之前的經驗添加上了,步驟如下:
項目根目錄——引用——右鍵——添加服務引用——高級——添加Web引用——輸入接口的URL地址——回車(下方出現的就是接口的定義的方法)——修改Web引用名——添加引用。
按照上面的步驟就可以將引用添加到Web References文件夾下,這也是以往經驗,但是具體使用時發現添加的是Web Reference并不能滿足項目的需要,這里需要用的是Service Reference。在這之前也查過很多文章,大多數都說是兩者沒有什么大的區別,主要是Service Reference適用的.net版本更高,而且可以使用WCF。那么兩者到底有什么區別呢?
一、Web Reference生成的代理可以被.net1.1或.net2.0的客戶端調用;Service Reference生成的代理只能被.net3.0+的客戶端調用。
二、Web Reference不能使用WCF(上面已經提到,原因是WCF需要.net3.0的支持);Service Reference則可以使用WCF(當然需要3.0+的客戶端)。
三、Web Reference是由wsdl.exe生成客戶端代理的,生成webservice代理類的方法,即從System.Web.Services.Protocols.SoapHttpClientProtocol派生而來,代理類代碼可以指定要訪問的URL屬性;Service Reference是由svcutil.exe生成客戶端代理的,按照新的webservice客戶訪問機制WCF(不是直接從System.Web.Services.Protocols.SoapHttpClientProtocol派生而來。)代理類代碼沒有URL屬性可指定,而是在客戶端的配置文件app.config中指定endpoint來訪問指定的url。
那么如何添加Service Reference呢,步驟與文章開頭類似,具體如下:
項目根目錄——引用——右鍵——添加服務引用——輸入地址——轉到(下方會出現服務與操作兩個小窗口,服務是代理類名稱,操作是代理類中定義的可調用方法)——修改命名空間——確定。
與添加Web Reference不同的是沒有點擊“高級”按鈕,高級中添加的Web Reference是.net2.0版本的引用方式,是為了兼容性才保留下來。
msdn解釋:若要調用 Web 服務的方法,應調用生成的 Web 服務代理類的對應方法。 生成的代理類執行對 Web 服務方法的 Web 請求。
【注意】
要使啟用 AJAX 的 ASP.NET 應用程序從腳本調用 Web 服務,必須配置該應用程序注冊所需的 ASP.NET HTTP 處理程序。
您調用的 Web 服務必須是 .asmx 文件,并且必須使用 ScriptServiceAttribute 特性限定。 從腳本調用的各個方法必須使用 WebMethodAttribute 特性限定。 不帶此特性的方法不在代理類中公開。
以上是服務引用的步驟及相關知識,下面看下如何在一個站點添加服務接口:
服務要建在web層,在web層或任選一個文件夾右鍵——添加——新建項——選擇web服務(注意文件是以 .asmx為后綴)
下面是一個小例子:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Data; namespace DemoWeb.API {/// <summary>/// WSVerify 的摘要說明/// </summary>[WebService(Namespace = "http://www.*****.com/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][System.ComponentModel.ToolboxItem(false)]// 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務,請取消對下行的注釋。// [System.Web.Script.Services.ScriptService]public class WSVerify : System.Web.Services.WebService{[WebMethod(EnableSession = true)]public DataTable GetLoginUserId(string username, string password){//檢查用戶是否登錄DataTable dt = new BLL.company().GetUserByUsernamePwd(username, password);return dt;}} }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
其中WebMehodAttribute封閉類無法被繼承,向使用 ASP.NET 創建的 XML Web services 中的某個方法添加此特性后,就可以從遠程 Web 客戶端調用該方法。否則無法調用。
總結
以上是生活随笔為你收集整理的【转】Web Reference和Service Reference的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 没5G 消息称华为nova 10系列延期
- 下一篇: 《梦华录》再现非遗“水丹青”!网友:比咖