«Вся наша жизнь — игра...» (У. Шекспир)
«Что наша жизнь? Игра...» (А. Пушкин) |
||
Содержание 2.2. Как установить web-сервер 2.3. Как создать в каталоге веб-документов каталог для публикации наших сервисов 2.4. Как установить web-расширение «1С:Предприятие» 2.5. Как создать и опубликовать веб-сервис в 1С 2.6. Как протестировать веб-службу |
||
Часть вводная. Архитектура SOA |
||
При разработке приложений с глобальным взаимодействием уже давно известна архитектура SOA (Service Oriented Architecture). Такая архитектура подразумевает, что приложения на разных платформах, в разных средах взаимодействуют между собой, при этом разработчик может не беспокоиться о том, что находится внутри приложений на той стороне (т.е. об их реализации), а также о том, что находится снаружи (т.е. об их среде окружения). Существует достаточно большое количество реализации этой архитектуры. Одним из видов такой реализации является технология, основанная на связке специфицированных консорциумом w3c таких технологий, как веб-сервисы и протокол SOAP, которые в свою очередь основаны на XML. Уже достаточно длительное время эта технология интегрирована в платформу «1С:Предприятие». Благодаря этому «1С:Предприятие» может служить:
Существует достаточно большое количество полезных web-сервисов, например: получение курсов валют, службы отправки почтовых сообщений и SMS на основе web-сервисов и SOAP, какую архитектуру используют туристические агентства, гостиницы, ритейлеры и т.п. |
||
Часть 1. Здравствуй, Name! Пример создания web-сервиса |
||
Есть достаточное количество противников WS+SOAP и сторонников других технологий, как и тех, кто недолюбливает 1С. Однако существующая технология разработки на платформе 1С позволяет приступить к разработке и получить готовый результат довольно быстро при весьма поверхностном знакомстве с подробностями спецификаций SOAP, WSDL и веб-сервисов, по сравнению со многими другими известными продуктами как от гигантов софтверной индустрии, так и с бесплатными open-source решениями, что само по себе не является ни плюсом ни минусом, но заставляет задуматься. Чтобы окончательно в этом убедиться, я твердо решил в качестве опыта реализовать при помощи web-сервисов хрестоматийный пример, на котором большинство студентов, изучавших вычислительную технику и программирование, практиковались ещё во время учебы в ВУЗ-ах, а именно игру «Жизнь» - клеточный автомат, придуманный английским математиком Джоном Конвеем в 1970 г. Для начала, чтобы просто понять, как это работает, создадим простой веб-сервис, который будет уметь выполнять одну операцию с одним параметром строкового типа и будет возвращать тоже строку. |
||
Как установить веб-сервер |
Для начала надо установить веб-сервер, который будет обрабатывать запросы. Это может быть Apache или IIS. Я предпочитаю Apache. Поскольку The Apache HTTP Server Project предоставляет только исходники своего продукта, воспользуемся скомпилированной версией от Apache House. (это обязательно должна быть 32-разрядная версия, веб-расширение 1С не работает с 64-разрядной). Загрузив архив, распакуем его куда-нибудь, например, в корневой каталог. Далее установим веб-сервер в качестве сервиса, запустив сервер из командной строки с параметром -k install, вот так: c:\Apache24\bin\httpd.exe -k install
Теперь нам нужно: - создать в каталоге веб-документов каталог для публикации наших сервисов; - установить web-расширение «1С:Предприятие»; - создать и опубликовать первый веб-сервис |
||
Как создать в каталоге веб-документов каталог для публикации наших сервисов |
||
Каталог для публикации должен быть расположен в каталоге c:\Apache24\htdocs. Назовем его WebServices |
||
Как установить web-расширение «1С:Предприятие» |
||
Теперь откроем панель управления: Панель управления\Программы\Программы и компоненты, выберем нужную версию программы «1С:Предприятие», нужно будет нажать правую кнопку и выбрать пункт «Изменить», затем «Изменить-Далее» и выбрать в списке «Модули расширения Веб-сервера» (Web server extention modules) – рисунок 1.Рис.1 |
||
Теперь создадим пустую файловую базу 1С, в ней роль «Полная» с полными правами на все группы объектов и пользователя Admin, назначив ему эту единственную роль. На вопрос, будет ли это работать в файловом варианте, ответ положительный (во всяком случае этот простой пример работает как файловая база). Теперь приступим к реализации. |
||
Как создать и опубликовать веб-сервис в 1С |
В группе web-сервисы создадим новый объект с простым именем WebServiceTest, операцией с именем GetHelloString, которую будет обрабатывать функция Привет(Name). Тип значения параметра Name - string (берется из пространства имен http://www.w3.org/2001/XMLSchema) URI пространства имен для сервиса указываем равный каталогу нашей публикации на веб-сервере - http://localhost/WebServices/ имя файла публикации может быть любым, но желательно латинским шрифтом и обязательно с расширением 1cws. Все вместе это выглядит как на рисунке 2: |
||
Рис. 2 |
||
Тело функции Привет() модуля сервиса будет содержать только одну строку: |
||
Рис. 3 |
||
Осталось только опубликовать сервис. Заходим в меню администрирование -> публикация на web-сервере. Откроется форма, в которую мы введем параметры публикации. Имя публикации должно совпадать с именем каталога на web-сервере. В поле «Каталог» вводим путь к нашему каталогу на web-сервере, который мы создали ранее, то есть C:\Apache24\htdocs\WebServices\ Остальные параметры вы можете рассмотреть на рисунке 4. |
||
Рис. 4 |
||
Перезапустим web-сервер, используя Apache monitor (оснастку служб Windows, закладку «службы» диспетчера задач, командную строку, bash, монитор процессов - что у вас есть под рукой), чтобы данные публикации были считаны Апачем заново. Обновление публикации и перезапуск веб-сервера нужно делать после каждого сохранения конфигурации, связанного с изменениями веб-сервиса. | ||
Как протестировать веб-службу |
||
Осталось только протестировать нашу веб-службу. Для этого наберем в строке браузера http://localhost/WebServices/ws/1c_wstest.1cws?wsdl или Результат должен выглядеть как на рисунке 5. |
Рис. 5 |
||
Клиентская часть будет содержать чуть больше кода. Можно обращаться к сторонним сервисам двумя способами: - использовать ws-ссылку (объект метаданных) - создать ws-определение программно Первый способ означает, что нам нужна ещё одна конфигурация, поэтому сейчас используем второй способ. Разница лишь в том, что мы создадим объект программно. Создадим новую обработку с реквизитом Name, разместим его на форме, добавим форме команду Тест с двумя процедурами, на клиенте и на сервере. (Рис. 6) |
||
Рис. 6 |
||
Параметры конструктора объекта WSПрокси ИмяСервиса и ИмяТочкиПодключения можно найти в XML-тексте, который возвращает наш сервис по URI https://localhost/WebServices/ws/1c_wstest.1cws?wsdl А именно в элементе <service name="ИмяНашегоСервиса"> где ИмяСервиса — это атрибут Name этого элемента, то есть <service name="WebServiceTest"> ИмяТочкиПодключения — это атрибуты Name вложенных элементов <port><port/> Обычно мы имеем две точки для разных версий SOAP, в нашем случае они называются WebServiceTestSoap и WebServiceTestSoap12 — можно использовать любой из них. Сохраняем изменения в обработке, открываем её в любой базе и тестируем. Результат — вывод сообщения возвращенной операцией нашего удаленного сервиса строки. (Рис. 7) |
||
|
||
Продолжение следует | ||
Альберт Хайров, разработчик компании ООО «Кодерлайн» |
||