пятница, 28 сентября 2012 г.

1С:Предприятие 8. Веб-сервисы. Введение

Впервые слово веб-сервис я увидел в журнале Computerworld лет 7 назад. В голове отложилось, что эта технология позволяет одному ПК в сети предоставить в доступ какой либо сервис другим ПК. 
Но что это такое я действительно понял только тогда, когда сам разработал веб сервисы для обмена между 1С и базой данных на MySQL. 


По простому, технология веб-сервисов была создана для передачи сообщений от одного узла сети другому. Сообщения пересылаются в формате XML. Для пересылки сообщений 1с используется протокол SOAP. Но 1С использует не пересылку сообщений, а, основанную на пересылке, технологию вызова удаленных процедур. Так же платформа 1С позволяет вызывать операции сторонних веб-сервисов (ws-ссылки). Но мы в данных статьях не будет рассматривать ws-ссылки.


К примеру, где то имеется сервер с выходом в интернет, установленным сервером 1С: Предприятия, на котором опубликован веб-сервис с процедурой int plus2(a), которая прибавляет к "a" число 2 и возвращает результат. 



Передача SOAP сообщения в 1С
На рисунке показано как один узел вызывает функцию plus2(). А другой узел возвращает ему результат в виде XML сообщения.

Но для того что бы воспользоваться веб-сервисом надо знать где его искать, какие есть у него функции, какие собственные типы вы определили. Для этого существует WSDL. WSDL (англ. Web Services Description Language) — язык описания веб-сервисов и доступа к ним, основанный на языке XML. 


 Одним из главных преимущств веб-сервисов является работа в гетерогенных(разнородных) средах. То есть воспользоваться функцией могут не только через 1с, но и используя любую другую среду разработки. Разработчик сайта на php в коде может обратиться к этому серверу по адресу, вызвать функцию и получить результат.


Вторым преимущество веб-сервисов является преобразование типов. Разработчику 1с совсем не надо думать как хранится, например, время в php, перед тем как его передать или принять как параметр. Нужно просто указать тип datetime и все преобразования сделает платформа.


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


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


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

Именно из за большого объема данных возникает второй недостаток - медленная скорость передачи данных.

Но тем не менее с каждым годом популярность веб сервисов растет, компания 1С уделяет им большое внимание и сейчас видно что 1С нацелена на развитие работы платформы 8.2 в сети интернет о чем свидетельствует выпуск БиблиотекиСтандартныхПодсистем с расширенными методами работы с веб сервисами и постоянное развитие веб-клиента.


Подведем итоги. Веб-сервисы в платформе 1с реализован в части удаленного вызова процедур. Для передачи сообщений 1с используется протокол SOAP. Чаще всего протокол SOAP используется совместно с протоколом HTTP, но может использовать и другие протоколы. Для описания структуры веб сервиса, составляющих его функций и типов данных используется язык WSDL. Для описания структур данных веб сервиса в 1с используется механизм XDTO. Для каждого типа метаданных (Документ ПриходнаяНакладная, Правочник Контрагенты и т.д.) в 1с хранится структура XDTO по умолчанию. 

7 комментариев:

  1. Анонимный05 июля, 2013 12:18

    Спасибо, наконец нашел внятное объяснение механизму вебсервисов!

    ОтветитьУдалить
  2. Афигенная статья!

    ОтветитьУдалить
  3. Спасибо. Просто и толково.

    ОтветитьУдалить
  4. Все доступно и понятно даже для меня-чайника)))
    Спасибо!

    ОтветитьУдалить
  5. Говно. ХВАТИТ КОПИРОВАТЬ ДРУГ У ДРУГА СУКИ

    ОтветитьУдалить
    Ответы
    1. Этот пост написан мною. Естественно, задолго перед его написанием я изучал эту тему, возможно некоторые мысли попали в этот пост. Но это не сочинение, а статью описывающая технологии, потому она может повторять другие источники.

      Удалить
  6. Я хочу поделиться свидетельством о том, как г-н Бенджамин помог мне с займом в 2 000 000,00 долларов США для финансирования моего проекта по выращиванию марихуаны, я очень благодарен и пообещал поделиться этой законной финансирующей компанией с любым, кто ищет способ расширить свой бизнес-проект. .финансирующая компания. Любой, кто ищет финансовую поддержку, должен связаться с ними по адресу lfdsloans@outlook.com. Г-н Бенджамин также работает в WhatsApp + 1-989-394-3740, чтобы облегчить задачу любому заявителю.

    ОтветитьУдалить