Використання REST web-сервісів у "1С:Підприємстві 8"
REST (REpresentation State Transfer) підхід є одним із найпопулярніших підходів, що використовуються для реалізації web-сервісів в Інтернеті. REST web-сервіси є легковаговішими альтернативами SOAP веб-сервісам.
REST (REpresentation State Transfer) підхід є одним із найпопулярніших підходів, що використовуються для реалізації web-сервісів в Інтернеті. REST web-сервіси є легковаговішими альтернативами SOAP веб-сервісам.
REST з технічної точки зору не є ані технологією, ані стандартом. Це лише підхід, якщо можна так сказати, набір принципів, які допомагають реалізувати "правильний" web-сервіс. Під "правильним" тут мається на увазі масштабований, безпечний, надійний, легкий у використанні тощо.
REST визначає такі принципи побудови web-сервісів:
- Функціональність застосунку поділяється на набір ресурсів. Кожен ресурс може виконувати певну дію (REST ресурс є аналогом SOAP операції). Наприклад, ресурс отримання новин видає список заголовків поточних новин;
- Кожен ресурс має унікальний ідентифікатор (URL), за яким до нього можна звернутися як із програмного коду, так і з Web-браузера;
- Усі ресурси використовують уніфікований інтерфейс для передавання даних між клієнтом і ресурсом. Інтерфейс має обмежений набір операцій і типів даних для передавання. Як правило, як транспорт використовується інфраструктура HTTP, а набір операцій, які можна виконати над ресурсом, визначається стандартом HTTP. Найуживанішими операціями можуть бути: HTTP GET — отримання даних від ресурсу та HTTP POST — надсилання даних до ресурсу. Також можуть використовуватися HTTP PUT, HTTP DELETE тощо;
- REST протокол взаємодії (RESTful) має бути клієнт-серверним і не мати стану.
Перевагами REST підходу є:
- Можливість роботи на вже наявній HTTP інфраструктурі — Web-серверах, Web-браузерах та ін. ;
- Простота використання і висока сумісність між реалізаціями завдяки тому, що кодування даних зведено до мінімуму. Кодуються лише прикладні дані (тобто те, що потрібно передати), допоміжне маркування даних (наприклад, таке як soap:Envelope) не використовується;
- Добра масштабованість, оскільки REST протоколи не підтримують станів між викликами;
- Добра безпека, яка знову ж таки базується на HTTP інфраструктурі.
Недоліки REST є продовженням його переваг:
- Складно використовувати поза HTTP, оскільки немає ані відповідних стандартів, ані наявних реалізацій;
- Складно використовувати в Entreprise рішеннях, де потрібна підтримка досить складного стану (наприклад, наявності сесій та ін.);
- Повна залежність від транспорту в таких питаннях, як безпека, маршрутизація повідомлень тощо, що може негативно позначитися на роботі такого сервісу в гетерогенному середовищі.
Протокол, який ґрунтується на принципах REST, є RESTful протоколом. Два найпопулярніші типи RESTful протоколів — це JSON (JavaScript Object Notation) і POX (Plain Old XML). JSON використовує для кодування даних JavaScript і переважно застосовується в Ajax (Asynchronous JavaScript and XML) клієнтах для обміну даними із сервером. Оскільки Ajax клієнти працюють у браузері, який розуміє JavaScript, то використання JavaScript дозволяє заощадити як на обсязі передаваних даних, так і на часі розбору даних. Однак використання JSON в інших клієнтах є проблематичним, оскільки клієнти, як правило, не підтримують JavaScript.
POX використовує для кодування даних XML і тому може використовуватися практично всюди. У доданій конфігурації показано, як у клієнті 1С:Підприємства можна використовувати такий веб-сервіс.
У демонстраційній конфігурації реалізовано найпростіший агрегатор новин, який отримує заголовки новин від заданого новинного сервісу та показує їх у списку. Для обміну даними використовується стандарт RSS (Really Simple Syndication), що є різновидом POX протоколу.
Демонстраційна конфігурація ілюструє, наскільки просто можна використовувати REST web-сервіси. Для цього потрібно:
Створити HTTPЗ'єднання
З'єднання = Новий HTTPСоединение(Сервер); Ім'яФайлу = ОтриматиІм'яТимчасовогоФайлу(".rss"); З'єднання.Отримати(Ресурс, Ім'яФайлу);
Виконати розбір отриманих XML даних і додати їх до списку заголовків новин:
ПараметриЧитанняXML = Новий ПараметриЧитанняXML(,,,, true, true, true, true, true); ЧитанняXML = Новий ЧтениеXML; ЧитанняXML.ВідкритиФайл(Ім'яФайлу, ПараметриЧитанняXML); ЧитанняXML.Прочитати(); Якщо ЧитанняXML.Ім'я = "rss" Тоді Елементи.Очистити(); РозбірRSS(ЧитанняXML); Інакше Повідомити("Помилка розбору RSS."); КінецьЯкщо; ЧитанняXML.Закрити();
Щоб ознайомитися з результатом, у доданій демонстраційній конфігурації запустіть обробку RSSАгрегатор і у формі, що відкрилася, натисніть кнопку Виконати.
Варто згадати, що наразі 1С:Підприємство може виступати лише як клієнт REST web-сервісів.
Таким чином, REST не може бути повноцінною заміною SOAP web-сервісів, а радше доповнює їх. Основною сферою застосування REST веб-сервісів є легковагові web-сервіси з досить простою бізнес-логікою, що використовуються в Глобальній Мережі, тоді як сфера SOAP web-сервісів — більш важковагові Enterprise рішення, що застосовуються як в інтернеті, так і в локальних мережах підприємств.
Дистрибутив демонстраційної конфігурації міститься в каталозі 1CITS\EXE\RSSClient