熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

vs.net中web services入門

2022-06-13   來源: .NET編程 

  Visual 中的XML Web services入門

  目錄

  簡介
用托管代碼編寫的 XML Web services
使用 Visual Studio 創建 XML Web services
使用 Visual Studio 部署 XML Web services
使用 Visual Studio 訪問 XML Web services
總結

  一簡介

  XML Web services是可以由潛在的異類系統通過Internet訪問的可編程單元XML Web services在很大程度上依賴於已經被廣泛接受的支持互操作的XMLHTTP和其他Internet標准

  XML Web services可以由單個應用程序在內部使用或通過Internet對外公開供多個應用程序使用XML Web services可通過標准接口進行訪問允許異類的系統以同一種Web方式協同工作

  XML Web services沒有追隨一般的代碼可移植性功能而是提供了一個使數據和系統能夠協同工作的可行的解決方案XML Web services使用基於XML的消息在多個使用不同組件模型操作系統和編程語言的系統間交換數據采用與通常在分布式應用程序中使用組件相同的方法開發人員可以創建應用程序將不同來源的XML Web services組合在一起

  XML Web services的一個核心特征是在服務的實施和使用方面的高度抽象通過將基於XML的消息用作創建和訪問服務的機制XML Web services客戶端和XML Web services提供商除了需要了解對方的輸入輸出和位置以外不再需要任何其他信息

  XML Web services將分布式應用程序的開發帶入了新的時代使用專有結構的緊耦合系統犧牲了應用程序的互操作性XML Web services將互操作性推到了一個全新的高度作為新一代Internet的革命性進步XML Web services將成為鏈接所有計算設備的基礎結構

  有關詳細信息請參閱Programming the Web with XML Web services

  二用托管代碼編寫的XML Web services

  ASPNET頁框架同時也作為采用托管代碼的XML Web services的框架因此XML Web services可以訪問NET框架的許多功能如身份驗證緩存和狀態管理這樣一來開發人員便可以專注於創建或訪問XML Web services而無需編寫基礎結構代碼

  在ASPNET應用程序模型中Web頁專供使用aspx擴展名的浏覽器使用為了使XML Web services和常規ASPNET頁區分開來XML Web services使用asmx擴展名

  XML Web services由XML Web services入口點和實現XML Web services功能的代碼組成在ASPNET中asmx文件充當XML Web services的可尋址入口點它引用預編譯程序集中的代碼文件的支持代碼或asmx文件本身包含的代碼

  使用XML Web services時有兩種基本的操作

  創建XML Web services創建XML Web services時實際上是在創建一個將功能向XML Web services客戶端公開的應用程序

  訪問XML Web services訪問XML Web services時客戶端應用程序將查找引用並使用XML Web services中包含的功能

