VisualStudio.NET中的XMLWebservices入門(mén)_第1頁(yè)
VisualStudio.NET中的XMLWebservices入門(mén)_第2頁(yè)
VisualStudio.NET中的XMLWebservices入門(mén)_第3頁(yè)
VisualStudio.NET中的XMLWebservices入門(mén)_第4頁(yè)
VisualStudio.NET中的XMLWebservices入門(mén)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Visual Studio .NET 中的 XML Web services 入門(mén)Rob CaronVisual Studio TeamMicrosoft Corporation 2002 年 2 月摘要:Microsoft® Visual Studio® .NET 和 XML Web services 提供了一個(gè)簡(jiǎn)單、靈活且基于標(biāo)準(zhǔn)的模型,開(kāi)發(fā)人員無(wú)論使用何種平臺(tái)、編程語(yǔ)言或?qū)ο竽P途梢跃帉?xiě)組合應(yīng)用程序。本文將幫助您快速學(xué)習(xí)使用 Visual Studio .NET 創(chuàng)建并訪問(wèn) XML Web services。本文包含一些指向英文站點(diǎn)的鏈接。目錄· 簡(jiǎn)介 &

2、#183; 用托管代碼編寫(xiě)的 XML Web services · 使用 Visual Studio 創(chuàng)建 XML Web services · 使用 Visual Studio 部署 XML Web services · 使用 Visual Studio 訪問(wèn) XML Web services · 總結(jié) 簡(jiǎn)介XML Web services 是可以由潛在的異類(lèi)系統(tǒng)通過(guò) Internet 訪問(wèn)的可編程單元。XML Web services 在很大程度上依賴(lài)于已經(jīng)被廣泛接受的支持互操作的 XML、HTTP 和其他 Internet 標(biāo)準(zhǔn)。XML Web s

3、ervices 可以由單個(gè)應(yīng)用程序在內(nèi)部使用或通過(guò) Internet 對(duì)外公開(kāi)供多個(gè)應(yīng)用程序使用。XML Web services 可通過(guò)標(biāo)準(zhǔn)接口進(jìn)行訪問(wèn),允許異類(lèi)的系統(tǒng)以同一種 Web 方式協(xié)同工作。XML Web services 沒(méi)有追隨一般的代碼可移植性功能,而是提供了一個(gè)使數(shù)據(jù)和系統(tǒng)能夠協(xié)同工作的可行的解決方案。XML Web services 使用基于 XML 的消息在多個(gè)使用不同組件模型、操作系統(tǒng)和編程語(yǔ)言的系統(tǒng)間交換數(shù)據(jù)。采用與通常在分布式應(yīng)用程序中使用組件相同的方法,開(kāi)發(fā)人員可以創(chuàng)建應(yīng)用程序,將不同來(lái)源的 XML Web services 組合在一起。XML Web serv

4、ices 的一個(gè)核心特征是在服務(wù)的實(shí)施和使用方面的高度抽象。通過(guò)將基于 XML 的消息用作創(chuàng)建和訪問(wèn)服務(wù)的機(jī)制,XML Web services 客戶(hù)端和 XML Web services 提供商除了需要了解對(duì)方的輸入、輸出和位置以外,不再需要任何其他信息。XML Web services 將分布式應(yīng)用程序的開(kāi)發(fā)帶入了新的時(shí)代。使用專(zhuān)有結(jié)構(gòu)的緊耦合系統(tǒng)犧牲了應(yīng)用程序的互操作性。XML Web services 將互操作性推到了一個(gè)全新的高度。作為新一代 Internet 的革命性進(jìn)步,XML Web services 將成為鏈接所有計(jì)算設(shè)備的基礎(chǔ)結(jié)構(gòu)。有關(guān)詳細(xì)信息,請(qǐng)參閱 Programmin

5、g the Web with XML Web services。用托管代碼編寫(xiě)的 XML Web servicesASP.NET 頁(yè)框架同時(shí)也作為采用托管代碼的 XML Web services 的框架。因此,XML Web services 可以訪問(wèn) .NET 框架的許多功能,如身份驗(yàn)證、緩存和狀態(tài)管理。這樣一來(lái),開(kāi)發(fā)人員便可以專(zhuān)注于創(chuàng)建或訪問(wèn) XML Web services,而無(wú)需編寫(xiě)基礎(chǔ)結(jié)構(gòu)代碼。在 ASP.NET 應(yīng)用程序模型中,Web 頁(yè)專(zhuān)供使用 .aspx 擴(kuò)展名的瀏覽器使用。為了使 XML Web services 和常規(guī) ASP.NET 頁(yè)區(qū)分開(kāi)來(lái),XML Web servi

6、ces 使用 .asmx 擴(kuò)展名。XML Web services 由 XML Web services 入口點(diǎn)和實(shí)現(xiàn) XML Web services 功能的代碼組成。在 ASP.NET 中,.asmx 文件充當(dāng) XML Web services 的可尋址入口點(diǎn)。它引用預(yù)編譯程序集中的代碼、文件的支持代碼或 .asmx 文件本身包含的代碼。使用 XML Web services 時(shí),有兩種基本的操作: · 創(chuàng)建 XML Web services - 創(chuàng)建 XML Web services 時(shí),實(shí)際上是在創(chuàng)建一個(gè)將功能向 XML Web services 客戶(hù)端公開(kāi)的應(yīng)用程序。 &#

7、183; 訪問(wèn) XML Web services - 訪問(wèn) XML Web services 時(shí),客戶(hù)端應(yīng)用程序?qū)⒉檎?、引用并使?XML Web services 中包含的功能。 XML Web services 可以是獨(dú)立的應(yīng)用程序或大型 Web 應(yīng)用程序的子組件。最低要求是客戶(hù)端必須能夠向 XML Web services 發(fā)送消息。有關(guān)詳細(xì)信息,請(qǐng)參閱 XML Web services in Managed Code。使用 Visual Studio 創(chuàng)建 XML Web services要使用 Visual Studio 創(chuàng)建采用托管代碼的 XML Web services,需要訪問(wèn)

8、為開(kāi)發(fā) ASP.NET 應(yīng)用程序(該應(yīng)用程序?qū)⒃?Web 項(xiàng)目的環(huán)境中創(chuàng)建)而配置的 Web 服務(wù)器。Web 項(xiàng)目的種類(lèi)很多,當(dāng)您要在 Visual Studio .NET 中使用采用托管代碼的 XML Web services 時(shí),可以使用 ASP.NET Web Service 項(xiàng)目模板。在 Visual Studio 中創(chuàng)建 XML Web services 項(xiàng)目后,就會(huì)看到 Component Designer(組件設(shè)計(jì)器)。組件設(shè)計(jì)器是 XML Web services 的設(shè)計(jì)界面??梢允褂?Design(設(shè)計(jì))視圖向 XML Web services 添加組件,并使用 Code(代

9、碼)視圖查看或編輯與 XML Web services 關(guān)聯(lián)的代碼。在 Visual Studio 中創(chuàng)建 ASP.NET Web Service 項(xiàng)目后,它將在 Web 服務(wù)器上構(gòu)造一個(gè) Web 應(yīng)用程序項(xiàng)目結(jié)構(gòu),同時(shí)在您的本地計(jì)算機(jī)上構(gòu)造一個(gè) Visual Studio 解決方案文件。解決方案文件 (.sln) 包含配置和生成設(shè)置,并且保存著一系列與項(xiàng)目關(guān)聯(lián)的文件。此外,Visual Studio 將自動(dòng)創(chuàng)建支持 XML Web services 所必需的文件和引用。完成后,Visual Studio 集成開(kāi)發(fā)環(huán)境 (IDE) 將在 Design(設(shè)計(jì))視圖中顯示 .asmx 文件。默認(rèn)情

10、況下,當(dāng)您使用 ASP.NET Web Service 項(xiàng)目模板創(chuàng)建 XML Web services 時(shí),Visual Studio 將使用“支持代碼文件”(如 Service1.asmx.vb 或 Service1.asmx.cs)。支持代碼文件包含實(shí)現(xiàn) XML Web services 功能的代碼。默認(rèn)情況下,Solution Explorer(解決方案資源管理器)會(huì)隱藏支持代碼文件。當(dāng)查看 .asmx 文件的 Code(代碼)視圖時(shí),實(shí)際上您是在查看支持代碼文件的內(nèi)容。.asmx 文件本身包含處理指令 WebService,它指示在何處可以找到 XML Web services 的實(shí)現(xiàn)

11、方案。生成采用托管代碼的 XML Web services 后,ASP.NET 將自動(dòng)提供基礎(chǔ)結(jié)構(gòu)并處理 XML Web services 的請(qǐng)求和響應(yīng),包括分析和創(chuàng)建簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議 (SOAP) 消息。編譯的輸出是一個(gè) .dll 文件,該文件位于項(xiàng)目的 bin 文件夾中。有關(guān)詳細(xì)信息,請(qǐng)參閱 Creating XML Web services in Managed Code。WebService 處理指令WebService 處理指令為 ASP.NET 環(huán)境提供了必要的信息,如實(shí)現(xiàn) XML Web services 功能的類(lèi)。以下是 .asmx 文件中 WebService 處理指令的示例

12、:' Visual Basic<% WebService Language="vb" Codebehind="Service1.asmx.vb" Class="WebService1.Service1" %>/ C#<% WebService Language="c#" Codebehind="Service1.asmx.cs" Class="WebService1.Service1" %>注意:要在 Solution Explorer(解決方

