|
Программирование >> Программирование с использованием ajax
Айа 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-службы в действии
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |