Мы рассмотрели общие понятия использования механизма « Web -сервисов». Освежим некоторые знания.

Web-сервисы применяются для обмена данными между сервером и клиентом; формат XML используется для «упаковывания» данных в целях взаимопонимания между обоими участниками общения.

РАЗДЕЛ I

ПРИМЕР РЕАЛИЗАЦИИ WEB -СЕРВИСА В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»

ЗАДАЧА: Необходимо создать web-сервис, обращаясь к которому клиенты могут определить всю необходимую информацию по своим заявкам.

Задача является демонстрационной и служит только примером для понимания и обучения механизму web -сервисов.

РЕШЕНИЕ:

Шаг 1. Создадим новую информационную базу без конфигурации для разработки новой конфигурации.

Шаг 2. Добавим в конфигурацию несколько новых объектов

Справочник «Клиенты»;

Документ «Заявка»;

Перечисление «СтатусыЗаявок».

Шаг 3. Создадим новый XDTO-пакет.

Почему и для чего мы создаем XDTO-пакет? Подробнее об использовании механизма XDTO можно прочитать в «Глава 16. Руководство разработчика» и .

Коротко отметим лишь только то, что механизм XDTO является универсальным способом представления данных для взаимодействия с различными внешними источниками данных и программными системами.

В нашем случае пакет XDTO создается для описания возвращаемого значения web-сервиса.

Раскроем ветку «Общие» → «XDTO-пакеты» → Добавить…

Укажем имя XDTO-пакета «DocumentsData » и его пространство имен http://localhost/request или http://192.168.1.76/request (для облегчения понимания и процесса обучения, мы указываем локальный IP-адрес компьютера, где установлен web-сервер (поддерживаемые web-сервера: IIS или Apache)). Каждый Web-сервис может быть однозначно идентифицирован по своему имени и URI пространству имен, которому он принадлежит.

Наш пакет содержит два типа объектов XDTO:

1) Сustomer - для передачи данных элемента справочника «Клиенты».

- Name ;

2) Document - для передачи данных документа «Заявки»

Этот тип объекта XDTO будет содержать следующие свойства:

- Сustomer - тип Сustomer из пространства имен http://192.168.1.76/request ; представляет собой ссылку на объект XDTO, который мы определили выше;

- Status - тип string из пространства имен http://www.w3.org/2001/XMLSchema ;

- Numder - тип string из пространства имен http://www.w3.org/2001/XMLSchema .

Шаг 4. Добавим в конфигурацию новый Web-сервис

Раскроем ветку «Общие» → «Web-сервисы» → Добавить…

Для Web-сервиса укажем следующими значения свойств:

Имя - DocumentsData

URI Пространства имен - http://192.168.1.76/request

Пакеты XDTO - DocumentsData или http://192.168.1.76/request

Имя файла публикации - request.1cws

Шаг 5. У созданного Web-сервиса определим операцию «GetData »

Значения свойств операции:

Тип возвращаемого значения - Document (http://192.168.1.76/request)

Возможно пустое значение - Истина

Имя процедуры - GetData .

Шаг 6. У операции GetData определим параметр Сustomer со следующими значениями свойств:

Тип значения - тип string из пространства имен http://www.w3.org/2001/XMLSchema;

Направление передачи - входной .

Шаг 7. Откроем модуль созданного Web-сервиса и поместить в него функцию Получить(), которая будет выполняться при вызове данного Web-сервиса.

Функция GetData(Сustomer) // Получить типы объектов XDTO КлиентТип = ФабрикаXDTO.Тип("http://192.168.1.76/request", "Сustomer"); ЗаявкаТип = ФабрикаXDTO.Тип("http://192.168.1.76/request", "Document"); // Получаем клиента КлиентСсылка = Справочники.Клиенты.НайтиПоНаименованию(Сustomer); Если Не ЗначениеЗаполнено(КлиентСсылка) Тогда Возврат Неопределено; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | Заявка.Ссылка, | ПРЕДСТАВЛЕНИЕ(Заявка.Статус) КАК Статус, | Заявка.Номер |ИЗ | Документ.Заявка КАК Заявка |ГДЕ | Заявка.Клиент = &Клиент"; Запрос.УстановитьПараметр("Клиент", КлиентСсылка); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат Неопределено; КонецЕсли; Выборка = РезультатЗапроса.Выбрать(); Выборка.Следующий(); Документ = Выборка.Ссылка.ПолучитьОбъект(); // Создать объект XDTO заявки Заявка = ФабрикаXDTO.Создать(ЗаявкаТип); Заявка.Numder = Выборка.Номер; Клиент = ФабрикаXDTO.Создать(КлиентТип); Клиент.Name = КлиентСсылка.Наименование; Заявка.Сustomer = Клиент; Заявка.Status = Выборка.Статус; // Вернуть заявку Возврат Заявка; КонецФункции

Шаг 8. Опубликуем созданный Web-сервис на веб-сервере.

Пункт меню Конфигуратор: «Администрирование» → «Публикация на Web-сервере».

На вкладке «Web-сервисы» устанавливаем признак «Публиковать Web-сервисы» и напротив нашего нового Web-сервиса также ставим «галочку».

РАЗДЕЛ II

ПРИМЕР ОБРАЩЕНИЯ К WEB -СЕРВИСУ СИСТЕМЫ «1С:ПРЕДПРИЯТИЕ» ИЗ СТОРОННЕГО ПРИЛОЖЕНИЯ

Основное назначение механизма Web-сервисов в системе «1С:Предприятие» - это передача необходимых данных сторонним приложениям.

Рассмотрим пример разработки приложения на Delphi обращения к нашему web-сервису из первого раздела данной статьи.

Шаг 1. Создадим новый проект и на форме разместим несколько элементов управления

Текстовое поле - используется для вывода полученной от web-сервиса информации;

Две кнопки - очистка текстового поля и обращение к web-сервису;

Поле ввода - передаваемый в web-сервис параметр.

Шаг 2. Выполняем импорт WSDL-файла

В результате мы получаем новый модуль request (такое наименование мы определили непосредственно в 1С). В данном модуле имеется все необходимая информация по web-сервису.

Шаг 3. Напишем обработчик вызова web-сервиса

Переменная DocumentDataPortType уже определена в модуле request

Шаг 4. Запустить приложение и выполнить проверку.

РАЗДЕЛ III

ПРИМЕР ОБРАЩЕНИЯ К WEB -СЕРВИСУ В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»

Шаг 1. Создадим новую внешнюю обработку с именем «WEB_Service»

Шаг 2. Для обработки определим новую форму

Шаг 3. У формы укажем несколько реквизитов

Клиент - тип «Строка»

КлиентВозврат - тип «Строка»

НомерВозврат - тип «Строка»

СтатусВозврат - тип «Строка».

Выведем реквизиты на форму.

Шаг 4. Добавим команду формы «ПолучитьДанные »

Укажем обработчик команды

&НаКлиенте Процедура ПолучитьДанные(Команда) ПолучитьДанныеНаСервере(Клиент); КонецПроцедуры Процедура ПолучитьДанныеНаСервере(Клиент) // Создать WS-прокси на основании ссылки и выполнить операцию Получить() Определение = Новый WSОпределения("http://192.168.1.76/WEB_Service/ws/request.1cws?wsdl"); Прокси = Новый WSПрокси(Определение, "http://192.168.1.76/request", "DocumentsData", "DocumentsDataSoap"); ДанныеЗаявки = Прокси.GetData(Клиент); Если ДанныеЗаявки = Неопределено Тогда КлиентВозврат = "Неопределено"; СтатусВозврат = "Неопределено"; НомерВозврат = "Неопределено"; Возврат; КонецЕсли; КлиентВозврат = ДанныеЗаявки.Сustomer.Name; СтатусВозврат = ДанныеЗаявки.Status; НомерВозврат = ДанныеЗаявки.Numder; КонецПроцедуры

Система «1С:Предприятие» может использовать веб-сервисы, предоставляемые другими поставщиками, двумя способами:

С помощью статических ссылок, создаваемых в дереве конфигурации;

«плюс»: большая скорость работы;

«минус»: повторный импорт WSDL-описания средствами конфигуратора и сохранение измененной конфигурации.

С помощью динамических ссылок, создаваемых средствами встроенного языка

(соответственно «минусы» статических для динамических - «плюсы»)

РАЗДЕЛ IV

ОТЛАДКА WEB-СЕРВИСОВ В СИСТЕМЕ «1С:ПРЕДПРИЯТИЕ»

Для локального web-сервиса необходимо:

Шаг 1. Положить на клиент, где запускается система 1С файлик webservicecfg.xml со следующим содержимом

Шаг 2. В файл default . vrd публикации конфигурации добавить строку

Шаг 3. В конфигураторе выбрать пункт меню

«Отладка» → «Подключение» → «Автоматическое подключение» → «Web-сервисы на сервере»

Шаг 4. Нажать на кнопку «OK»

Для серверного варианта надо еще сервер 1с запускать в режим отладки с ключом /debug

Аннотация: Области применения. Преимущества. Особенности разработки web-сервисов для платформы.NET. Описание и обнаружение web-сервиса

Что такое XML Web Service?

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

Применение сервисно-ориентированных подходов позволяет говорить о повторном использовании ( reuse ) на макро-уровне (уровне сервисов), в отличие от микро-уровня (уровня объектов). Сервисно-ориентированный подход предполагает использование простых и общепринятых стандартов, что позволяет самым разным приложениям использовать функциональность друг друга. Сервисы могут быть написаны с использованием самых разных языков программирования, на различных платформах. Кроме того, сервисы могут быть развернуты отдельно или в рамках программного комплекса в любой точке земного шара и будут таким образом предоставлять доступ к своей функциональности по сети.

Назовем сервисом (service) ресурс , реализующий бизнес-функцию и обладающий следующими свойствами:

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

Частным случаем сервиса является XML web -сервис.

XML Web-сервис - это особый тип web -приложения, который:

  • развертывается на web-сервере;
  • публикует web-методы, которые могут быть вызваны внешними клиентами;
  • ожидает поступления HTTP-запросов, являющихся командами вызовов web-методов;
  • исполняет web-методы и возвращает результаты.

В отличие от традиционного web -приложения, у web -сервиса нет пользовательского интерфейса. Вместо этого у него есть программный интерфейс , то есть web -сервис предоставляет функции ( web -методы), которые могут быть вызваны удаленно (например, по сети Internet ). Web -сервис не предназначен для обслуживания конечных пользователей. Его задача - предоставление услуг другим приложениям, будь то web -приложения, приложения с графическим пользовательским интерфейсом или консольные приложения.

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

Web -сервисы - не собственность конкретной компании. Это промышленный стандарт на основе открытых протоколов ( SOAP , HTTP и т. д.). Web -сервисы развертываются на различных платформах (в том числе на серверах под управлением Windows или UNIX ). Web -сервисы можно разрабатывать с применением многих средств разработки (от текстового редактора до семейства Microsoft Visual Studio ).

Методы большинства web -сервисов вызываются HTTP -запросами, содержащими сообщения SOAP SOAP - это XML -язык ( XML vocabulary ) для вызова удаленных процедур по HTTP и другим протоколам (полное описание SOAP http://www.w3.org/TR/SOAP).

Место web-сервисов среди других технологий удаленного вызова

Существует немало протоколов и технологий удаленного вызова: Microsoft Distributed Component Object Model ( DCOM ), the Object Management Group "s Common Object Request Broker Architecture ( CORBA ), Sun "s Remote Method Invocation ( RMI ), . NET Remoting , XML Web Services.

Все эти компонентно-ориентированные технологии ( DCOM , CORBA и RMI ) долгие годы успешно применялись в Intranet-приложениях. Они обеспечивают надежную, масштабируемую архитектуру. Однако при использовании этих технологий в Internet возникают две серьезные проблемы. Во-первых, они плохо взаимодействуют между собой. Все технологии оперируют объектами, но существенно отличаются деталями: управлением жизненным циклом, поддержкой конструкторов и степенью поддержки наследования. Второй, более важный аспект состоит в том, что ориентация на RPC-взаимодействия приводит к построению сильносвязных систем на основе явных вызовов методов объектов.

В отличие от данных технологий, XML Web Services и. NET Remoting в полной мере реализуют объектно-ориентированный подход для web -программирования.

XML Web Service - компонент , предоставляющий Internet -клиентам набор функций API или web -методов. XML входит в название, поскольку web -сервисы и их клиенты используют его для обмена данными. В основе web -сервисов лежат открытые стандарты, такие как HTTP , XML ( Extensible Markup Language ), SOAP (Simple Object Access Protocol - стандарт Intenet, описывающий, как приложения могут взаимодействовать, то есть вызывать методы друг друга, с помощью HTTP и других протоколов). Основная задача web -сервисов - обеспечение межпрограммного взаимодействия. Многие работают на UNIX -серверах, при этом к ним обращаются Windows -клиенты. Данные, передаваемые web -сервисам, сериализуются в XML и передаются в SOAP -пакетах. Метаданные о содержимом таких сообщений хранятся в WSDL-контракте web -сервиса и схемах XSD . Главное преимущество такого подхода - читабельность метаданных. Разработчик может легко просмотреть все описание web -сервиса и даже создать собственный модуль , разбирающий SOAP -пакеты.

.NET Remoting предоставляет инфраструктуру для распределенных объектов. Она гораздо сложнее простой архитектуры web -сервисов, основанной на передаче сообщений. . NET Remoting включает передачу параметров по ссылке и значению, обратные вызовы, множественную активацию объектов и политики управления жизненным циклом. Чтобы использовать указанные возможности, клиентское приложение должно владеть всеми технологиями. Данные в. NET Remoting передаются в бинарном или SOAP -формате. Однако в любом случае метаданные о структуре переданной информации содержатся в общеязыковой исполняющей среде. Без общеязыковой исполняющей среды ( CLR ) клиентское приложение не сможет разобрать специфичные для. NET Remoting заголовки SOAP . То есть. NET Remoting предъявляет существенно более высокие требования по сравнению с web -сервисами.

Разработка web-сервисов на платформе.NET

Есть много способов написания web -сервисов. Их можно разрабатывать вручную или с помощью SOAP -инструментов, предоставляемых Microsoft, IBM и др. Написание web -сервисов с помощью Microsoft. NET имеет два преимущества:

  • .NET Framework существенно упрощает процесс разработки за счет предоставления библиотеки классов и автоматизации отдельных этапов разработки;
  • Web-сервисы, написанные с помощью.NET Framework, - это управляемые приложения. То есть в таких приложениях не возникает проблем утечек памяти, неправильно инициализированных указателей и других типичных проблем программирования.

Создание

Разработаем простой web-сервис AdditionService, осуществляющий сложение двух чисел. У него будет всего один метод Add, принимающий в качестве параметра два целых числа и возвращающий также целое число. AdditionService демонстрирует несколько важных принципов программирования web-сервисов с помощью Microsoft .NET Framework.

  • Web-сервисы реализуются как ASMX-файлы. ASMX - это особое расширение имени файла, зарегистрированное за ASP .NET (точнее, за HTTP-обработчиком ASP.NET) в главном файле конфигурации ASP .NET Machine.config.
  • ASMX-файлы начинаются директивой @WebService . Эта директива должна содержать хотя бы атрибут Class , задающий класс, из которого состоит web-сервис.
  • Классы web-сервисов могут иметь необязательные атрибуты WebService . В данном примере такой атрибут назначает имя web-сервиса и описание, которое отображается на HTML-странице, когда пользователь вызывает в браузере AdditionService.asmx .
  • Web-методы объявляются путем назначения открытым методам класса Web-сервиса атрибута WebMethod . Для вспомогательных методов, применяемых внутри него, но недоступных внешним клиентам, этот атрибут просто не указывается.
  • HTTP, XML и SOAP "невидимы". Работу с XML-данными и сообщениями SOAP выполняет.NET Framework.

AdditionService.asmx <%@ WebService language="C#" Class="AddService" %> using System using System.Web.Services class AddService { public int Add (int a, int b) { return a + b } }

Несмотря на малые размеры, AdditionService.asmx - полноценный web-сервис, если его установить на web-сервер с ASP.NET. Его методы вызываются с помощью SOAP, HTTP GET и HTTP POST, и он может возвращать результаты как SOAP-отклики или как простые XML-оболочки.

Используя фоновый код, классы web-сервиса можно вынести из asmx-файлов в отдельные файлы.

Web-сервисы поддерживают использование сложных типов данных в качестве входных или выходных параметров. Сложные типы данных поддерживаются, так как XML позволяет легко сериализовать большинство типов данных. Однако при автоматическом тестировании web-сервиса ASP .NET не генерирует тестовые страницы для методов, принимающих сложные типы данных. Это происходит потому, что нельзя передать сложные типы данных web-методу с помощью HTTP GET и POST.

Web-сервисы позволяют вызывать свои методы асинхронно . Асинхронный вызов возвращает управление немедленно, независимо от того, сколько времени нужно web-сервису на обработку вызова. Асинхронные вызовы полезны в случае, если обработка вызова требует значительного времени. Приложение выполняет вызов, далее продолжает работать, не дожидаясь результата вызова, и позднее получает результаты асинхронного вызова. Получение результата происходит при повторном вызове web-метода в удобное приложению время либо с помощью подписки на уведомление об окончании обработки вызова web-сервисом (механизм делегатов).

Web-сервисы можно создавать при помощи инструментальных средств, например, Microsoft Visual Studio 2005 . Для создания web-сервисов там предусмотрен отдельный тип проекта ASP .NET Web Service. Visual Studio генерирует asmx-файл, файл с фоновым кодом для описания классов web-сервиса, файл конфигурации web-сервиса и т. д. При запуске проекта на исполнение происходит компиляция классов сервиса и открытие asmx-файла в окне браузера.

Описание web-сервисов при помощи контрактов

Для того чтобы другие разработчики могли использовать AdditionService, им нужно знать, какие методы он предоставляет, какие протоколы поддерживает, сигнатуры методов и адрес web-сервиса (URL). Вся эта и другая информация может быть описана на языке WSDL (Web Service Description language).


Обнаружение web-сервисов

Каким образом другие разработчики узнают о существовании AdditionService?

Во-первых, с помощью DISCO (сокращение от слова discovery) - файлового механизма поиска локальных web-сервисов, то есть механизма получения списка доступных web-сервисов из DISCO-файлов, размещенных на web-серверах. Кроме того, DISCO-файлы содержат записи о расположении WSDL-контрактов имеющихся сервисов. DISCO-файл представляет собой XML-файл с записями.

Также возможно использовать VSDISCO-файлы, которые аналогичны DISCO-файлам, но их содержимое есть результат динамического поиска web-сервисов в указанных каталогах и всех вложенных подкаталогах. ASP .NET отображает расширение имени файла.vsdisco на HTTP-обра-ботчик, который отыскивает в данном каталоге и его подкаталогах asmx и disco и возвращает динамически генерируемый DISCO-документ. По соображениям безопасности динамический поиск в ряде версий.NET Framework отключен, но его можно включить, изменив записи файла Machine.config.

А как же осуществляется поиск web-сервисов в глобальной сети? Для поиска web-сервисов в глобальной сети Microsoft, IBM и Ariba совместно разработали UDDI (Universal Description Discovery and Integration) - спецификацию построения распределенных баз данных, которая позволяет отыскивать web-сервисы. UDDI поддерживается сотнями компаний. UDDI-сайты сами являются web-сервисами. Каждый может опубликовать свой реестр на основе UDDI. Большинство разработчиков никогда не используют UDDI API напрямую. Вместо этого к реестрам UDDI обращаются инструментальные средства разработки. Они также генерируют классы-оболочки обнаруженных и выбранных web-сервисов.

Итоги

XML Web -сервис является программным компонентом, предоставляющим функциональность, которую могут использовать самые разные системы, поддерживающие такие стандарты, как XML и HTTP Клиентами web -сервиса могут быть как локальные, так и удаленные приложения. Web -сервисы позволяют создавать структуры, позволяющие легче интегрировать различные системы на основе простых общепринятых стандартов.

Идея веб-сервисов была разработана такими гигантами компьютерной индустрии как Sun, Oracle, HP, Microsoft и IBM. В этой идее нет ничего нового, но это большой шаг вперед к упрощенному доступу к программам через сеть. Основываясь на стандартных форматах связи, веб-сервисы могут вообще поменять наше представление о том, как мы должны делать веб-сайты.

Что такое веб-сервис?

Благодаря веб-сервисам функции любой программы могут стать доступными через Интернет. Таким образом такие программы как PHP, ASP, JSP скрипты, JavaBeans, COM-объекты и все остальные наши любимые средства программирования могут теперь обращаться к какой-нибудь программе, работающей на другом сервере (т.е. к веб-свервису), и использовать ответ, полученный от нее на своем веб-сайте, или приложении.

Скажем, если мне нужно выполнить какую-либо программную задачу, и я слишком занят (или не выжил из ума, чтобы самому изобретать в очередной раз велосипед), я могу воспользоваться услугами веб-сервиса, к которому мой сайт будет обращаться через Интернет. Передавая веб-свервису запрос с параметрами, я ожидаю получить ответ, в котором будет содержаться результат выполнения моего запроса.

Любой, кто хоть раз работал в последнее время с Hotmail, уже отчасти столкнулся с веб-сервисами: система аутентификации пользователей Passport - это один из сервисов, входящих в инициативу Microsoft .NET. пока он доступен бесплатно, так что создатели веб-сайтов могут запросто внедрить аутентификацию пользователей на своём сайте.

Основы

Принципы, лежащие в основе веб-сервисов, удивительно просты. И они ничего не добавляют нового в мир распределенных вычислений и Интернета:

  • лицо, ответственное за веб-сервис, определяет формат запросов к своему веб-сервису и его ответов
  • любой компьютер в сети делает запрос к веб-сервису
  • веб-сервис обрабатывает запрос, выполняет какое-либо действие, а затем отправляет ответ

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

Стандарты в основе

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

До этого многие компании разрабатывали свои собственные закрытые стандарты и форматы. А сейчас нам для работы нужно знать всего лишь простой XML (eXtensible Markup Language), который передается по старому знакомому протоколу HTTP. Это значит, что информация о работе веб-сервисов доступна для всех, и веб-разработчики, которые по роду профессии знакомы с этими технологиями, могут начать играться с веб-сервисами уже сегодня.

Разница между веб-сервисами и другими технологиями, с которыми разработчикам приходилось сталкиваться (например, DCOM, именованные каналы - named pipes, RMI) в том, что веб-сервисы основаны на открытых стандартах, ими легко овладеть, и эти стандарты широко поддерживаются на всех платформах Unix и Windows.

Протокол Simple Object Access Protocol (SOAP) является стандартным протоколом, разработанным W3C. Он определяет формат запросов к веб-сервисам.

Сообщения между веб-сервисом и его пользователем пакуются в SOAP-конверты (SOAP envelopes). Сообщения содержат либо запрос на осуществление какого-либо действия, либо ответ - результат выполнения этого действия. Конверт и его содержимое закодировано языком XML, и его достаточно просто понять. Вот как выглядит простой SOAP-запрос, который отправляется через HTPP к веб-сервису:

Xmlns:env="http://www.w3.org/2001/06/soap-envelope">


xmlns:m="http://www.somesite.com/Postcode">
WC1A8GH
UK

Ключевые элементы SOAP-конверта узнать достаточно просто: это два параметра (("почтовый индекс") и ("страна")), которые содержатся внутри элемента под названием. Этот элемент является названием веб-сервиса, к которому мы обращаемся с запросом. Прочие данные в конверте, такие как кодировка текста и версия SOAP помогают веб-сервису правильно обработать запрос.

А ответ будет выглядеть вот так:

Xmlns:env="http://www.w3.org/2001/06/soap-envelope" >

Env:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
xmlns:m="http://www.somesite.com/Postcode">
Yes

Это сообщение еще проще расшифровать. Элемент в нашем запросе поменялся на элемент в ответе на запрос. В этом элементе содержится только один элемент, значение которого обозначает, верен наш почтовый индекс или нет. Таким образом с помощью волшебства SOAP мы создали запрос, который делает для нас полезную работу. В ответ через сеть мы получаем определенного вида ответ на языке XML.

Теперь об UDDI

Даже при всей простоте протокола SOAP пользы в веб-сервисах было бы немного, если бы у нас не было никакой возможности их найти. К счастью IBM, Microsoft и компания Ariba выступили с инициативой и создали проект Universal Description, Discovery and Integration (UDDI), который, как они надеются, станет общим каталогом всех веб-сервисов в Web-е.

Система UDDI позволяет компаниям представить свой веб-сервис для публики. Этот каталог работает как телефонная книга всех веб-сервисов. Регистрация в каталоге UDDI осуществляется бесплатно, и основатели проекта надеются, что этот каталог будет содержать описания всех-всех-всех сервисов по всей Сети, так что для поиска нужного веб-сервиса достаточно будет обратиться лишь к одному каталогу UDDI.

Как это все работает

Так как же мне найти нужный веб-сервис?

Представим себе, что я - разработчик сайта, и мой клиент попросил меня добавить к сайту новую функцию: необходимо добавить проверку правильности почтового индекса в регистрационной форме.

Для осуществления этой проверки мне понадобилось бы создавать базу данных всех почтовых индексов всех 30 стран, где наша компания ведет бизнес, а потом проверять при регистрации соответствие почтового индекса указанному в регистрации городу. Но у меня этих данных нет, и я думаю, что на сбор подобных данных придется потратить ощутимую сумму денег.

Вместо того, чтобы раскошеливаться на покупку базы данных, писать самому код, следить за целостностью и правильностью всех данных и отлаживать работу скриптов, я просто иду в каталог UDDI и ищу, нет ли там веб-сервиса, который мог бы сделать эту работу за меня. Придя на сайт www.uddi.org, я запускаю поиск и нахожу прекрасный сервис от компании XYZ Corp.

Я внимательно рассматриваю определение формата веб-сервиса (определение записано на языке WSDL (Web Services Description Language), убеждаюсь, что сервис делает именно то, что мне нужно. Затем справляюсь у своих коллег о репутации компании XYZ Corp., узнаю, что она солидная, и затем обращаюсь к компании XYZ с вопросом о цене. Если цена на доступ к сервису доступна для моего бюджета, я пишу простую JSP-страницу для своего сайта, который вызывает веб-сервис компании XYZ Corp, и опля, на сайте появляется моментальная проверка почтового индекса.

На это стоит потратить время

Даже если вы никак не связаны с программированием или технологиями разработки сайтов, веб-сервисы стоят того, чтобы узнать о них поподробнее. Представьте себе картину, как вы обсуждаете с клиентом новый сайт, обсуждаете все функции нового проекта. Все идет великолепно: бюджет соответствует ожиданиям заказчика, ему понравился набросок плана сайта, понравились примеры интерфейсов. Все вроде работает.

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

Отбросьте страх! Готов поручиться, что в Сети уже существует веб-сервис, который готов представить вам требуемую функцию, а стоимость пользования этим веб-сервисом будет намного ниже стоимости самостоятельной разработки его аналога. Таким образом вы уберегаете своего разработчика от лишней головной боли, вашего клиента от лишней траты денег, всего лишь потратив пару минут на просмотр каталога UDDI.

Разработка сервиса

Разумеется, разработчики вовсе не обязаны довольствоваться только веб-сервисами, созданными другими. С помощью одного из ниже перечисленных наборов инструментов вы можете создать свой собственный веб-сервис, и предоставить его услуги другим обитателям сети.

Выбор инструментов для разработки веб-сервисов обширен. В него входят инструментарии таких компании как Sun (Open Net), Microsoft (.NET), HP (e-services), и IBM (Web Services). Существуют также инструментарии с открытыми исходными кодами (open source frameworks). Например, проект Mono Project стремится заменить собой инструментарий Microsoft .NET, предоставив систему компиляции (compilers), исполнения кода (runtime) и библиотек (libraries) для работы одних и тех же веб-сервисов на всех платформах, включая Unix.

Несмотря на многообразие серверов и средств разработки веб-сервисов, все они поддерживают один и тот же протокол SOAP, язык XML и систему UDDI.

Минусы

Прежде чем я полностью откажусь от карьеры программиста и посвящу себя использованию веб-сервисов, я должен задать себе вопрос: "Уж слишком розовая картинка. Что в ней не так?". К сожалению, за великий потенциал веб-сервисов приходится платить определенную цену:

  • Использование XML в качестве формата передачи данных приводит к тому, что ваши сообщения будут очень большими по размеру: сами теги XML занимают много места, а это накладывает на нас определенную нагрузку по созданию, передаче и интерпретации сообщений.
  • Так как мы используем удаленные компьютеры для выполнения определенных функций, мы полностью полагаемся на Интернет, что создает слишком много ненадежных звеньев в цепи между нашим веб-сервером и веб-сервисом.
  • Сейчас лишь немногие компании создают веб-сервисы, и немногие компании ими пользуются. На отладку и улучшение системы веб-сервисов еще требуется длительное время.
  • Система лицензирования и взимания платежей за пользование веб-сервисами еще должна быть принята разработчиками. Из-за того, что веб-сервисов еще слишком мало, большинство компаний пытается провести на своих потенциальных клиентов хорошее впечатление намеренно снижая стоимость услуг и предлагая благоприятные условия лицензирования. Должно еще пройти какое-то время, прежде чем будет выяснена реальная стоимость услуг веб-сервисов.

Когда же веб-сервисы займут свое место и станут доступны всем, они станут неоценимой помощью для веб-разработчиков. Они дадут нам гибкий доступ ко всей мощи всех компьютеров Сети. Пришло время для тех, кто делает веб-сайты, заинтересоваться веб-сервисами и узнать побольше о том, что они могут от них получить.

Перевод: Александр Качанов (http://webmascon.com)

19 ответов

Простое определение: веб-служба - это функция, к которой могут обращаться другие программы через Интернет (Http). Чтобы немного уточнить, когда вы создаете веб-сайт на PHP, который выводит HTML, его целью является браузер и, в дополнение, человек, читающий страницу в браузере. Веб-сервис не предназначен для людей, а скорее для других программ.

Таким образом, ваш сайт PHP, который генерирует случайное целое число, может быть веб-службой, если он выводит целое число в формате, который может быть использован другой программой. Это может быть в формате XML или другом формате, если другие программы могут понять вывод.

Полное определение, очевидно, более сложное, но вы попросили простой английский.

Упрощенное, нетехническое объяснение: Веб-сервлет позволяет PROGRAM разговаривать с веб-страницей, вместо того чтобы использовать ваш браузер для открытия веб-страницы.

Пример: Я могу перейти на maps.google.com и ввести свой домашний адрес, а также посмотреть, где я живу в своем браузере.

Но что, если вы пишете компьютерную программу, где вы хотите взять адрес и показать симпатичную карту, точно так же, как карты Google?

Ну, вы могли бы написать совершенно новую программу сопоставления с нуля, или вы могли бы назвать веб-службу, которую карты Google предоставляют, отправить ей адрес, и она вернет графическую карту местоположения, которую вы можете отобразить в своем программа.

В этом есть еще много, так как некоторые из других сообщений вступают, но результат заключается в том, что он позволяет вашему приложению либо извлекать информацию FROM, либо передавать информацию на какой-то ресурс. Некоторые другие примеры:

Да, это простой веб-сервис.

Веб-сервисы - это не что иное, как механизм запроса/ответа, который позволяет клиенту удаленно получать доступ/изменять данные. Существуют официальные стандарты для веб-сервисов (SOAP, SOA и т.д.), Но ваша простая страница также является сервисом.

Основной недостаток печати на странице - это то, что ваша служба вернет HTML. Предпочтительными форматами данных являются JSON и XML, поскольку большинство клиентских фреймворков (и серверных фреймворков) разработаны с использованием JSON и XML.

Итак, если вы изменили свой сервис для возврата:

some random number

... some random number

то это было бы более полезно для большинства клиентов

В более упрощенных терминах веб-служба - это то, что предоставляет данные как услугу по протоколу http. Конечно, это не так... но он близок.

Стандартные веб-службы используют протокол SOAP, который определяет связь и структуру сообщений, а XML - это формат данных.

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

Примерами веб-сервисов являются такие вещи, как Weather.com, предоставляющие информацию о погоде, которую вы можете использовать на своем сайте, или ИБП, предоставляющий метод запроса кавычек или отслеживания пакетов.

Изменена формулировка в отношении SOAP, так как она не всегда является SOAP, как я уже упоминал, но хотел бы сделать ее более понятной. Ключ предоставляет данные как службу, а не элемент пользовательского интерфейса.

Веб-служба отличается от веб-сайта тем, что веб-служба предоставляет информацию, потребляемую программным обеспечением, а не людьми. В результате мы обычно говорим об экспонированных JSON , XML или SOAP-сервисах.

Веб-сервисы являются ключевым компонентом в "mashups". Mashups - это когда информация с многих сайтов автоматически агрегируется в новый и полезный сервис. Например, есть сайты, которые объединяют Карты Google с информацией о полицейских отчетах, чтобы дать вам графическое представление о преступности в вашем районе. Другим типом mashup было бы получение реальных данных о запасах, предоставляемых другим сайтом, и объединение их с поддельным торговым приложением для создания "рыночной игры" на фондовом рынке.

Веб-службы также используются для предоставления новостей (см. RSS), последних элементов, добавленных на сайт, информации о новых продуктах, подкастах и ​​других замечательных функциях, которые делают современный веб-поворот.

Надеюсь, это поможет!

Для большинства сайтов у вас есть страницы HTML, которые вы посещаете, когда используете свой браузер. Это страницы, читаемые человеком (после визуализации в вашем браузере), где множество данных может быть переполнено, потому что это имеет смысл для людей.

Теперь представьте, что кто-то хочет использовать некоторые из этих данных. Они могут загрузить вашу страницу и начать фильтровать весь "шум", чтобы получить нужные им данные, но большинство веб-сайтов не построены таким образом, что данные на 100% наверняка будут помещены в одно и то же место для всех элементов, поэтому дополнительно к тому, чтобы быть громоздким, он также становится ненадежным.

Введите веб-службы.

Веб-сервис - это то, что веб-сайт предлагает предложить тем, кто хочет читать, обновлять и/или удалять данные с вашего сайта. Вы можете назвать это "бэкдором" для своих данных. Вместо того, чтобы представлять данные как часть веб-страницы, она предоставляется заранее определенным образом, где некоторые из наиболее популярных - это XML и JSON. Существует несколько способов общения с веб-сервисом, некоторые используют SOAP, другие - веб-службы REST"а и т.д.

Что характерно для всех веб-сервисов, так это то, что они являются машиночитаемыми эквивалентными веб-страницам, которые сайт предлагает другим. Это означает, что другие, желающие использовать данные, могут отправить запрос на получение определенных данных, которые легко разобрать и использовать. На некоторых сайтах может потребоваться указать имя пользователя/пароль в запросе для конфиденциальных данных, в то время как другие сайты позволяют кому-либо извлекать любые данные, которые могут им понадобиться.

Лучшее объяснение на английском языке объясняется аналогией:

  • Веб-страницы позволяют людям общаться и сотрудничать друг с другом.
  • Веб-службы позволяют программам общаться и сотрудничать друг с другом.

Ваш пример PHP - это веб-сервис по этому определению, потому что вывод может быть использован другой программой. Но на самом деле HTML-скребок экрана не является надежным или поддерживаемым способом создания веб-сервисов.

Веб-сервис представляет собой набор открытых протоколов и стандартов, используемых для обмена данными между приложениями или системами. Программные приложения, написанные на разных языках программирования и работающие на разных платформах, могут использовать веб-службы для обмена данными по компьютерным сетям, таким как Интернет, способом, аналогичным межпроцессорной коммуникации на одном компьютере. Эта совместимость (например, между Java и Python, или приложениями Windows и Linux) связана с использованием открытых стандартов (XML, SOAP, HTTP).

Все стандартные веб-службы работают с использованием следующих компонентов:

  • SOAP (протокол простого доступа к объектам)
  • UDDI (универсальное описание, обнаружение и интеграция)
  • WSDL (язык описания веб-служб)

Он работает примерно так:

Webservice - это технология, посредством которой два или более удаленных веб-приложения взаимодействуют друг с другом по сети/Интернету. Он может быть реализован с использованием Java,.net, PHP и т.д.

Особенности веб-службы: -

Операционная система предоставляет интерфейс GUI (и CLI), с которым вы можете взаимодействовать. Он также предоставляет API, с которым вы можете взаимодействовать с программным обеспечением.

Аналогичным образом, веб-сайт предоставляет HTML-страницы, с которыми вы можете взаимодействовать, а также может предоставлять API, который предлагает такую ​​же информацию и операции программно. Или эти службы могут быть доступны только через API без соответствующего пользовательского интерфейса.

Веб-служба, используемая разработчиками программного обеспечения, обычно относится к операции, выполняемой на удаленном сервере и вызываемой с использованием спецификации XML/SOAP. Как и во всех определениях, существуют нюансы, но это наиболее распространенное использование термина.

Simple way to explain web service is::

  • Веб-сервис - это способ связи между двумя электронными устройствами по Всемирной паутине.
  • Его можно назвать процессом, который программист использует для связи с сервером.
  • Для вызова этого процесса программист может использовать SOAP и т.д.
  • Веб-службы создаются поверх открытых стандартов, таких как TCP/IP, HTTP

Преимущество веб-службы заключается в том, что, скажем, вы разрабатываете один кусок кода в.net, и вы хотите использовать JAVA для использования этого кода. Ты можешь взаимодействуют непосредственно с абстрагированным слоем и не знают, что технология была разработана для разработки кода.

Поскольку @Vincent Ramdhanie сказал, что веб-сервис не предназначен для просмотра/потребления конечным пользователем, а другой программы. Таким образом, техническая логика в вашей программе будет:

В случае выполнения нормальной программы

User on website -> HTML/JS/JQuery etc -> give me a random number ->ur program

ur program -> generate random number -> generate HTML and encapsulate o/p -> go back to user

Web-сервис — это программное обеспечение, которое предоставляет платфор-менно-независимый доступ к своим данным другим программным продуктам через Интернет, с использованием XML и таких стандартов, как SOAP, WSDL и UDDI.

Для чего могут использоваться Web-сервисы на практике? Представьте фондо­вую биржу, серверы которой имеют полную информацию о текущих котировках всех ценных бумаг, оборачиваемых на данной бирже. Это очень важная информа­ция, онлайн-доступ к которой может быть очень ценным и полезным для удален­ных программных систем. Или другой более близкий простому человеку пример: сервер метеобюро может содержать информацию о погодных условиях в некотором регионе или на всей планете. Эта информация также может быть использована сто­ронними приложениями.

Многим часто приходилось видеть информеры погодных сайтов, однако это не самый удобный метод получения реальной информации для корпоративных при­ложений, так как он ограничивает возможцости оперирования получаемой инфор­мацией. С таким информером можно сделать только две вещи: "повесить" у себя на сайте или убрать его с сайта, если он там уже размещен. Но как быть с приложе­ниями, которым необходимо получать исходные данные f сервера метеобюро и об­рабатывать их для выполнения каких-либо сложных операций (например, для графического моделирования карт с нанесением соответствующей температуры на регионы)?

Для решения таких проблем сервер фондовой биржи или метеобюро может стать провайдером (поставщиком) Web-сервисов, а приложения, которые полу­чают от них данные через Интернет, -— потребителями этих данных. Таким обра­зом формируется архитектура клиент-сЬрвер, где поставщик данных является сервером, а потребитель — клиентом, при этом программное обеспечение сервера и клиента не обязательно должно быть совместимым, главное условие – под­держка Web-сервисов.

Обмен между сервером и клиентом производится по стандартным протоколам Интернет, таким, например, как HTTP. Web-сервис сам описывает себя и опреде­ляет API взаимодействия с ним. при этом элементы данного API автоматически преобразуются в языковые конструкции для того языка программирования, кото­рый использует клиентское приложение. Описание Web-сервисов происходит по спецификации WSDL (Web Services Description Language — язык описания Web-сервисов). Передача самих данных от сервера к клиенту производится в формате SOAP (Simple Object Access Protocol — простой протокол доступа к объектам).

Другими словами, клиентское приложение обращается к файлу WSDL по его URL, т.е. обычным GET-методом. При этом оно получает описание методов Web-сервиса и далее может использовать их как свои (т.е. без написания дополнитель­ного кода на стороне клиента — Web-сервис становится как бы удаленным про­должением клиентской программы).