13、案資源管理器)中查看 .asmx 文件的內(nèi)容,請(qǐng)用右鍵單擊 .asmx 文件,然后單擊快捷菜單中的 Open With(打開(kāi)方式)。在 Open With(打開(kāi)方式)對(duì)話(huà)框中,選擇 Source Code (Text) Editor(源代碼 文本 編輯器),然后單擊 Open(打開(kāi))。Language 屬性指示開(kāi)發(fā) XML Web services 所使用的編程語(yǔ)言??梢允褂萌魏闻c .NET 兼容的語(yǔ)言(如 Visual Basic .NET 或 Visual C#)來(lái)創(chuàng)建 XML Web services。與 .asmx 頁(yè)關(guān)聯(lián)的支持代碼文件由 Codebehind 屬性來(lái)指示。Class

14、屬性指示支持代碼文件中用來(lái)實(shí)現(xiàn) XML Web services 功能的類(lèi)。有關(guān)詳細(xì)信息,請(qǐng)參閱 Code Model for XML Web services in Managed Code。System.Web.Services.WebService 類(lèi)System.Web.Services.WebService 類(lèi)定義了 XML Web services 的可選基類(lèi),并提供了直接訪問(wèn)常見(jiàn) ASP.NET 對(duì)象(如應(yīng)用程序和會(huì)話(huà)狀態(tài)的對(duì)象)的權(quán)限。默認(rèn)情況下,使用 Visual Studio 以托管代碼的形式創(chuàng)建的 XML Web services 繼承此類(lèi)。XML Web service

15、s 可以繼承此類(lèi)以獲得訪問(wèn) ASP.NET 固有對(duì)象(如 Request 和 Session)的權(quán)限。如果 XML Web services 沒(méi)有繼承此類(lèi),也可以從 System.Web.HttpContext.Current 訪問(wèn) ASP.NET 固有對(duì)象。實(shí)現(xiàn) XML Web services 的類(lèi)必須是公共的,并且必須有一個(gè)公共的默認(rèn)構(gòu)造函數(shù)(不帶參數(shù)的構(gòu)造函數(shù))。這樣,ASP.NET 就能夠創(chuàng)建 XML Web services 類(lèi)的實(shí)例以處理傳入的 XML Web services 請(qǐng)求。有關(guān)詳細(xì)信息,請(qǐng)參閱 Inheriting from the WebService Class。

16、WebService 屬性每個(gè) XML Web services 都需要唯一的命名空間,它可使客戶(hù)端應(yīng)用程序區(qū)分出可能使用相同方法名稱(chēng)的 XML Web services。在 Visual Studio .NET 中創(chuàng)建的 XML Web services 的默認(rèn)命名空間是“”。盡管命名空間類(lèi)似于典型的 URL,但在 Web 瀏覽器中是不能查看的,它只是一個(gè)唯一標(biāo)識(shí)符。注意:您可能希望在包含有關(guān)您所提供的 XML Web services 信息的位置提供一個(gè) Web 頁(yè)。WebService 屬性提供以下屬性: · Description - 此屬性的值包含描述性消息,此消息將在 X

17、ML Web services 的說(shuō)明文件(例如服務(wù)說(shuō)明和服務(wù)幫助頁(yè))生成后顯示給 XML Web services 的潛在用戶(hù)。 · Name - 此屬性的值包含 XML Web services 的名稱(chēng)。默認(rèn)情況下,該值是實(shí)現(xiàn) XML Web services 的類(lèi)的名稱(chēng)。Name 屬性標(biāo)識(shí) XML Web services 的 XML 限定名稱(chēng)的本地部分。Name 屬性也用于在服務(wù)幫助頁(yè)上顯示 XML Web services 的名稱(chēng)。 · Namespace - 此屬性的值包含 XML Web services 的默認(rèn)命名空間。XML 命名空間提供了一種在 XML

18、文檔中創(chuàng)建名稱(chēng)的方法,該名稱(chēng)可由統(tǒng)一資源標(biāo)識(shí)符 (URI) 標(biāo)識(shí)。使用 XML 命名空間,可以唯一標(biāo)識(shí) XML 文檔中的元素或?qū)傩?。因而,?XML Web services 的服務(wù)說(shuō)明中,Namespace 被用作與 XML Web services 直接相關(guān)的 XML 元素的默認(rèn)命名空間。如果不指定命名空間,就使用默認(rèn)命名空間 。 以下示例代碼說(shuō)明了 WebService 屬性的用法:' Visual Basic<WebService(Namespace:="", _ Description:="此處可以放一些描述性文字。", Name

19、:="MyFavoritesService")> _Public Class Service1 Inherits System.Web.Services.WebService ' 實(shí)現(xiàn)代碼。End Class/ C#WebService(Namespace="", Description="此處可以放一些描述性文字。", Name="MyFavoritesService")public class Service1 : System.Web.Services.WebService / 實(shí)現(xiàn)代碼。有關(guān)詳