XML Web services 可以是獨立的應用程序或大型 Web 應用程序的子組件最低要求是客戶端必須能夠向 XML Web services 發送消息

  有關詳細信息請參閱 XML Web services in Managed Code

  三使用 Visual Studio 創建 XML Web services

  要使用 Visual Studio 創建采用托管代碼的 XML Web services需要訪問為開發 ASPNET 應用程序(該應用程序將在 Web 項目的環境中創建)而配置的 Web 服務器Web 項目的種類很多當您要在 Visual Studio NET 中使用采用托管代碼的 XML Web services 時可以使用 ASPNET Web Service 項目模板在 Visual Studio 中創建 XML Web services 項目後就會看到 Component Designer(組件設計器)組件設計器是 XML Web services 的設計界面可以使用 Design(設計)視圖向 XML Web services 添加組件並使用 Code(代碼)視圖查看或編輯與 XML Web services 關聯的代碼

  在 Visual Studio 中創建 ASPNET Web Service 項目後它將在 Web 服務器上構造一個 Web 應用程序項目結構同時在您的本地計算機上構造一個 Visual Studio 解決方案文件解決方案文件 (sln) 包含配置和生成設置並且保存著一系列與項目關聯的文件此外Visual Studio 將自動創建支持 XML Web services 所必需的文件和引用完成後Visual Studio 集成開發環境 (IDE) 將在 Design(設計)視圖中顯示 asmx 文件

  默認情況下當您使用 ASPNET Web Service 項目模板創建 XML Web services 時Visual Studio 將使用支持代碼文件(如 ServiceasmxVB 或 Serviceasmxcs)支持代碼文件包含實現 XML Web services 功能的代碼默認情況下Solution Explorer(解決方案資源管理器)會隱藏支持代碼文件當查看 asmx 文件的 Code(代碼)視圖時實際上您是在查看支持代碼文件的內容asmx 文件本身包含處理指令 WebService它指示在何處可以找到 XML Web services 的實現方案生成采用托管代碼的 XML Web services 後ASPNET 將自動提供基礎結構並處理 XML Web services 的請求和響應包括分析和創建簡單對象訪問協議 (SOAP) 消息編譯的輸出是一個 dll 文件該文件位於項目的 bin 文件夾中

  有關詳細信息請參閱 Creating XML Web services in Managed Code

  WebService 處理指令

  WebService 處理指令為 ASPNET 環境提供了必要的信息如實現 XML Web services 功能的類以下是 asmx 文件中 WebService 處理指令的示例

  

  

   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(解決方案資源管理器)中查看 asmx 文件的內容請用右鍵單擊 asmx 文件然後單擊快捷菜單中的 Open With(打開方式)

  在 Open With(打開方式)對話框中選擇 Source Code (Text) Editor(源代碼 [文本] 編輯器)然後單擊 Open(打開)

  Language 屬性指示開發 XML Web services 所使用的編程語言可以使用任何與 NET 兼容的語言(如 Visual Basic NET 或 Visual C#)來創建 XML Web servicesasmx 頁關聯的支持代碼文件由 Codebehind 屬性來指示Class 屬性指示支持代碼文件中用來實現 XML Web services 功能的類

  有關詳細信息請參閱 Code Model for XML Web services in Managed Code

  SystemWebServicesWebService 類

  SystemWebServicesWebService 類定義了 XML Web services 的可選基類並提供了直接訪問常見 ASPNET 對象(如應用程序和會話狀態的對象)的權限默認情況下使用 Visual Studio 以托管代碼的形式創建的 XML Web services 繼承此類XML Web services 可以繼承此類以獲得訪問 ASPNET 固有對象(如 Request 和 Session)的權限

  如果 XML Web services 沒有繼承此類也可以從 SystemWebHttpContextCurrent 訪問 ASPNET 固有對象實現 XML Web services 的類必須是公共的並且必須有一個公共的默認構造函數(不帶參數的構造函數)這樣ASPNET 就能夠創建 XML Web services 類的實例以處理傳入的 XML Web services 請求

  有關詳細信息請參閱 Inheriting from the WebService Class

  WebService 屬性

  每個 XML Web services 都需要唯一的命名空間它可使客戶端應用程序區分出可能使用相同方法名稱的 XML Web services在 Visual Studio NET 中創建的 XML Web services 的默認命名空間是盡管命名空間類似於典型的 URL但在 Web 浏覽器中是不能查看的它只是一個唯一標識符

  注意您可能希望在包含有關您所提供的 XML Web services 信息的位置提供一個 Web 頁

  WebService 屬性提供以下屬性

  ◆Description
此屬性的值包含描述性消息此消息將在 XML Web services 的說明文件(例如服務說明和服務幫助頁)生成後顯示給 XML Web services 的潛在用戶
◆Name
此屬性的值包含 XML Web services 的名稱默認情況下該值是實現 XML Web services 的類的名稱Name 屬性標識 XML Web services 的 XML 限定名稱的本地部分Name 屬性也用於在服務幫助頁上顯示 XML Web services 的名稱
◆Namespace
此屬性的值包含 XML Web services 的默認命名空間XML 命名空間提供了一種在 XML 文檔中創建名稱的方法該名稱可由統一資源標識符 (URI) 標識使用 XML 命名空間可以唯一標識 XML 文檔中的元素或屬性因而在 XML Web services 的服務說明中Namespace 被用作與 XML Web services 直接相關的 XML 元素的默認命名空間如果不指定命名空間就使用默認命名空間

  以下示例代碼說明了 WebService 屬性的用法

  

  

   Visual Basic
Description:="此處可以放一些描述性文字。tw.WiNgWIt.Com",
Name:="MyFavoritesService")> _
Public Class Service1
Inherits System.Web.Services.WebService
' 實現代碼。
End Class

  // C#
[WebService(Namespace=//MyServer/MyWebServices/",
Description="此處可以放一些描述性文字。",
Name="MyFavoritesService")]
public class Service1 : System.Web.Services.WebService
{
// 實現代碼。
}

  有關詳細信息,請參閱 Using the WebService Attribute。

  WebMethod 屬性

  以托管代碼創建 XML Web services 時,通過在 Public 方法聲明之前放置 WebMethod 屬性可以指定在 XML Web services 中可用的方法。Private 方法不能充當 XML Web services 的入口點,盡管它們可以采用相同的類並且 XML Web services 代碼可以調用它們。WebMethod 屬性必須應用到可用作 XML Web services 一部分的每種公共方法中。

  WebMethod 屬性包含配置 XML Web services 行為的幾個屬性。例如,可以使用此屬性在相關服務幫助頁提供一個簡短說明。

  WebMethod 屬性提供以下屬性:

  ◆BufferResponse
當設置為 True(默認設置)時,ASP.NET 將響應向下發送到客戶端之前先緩存整個響應。緩存是一種非常有效的方法,可以通過減少輔助進程和 Internet 信息服務 (IIS) 進程之間的通信來提高性能。當設置為 False 時,ASP.NET 會將響應緩存在 16 KB 的區塊中。通常,只有在不想一次將響應的全部內容都緩存在內存中時,才將此屬性設置為 False。例如,正在寫回一個將項流出數據庫的集合。除非另行指定,否則默認值為 True。
◆CacheDuration
此屬性的值指定 ASP.NET 緩存每個唯一參數設置結果所需的秒數。除非另行指定,否則默認值為 0,此設置將禁用結果緩存。
◆Description
此屬性的值提供了對 XML Web services 方法的說明,顯示於服務幫助頁中。除非另行指定,否則默認值為空字符串。
◆EnableSession
當設置為 False(默認設置)時,ASP.NET 將無法訪問 XML Web services 方法的會話狀態。當設置為 True 時,XML Web services 可以直接從 HttpContext.Current.Session 訪問會話狀態集合;在繼承了 WebService 基類的情況下,也可以使用 WebService.Session 屬性進行訪問。
◆MessageName
此屬性的值使 XML Web services 能夠使用別名來唯一標識重載的方法。除非另行指定,否則默認值為方法名。當為 MessageName 指定值後,結果 SOAP 消息會反映出此名稱而不是實際的方法名。
◆TransactionOption
此屬性的值指定 XML Web services 方法是否可以作為事務的根對象。雖然可以將 TransactionOption 屬性設置為 TransactionOption 枚舉類型的任意值,但是 XML Web services 方法僅有兩種可能行為:它不參與事務(Disabled、NotSupported 和 Supported),或是創建新事務(Required 和 RequiresNew)。除非另行指定,否則默認值為 TransactionOption.Disabled。要使用此屬性,需要向 System.EntERPriseServices.dll 添加一個引用。此命名空間包含的方法和屬性,提供了可在 COM+ 服務中找到的分布式事務模型。

  System.EnterpriseServices.ContextUtil 類允許您使用 SetAbort 或 SetComplete 方法設置該事務。

  以下示例代碼說明了 WebMethod 屬性的用法:

  

  

  ' Visual Basic
Public Class Service1
Inherits System.Web.Services.WebService
CacheDuration:=60, _
Description:="一些描述性的文字",
MessageName:="RetrieveData")> _
Public Function GetBigChunkOfData() As DataSet
' 實現代碼
End Function
End Class

  // C#
public class Service1 : System.Web.Services.WebService
{
[WebMethod(BufferResponse=false,
CacheDuration=60,
Description="一些描述性的文字",
MessageName="RetrieveData")]
public DataSet GetBigChunkOfData()
{
// 實現代碼
}
}

  有關詳細信息,請參閱 Using the WebMethod Attribute。

  四、使用 Visual Studio 部署 XML Web services

  當使用 Visual Studio .NET 創建采用了托管代碼的 XML Web services 時,應使用標准部署模型:編譯項目,然後將結果文件部署到生產服務器。項目 .dll 文件包含 XML Web services 代碼類文件(.asmx.vb 或 .asmx.cs)以及項目中的所有其他類文件,但不包含 .asmx 文件本身。然後,您可以將這一個項目 .dll 文件部署到生產服務器中,而無需附帶任何源代碼。當 XML Web services 接收到請求時,項目 .dll 文件將被加載並執行。

  

  圖1:部署 XML Web services

  要將 XML Web services 部署到非開發服務器,可以添加 Web 安裝項目,也可以將所需的文件復制到目標服務器。要使您的 XML Web services 可供其他人使用,需要將其部署到可供目標客戶端訪問的 Web 服務器。

  有關詳細信息,請參閱 Deploying XML Web services in Managed Code。

  服務幫助頁

  從 Web 浏覽器調用 .asmx 文件,而不提供已識別的查詢字符串時,

  .asmx 文件將為 XML Web services 返回一個自動生成的服務幫助頁。

  例如,要訪問名為 Service1.asmx(本地計算機中 WebService1 項目的一部分)的 XML Web services 的服務幫助頁,可使用以下 URL:。

  此服務幫助頁提供了 XML Web services 提供的以及您可以通過編程訪問的方法的列表。每種方法都含有一個指向其詳細信息的鏈接。另外,此幫助頁還包括指向 XML Web services 說明文檔的鏈接。

  

  圖服務幫助頁

  服務幫助頁的文件名在配置文件的 XML 元素(默認設置為 DefaultWsdlHelpGeneratoraspx)中指定默認情況下此特定 ASPNET Web 窗體是該計算機中所有 XML Web services 所通用的

  \%Windows%
\MicrosoftNET
\Framework
\[version]
\CONFIG
\DefaultWsdlHelpGeneratoraspx

  由於服務幫助頁只是一個 ASPNET Web 窗體因而可以對其進行替換或修改以包含其他項目(如公司徽標)另外也可以修改相關 nfig 文件的 元素以指定自定義服務幫助頁

  有關詳細信息請參閱 Configuration Options for XML Web services Created Using ASPNET

  服務方法幫助頁

  服務方法幫助頁提供了與特定 XML Web services 方法相關的詳細信息本頁允許您調用使用 HTTPPOST 協議的方法但是隨後卻無法調用要求復雜輸入參數(如 DataSet)類型的方法另外XML Web services 方法必須支持 HTTPPOST 協議才能啟用此功能在服務方法幫助頁的底部還提供了協議(XML Web services 方法所支持的)的請求和響應消息示例

  targetNamespace=//Walkthrough/XmlWebServices/">



type="s:double" />






name="ConvertTemperatureResult" type="s:double" />







  

  

  

  

  

  

  
此方法可以將華氏溫度轉換為攝氏溫度。




  
此方法可以將華氏溫度轉換為攝氏溫度。




  
此方法可以將華氏溫度轉換為攝氏溫度。





/>

soapAction=//Walkthrough/XmlWebServices/ConvertTemperature"
/>









binding verb="GET">

operation location="/ConvertTemperature">

urlEncoded>







binding verb="POST">

operation location="/ConvertTemperature">









一種溫度轉換服務

  location="" />


  address
location="" />


  address
