Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 308

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 302 303 304 305 306 307 < 308 > 309 310 311 312 313 314 .. 320 >> Следующая

Результат произведенных\уеЬ-службой вычислений представлен нарис. 15.13.
j 3 littfi:''.-locilliostZCalf Wc bStrvice/C alt Service, jsmH/Suljlrart >и =3ui)ftyi^B^BJ
0e EA №>w Favorites Ірой Ь*ф
Bar Favorites О | > **
Address |&] http^/localhost/CalcWebServicei'CalcService.asmx/Subtract'xcSUO&^a ¦^Go [ Links >3>
c?xml version=":..0" ?> <jnt j'iiilris="liUp;//teiti4Hiri.urrj/''>297</ir»t> *
3} Done I ! ! !й Local intranet
Рис. 15.13. Результат вычислений web-службы
t
766 Глава 15 • Web-службы
Обратите внимание на адресную строку браузера: ее формат — верное доказательство, что при передаче клиентомданных использовался метод HTTP-GET. Web-страницу CalcGET можно найти в подкаталоге Chapter 15.
Обмен данными при помощи SOAP
Гораздо более привлекательная альтернатива методам Н'ГП-'-иКТи HTTP-POST -использование протокола подключения SOAP. Отличительной особенностью этого протоколаявляетсято, что E его помощью мы можем обмениваться сложными типами данных. Мы можем передавать все теже типы данных, что и с помощью HTTP-GET и HTTP-POST, плюс дополнительные, которые представлены в табл. 15.8, Вся передача информации производится в XML-совместимом формате.
Таблица 15.8. которые можно передавать при помощи SOAP
Гип Комментарий
ADO..NET DataSet В принципе DataSet можно отнести к «пользовательским типам», но этот
тип так важен для обмена данными в реальных приложениях, что мы
вынесли его в отдельную строку
Сложные массивы Можно передавать массивы классов, структур и узлов XMt.
Пользовательские С помощью SOAP можно переносить объекты пользовательских классов,
типы структуры и узлы XML
Узлы XML С помощью SOAP можно передавать любые узлы
Подробное рассмотрение SOAF не входит в наши планы, однако наиболее важные моменты мы все же отметим.
В первую очередь необходимо сказать о том, что SOAP изначально создавался как очень простой в обращении протокол. Кроме того, он, как и все, что связано с XML, абсолютно независим от платформ, операционных систем, языков программирования и протоколов передачи данных. Например, данные SOAP мы можем передавать с помощью практически любых Интернет-протоколов (HTTP, SMTP и т. п.).
Любое описание в формате SOAP имеет два аспекта: информация, относящаяся к самому сообщению в целом, и данные в формате XML, относящиеся к составным частям данного сообщения,
Например, при использовании протокола SOAP для вызова метода Add!) в нашем примере определение этого метода в SOAP будет выглядеть так:
onressage name="AddFloatsSoapIn">
<part name= "parameters" eleirent="sO:AddFloats" /> </message>
«nressage name= " ArJdFloatsSoapOut">
<part rtame="parameters" element="sO:AddFloatsResponse" /> </message>
Откроем код WSDL для нашей web-службы Web Service. Ближе к концу страницы мы можем найти три узла XML, которые описывают привязки (bindings) нашей web-службы к протоколам HTTP-GET, HTTP-POST и SOAP (рис. 15.14).
Эти записи определяют, что наша web-служба будет работать по каждому из этих трех протоколов.
Прокси-сборки для web-служб 767
"3 Ul|>: •.Ji<,irii1»iiu'(..jlcW.'t>Sptvicc'tokScrvw.e.;»si.iK/W'5DL MHm-
Fte ldt View Favorites Toois Help
»Beck
@ й 1 TjBPersone) Bar Search (JjFevorites flj
'« ¦MtrgsjgijE"i'jijrne^- итті>вгтрт^тіiuiji j —~"—"—--1-'--
<message name="GetSimp1ePIHttpPostIn" /> + <message name="GBtBimplePIHttpPostOut"> + neme= Service з s и. ф'
+ <portType nams="SBrvlcelHttpGet"> + <portType name="ServlcelHttpPost"> + <binding name= 'Service lSoap'' typs="sO:SerulcelSoap"> + <D'nrsir»g name-- "Service lHttpGet" type=40:ServicelHttpGef> + <b\ndmq rtame="ServicelHttpPost" type="sO:ServicelHttpPost"> + <service name="Servicel"> </definitions>
to
'¦ ' Local intranet
Рис. 1Ы4. Привязки web-службы к протоколам подключения
Если открыть узел для привязки SOAP, там можно будет найти следующий коддля методаАаа- ) (обратите внимание на теги <1 nput> и <output>). operation n3D)e="Add">
<soap:operation soapActian="http://tempuri, org/AddFloats" style="document" !> <input name="AddFloats">
^soap:body use-"li'teral" if* </input>
¦^-output narae="AddFloats"b
<soap:body use="l1terar /> ^/output>
</ope.ration>
Было бы интересно разобраться с каждым тегом и атрибутом SOAP, однако, к сожалению, мы ограничены рамками данной Возможно, вас утешит то,
что спецификации SOAP найти совсем несложно (адреса URL с этой информацией вообще помещаются в каждый файл WSDL1 как мы могли убедиться). Кроме того, на практике, как мы уже видели и увидим в следующих код SOAP генерируется Visual Studio.NET автоматически, и нет необходимости править его вручную.
Файл CalcService.asmx.cs можно найти в подкаталоге Chapter 15.
Прокси-сборки для web-служб
Как мы могли убедиться, и передача данных клиентом (при работе по SOA P) и получение их (при работе по любому протоколу подключения) производится в XML-совместимых форматах. Конечно, мы можем создавать клиента для web-служб с модулями компоновки в и модулями анализа возвращаемых узлов но это довольно трудоемкое Кроме того, немного странно
Предыдущая << 1 .. 302 303 304 305 306 307 < 308 > 309 310 311 312 313 314 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100