20、細(xì)信息,請(qǐng)參閱 Using the WebService Attribute。WebMethod 屬性以托管代碼創(chuàng)建 XML Web services 時(shí),通過(guò)在 Public 方法聲明之前放置 WebMethod 屬性可以指定在 XML Web services 中可用的方法。Private 方法不能充當(dāng) XML Web services 的入口點(diǎn),盡管它們可以采用相同的類(lèi)并且 XML Web services 代碼可以調(diào)用它們。WebMethod 屬性必須應(yīng)用到可用作 XML Web services 一部分的每種公共方法中。WebMethod 屬性包含配置 XML Web service

21、s 行為的幾個(gè)屬性。例如,可以使用此屬性在相關(guān)服務(wù)幫助頁(yè)提供一個(gè)簡(jiǎn)短說(shuō)明。WebMethod 屬性提供以下屬性: · BufferResponse - 當(dāng)設(shè)置為 True(默認(rèn)設(shè)置)時(shí),ASP.NET 將響應(yīng)向下發(fā)送到客戶(hù)端之前先緩存整個(gè)響應(yīng)。緩存是一種非常有效的方法,可以通過(guò)減少輔助進(jìn)程和 Internet 信息服務(wù) (IIS) 進(jìn)程之間的通信來(lái)提高性能。當(dāng)設(shè)置為 False 時(shí),ASP.NET 會(huì)將響應(yīng)緩存在 16 KB 的區(qū)塊中。通常,只有在不想一次將響應(yīng)的全部?jī)?nèi)容都緩存在內(nèi)存中時(shí),才將此屬性設(shè)置為 False。例如,正在寫(xiě)回一個(gè)將項(xiàng)流出數(shù)據(jù)庫(kù)的集合。除非另行指定,否則默認(rèn)值為

22、 True。 · CacheDuration - 此屬性的值指定 ASP.NET 緩存每個(gè)唯一參數(shù)設(shè)置結(jié)果所需的秒數(shù)。除非另行指定,否則默認(rèn)值為 0,此設(shè)置將禁用結(jié)果緩存。 · Description - 此屬性的值提供了對(duì) XML Web services 方法的說(shuō)明,顯示于服務(wù)幫助頁(yè)中。除非另行指定,否則默認(rèn)值為空字符串。 · EnableSession - 當(dāng)設(shè)置為 False(默認(rèn)設(shè)置)時(shí),ASP.NET 將無(wú)法訪問(wèn) XML Web services 方法的會(huì)話(huà)狀態(tài)。當(dāng)設(shè)置為 True 時(shí),XML Web services 可以直接從 HttpContex

23、t.Current.Session 訪問(wèn)會(huì)話(huà)狀態(tài)集合;在繼承了 WebService 基類(lèi)的情況下,也可以使用 WebService.Session 屬性進(jìn)行訪問(wèn)。 · MessageName - 此屬性的值使 XML Web services 能夠使用別名來(lái)唯一標(biāo)識(shí)重載的方法。除非另行指定,否則默認(rèn)值為方法名。當(dāng)為 MessageName 指定值后,結(jié)果 SOAP 消息會(huì)反映出此名稱(chēng)而不是實(shí)際的方法名。 · TransactionOption - 此屬性的值指定 XML Web services 方法是否可以作為事務(wù)的根對(duì)象。雖然可以將 TransactionOption

24、 屬性設(shè)置為 TransactionOption 枚舉類(lèi)型的任意值,但是 XML Web services 方法僅有兩種可能行為:它不參與事務(wù)(Disabled、NotSupported 和 Supported),或是創(chuàng)建新事務(wù)(Required 和 RequiresNew)。除非另行指定,否則默認(rèn)值為 TransactionOption.Disabled。要使用此屬性,需要向 System.EnterpriseServices.dll 添加一個(gè)引用。此命名空間包含的方法和屬性,提供了可在 COM+ 服務(wù)中找到的分布式事務(wù)模型。System.EnterpriseServices.Context

25、Util 類(lèi)允許您使用 SetAbort 或 SetComplete 方法設(shè)置該事務(wù)。 以下示例代碼說(shuō)明了 WebMethod 屬性的用法:' Visual BasicPublic Class Service1 Inherits System.Web.Services.WebService <WebMethod(BufferResponse:=False, _ CacheDuration:=60, _ Description:="一些描述性的文字", MessageName:="RetrieveData")> _ Public Fun

26、ction GetBigChunkOfData() As DataSet ' 實(shí)現(xiàn)代碼 End FunctionEnd Class/ C#public class Service1 : System.Web.Services.WebService WebMethod(BufferResponse=false, CacheDuration=60, Description="一些描述性的文字", MessageName="RetrieveData") public DataSet GetBigChunkOfData() / 實(shí)現(xiàn)代碼 有關(guān)詳細(xì)信息,請(qǐng)

27、參閱 Using the WebMethod Attribute。使用 Visual Studio 部署 XML Web services當(dāng)使用 Visual Studio .NET 創(chuàng)建采用了托管代碼的 XML Web services 時(shí),應(yīng)使用標(biāo)準(zhǔn)部署模型:編譯項(xiàng)目,然后將結(jié)果文件部署到生產(chǎn)服務(wù)器。項(xiàng)目 .dll 文件包含 XML Web services 代碼類(lèi)文件(.asmx.vb 或 .asmx.cs)以及項(xiàng)目中的所有其他類(lèi)文件,但不包含 .asmx 文件本身。然后,您可以將這一個(gè)項(xiàng)目 .dll 文件部署到生產(chǎn)服務(wù)器中,而無(wú)需附帶任何源代碼。當(dāng) XML Web services 接

28、收到請(qǐng)求時(shí),項(xiàng)目 .dll 文件將被加載并執(zhí)行。圖 1:部署 XML Web services要將 XML Web services 部署到非開(kāi)發(fā)服務(wù)器,可以添加 Web 安裝項(xiàng)目,也可以將所需的文件復(fù)制到目標(biāo)服務(wù)器。要使您的 XML Web services 可供其他人使用,需要將其部署到可供目標(biāo)客戶(hù)端訪問(wèn)的 Web 服務(wù)器。有關(guān)詳細(xì)信息,請(qǐng)參閱 Deploying XML Web services in Managed Code。服務(wù)幫助頁(yè)從 Web 瀏覽器調(diào)用 .asmx 文件,而不提供已識(shí)別的查詢(xún)字符串時(shí),.asmx 文件將為 XML Web services 返回一個(gè)自動(dòng)生成的服務(wù)幫

29、助頁(yè)。例如,要訪問(wèn)名為 Service1.asmx(本地計(jì)算機(jī)中 WebService1 項(xiàng)目的一部分)的 XML Web services 的服務(wù)幫助頁(yè),可使用以下 URL:此服務(wù)幫助頁(yè)提供了 XML Web services 提供的以及您可以通過(guò)編程訪問(wèn)的方法的列表。每種方法都含有一個(gè)指向其詳細(xì)信息的鏈接。另外,此幫助頁(yè)還包括指向 XML Web services 說(shuō)明文檔的鏈接。圖 2:服務(wù)幫助頁(yè)服務(wù)幫助頁(yè)的文件名在配置文件的 <wsdlHelpGenerator> XML 元素(默認(rèn)設(shè)置為 DefaultWsdlHelpGenerator.aspx)中指定。默認(rèn)情況下,此特

30、定 ASP.NET Web 窗體是該計(jì)算機(jī)中所有 XML Web services 所通用的:%WINDOWS% Microsoft.NET Framework version CONFIG DefaultWsdlHelpGenerator.aspx由于服務(wù)幫助頁(yè)只是一個(gè) ASP.NET Web 窗體,因而可以對(duì)其進(jìn)行替換或修改以包含其他項(xiàng)目(如公司徽標(biāo))。另外,也可以修改相關(guān) Web .config 文件的 <wsdlHelpGenerator> 元素以指定自定義服務(wù)幫助頁(yè)。有關(guān)詳細(xì)信息,請(qǐng)參閱 Configuration Options for XML Web services

31、 Created Using ASP.NET。服務(wù)方法幫助頁(yè)服務(wù)方法幫助頁(yè)提供了與特定 XML Web services 方法相關(guān)的詳細(xì)信息。本頁(yè)允許您調(diào)用使用 HTTP-POST 協(xié)議的方法。但是,隨后卻無(wú)法調(diào)用要求復(fù)雜輸入?yún)?shù)(如 DataSet)類(lèi)型的方法。另外,XML Web services 方法必須支持 HTTP-POST 協(xié)議才能啟用此功能。在服務(wù)方法幫助頁(yè)的底部還提供了協(xié)議(XML Web services 方法所支持的)的請(qǐng)求和響應(yīng)消息示例。圖 3:服務(wù)方法幫助頁(yè)例如,要訪問(wèn) Service1.asmx(本地計(jì)算機(jī)中 WebService1 項(xiàng)目的一部分)中名為 MyWebM

32、ethod 的 XML Web services 方法,可使用以下 URL:有關(guān)詳細(xì)信息,請(qǐng)參閱 Exploring XML Web services Content。Web Service 說(shuō)明 (.wsdl)服務(wù)幫助頁(yè)還提供了指向 XML Web services 服務(wù)說(shuō)明的鏈接,服務(wù)說(shuō)明是 XML Web services 功能的正式定義。服務(wù)說(shuō)明是使用 Web Service 說(shuō)明語(yǔ)言 (WSDL) 語(yǔ)法的文檔。服務(wù)說(shuō)明定義了與 XML Web services 交換信息時(shí),客戶(hù)端需要遵循的消息格式合約。Web Service 說(shuō)明示例<?xml version="1.

33、0" encoding="utf-8"?><definitions xmlns:http=""xmlns:soap=""xmlns:s="" xmlns:s0="" xmlns:soapenc="" xmlns:tm="" xmlns:mime="" targetNamespace="" xmlns=""> <types> <s:schema elem

