Создание web - службы

Для примера рассмотрим web службу с помощью которой будем переводить курс из какой либо валюты на рубли, при этом курс вводит сам пользователь. В реальных условиях процесс перевода можно выразить как «СУММА * КУРС», то есть произведение суммы на курс дает нам искомое значение.

При создании новой web службы в Visual Studio 7.0 (или.Net), программисту предоставляется шаблонный код web службы, для того, что бы не переписывать однотипный служебный код по нескольку раз. Это сильно упрощает работу и позволяет сосредоточить внимание на алгоритме и структуре программы.

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.Web;

using System.Web.Services;

namespace myWebService

{

/// <summary>

/// Summary description for Service1.

/// </summary>

[WebService(Namespace="http://localhost/myWebServices")]

public class Service1: System.Web.Services.WebService

{

public Service1()

{

//CODEGEN: This call is required by the ASP.NET Web Services Designer

InitializeComponent();

}

#region Component Designer generated code

//Required by the Web Services Designer

private IContainer components = null;

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

private void InitializeComponent()

{

}

/// <summary>

/// Clean up any resources being used.

/// </summary>

protected override void Dispose(bool disposing)

{

if(disposing && components!= null)

{

components.Dispose();

}

base.Dispose(disposing);

}

#endregion

// WEB SERVICE EXAMPLE

// The HelloWorld() example service returns the string Hello World

// To build, uncomment the following lines then save and build the project

// To test this web service, press F5

// [WebMethod]

// public string HelloWorld()

// {

// return "Hello World";

// }

}

}

Разработчики позаботились о начинающих программистах и сразу создали функцию возвращающую фразу «Hello world». Нам необходимо создать свою функцию которая будет выполнять действие которое нам необходимо, а именно перевод валют.

При создании проекта уже создался файл service1.asmx…. в нем нам предстоит написать код

Добавим к существующему коду функцию convertRub2Euro которой будем передавать два параметра: первый

тип: число с плавающей точкой

назначение: Сумма

курс: нужный курс

Функция возвращает строковое значение.

На рисунке 3-3 приведен текст функции

Рисунок 3‑3

Теперь запустите проект нажав кнопку на панели инструментов. Запуститься браузер с страницей на которой будут отображены функции, доступные для использования. Директива “[WebMthod]” перед кодом функции указывает компилятору на то что эта функция будет вызываться другими приложениями.

Рисунок 3‑4

Нажав на Service Description. можно посмотреть в XML формате как и какие методы поддерживает наша web служба. Ниже приведен увиденный результат:

<?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://localhost/myWebServices " 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://localhost/myWebServices " xmlns:wsdl=" http://schemas.xmlsoap.org/wsdl/ ">

- <wsdl:types>

- <s:schema elementFormDefault=" qualified " targetNamespace=" http://localhost/myWebServices ">

- <s:element name=" convertRub2Euro ">

- <s:complexType>

- <s:sequence>

<s:element minOccurs=" 1 " maxOccurs=" 1 " name=" num " type=" s:double " />

<s:element minOccurs=" 1 " maxOccurs=" 1 " name=" kurs " type=" s:double " />

</s:sequence>

</s:complexType>

</s:element>

- <s:element name=" convertRub2EuroResponse ">

- <s:complexType>

- <s:sequence>

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

</s:sequence>

</s:complexType>

</s:element>

</s:schema>

</wsdl:types>

- <wsdl:message name=" convertRub2EuroSoapIn ">

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

</wsdl:message>

- <wsdl:message name=" convertRub2EuroSoapOut ">

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

</wsdl:message>

- <wsdl:portType name=" Service1Soap ">

- <wsdl:operation name=" convertRub2Euro ">

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

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

</wsdl:operation>

</wsdl:portType>

- <wsdl:binding name=" Service1Soap " type=" tns:Service1Soap ">

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

- <wsdl:operation name=" convertRub2Euro ">

<soap:operation soapAction=" http://localhost/myWebServices/convertRub2Euro " 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=" Service1Soap12 " type=" tns:Service1Soap ">

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

- <wsdl:operation name=" convertRub2Euro ">

<soap12:operation soapAction=" http://localhost/myWebServices/convertRub2Euro " 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=" Service1 ">

- <wsdl:port name=" Service1Soap " binding=" tns:Service1Soap ">

<soap:address location=" http://localhost/myWebService/Service1.asmx " />

</wsdl:port>

- <wsdl:port name=" Service1Soap12 " binding=" tns:Service1Soap12 ">

<soap12:address location=" http://localhost/myWebService/Service1.asmx " />

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

Примитивная web – служба готова к использованию. Нажав на название функции, откроется следующая страница в которой помимо технической информации о службе присутствуют поля для ввода входных параметров созданной функции

Service1

Click here for a complete list of operations.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: