Открыть меню
Платформа Эра. Документация
Toggle preferences menu
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Разработка сервисов: различия между версиями

Материал из Платформа Эра. Документации
Нет описания правки
Нет описания правки
Строка 2: Строка 2:


= Общая информация =
= Общая информация =
'''Сервисы''' - это программные модули, предназначенные для выполнения операций над объектами в автоматическом режиме (без участия пользователей). Сервисы могут выполняться на сервере либо в пользовательских приложениях.
'''Сервисы (Services)''' - это программные модули, предназначенные для выполнения операций над объектами в автоматическом режиме (без участия пользователей). Сервисы могут выполняться на сервере либо в пользовательских приложениях.


Общие практики применения сервисов:
Общие практики применения сервисов:
Строка 31: Строка 31:


Таким образом, стандартный сервис имеет наиболее широкий функционал, обеспечиваемый платформой. Два других варианта позволяют реализовывать более "легковесные" сервисы, например, для работы с большим объемом запросов, для которых нет необходимости накопления в случае неработоспособности сервиса (например это может быть поток websocket-запрсоов в реальном времени от сторонней системы).
Таким образом, стандартный сервис имеет наиболее широкий функционал, обеспечиваемый платформой. Два других варианта позволяют реализовывать более "легковесные" сервисы, например, для работы с большим объемом запросов, для которых нет необходимости накопления в случае неработоспособности сервиса (например это может быть поток websocket-запрсоов в реальном времени от сторонней системы).
В отличии от Actions и Handlers, сервисы не привязаны к конкретным классам, и могут содержать набор методов для работы с различными данными, или вообще не быть привязанными ни к какой конкретной бизнес-логике системы и выполнять исключительно утилитарные функции.


= Структура сервиса =
= Структура сервиса =
[[Файл:Исходный код сервиса.png|мини|401x401пкс|Исходный код сервиса]]
Сервис представляет собой TypeScript-класс, наследующий класс Service.
По-умолчанию, каждый сервис содержит конструктор и два асинхронных метода:
* ''async'' '''onInit()'''
* ''async'' '''onTimer()'''
Метод onInit будет вызываться каждый раз при вызове сервиса с помощью Invocation или напрямую.
Метод onTimer будет вызываться при срабатывании таймера.


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


Кастомные методы сервиса могут быть как синхронными, так и асинхронными. Для реализации логики могут использоваться все стандартные практики разработки на TypeScript + NodeJS, а также широкая библиотека базовых классов и сервисов платформы.


= Создание сервисов =
= Создание сервисов =

Версия от 11:13, 10 марта 2025

Предыдущая статья курса: Задание 9. Пользовательские действия в карточке

Общая информация

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

Общие практики применения сервисов:

  • Обработка событий объектов (добавление, изменение, удаление)
  • Реализация сложной backend-логики, инициируемой с frontend'а
  • Обработка интеграционных запросов из внешних систем
  • Отправка интеграционных запросов во внешние системы

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

Сервисы могут иметь один из двух контекстов исполнения (ServiceKind):

  • server - Сервис исполняется на сервере (ролью платформы MSVC)
  • client - Сервис исполняется в приложениях (браузером)

Сервисы, исполняемые на сервере, фактически являются NodeJS-микросервисами, за работоспособность которых отвечает роль MSVC. Такие сервисы могут реализовывать любую backend-логику, работать с любыми данными из хранилищаю

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

Так же, сервисы могут отличаться по типу (ServiceType):

  • default - Стандартный сервис (с таймером и вызовами invocations)
  • timer - Сервис с таймером (без вызовов invocations)
  • light - Легкий сервис (без таймера и вызовов invocations)

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

Таким образом, стандартный сервис имеет наиболее широкий функционал, обеспечиваемый платформой. Два других варианта позволяют реализовывать более "легковесные" сервисы, например, для работы с большим объемом запросов, для которых нет необходимости накопления в случае неработоспособности сервиса (например это может быть поток websocket-запрсоов в реальном времени от сторонней системы).

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

Структура сервиса

Исходный код сервиса


Сервис представляет собой TypeScript-класс, наследующий класс Service.

По-умолчанию, каждый сервис содержит конструктор и два асинхронных метода:

  • async onInit()
  • async onTimer()

Метод onInit будет вызываться каждый раз при вызове сервиса с помощью Invocation или напрямую.

Метод onTimer будет вызываться при срабатывании таймера.

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

Кастомные методы сервиса могут быть как синхронными, так и асинхронными. Для реализации логики могут использоваться все стандартные практики разработки на TypeScript + NodeJS, а также широкая библиотека базовых классов и сервисов платформы.

Создание сервисов

Работа в файловой системе

Работа в редакторе

Вызов сервисов

Следующая статья курса: Отладка и логирование
Предыдущая статья курса: Задание 9. Пользовательские действия в карточке