Чтение онлайн

на главную - закладки

Жанры

C# для профессионалов. Том II

Ватсон Карли

Шрифт:

Если мы имеем доступ к коду WSDL для службы Web, то мы можем его использовать. Как мы скоро увидим, это не так уж трудно сделать.

Теперь, когда мы кратко ознакомились с SOAP и WSDL, пришло время посмотреть, как создаются и используются службы Web.

Службы Web

Обсуждение служб Web включает два вопроса:

□ Создание служб Web, которое связано с написанием служб Web и размещением их на серверах Web.

□ Использование служб Web, которое связано с применением на стороне клиента созданных служб.

Создание

служб Web

Службы Web создают, либо помещая код прямо в файлы

.asmx
, либо, ссылаясь на классы службы Web из этих файлов. Как и со страницами ASP.NET, создание службы Web в VS.NET применяет последний подход, и он также будет использоваться для целей демонстрации.

Создание проекта службы Web, называемой

PCSWebSrv1
, как показано выше, приводит, как и для проекта приложения Web, к аналогичному множеству созданных файлов. Фактически, единственное различие состоит в том, что вместо создания файла с именем
WebForm1.aspx
создается файл с именем
Service1.asmx
. Созданный файл
.vsdisco
отвечает за идентификацию службы Web, чтобы система Visual Studio .NET, как мы вскоре увидим, могла добавить на него ссылку Web.

Код в

Service1.asmx
не доступен непосредственно через VS.NET, но просмотр с помощью Notepad показывает следующую строку кода:

<%@ WebService Language="c#" Codebehind="Service1.asmx.cs" Class="PCSWebSrv1.Service1" %>

Этот код ссылается на файл кода, который можно увидеть в VS.NET, —

Service1.asmx.cs
, доступный при щелчке правой кнопкой мыши на
Service1.asmx
в Solution Explorer и выборе View Code. Созданный код с удаленными для краткости комментариями показан ниже:

namespace PCSWebSrv1 {

 using system;

 using System.Collections;

 using System.ComponentModel;

 using System.Data;

 using System.Diagnostics;

 using System.Web;

 using System.Web.Services;

 public class Service1 : System.Web.Services.WebService {

public Service1 {

InitializeComponent;

}

private void InitializeComponent {

}

public override void Dispose {

}

 }

}

Этот код определяет пространство имен

PCSWebSrv1
с несколькими ссылками на стандартные пространства имен и класс службы Web с именем
Service1
(ссылку на который мы видели выше в файле
Service1.asmx
),
производный от
System.Web.Services.WebService
. Мы должны предоставить методы для этого класса службы Web.

Добавление метода, доступного через службу Web, требует простого определения метода как

public
и задание для него атрибута
WebMethod
. Этот атрибут помечает методы, которые мы хотим сделать доступными. Вскоре мы рассмотрим типы данных, которые можно использовать для возвращаемого типа и для параметров, но пока добавим следующий метод:

[WebMethod]

public String CanWeFixIt {

 return "Yes we can!";

}

и откомпилируем метод.

Можно проверить, как это будет работать, направляя браузер Web на файл

Service1.asmx
:

Щелчок на имени метода предоставляет нам информацию о запросе и ответе SOAP, а также примеры того, как запрос и ответ будут выглядеть с помощью методов HTTP GET и HTTP POST. Можно также протестировать метод, нажимая на предоставленную кнопку Invoke (если метод требует простых параметров, их также можно ввести в этой форме). Если сделать это, мы увидим код XML, возвращаемый вызовом метода:

<?xml version="1.0" ?>

<string xmlns="http://tempuri.org/">Yes we can!</string>

Это показывает, что метод работает прекрасно.

Следование по ссылке Service Description, показанной на экране браузера выше, позволяет увидеть описание WSDL службы Web. Наиболее важной частью, имеющей к нам отношение, является описание типов элементов для запросов и ответов:

<types>

 <s:schema attributeFormDefault="qualified" elementFormPefault="qualified"

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

<s:element name="CanWeFixIt">

<s:complexType />

</s:element>

<s:element name="CanWeFixItResponse">

<s:complexType>

<s:sequence>

<s:element name="CanWeFixItResult" nullable="true" type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

<s:element name="string" nullable="true" type="s:string" />

 </s:schema>

</types>

Это описание содержит также описание типов данных, требуемых для запросов и ответов, а также различных соединений для службы, делая его достаточно длинным файлом.

Типы данных, доступные для служб Web

Поделиться:
Популярные книги

Брак по принуждению

Кроу Лана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Брак по принуждению

Его наследник

Безрукова Елена
1. Наследники Сильных
Любовные романы:
современные любовные романы
эро литература
5.87
рейтинг книги
Его наследник

Черный Маг Императора 5

Герда Александр
5. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 5

Бастард

Майерс Александр
1. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард

Хуррит

Рави Ивар
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Хуррит

Семь Нагибов на версту

Машуков Тимур
1. Семь, загибов на версту
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Семь Нагибов на версту

Идеальный мир для Лекаря 18

Сапфир Олег
18. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 18

Идеальный мир для Лекаря 13

Сапфир Олег
13. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 13

Дочь опальной герцогини

Лин Айлин
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Дочь опальной герцогини

Любимая учительница

Зайцева Мария
1. совершенная любовь
Любовные романы:
современные любовные романы
эро литература
8.73
рейтинг книги
Любимая учительница

Болотник 3

Панченко Андрей Алексеевич
3. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 3

Пограничная река. (Тетралогия)

Каменистый Артем
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
Пограничная река. (Тетралогия)

Жена со скидкой, или Случайный брак

Ардова Алиса
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Жена со скидкой, или Случайный брак

Возвышение Меркурия. Книга 7

Кронос Александр
7. Меркурий
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 7