34、entFormDefault="qualified" targetNamespace=""> <s:element name="ConvertTemperature"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="dFahrenheit" type="s:double" /> </s:seque

35、nce> </s:complexType> </s:element> <s:element name="ConvertTemperatureResponse"> <s:complexType> <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="ConvertTemperatureResult" type="s:double" /> </s:sequ

36、ence> </s:complexType> </s:element> <s:element name="double" type="s:double" /> </s:schema> </types> <message name="ConvertTemperatureSoapIn"> <part name="parameters" element="s0:ConvertTemperature" /> <

37、;/message> <message name="ConvertTemperatureSoapOut"> <part name="parameters" element="s0:ConvertTemperatureResponse" /> </message> <message name="ConvertTemperatureHttpGetIn"> <part name="dFahrenheit" type="s:strin

38、g" /> </message> <message name="ConvertTemperatureHttpGetOut"> <part name="Body" element="s0:double" /> </message> <message name="ConvertTemperatureHttpPostIn"> <part name="dFahrenheit" type="s:string&quo

39、t; /> </message> <message name="ConvertTemperatureHttpPostOut"> <part name="Body" element="s0:double" /> </message> <portType name="Service1Soap"> <operation name="ConvertTemperature"> <documentation>此方法可以

40、將華氏溫度轉(zhuǎn)換為攝氏溫度。</documentation> <input message="s0:ConvertTemperatureSoapIn" /> <output message="s0:ConvertTemperatureSoapOut" /> </operation> </portType> <portType name="Service1HttpGet"> <operation name="ConvertTemperature&quo

41、t;> <documentation>此方法可以將華氏溫度轉(zhuǎn)換為攝氏溫度。</documentation> <input message="s0:ConvertTemperatureHttpGetIn" /> <output message="s0:ConvertTemperatureHttpGetOut" /> </operation> </portType> <portType name="Service1HttpPost"> <ope

42、ration name="ConvertTemperature"> <documentation>此方法可以將華氏溫度轉(zhuǎn)換為攝氏溫度。</documentation> <input message="s0:ConvertTemperatureHttpPostIn" /> <output message="s0:ConvertTemperatureHttpPostOut" /> </operation> </portType> <binding name

43、="Service1Soap" type="s0:Service1Soap"> <soap:binding transport="" style="document" /> <operation name="ConvertTemperature"> <soap:operation soapAction="" style="document" /> <input> <soap:body use=&q

44、uot;literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> </binding> <binding name="Service1HttpGet" type="s0:Service1HttpGet"> <http:binding verb="GET" /> <operation name=&q

45、uot;ConvertTemperature"> <http:operation location="/ConvertTemperature" /> <input> <http:urlEncoded /> </input> <output> <mime:mimeXml part="Body" /> </output> </operation> </binding> <binding name="Service1Htt

46、pPost" type="s0:Service1HttpPost"> <http:binding verb="POST" /> <operation name="ConvertTemperature"> <http:operation location="/ConvertTemperature" /> <input> <mime:content type="application/x-" /> </input>

47、; <output> <mime:mimeXml part="Body" /> </output> </operation> </binding> <service name="Service1"> <documentation>一種溫度轉(zhuǎn)換服務(wù)。</documentation> <port name="Service1Soap" binding="s0:Service1Soap"> <soap:add

48、ress location="" /> </port> <port name="Service1HttpGet" binding="s0:Service1HttpGet"> <http:address location="" /> </port> <port name="Service1HttpPost" binding="s0:Service1HttpPost"> <http:address locat

49、ion="" /> </port> </service></definitions>要訪問(wèn)名為 Service1.asmx(本地計(jì)算機(jī)上 TempConvert2 項(xiàng)目的一部分)的 XML Web services 的服務(wù)說(shuō)明(如上例所示),可使用以下 URL:有關(guān)詳細(xì)信息,請(qǐng)參閱 Web Services Description Language (WSDL) Explained。XML Web services 發(fā)現(xiàn)XML Web services 發(fā)現(xiàn)是對(duì) XML Web services 說(shuō)明進(jìn)行定位和詢(xún)問(wèn)的過(guò)程,是訪問(wèn) X

