Использование web-службы на стороне клиента
При запуске с ключом /language: VB утилита создает файл с кодом вспомогательного класса Servicel.vb, по умолчанию находящийся в одном каталоге с wsdl.exe (выходной каталог задается ключом out).
Основной код сгенерированного класса выглядит так:
Option Strict Off Option Explicit On Imports System Imports System.Diagnostics Imports System.Web.Services Imports System.Web.Servi ces.Protocols Imports System.Xml.Serialization 'This source code was auto-generated by wsdl,Version=l.0.2914.16. <System.Web.Servi ces.WebServi ceBi ndi ngAttri bute(Name: = "ServicelSoap". [Namespace] := "http://tempuri,org/")> _ Public Class Servicel Inherits System.Web.Services.Protocols.SoapHttpClientProtocol <System.Diagnostics.DebuggerStepThroughAttri bute()> _ Public Sub New() MyBase.New Me.Url ="http://localhost/WebServicel/Servicel.asmx" End Sub <System.Diagnostics.DebuggerStepThroughAttri bute(). System.Web.Services.Protocols. SoapDocumentMethodAttri bute _ ("http://tempuri.org/GetWeather". Use: = System.Web.Services.Description. SoapBindingUse.Literal. ParameterStyle: = System.Web.Services. Protocols.SoapParameterStyle.Wrapped)> _ Public Function GetWeather(ByVal city As String)As String Dimresults() As Object=Me.Invoke ("GetWeather". New Object 0 {city}) Return CType(results(0). String) End Function <System.Diagnostics. DebuggerStepThroughAttribute()> _ Public Function BeginGetWeather(ByVal city As String._ ByVal callback As System.AsyncCallback. ByVal asyncState As Object) As System.IAsyncResult Return Me.Beginlnvoke("GetWeather", New Object() {city}.call back.asyncState) End Function <System.Diagnostics.DebuggerStepThroughAttributet)> _ Public Function EndGetWeather(ByVal asyncResult As System.IAsyncResult) As String Dim results()As Object = Me.EndInvoke(asyncResult) Return CType(results(0), String) End Function End Class
Затем в проект включается код класса (или ссылка на него) и ссылки на сборки System.Web, System.XML и System.Web.Services. Остается лишь создать экземпляр вспомогательного класса и вызвать функцию GetWeather!
Теперь, когда вы знаете, как получить результаты обращения к web-службе, нетрудно представить себе следующие возможные шаги:
- объединение результатов нескольких обращений к web-службам в одном файле;
- применение к результату запроса преобразований XSL и построение новых страниц с HTML-кодом при помощи web-служб, работающих на разных сайтах.
Перед нами одно из проявлений той концепции, которую сейчас активно внедряет Microsoft, – Web как глобальная сеть, через которую пользователь легко получает доступ к любым необходимым данным.