Просмотр формального описания Web-cepenca

Оценить
(0 голоса)

Visual Studio и .NET Framework позволяют вам просмотреть Web-сервис внутри Web- браузера. Эта возможность полезна как для тестирования Web-сервиса, так и для исследо­вания его работы (возвращаемых и требуемых им сообщений). Для доступа к Web- сервису вы сначала собираете (компилируете) его в Visual Studio, а затем запускаете asmx-файл в браузере.

На рис. 19.7 показан пример Web-сервиса CustomerProfile в окне браузера. Обратите вни­мание, что все методы сервиса перечислены. Показано также описание каждого метода. Это то самое описание, которое было указано в определении Web-метода (WebMethodAttribute).

Для того чтобы увидеть реальное формальное описание Web-сервиса на WSDL, вы можете выбрать ссылку Service Description в верхней части страницы (показана на рис. 19.7). Когда

вы нажмете эту ссылку, то внутри QueryString в asmx-файл будет передан параметр WSDL. Это дает указание ASP.NET вернуть WSDL сервиса.

WSDL будет сгенерирован. Он соответствует стандартам WSDL и поэтому может использо­ваться клиентами, которые хотят получить доступ к вашему сервису. Эти клиенты исполь­зуют WSDL для того, чтобы понять, как работает ваш Web-сервис.

Примечание

.NET поставляется с инструментом Disco.exe. Visual Studio использует его для гене­рирования файлов, относящихся к обнаружению и пониманию \Л/еЬ-сервисов. Вы тоже можете запускать этот инструмент из командной строки для генерирования таких до­кументов и сохранения их с целью последующего изучения и использования.

Создаваемые программой Disco.exe документы служат вводными данными для кли­ентских приложений, которые пользуются Web-сервисом. Эти клиентские приложения создаются при помощи инструмента WSDL.exe.

В листинге 19.4 вы можете увидеть полный WSDL для сервиса CustomerProfile. Этот лис­тинг легче просматривать в браузере (где у вас будут цветовая кодировка и древовидная структура для перемещения по XML). Однако этот листинг приведен в справочных целях. При просмотре обратите внимание на описания всех сервисов. Обратите также внимание и на то, как сложный тип Customer встроен в WSDL. Этот сложный тип был сгенерирован на основе объекта Customer (BusinessEntities . Customer). Вспомним, что этот тип являет­ся возвращаемым значением для одного метода и параметром для другого. .NET преобразу­ет все это в тип XML для использования в Web-сервисах. Описание: image516

                 

<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns: tm="http: / /microsoft. com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns :mime=" http: / /schemas .xmlsoap. org/wsdl/mime/"

xmlns:tns="http://tempuri.org/" xmlns:s="http://www.w3.org/2001/XMLSchema"

xmlns:soapl2="http://schemas.xmlsoap.org/wsdl/soapl2/"

xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"

targetNamespace="http://tempuri.org/"

xmlns:wsdl="http: //schemas .xmlsoap.org/wsdl/">

<wsdl:types>

<s:schema elementFormDefault=Mqualified"

targetNamespace="http://tempuri.org/">

<s:element name="GetCustomerProfile">

<s:complexType>

<s:sequence>

<s:element min0ccurs="0" тах0ссигз=и1и name="customerId"

type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

<s:element name="GetCustomerProfileResponse">

<s:complexType>

<s:sequence>

<s:element min0ccurs=,,0" maxOccurs=Hl"

name="GetCustomerProfileResult" type="tns:Customer" />

</s:sequence>

</s:complexType>

</s:element>

<s:complexType name="Customer'^

<s:sequence>  '

<s:element min0ccurs="0" maxOccurs=,,l,, name="Id"

type="s:string" />

<s:element minOccurs=H0" maxOccurs="l" name="Name"

type="s:string" />

<s:element min0ccurs="0" maxOccurs="l" name="Email"

type="s:string" />

<s:element min0ccurs="0" maxOccurs="l" name="AddressLinel"

type="s:string" />

<s:element minOccurs="On maxOccurs="l" name="AddressLine2"

type="s:string" />

<s:element minOccurs="0" maxOccurs="l" name="City"

type="s:string" />

<s:element min0ccurs="0" maxOccurs="l" name="State"

type="s:string" />

<s:element minOccurs=nO" maxOccurs="l" name="PostalCode"

type="s:string" />

<s:element min0ccurs="0" maxOccurs="l" name="Phone"

type="s:string" />

<s:element minOccurs="l" maxOccurs="l" name="ContactEmail"

type="s-.boolean" />

<s:element minOccurs="l" maxOccurs="l" name="ContactPhone"

type="s:boolean" />

</s:sequence>

</s:complexType>

<s:element name="SaveCustomerM>

<s:complexType>

<s:sequence>

<s:element min0ccurs="0" maxOccurs="l" name="customer"

type="tns:Customer" />

</s:sequence>

</s:complexType>

</s:element>

<s:element name="SaveCustomerResponse">

<s:complexType />

</s:element>

<s:element name="DeleteCustomer">

<s:complexType>

<s:sequence>

<s:element min0ccurs="0" maxOccurs="l" name="customerId"

type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

<s:element name="DeleteCustomerResponse">

<s:complexType />

</s:element>

</s:schema>

</wsdl:types>

<wsdlimessage name="GetCustomerProfileSoapIn">

<wsdl:part name="parameters" element="tns:GetCustomerProfile" /> </wsdl:message>

<wsdl:message name=,rGetCustomerProfileSoapOutM>

<wsdl:part name="parameters"

element="tns:GetCustomerProfileResponse"/>

</wsdl:message>

<wsdlrmessage name="SaveCustomerSoapIn">

<wsdl:part name="parameters" element="tns:SaveCustomer" />

</wsdl:message>

<wsdlrmessage name="SaveCustomerSoapOut">

<wsdl:part name="parameters" element="tns:SaveCustomerResponse" /> </wsdl:message>

<wsdlrmessage name="DeleteCustomerSoapIn">

<wsdl:part name="parameters" element="tns:DeleteCustomer" />

</wsdl:message>

<wsdlimessage name="DeleteCustomerSoapOut">

<wsdl:part name="parameters" element="tns:DeleteCustomerResponse" /> </wsdl:message>

<wsdl:portType name="CustomerProfileSoap">

<wsdl:operation name="GetCustomerProfile">

<wsdl:documentation xmlns:wsdl=

"http://schemas.xmlsoap.org/wsdl/">Used to return a customer's profile.</wsdl:documentation> <wsdl:input message="tns:GetCustomerProfileSoapIn" />

<wsdl:output message="tns:GetCustomerProfileSoapOut" />

</wsdl:operation>

<wsdl:operation name="SaveCustomer">

<wsdl:documentation xmlns:wsdl=

"http://schemas.xmlsoap.org/wsdl/">Saves a customer</wsdl:documentation>

<wsdl:input message="tns:SaveCustomerSoapIn" />

<wsdl:output message="tns:SaveCustomerSoapOut" />

</wsdl:operation>

<wsdl:operation name="DeleteCustomer">

<wsdl:documentation xmlns:wsdl=

"http://schemas.xmlsoap.org/wsdl/">Deletes a customer</wsdl:documentation>

<wsdl:input message="tns:DeleteCustomerSoapIn" />

<wsdl:output message="tns:DeleteCustomerSoapOut" />

</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="CustomerProfileSoap"

type="tns:CustomerProfileSoap">

<soap:binding transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="GetCustomerProfile">

<soap:operation soapAction="http://tempuri.org/GetCustomerProfile"

style=MdocumentM />

<wsdl:input>

<soap:body use="literaln />

</wsdl:input>

<wsdl:output>

<soap:body use="literal" />

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="SaveCustomer">

<soap:operation soapAction="http://tempuri.org/SaveCustomer"

style="document" />

<wsdl:input>

<soap:body use="literal" />

</wsdl:input>

<wsdl:output>

<soap:body use="literalM />

</wsdl:output>

</wsdl:operation>

<wsdl:operation name=MDeleteCustomer">

<soap:operation soapAction="http://tempuri.org/DeleteCustomer"

style="documentn />

<wsdl:input>

<soap:body use="literaln />

</wsdl:input>

<wsdl:output>

<soap:body use="literal" />

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<wsdl:binding name="CustomerProfileSoapl2"

type="tns:CustomerProfileSoap">

<soapl2:binding transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="GetCustomerProfile">

<soapl2:operation soapAction=

"http://tempuri.org/GetCustomerProfile" style="document" /> <wsdl:input>

<soapl2:body use="literal" />

</wsdl:input>

<wsdl:output>

<soapl2:body use=MliteralM />

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="SaveCustomer">

<soapl2:operation soapAction="http://tempuri.org/SaveCustomer"

style="document" />

<wsdl:input>

<soapl2:body use="literal" />

</wsdl:input>

<wsdl:output>

<soapl2:body use="literal" />

</wsdl:output>

</wsdl:operation>

<wsdl:operation name="DeleteCustomer">

<soapl2:operation soapAction="http://tempuri.org/DeleteCustomer"

style="document" />

<wsdl:input>

<soapl2:body use="literal" />

</wsdl:input>

<wsdl:output>

<soapl2:body use="literal" />

</wsdl:output>

* </wsdl:operation>

</wsdl:binding>

<wsdl:service name="CustomerProfile">

<wsdl:port name="CustomerProfileSoap"

binding="tns:CustomerProfileSoap">

<soap:address location="http://localhost:51239/CustomerProfile.asmx" /> </wsdl:port>

<wsdl:port name="CustomerProfileSoapl2"

binding="tns:CustomerProfileSoapl2">

<soapl2:address location=

"http://localhost:51239/CustomerProfile.asmx" />

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

Просмотр Web-метода
Вызов Web-метода
Использование Web-сервиса ASP.NET
Описание сервисной ссылки
Просмотр Web-ссылки

Добавить комментарий


Защитный код
Обновить

© 2017 www.visualstudios.ru. Все права защищены.