Программирование >>  Программирование с использованием ajax 

1 ... 226 227 228 [ 229 ] 230 231 232 ... 396


Айа Servic* rUlWiict

То lee s tttt of лв 1 Ы itmttt on a гркЛн i* vm. tf4m a мппс URl and cfl<k Go. To t) o *ie foi жгМаЬ* tennccs. <*cir C) uo ei

Pttp locatnoiT 49813 - .rrmtl im*

Seryite

(r v*#: $ nn< l aiB)i - li Servicel i 7° S*r i<elSoap

Cpef t.oni

♦ Rr>en(Stl g

1 jfWicH toundal dfUeii http iwamoit 49813 ier .<el *

(jame.pavf AebServKesSampiej

Pwc. 27.9. Диалоговое окно Add Service Reference

private void buttonl Click(object sender, EventArgs e) {

WebServicesSample. ServicelSoapClient client =

new WebServicesSample. ServicelSoapClient () ; textBox2.Text = client.ReverseString(textBoxl.Text);

Solution ВфЮгсг SohiUon mbSMVictSa oJ

i SimplKHent Proprrlies

Описание полученных результатов

Теперь новая ссылка на службу WebServicesSample должна отображаться в окне Solution Explorer (рис. 21.10). Щелкните на кнопке Show АН Files (Показать все файлы), чтобы увидеть документ WSDL и файл reference, cs, содержащий исходный код прокси-клиента. Кнопка Show All Files - вторая в панели инструментов Solution Explorer. При помещении указателя мыши над кнопками всплывающие подсказки отображают информацию о назначении кнопок.

Информацию, отображаемую проводником решений Solution Explorer только при щелчке на кнопке Show АН Files, удобнее просматривать в представлении классов Class View (новый класс, реализующий прокси-клиента). Этот класс преобразует вызовы методов в формат SOAP. Представление Class View (рис. 21.11) будет содержать новое пространство имен с названием, которое было определено посредством имени ссылки на службу. В данном случае было создано пространство имен WebServicesSample. Класс ServicelSoapClient является производным от ClientBase<ServicelSoap> и реализует метод Web-службы ReverseStringО.

Выполните двойной щелчок на классе ServicelSoapClient, чтобы открыть автоматически сгенерированный файл reference. cs. Рассмотрим этот сгенерированный код.

Класс ServicelSoapClient является производным от класса ClientBase<ServicelSoap>. Этот базовый класс создает сообщение SOAP в методе Invoke ().

ф- WebServKftSampie

conligiMaUon i.Cinfo Retereme ucmap

Rpference tJ 1 Sffvitel dlco fil S rv>ctl widi

ben , Ob) app tonfig f] Forml ti

rton Explorer OattVlM*

Puc. 21.10. Новая ссылка на службу WebServicesSample



{) SiiDpleClient

RfverieStringPfqueit

; ReverseStringRcquestBocJy

*; ReverseStnngResponie

Ш *4 RrverteStringResponieBoc}y ffi SemcelSoap £ ServitelSoaDChannel a *f ServicelSoapClient Base Types

. ClientBaie<Serv felSoaD> SetvicelSoap

ion r pl et 7 Clan .lew * Р

Рис. 21.11. Новое пространство имен WebServicesSample

Атрибут WebServiceBindingAttribute устанавливает значения привязки к Web-службе:

[System.Diagnostics.DebuggerStepThroughAttribute()]

[System.ComponentModel.DesignerCategoryAttribute( code )j

[System.Web.Services.WebServiceBindingAttribute(Name= ServiceSoap , Namespace= http: www.wrox.com/webservices )] public partial class Service :

System.Web.Services.Protocols.SoapHttpClientProtocol {

В конструкторе свойство Url устанавливается в соответствии с Web-службой. Оно будет использоваться из класса SoapHttpClientProtocol для запроса службы:

public Service() { this.Url =

SimpleClient.Properties.Settings.Default.SimpleClient WebServicesSample Service; }

Наиболее важный метод - метод, предоставляемый Web-службой: ReverseString (). Этот метод обладает тем же параметром, который реализован на сервере. Реализация клиентской версии метода ReverseString () вызывает метод Invoke () базового класса SoapHttpClientProtocol. Метод Invoke () создает сообщение SOAP, используя имя метода ReverseString и параметр message. Этот метод определен в файле reference. cs:

public string ReverseString(string message) {

ReverseStringReguest inValue = new ReverseStringReguest(); inValue.Body = new ReverseStringReguestBody(); inValue.Body.message = message; ReverseStringResponse retVal =

((ServicelSoap)(this)).ReverseString(inValue); return retVal.Body.ReverseStringResult;

Отправка запроса SOAP no НТТР-соединению определена в автоматически созданном файле конфигурации приложения, который определяет basicHttpBinding:



<?xinl version= l. О encoding= utf-8 ?> <configuration> <system.serviceModel> <bindings> <basicHttpBinding>

<binding name= ServicelSoap closeTimeout= 00:01:00 openTimeout= 00:0 1:00 receiveTimeout= 00:10:00 sendTimeout= 00:01:00 allowCookies= false bypassProxyOnLocal= false hostNameComparisonMode= StrongWildcard maxBufferSize= 65536 maxBufferPoolSize= 524288 maxReceivedMessageSize= 65536

messageEncoding= Text textEncoding= utf-8 transferMode= Buffered useDefaultWebProxy= true >

<readerQuotas maxDepth= 32 maxStringContentLength= 8192 maxArrayLength= 16384

maxBytesPerRead= 4096 maxNameTableCharCount= 16384 /> <security mode= None > <transport clientCredentialType= None proxyCredentialType= None realm= />

<message clientCredentialType= UserName algorithmSuite= Default /> </security> </binding> </basicHttpBinding> </bindings> <client>

<endpoint address= http: localhost:49813/Servicel .asmx binding= basicHttpBinding bindingConfiguration= ServicelSoap contract= WebServicesSample.ServicelSoap name= ServicelSoap /> </client> </system.serviceModel> </configuration>

Обращение к службе выполняется в следующем операторе с помощью сгенерированного прокси-класса. Следующий оператор создает новый экземпляр прокси-класса. Как показано в реализации конструктора, свойство Url устанавливается в соответствии с Web-службой:

WebServicesSample.ServicelSoapClient client =

new WebServicesSample.ServicelSoapClientО;

В результате вызова метода ReverseString () прокси-класса сообщение SOAP отправляется серверу, что ведет к вызову Web-службы:

textBox2.Text = client.ReverseString(textBoxl.Text) ;

Выполнение программы ведет к созданию вывода, подобного показанному на рис. 21.12.

Щi Web Services Client

The cow jumped over the moon

пот ert rpvo бертц woe ehT

Puc. 21.12. Клиент Web-службы в действии



1 ... 226 227 228 [ 229 ] 230 231 232 ... 396

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика