В данном разделе мы рассмотрим, как можно повысить производительность веб-сервисов при помощи повторного использования сеансов этих сервисов. В данном случае под веб-сервисами понимаются любые интернет-сервисы: Web-сервис, HTTP-сервис, а также стандартный интерфейс Odata.
Дело в том, что если не переиспользовать сеансы веб-сервисов, то при каждом вызове сервиса система будет создавать новый сеанс работы с информационной базой. При этом выполняется довольно «тяжелый» обработчик УстановкаПараметровСеанса() и др. При завершении вызова интернет-сервиса сеанс завершается, а при повторном вызове система опять тратит время и ресурсы на создание сеанса.
Кроме этого существует и функциональный недостаток. Веб-сервисы не обладают состоянием. Однако иногда требуется реализовывать логику, использующую сохранение состояния между вызовами веб-сервиса.
Для устранения этих недостатков в настоящее время в платформе реализованы две различные стратегии, обеспечивающие переиспользование сеансов:
Необходимость использования той или иной стратегии можно определить в свойствах объектов конфигурации Web-сервис и HTTP-сервис, а также, при необходимости, переопределить в файле публикации default.vrd.
Свойство объектов конфигурации Web-сервис и HTTP-сервис Повторное использование сеансов может принимать значения:
Свойство Время жизни сеанса позволяет указать:
Если данное свойство установлено в значение 0, то это означает, что сеансы повторно не используются. Такая установка эквивалентна установке свойства Повторное использование сеансов в значение Не использовать.
В файле публикации на веб-сервере default.vrd для элементов, описывающих SOAP-сервисы, HTTP-сервисы и сервисы OData, также существуют соответствующие атрибуты:
Например, файл default.vrd может выглядеть следующим образом (листинг 1.141).
Листинг 1.141. Файл публикации на веб-сервере
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/REST"
ib="File="C:\Users\dell\Documents\InfoBase14";">
<standardOdata enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<ws>
<point name="ЦеныТоваров"
alias="wsprices.1cws"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<point name="Заказы"
alias="wsorders.1cws"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</ws>
<httpServices>
<service name="Сотрудники"
rootUrl="employees"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<service name="ЦеныТоваров"
rootUrl="prices"
enable="true"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
</httpServices>
</point>
Файл default.vrd имеет больший приоритет, чем конфигурация. При публикации конфигурации атрибуты reuseSessions и sessionMaxAge заполняются из соответствующих свойств объектов конфигурации Web-сервис и HTTP-сервис. Но при необходимости можно изменить эти значения прямо в файле, и тогда платформа будет использовать их, а не значения из конфигурации.