Web Reference和Service Reference的区别
今天因為項目需要使用服務(wù)引用,就按之前的經(jīng)驗添加上了,步驟如下:?
項目根目錄——引用——右鍵——添加服務(wù)引用——高級——添加Web引用——輸入接口的URL地址——回車(下方出現(xiàn)的就是接口的定義的方法)——修改Web引用名——添加引用。
按照上面的步驟就可以將引用添加到Web References文件夾下,這也是以往經(jīng)驗,但是具體使用時發(fā)現(xiàn)添加的是Web Reference并不能滿足項目的需要,這里需要用的是Service Reference。在這之前也查過很多文章,大多數(shù)都說是兩者沒有什么大的區(qū)別,主要是Service Reference適用的.net版本更高,而且可以使用WCF。那么兩者到底有什么區(qū)別呢?
一、Web Reference生成的代理可以被.net1.1或.net2.0的客戶端調(diào)用;Service Reference生成的代理只能被.net3.0+的客戶端調(diào)用。
二、Web Reference不能使用WCF(上面已經(jīng)提到,原因是WCF需要.net3.0的支持);Service Reference則可以使用WCF(當(dāng)然需要3.0+的客戶端)。
三、Web Reference是由wsdl.exe生成客戶端代理的,生成webservice代理類的方法,即從System.Web.Services.Protocols.SoapHttpClientProtocol派生而來,代理類代碼可以指定要訪問的URL屬性;Service Reference是由svcutil.exe生成客戶端代理的,按照新的webservice客戶訪問機(jī)制WCF(不是直接從System.Web.Services.Protocols.SoapHttpClientProtocol派生而來。)代理類代碼沒有URL屬性可指定,而是在客戶端的配置文件app.config中指定endpoint來訪問指定的url。
那么如何添加Service Reference呢,步驟與文章開頭類似,具體如下:?
項目根目錄——引用——右鍵——添加服務(wù)引用——輸入地址——轉(zhuǎn)到(下方會出現(xiàn)服務(wù)與操作兩個小窗口,服務(wù)是代理類名稱,操作是代理類中定義的可調(diào)用方法)——修改命名空間——確定。
與添加Web Reference不同的是沒有點擊“高級”按鈕,高級中添加的Web Reference是.net2.0版本的引用方式,是為了兼容性才保留下來。
msdn解釋:若要調(diào)用 Web 服務(wù)的方法,應(yīng)調(diào)用生成的 Web 服務(wù)代理類的對應(yīng)方法。 生成的代理類執(zhí)行對 Web 服務(wù)方法的 Web 請求。?
【注意】?
要使啟用 AJAX 的 ASP.NET 應(yīng)用程序從腳本調(diào)用 Web 服務(wù),必須配置該應(yīng)用程序注冊所需的 ASP.NET HTTP 處理程序。?
您調(diào)用的 Web 服務(wù)必須是 .asmx 文件,并且必須使用 ScriptServiceAttribute 特性限定。 從腳本調(diào)用的各個方法必須使用 WebMethodAttribute 特性限定。 不帶此特性的方法不在代理類中公開。
以上是服務(wù)引用的步驟及相關(guān)知識,下面看下如何在一個站點添加服務(wù)接口:
服務(wù)要建在web層,在web層或任選一個文件夾右鍵——添加——新建項——選擇web服務(wù)(注意文件是以 .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 從腳本中調(diào)用此 Web 服務(wù),請取消對下行的注釋。// [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;}} }其中WebMehodAttribute封閉類無法被繼承,向使用 ASP.NET 創(chuàng)建的 XML Web services 中的某個方法添加此特性后,就可以從遠(yuǎn)程 Web 客戶端調(diào)用該方法。否則無法調(diào)用。
?
總結(jié)
以上是生活随笔為你收集整理的Web Reference和Service Reference的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 耗时12年超百亿研发!韩国国产火箭发射前
- 下一篇: ORM系列之Entity FrameWo