50、ML Web services 的基本步驟。通過(guò)發(fā)現(xiàn)進(jìn)程,XML Web services 客戶(hù)端能夠在設(shè)計(jì)階段了解某個(gè) XML Web services 是否存在,它的功能如何,以及如何正確與它進(jìn)行交互操作。然而,實(shí)現(xiàn) XML Web services 的 Web 站點(diǎn)不需要支持該發(fā)現(xiàn)進(jìn)程,而是由另一個(gè)站點(diǎn)負(fù)責(zé)說(shuō)明服務(wù)(如 XML Web services 目錄)。另外,可能沒(méi)有一個(gè)公開(kāi)的方法可用來(lái)查找服務(wù),例如在創(chuàng)建專(zhuān)用服務(wù)時(shí)。有關(guān)詳細(xì)信息,請(qǐng)參閱 XML Web services Discovery。靜態(tài)發(fā)現(xiàn) (.disco)可以通過(guò)發(fā)布 .disco 文件(一個(gè) XML 文檔,包含指向

51、其他發(fā)現(xiàn)文檔、XSD 方案和服務(wù)說(shuō)明的鏈接)來(lái)啟用 XML Web services 的程序發(fā)現(xiàn)。使用 ASP.NET 自動(dòng)創(chuàng)建的 XML Web services 能夠提供生成的發(fā)現(xiàn)文檔。例如,要訪問(wèn)名為 Service1.asmx(本地計(jì)算機(jī)中 WebService1 項(xiàng)目的一部分)的 XML Web services 發(fā)現(xiàn)文檔,可使用以下 URL:以下示例顯示了發(fā)現(xiàn)文檔的結(jié)構(gòu):<?xml version="1.0" ?><disco:discovery xmlns:disco=""xmlns:wsdl=""&g

52、t; <wsdl:contractRef ref=""/></disco:discovery>注意:發(fā)現(xiàn)文檔是一個(gè)元素容器,通常包含提供 XML Web services 發(fā)現(xiàn)信息的資源鏈接 (URL)。如果 URL 是相對(duì)的,則假定它們是相對(duì)于發(fā)現(xiàn)文檔的位置。有關(guān)詳細(xì)信息,請(qǐng)參閱 Fine-Tuning Discovery Mechanisms。動(dòng)態(tài)發(fā)現(xiàn) (.vsdisco)動(dòng)態(tài)發(fā)現(xiàn)是 ASP.NET 通過(guò)開(kāi)發(fā) Web 服務(wù)器上的文件夾層次結(jié)構(gòu)執(zhí)行迭代搜索以查找可用的 XML Web services 的過(guò)程。動(dòng)態(tài)發(fā)現(xiàn) (.vsdisco) 文件是

53、基于 XML 的文件,可以包含零或多個(gè) <exclude> 節(jié)點(diǎn)。每個(gè) <exclude> 節(jié)點(diǎn)包含一個(gè)“path”屬性,path 屬性包含指向子文件夾(動(dòng)態(tài)發(fā)現(xiàn)進(jìn)程不應(yīng)搜索的子文件夾)的相對(duì)路徑。以下是 .vsdisco 示例文件:<?xml version="1.0" encoding="utf-8" ?><dynamicDiscovery xmlns="urn:schemas-dynamicdiscovery:disco.2000-03-17"> <exclude path=

54、"_vti_cnf" /> <exclude path="_vti_pvt" /> <exclude path="_vti_log" /> <exclude path="_vti_script" /> <exclude path="_vti_txt" /> <exclude path="Web References" /></dynamicDiscovery>當(dāng)從啟用了動(dòng)態(tài)發(fā)現(xiàn)的 Web 服務(wù)器請(qǐng)求

55、 .vsdisco 文件時(shí),對(duì)于已通過(guò)動(dòng)態(tài)發(fā)現(xiàn)進(jìn)程進(jìn)行定位的每個(gè) Web Service,都會(huì)返回一個(gè)包含 Web Service 發(fā)現(xiàn)信息的發(fā)現(xiàn)文檔。默認(rèn)情況下,web.config 中禁用了動(dòng)態(tài)發(fā)現(xiàn)。要積極控制哪些 XML Web services 客戶(hù)端可以發(fā)現(xiàn)服務(wù),應(yīng)該在開(kāi)發(fā) Web 服務(wù)器上只使用動(dòng)態(tài)發(fā)現(xiàn)。當(dāng)向生產(chǎn) Web 服務(wù)器部署 XML Web services 時(shí),應(yīng)為那些希望客戶(hù)端能夠發(fā)現(xiàn)的 XML Web services 創(chuàng)建并發(fā)布一個(gè)靜態(tài)發(fā)現(xiàn)文件 (.disco)。有關(guān)詳細(xì)信息,請(qǐng)參閱 Deploying XML Web services in Managed Cod

56、e。Web Service 目錄部署完 XML Web services 后,如果希望其他人使用,需要考慮如何讓開(kāi)發(fā)人員找到它。使 XML Web services 可以為多數(shù)人使用的一種既定方法是,將其注冊(cè)到 XML Web services 目錄中。通用說(shuō)明、發(fā)現(xiàn)和集成 (UDDI) 項(xiàng)目提供了一份公司及其提供的服務(wù)的目錄。有關(guān)詳細(xì)信息,請(qǐng)參閱 XML Web services Directories。使用 Visual Studio 訪問(wèn) XML Web servicesXML Web services 客戶(hù)端是指任何引用和使用 XML Web services 的組件或應(yīng)用程序。它不必

57、是基于客戶(hù)端的應(yīng)用程序,事實(shí)上,在大多數(shù)情況下,您的 XML Web services 客戶(hù)端可能是其他 Web 應(yīng)用程序(如 Web 窗體或其他 XML Web services)。當(dāng)訪問(wèn)采用托管代碼的 XML Web services 時(shí),代理類(lèi)和 .NET 框架將處理所有結(jié)構(gòu)代碼。從托管代碼訪問(wèn) XML Web services 是一個(gè)簡(jiǎn)單的過(guò)程。首先,向希望訪問(wèn)的 XML Web services 項(xiàng)目添加一個(gè) Web 引用。Web 引用使用作為代理的方法為每個(gè)公開(kāi)的 XML Web services 方法創(chuàng)建代理類(lèi)。其次,添加 Web 引用的命名空間。最后,創(chuàng)建代理類(lèi)實(shí)例并像訪問(wèn)其他

58、類(lèi)的方法一樣訪問(wèn)該類(lèi)方法。有關(guān)詳細(xì)信息,請(qǐng)參閱 Accessing XML Web services in Managed Code。查找 XML Web services 并添加 Web 引用有時(shí),您可能既是 XML Web services 的提供者,又是 XML Web services 的使用者。在這種情況下,您可能知道 XML Web services 的位置和功能。但在其他時(shí)候,您可能是訪問(wèn)由別人提供的 XML Web services。在這種情況下,您或許不知道 XML Web services 是否滿(mǎn)足您的要求。為了簡(jiǎn)化代碼模型,用托管代碼編寫(xiě)的應(yīng)用程序使用一個(gè) Web 引用來(lái)

59、代表各本地 XML Web services。通過(guò)使用 Add Web Reference(添加 Web 引用)對(duì)話(huà)框向您的項(xiàng)目添加 Web 引用。此對(duì)話(huà)框使您可以瀏覽您的本地服務(wù)器、Microsoft UDDI 目錄和 Internet 上的 XML Web services。Add Web Reference(添加 Web 引用)對(duì)話(huà)框使用 XML Web services 發(fā)現(xiàn)進(jìn)程,在從對(duì)話(huà)框中瀏覽的 Web 站點(diǎn)上,查找合適的 XML Web services。對(duì)于給定的地址,它使用為查找 XML Web services 發(fā)現(xiàn) (DISCO) 文檔并最終找到 XML Web 說(shuō)明文檔

60、(遵守 Web Service 說(shuō)明語(yǔ)言 WSDL 的語(yǔ)法)而設(shè)計(jì)的算法來(lái)詢(xún)問(wèn) Web 站點(diǎn)。當(dāng)使用 Add Web Reference(添加 Web 引用)對(duì)話(huà)框查找到應(yīng)用程序訪問(wèn)的 XML Web services 后,單擊 Add Reference(添加引用)按鈕告訴 Visual Studio 將服務(wù)說(shuō)明的一份副本下載到本地計(jì)算機(jī),然后生成訪問(wèn)所選 XML Web services 的代理類(lèi)。代理類(lèi)包含了一些方法,可以同步或異步調(diào)用公開(kāi)的 XML Web services 方法。有關(guān)詳細(xì)信息,請(qǐng)參閱 Locating XML Web services。動(dòng)態(tài)和靜態(tài) URLWeb 引用可

61、以使用靜態(tài) URL,也可以使用動(dòng)態(tài) URL。Web 引用的 Web Reference URL 屬性用于指定引用的 XML Web services 的 URL。默認(rèn)情況下,此屬性被設(shè)置為所選 XML Web services 的 URL(是一個(gè)靜態(tài) URL)。如果將 URL Behavior 屬性設(shè)置保留為默認(rèn)值 Static,則當(dāng)創(chuàng)建類(lèi)實(shí)例時(shí),會(huì)使用硬編碼的 URL 來(lái)設(shè)置該代理類(lèi)的 URL 屬性。如果將 Web 引用的 URL Behavior 屬性設(shè)置為 Dynamic,則應(yīng)用程序在運(yùn)行時(shí)將從您的應(yīng)用程序配置文件的 <appSettings> 部分獲得 URL,例如:<

62、;appSettings> <add key="myApplication.myServer.Service1" value=""/></appSettings>當(dāng)您創(chuàng)建代理對(duì)象的實(shí)例時(shí),您也可以通過(guò)編程來(lái)為應(yīng)用程序的對(duì)象設(shè)置 URL 屬性。不管代理使用何種 URL,它必須是符合 WSDL 的 XML Web services;當(dāng)添加 Web 引用時(shí),應(yīng)與已使用的 XML Web services 相匹配。否則,早期生成的代理類(lèi)將不能與之交互。添加 eb 引用時(shí),您也可以使用 Visual Studio 所使用的同一工具(XML Web services 說(shuō)明語(yǔ)言工具)生成代理類(lèi)來(lái)創(chuàng)建代理類(lèi)。當(dāng)您不能從安裝 Visual Studio 的計(jì)算機(jī)上訪問(wèn) XML Web services 時(shí),該方法是很有用的。例如,當(dāng) XML Web services 所在的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論