location="" />



  要訪問名為 Service1.asmx(本地計算機上 TempConvert2 項目的一部分)的 XML Web services 的服務說明(如上例所示),可使用以下 URL:。

  有關詳細信息,請參閱 Web Services Description Language (WSDL) Explained。

  XML Web services 發現

  XML Web services 發現是對 XML Web services 說明進行定位和詢問的過程,是訪問 XML Web services 的基本步驟。通過發現進程,XML Web services 客戶端能夠在設計階段了解某個 XML Web services 是否存在,它的功能如何,以及如何正確與它進行交互操作。

  然而,實現 XML Web services 的 Web 站點不需要支持該發現進程,而是由另一個站點負責說明服務(如 XML Web services 目錄)。另外,可能沒有一個公開的方法可用來查找服務,例如在創建專用服務時。

  有關詳細信息,請參閱 XML Web services Discovery。

  靜態發現 (.disco)

  可以通過發布 .disco 文件(一個 XML 文檔,包含指向其他發現文檔、XSD 方案和服務說明的鏈接)來啟用 XML Web services 的程序發現。使用 ASP.NET 自動創建的 XML Web services 能夠提供生成的發現文檔。例如,要訪問名為 Service1.asmx(本地計算機中 WebService1 項目的一部分)的 XML Web services 發現文檔,可使用以下 URL:

  以下示例顯示了發現文檔的結構:

  

  

  
xmlns:wsdl="">

  注意:發現文檔是一個元素容器,通常包含提供 XML Web services 發現信息的資源鏈接 (URL)。如果 URL 是相對的,則假定它們是相對於發現文檔的位置。

  有關詳細信息,請參閱 Fine-Tuning Discovery Mechanisms。

  動態發現 (.vsdisco)

  動態發現是 ASP.NET 通過開發 Web 服務器上的文件夾層次結構執行迭代搜索以查找可用的 XML Web services 的過程。動態發現 (.vsdisco) 文件是基於 XML 的文件,

  可以包含零或多個 節點。每個 節點包含一個“path”屬性,path 屬性包含指向子文件夾(動態發現進程不應搜索的子文件夾)的相對路徑。以下是 .vsdisco 示例文件:

  

  

  







  當從啟用了動態發現的 Web 服務器請求 .vsdisco 文件時,對於已通過動態發現進程進行定位的每個 Web Service,都會返回一個包含 Web Service 發現信息的發現文檔。

  默認情況下,nfig 中禁用了動態發現。要積極控制哪些 XML Web services 客戶端可以發現服務,應該在開發 Web 服務器上只使用動態發現。當向生產 Web 服務器部署 XML Web services 時,應為那些希望客戶端能夠發現的 XML Web services 創建並發布一個靜態發現文件 (.disco)。

  有關詳細信息,請參閱 Deploying XML Web services in Managed Code。

  Web Service 目錄

  部署完 XML Web services 後,如果希望其他人使用,需要考慮如何讓開發人員找到它。使 XML Web services 可以為多數人使用的一種既定方法是,將其注冊到 XML Web services 目錄中。通用說明、發現和集成 (UDDI) 項目提供了一份公司及其提供的服務的目錄。

  有關詳細信息,請參閱 XML Web services Directories。

  五、使用 Visual Studio 訪問 XML Web services

  XML Web services 客戶端是指任何引用和使用 XML Web services 的組件或應用程序。它不必是基於客戶端的應用程序,事實上,在大多數情況下,您的 XML Web services 客戶端可能是其他 Web 應用程序(如 Web 窗體或其他 XML Web services)。當訪問采用托管代碼的 XML Web services 時,代理類和 .NET 框架將處理所有結構代碼。

  從托管代碼訪問 XML Web services 是一個簡單的過程。首先,向希望訪問的 XML Web services 項目添加一個 Web 引用。Web 引用使用作為代理的方法為每個公開的 XML Web services 方法創建代理類。其次,添加 Web 引用的命名空間。最後,創建代理類實例並像訪問其他類的方法一樣訪問該類方法。

  有關詳細信息,請參閱 Accessing XML Web services in Managed Code。

  查找 XML Web services 並添加 Web 引用

  有時,您可能既是 XML Web services 的提供者,又是 XML Web services 的使用者。在這種情況下,您可能知道 XML Web services 的位置和功能。但在其他時候,您可能是訪問由別人提供的 XML Web services。在這種情況下,您或許不知道 XML Web services 是否滿足您的要求。

  為了簡化代碼模型,用托管代碼編寫的應用程序使用一個 Web 引用來代表各本地 XML Web services。通過使用 Add Web Reference(添加 Web 引用)對話框向您的項目添加 Web 引用。此對話框使您可以浏覽您的本地服務器、Microsoft UDDI 目錄和 Internet 上的 XML Web services。

  Add Web Reference(添加 Web 引用)對話框使用 XML Web services 發現進程,在從對話框中浏覽的 Web 站點上,查找合適的 XML Web services。對於給定的地址,它使用為查找 XML Web services 發現 (DISCO) 文檔並最終找到 XML Web 說明文檔(遵守 Web Service 說明語言 [WSDL] 的語法)而設計的算法來詢問 Web 站點。

  當使用 Add Web Reference(添加 Web 引用)對話框查找到應用程序訪問的 XML Web services 後,單擊 Add Reference(添加引用)按鈕告訴 Visual Studio 將服務說明的一份副本下載到本地計算機,然後生成訪問所選 XML Web services 的代理類。代理類包含了一些方法,可以同步或異步調用公開的 XML Web services 方法。

  有關詳細信息,請參閱 Locating XML Web services。

  動態和靜態 URL

  Web 引用可以使用靜態 URL,也可以使用動態 URL。Web 引用的 Web Reference URL 屬性用於指定引用的 XML Web services 的 URL。默認情況下,此屬性被設置為所選 XML Web services 的 URL(是一個靜態 URL)。

  如果將 URL Behavior 屬性設置保留為默認值 Static,則當創建類實例時,會使用硬編碼的 URL 來設置該代理類的 URL 屬性。

  如果將 Web 引用的 URL Behavior 屬性設置為 Dynamic,則應用程序在運行時將從您的應用程序配置文件的 部分獲得 URL,例如:

  

  

        value=""/>

  當您創建代理對象的實例時,您也可以通過編程來為應用程序的對象設置 URL 屬性。不管代理使用何種 URL,它必須是符合 WSDL 的 XML Web services;當添加 Web 引用時,應與已使用的 XML Web services 相匹配。否則,早期生成的代理類將不能與之交互。

  添加 Web 引用時,您也可以使用 Visual Studio 所使用的同一工具(XML Web services 說明語言工具)生成代理類來創建代理類。當您不能從安裝 Visual Studio 的計算機上訪問 XML Web services 時,該方法是很有用的。例如,當 XML Web services 所在的網絡直到運行時仍不能被客戶端訪問時。然後,您要手動向應用程序項目添加工具生成的文件。

  有關詳細信息,請參閱 Managing Project Web References。

  使用代理類

  生成的代理類有自己的命名空間,在創建代理類實例前,您必須向客戶端應用程序添加命名空間。對於其他類來說,在調用方法之前,您必須首先創建它的實例。此過程與創建其他類實例沒有區別。

  當使用 Visual Studio 直接從 XML Web services 的服務說明中生成的代理類時,訪問采用托管代碼的 XML Web services 比較簡單。要訪問 XML Web services 方法,

  您的客戶端應用程序應調用相應的代理對象同步方法或異步方法。這些方法執行必要的工作,來遠程調用需要的 XML Web services 方法。默認情況下,代理類使用 SOAP 來訪問 XML Web services 方法,因為 SOAP 對三種支持的協議操作(HTTP-GET、HTTP-POST 和 HTTP-SOAP)支持最豐富的數據類型。

  通過 Add Web Reference(添加 Web 引用)進程生成的代理類來自System.Web.Service.Protocols.SoapHttpClientProtocol 類,它包含的幾個屬性可用來控制該類訪問 XML Web services 的行為。

  除此以外,SoapHttpClientProtocol 類還提供了以下屬性:

  ◆ClientCertificates
此屬性允許客戶端在調用 XML Web services 方法時傳遞一個或多個客戶端證書(也叫做 Authenticode X.509 v.3 證書)。
◆CookieContainer
如果 XML Web services 方法使用會話狀態,那麼在響應標題中會向 XML Web services 客戶端(用來唯一標識 XML Web services 客戶端的會話)傳回一個 cookie。對於收到該 cookie 的 XML Web services 客戶端,必須創建一個 CookieContainer 的新實例並在調用 XML Web services 方法之前將其屬性指定為 CookieContainer。這就可以確保 cookie 能夠正確地包含在後續請求中。
◆Credentials
當使用 Credentials 屬性時,XML Web services 客戶端必須實例化實現 ICredentials 的類(如 NetworkCredential),然後設置專用於驗證機制的客戶憑證。NetworkCredential 類可以用來設置使用基本、摘要式、NTLM 和 Kerberos 身份驗證機制的驗證憑證。
◆PreAuthenticate
當 PreAuthenticate 為 True 時,如果驗證機制支持該設置,WWW 驗證標題將隨第一個請求發送。當 PreAuthenticate 為 False(默認值)時,無需先進行用戶身份驗證,就可以向 XML Web services 方法發送請求。如果知道 Web Service 需要驗證,就可以通過將屬性設置為 True 來節省一次往返操作。
◆Proxy
如果客戶端需要使用不同於在系統設置中所發現的代理設置,需要使用此屬性。可以使用 WebProxy 類來設置代理設置,因為它可以實現 IWebProxy。否則,默認代理設置可能將在配置文件中進行設置。
◆Timeout
超時(毫秒)用於同步調用 XML Web services。默認值是 100000 毫秒。將 Timeout 屬性值設置為 Timeout.Infinite,表示請求沒有超時。但是,Web 服務器仍然有可能引起請求在服務器端超時。
◆Url
此屬性的默認值由生成代理類的服務說明中所發現的 location 屬性確定。
有關詳細信息,請參閱 SoapHttpClientProtocol Class。

  調用 XML Web services 方法

  向 XML Web services 添加 Web 引用後,您可以調用 XML Web services 的公開方法並像訪問其他組件方法一樣來訪問結果。

  在以下的示例代碼中,客戶端應用程序 (Application1) 訪問一個具有 Web 引用 (Converter) 的 XML Web services,該 Web 引用包含代理類 Service1,而代理類又有一個調用 XML Web services 的方法 ConvertTemperature。代碼中的粗體行是訪問 XML Web services 所必需的。

  

  

  ' Visual Basic
Imports System
Module Module1
Sub Main()
Dim cService As New Converter.Service1()
Dim dFahrenheit As Double
Dim dCelsius As Double
Console.Write("華氏度:")
dFahrenheit = Convert.ToDouble(Console.ReadLine())
dCelsius = cService.ConvertTemperature(dFahrenheit)
Console.Write("攝氏度:")
Console.WriteLine(dCelsius.ToString())
End Sub
End Module

  // C#
using System;
namespace Application1
{
class Class1
{
static void Main()
{
Converter.Service1 cService = new Converter.Service1();
Console.WriteLine("華氏度:");
double dFahrenheit = Convert.ToDouble(Console.ReadLine());
double dCelsius = cService.ConvertTemperature(dFahrenheit);
Console.Write("攝氏度:");
Console.WriteLine(dCelsius.ToString());
}
}
}

  六、總結

  XML Web services 提供了在松耦合環境中使用標准協議(HTTP、XML、SOAP 和 WSDL)交換消息的能力。消息可以是結構化的、帶類型的,也可以是松散定義的。由於 XML Web services 的基礎是標准協議,因此您的 XML Web services 應用程序能夠與很多實現、平台和設備進行通信。

  可以使用 ASP.NET 頁框架創建 XML Web services,並使這些 XML Web services 能夠訪問 .NET 框架的許多功能。由於 ASP.NET 和 .NET 框架是采用托管代碼的 XML Web services 的基礎,開發人員可以專注於創建或訪問 XML Web services,而不需要編寫基礎結構代碼。

  當您使用 Visual Studio 直接從 XML Web services 的服務說明中生成的代理類時,訪問采用托管代碼的 XML Web services 比較簡單。代理類代碼將方法調用轉換為請求消息,並將響應信息返回給方法的返回值。 


From:http://tw.wingwit.com/Article/program/net/201311/11296.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.