Разработка веб-службы в ASP.NET (Лабораторная работа 14)

Страницы работы

Фрагмент текста работы

Лабораторная работа 14. Разработка веб-службы в ASP.NET.

Цель работы

Знакомство с инструментом разработки ASP.NET веб-служб в среде Microsoft Visual Studio.

Порядок выполнения лабораторной работы

Рассмотрим в качестве примера создание с помощью ASP.NET веб-службы, которая переводит любое целое десятичное число в один из форматов по выбору: двоичный, восьмеричный, десятичный.

1.  Создайте новый проект (тип: ASP WebService), например, под именем ASPNETCalcWebService. В результате будет автоматически сгенерирован файл Service1.asmx.cs.

Программная логика веб-службы будет реализована на языке C# в CodeBehind файле Service1.asmx.cs:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

namespace ASPNETCalcWebService

{

/// <summary>

/// Summary description for Service1

/// </summary>

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[ToolboxItem(false)]

public class Service1 : System.Web.Services.WebService

{

[WebMethod]

public string HelloWorld()

{

return "Hello World";

}

}

}

2.  Для реализации логики веб-службы в этом файле замените в файле Service1.asmx.cs метод HelloWorld() на 3 новых метода, при помощи которых будут выполняться все преобразования:

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Web;

using System.Web.Services;

using System.Web.Services.Protocols;

namespace ASPNETCalcWebService

{

/// <summary>

/// Summary description for Service1

/// </summary>

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[ToolboxItem(false)]

public class Service1 : System.Web.Services.WebService

{

//Uncomment the following line if using designed components

//InitializeComponent();

}

// Преобразование в двоичную систему счисления

[WebMethod]

public string Binary(int x) {

return Convert.ToString(x, 2);

}

// Преобразование в восьмеричную систему счисления

[WebMethod]

public string Octal(int x)

{

return Convert.ToString(x, 8);

}

// Преобразование в шестнадцатиричную систему счисления

[WebMethod]

public string Hexadecimal(int x)

{

return Convert.ToString(x, 16);

}

}

Атрибут WebMethod  в этом файле указывает на то, что описываемый метод должен быть доступен по протоколу HTTP для пользователей.

3.  Откомпилируйте и запустите проекта. В результате в браузере должна следующая страница:

4.  Активируйте гиперссылку “Описание службы”. В окне браузера должно появиться описание  веб-службы в формате WSDL:

<?xml version="1.0" encoding="utf-8" ?>

<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:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

<wsdl:types>

<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">

<s:element name="Binary">

<s:complexType>

<s:sequence>

  <s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />

  </s:sequence>

  </s:complexType>

  </s:element>

<s:element name="BinaryResponse">

<s:complexType>

<s:sequence>

  <s:element minOccurs="0" maxOccurs="1" name="BinaryResult" type="s:string" />

  </s:sequence>

  </s:complexType>

  </s:element>

<s:element name="Octal">

<s:complexType>

<s:sequence>

  <s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />

  </s:sequence>

  </s:complexType>

  </s:element>

<s:element name="OctalResponse">

<s:complexType>

<s:sequence>

  <s:element minOccurs="0" maxOccurs="1" name="OctalResult" type="s:string" />

  </s:sequence>

  </s:complexType>

  </s:element>

<s:element name="Hexadecimal">

<s:complexType>

<s:sequence>

  <s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />

  </s:sequence>

  </s:complexType>

  </s:element>

<s:element name="HexadecimalResponse">

<s:complexType>

<s:sequence>

  <s:element minOccurs="0" maxOccurs="1" name="HexadecimalResult" type="s:string" />

  </s:sequence>

  </s:complexType>

  </s:element>

  </s:schema>

  </wsdl:types>

<wsdl:message name="BinarySoapIn">

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

  </wsdl:message>

<wsdl:message name="BinarySoapOut">

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

  </wsdl:message>

<wsdl:message name="OctalSoapIn">

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

  </wsdl:message>

<wsdl:message name="OctalSoapOut">

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

  </wsdl:message>

<wsdl:message name="HexadecimalSoapIn">

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

  </wsdl:message>

<wsdl:message name="HexadecimalSoapOut">

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

  </wsdl:message>

<wsdl:portType name="ServiceSoap">

<wsdl:operation name="Binary">

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

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

  </wsdl:operation>

<wsdl:operation name="Octal">

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

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

  </wsdl:operation>

<wsdl:operation name="Hexadecimal">

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

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

  </wsdl:operation>

  </wsdl:portType>

<wsdl:binding name="ServiceSoap" type="tns:ServiceSoap">

  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />

<wsdl:operation name="Binary">

  <soap:operation soapAction="http://tempuri.org/Binary" style="document" />

<wsdl:input>

  <soap:body use="literal" />

  </wsdl:input>

<wsdl:output>

  <soap:body use="literal" />

  </wsdl:output>

  </wsdl:operation>

<wsdl:operation name="Octal">

  <soap:operation soapAction="http://tempuri.org/Octal" style="document" />

<wsdl:input>

  <soap:body use="literal" />

  </wsdl:input>

<wsdl:output>

  <soap:body use="literal" />

  </wsdl:output>

  </wsdl:operation>

<wsdl:operation name="Hexadecimal">

  <soap:operation soapAction="http://tempuri.org/Hexadecimal" style="document" />

<wsdl:input>

  <soap:body use="literal" />

  </wsdl:input>

<wsdl:output>

  <soap:body use="literal" />

  </wsdl:output>

  </wsdl:operation>

  </wsdl:binding>

<wsdl:binding name="ServiceSoap12" type="tns:ServiceSoap">

  <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />

<wsdl:operation name="Binary">

  <soap12:operation soapAction="http://tempuri.org/Binary" style="document" />

<wsdl:input>

  <soap12:body use="literal" />

  </wsdl:input>

<wsdl:output>

  <soap12:body use="literal" />

  </wsdl:output>

  </wsdl:operation>

<wsdl:operation name="Octal">

  <soap12:operation soapAction="http://tempuri.org/Octal" style="document" />

<wsdl:input>

  <soap12:body use="literal" />

  </wsdl:input>

<wsdl:output>

  <soap12:body use="literal" />

  </wsdl:output>

  </wsdl:operation>

<wsdl:operation name="Hexadecimal">

  <soap12:operation soapAction="http://tempuri.org/Hexadecimal" style="document" />

<wsdl:input>

  <soap12:body use="literal" />

  </wsdl:input>

<wsdl:output>

  <soap12:body use="literal" />

  </wsdl:output>

  </wsdl:operation>

  </wsdl:binding>

<wsdl:service name="Service">

<wsdl:port name="ServiceSoap" binding="tns:ServiceSoap">

  <soap:address location="http://localhost/NumConvert/Service.asmx" />

  </wsdl:port>

<wsdl:port name="ServiceSoap12" binding="tns:ServiceSoap12">

  <soap12:address location="http://localhost/NumConvert/Service.asmx" />

  </wsdl:port>

  </wsdl:service>

  </wsdl:definitions>

5. Если необходимо сообщить более подробную информацию для пользователей по каждому из доступных в этой веб-службе методов достаточно будет добавить параметр Description в атрибуте WebMethod, например:

[WebMethod (Description = "Перевод целого числа в двоичную систему счисления")]

public string Binary(int x)

{

return Convert.ToString(x, 2);

}

В результате в браузере будет получена следующая страница:

5.   

6.  Выберите метод Binary. При этом должна загрузиться  веб-страница вида:

В результате работы веб-службы (после ввода числа и нажатия кнопки

Похожие материалы

Информация о работе