Еженедельник Свет в Интернет

Главная

Новости

Статьи и обзоры
  Горожанин
  Обнинск в Internet
  Web Design
  Hardware
  Software
  Безопасность
  Серфинг
  Игродром
  Relax
  Технологии
  Web-обзор
  Интернет-ликбез
  Опросник
  УП-Технологии
  ART.net

Ссылки

Архив

О нас

Контакты

Форумы


Основатель:
К.Николаенко

Главный Редактор:
С.Коротков

Web Design:
Neutron


Наш спонсор






Порт POPULAR.RU
POPULAR.RU RegionalBanner Network.






Океан


НПП Метра - промышленные электронные автомобильные вагонные весы
Goldy Interior - салон офисной мебели: кабинеты руководителей, мебель для персонала

= Технологии =

ВВЕДЕНИЕ В ВЕБ-СЕРВИСЫ

Андрей Филёв, Михаил Плизкин

продолжение: начало в #31(143),#32(144),#33(145),#34(146)

<service name="RequestResponceService">
<documentation>A sample service</documentation>
<port name="requestResponcePort"
binding="tns:RequestResponcePort".
<soap:address location=
"http://sitename.com/requestresponce"/>
</port>
</service>

И наконец, здесь определяются порт и сервис с кратким документирующим пояснением.
Обязательным элементом синтаксиса WSDL являются пространства имен XML. Это требование обусловлено расширяемостью WSDL, на основе которой строится поддержка различных физических протоколов (в частности, стандартно определены расширения для SOAP 1.1, HTTP GET/POST и MIME). Расширяемость используется также для поддержки различных систем типов.
Некоторых дополнительных пояснений требует понятие типа порта. Тип порта - это набор связанных с ним абстрактных операций. Эти операции определяются в терминах посылаемых и принимаемых сообщений. Физические аспекты процесса приема и передачи при этом не затрагиваются. Используемые протоколы определяются в привязках, а конкретные адреса - в портах. Такое разделение необходимо прежде всего для реализации повторного использования фрагментов WSDL-документов.
В определениях привязок стандартно можно использовать ссылки на протоколы SOAP, HTTP GET/POST и MIME. Система типов может быть легко создана на основе XML Schema. Задача разработчика, таким образом, четко разделяется на части. Некоторые (а в идеале все) фазы генерации контракта могут быть выполнены машинным путем при создании веб-сервиса. Существующие приложения не поддерживают такую возможность, однако в перспективе этот процесс будет полностью автоматизирован.
Таким образом, документ WSDL полностью описывает интерфейс веб-сервиса со внешним миром. Единственной проблемой остается поиск веб-сервисов и их контрактов для решения конкретных задач.

СОЗДАНИЕ СЕРВИСА

В качестве примера создадим сервис, который будет выдавать список веб-мастеров абстрактного сайта. Для того чтобы показать гибкость сериализации объектов в XML, создадим сервис, возвращаемым значением которого будет массив объектов, полями которых станут массивы других объектов.
Предположим, у вас уже стоит Visual Studio.NET и IIS версии 5.0 и выше. Запустим Visual Studio.NET, после чего выберем File New Project. Из списка проектных типов нужно выбрать ASP.NET Web Service, расположенный в группе Visual C#Project. В качестве названия проекта введем любое удобное вам, например, webservices.
Теперь добавим нужный нам сервис. Для этого в Solution Explorer щелкнем правой кнопкой мыши на названии проекта, выберем Add Add Web Service и введем название файла sampleService.asmx.
После этого Visual Studio создаст файлы, необходимые для работы сервиса. Первый, SampleService.asmx, полностью делегирует реализацию всей функциональности C#-классу webservices.SampleService, который среда также автоматически сгенерировала в файле SampleService.asmx.cs.

public class Webmaster {
public string Name;
public Skill[] technologySkills;
public Webmaster() {
}
public WebMaster(string name, Skill[]
technologySkills) {
Name=name;
TechnologySkills=technologySkills;
}
}
public class Skill {
public string TechnologyName;
public int SkillAge;
public Skill() {
}
public Skill(string technologyName, int skillAge) {
TechnologyName=technologyName;
SkillAge=skillAge;
}
}
Обратите внимание на наличие пустых публичных конструкторов. Их описать необходимо для того, чтобы стала возможной сериализация/десериализация (преобразование структуры данных объекта в XML и наоборот).
Реализация рабочего метода самого веб-сервиса сделаем максимально простой:

[WebMethod(description="Получить список веб-мастеров")]
public WebMaster[] GetWebMaster() {
return (new WebMaster[] {
new Webmaster("Serge", new Skill[] {
new Skill("Java", 2)
}),
new WebMaster("Nick", new Skill[] {
new Skill(".NET,2)
})
});
}

Больше для создания сервиса нам не потребуется писать ни строчки кода!!!
После компиляции проекта (меню Build) наш веб-сервис будет доступен по адресу http://localhost/webservices/sampleService.asmx . Более того, по адресу . Можно посмотреть контракт нашего сервиса и по адресу и даже запустить его вручную из браузера и увидеть примеры SOAP-, HTTP GET- и HTTP POST-запросов. Ниже приведен полный C#-код нашего сервиса (SampleService.asmx.cs):

using System;
using System.Collection;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web Services;

namespase webservices {
/// summary
/// Пример сервиса
/// /summary
public class SampleService :
System.Web.Services.Webservice {

[webMethod(Description=
"получить список веб-мастеров")]
public WebMaster[] GetWebMaster() {
return (new WebMaster[] {
new WebMaster("Serge", new Skill[] {
new Skill("Java", 2)
}),
new WebMaster("Nick", new Skill[] {
new Skill(".NET, 2)
})
});
}
}
public class Webmaster {
public string Name;
public Skill[] TechnologySkills;
public WebMaster() {
}
public Webmaster(string name, Skill[]
technologySkills) {
Name=name;
TechnologySkills=technologySkills;
}
}
public class Skill {
public string TechnologyName;
public int SkillAge;
public Skill() {
}
public Skill(string technologyName, int skillAge) {
TechnologyName=technologyName;
SkillAge=skillAge;
}
}
}

Окончание следует


Copyright © Свет в Internet   Designed by Свет в Internet