Открыть сервис

Application Object Server

Application Object Server (AOS) — это компонент серверной архитектуры в системах управления предприятием класса ERP (Enterprise Resource Planning), разработанных компанией Microsoft Dynamics. В контексте платформы Microsoft Dynamics AX (ныне Microsoft Dynamics 365 for Finance and Operations) AOS представляет собой серверное приложение, которое управляет бизнес-логикой, обрабатывает клиентские запросы, обеспечивает взаимодействие с базой данных и координирует работу множества пользователей. AOS является ключевым звеном в трёхзвенной архитектуре «клиент — сервер приложений — сервер базы данных», где он выполняет функции промежуточного слоя (middleware), отвечающего за выполнение кода приложения, управление сессиями и обеспечение целостности данных.

История и развитие

Предпосылки появления

До внедрения AOS в архитектуру Microsoft Dynamics AX (ранее — Axapta) системы управления предприятием часто использовали двухзвенную архитектуру, где клиентское приложение напрямую обращалось к базе данных. Это приводило к проблемам масштабируемости, безопасности и производительности, особенно при большом количестве пользователей. Требовался промежуточный сервер, который бы централизованно обрабатывал бизнес-логику, снижал нагрузку на базу данных и упрощал администрирование.

Этапы эволюции

  • Microsoft Dynamics AX 3.0 (2001 год): впервые представлена концепция AOS. Сервер приложений выделен в отдельный процесс, работающий на Windows Server. Он обрабатывал запросы от клиентов (толстых клиентов) и взаимодействовал с SQL Server.
  • Microsoft Dynamics AX 4.0 (2006 год): AOS получил поддержку кластеризации, что позволило запускать несколько экземпляров для отказоустойчивости и балансировки нагрузки. Улучшена обработка транзакций и управление памятью.
  • Microsoft Dynamics AX 2009 (2008 год): введена поддержка 64-разрядных систем, что позволило AOS обрабатывать большие объёмы данных. Появилась возможность работы с несколькими базами данных (финансовой, операционной, аналитической).
  • Microsoft Dynamics AX 2012 (2011 год): AOS стал поддерживать модель «многопользовательского доступа» с улучшенной изоляцией сессий. Введена поддержка облачных развёртываний (Azure) и интеграция с Windows Workflow Foundation.
  • Microsoft Dynamics 365 for Finance and Operations (2016 год): AOS эволюционировал в облачную службу, полностью управляемую Microsoft. В этой версии AOS работает как часть платформы Azure, обеспечивая автоматическое масштабирование и обновление. Локальные развёртывания (on-premises) также поддерживаются, но с ограниченной функциональностью.

Архитектура и принцип работы

Трёхзвенная модель

AOS является центральным элементом трёхзвенной архитектуры:

  1. Клиентский слой: пользовательские интерфейсы (толстый клиент, веб-клиент, мобильное приложение). Они отправляют запросы на AOS.
  2. Сервер приложений (AOS): обрабатывает бизнес-логику, выполняет код X++ (язык программирования Dynamics AX), управляет сессиями, кэширует данные, проверяет права доступа.
  3. Сервер базы данных: Microsoft SQL Server (или Azure SQL Database). Хранит все данные системы (таблицы, индексы, хранимые процедуры).

Компоненты AOS

  • Серверный процесс (AOS.exe): основной исполняемый файл, который запускается как служба Windows. Он загружает метаданные приложения (модели, классы, формы) и обрабатывает запросы.
  • Менеджер сессий: управляет подключениями пользователей, создаёт и завершает сессии, отслеживает их состояние.
  • Кэш-менеджер: хранит часто используемые данные (справочники, настройки) в оперативной памяти для ускорения доступа. Поддерживает инвалидацию кэша при изменениях в базе.
  • Планировщик заданий: выполняет фоновые задачи (пакетные задания, отчёты, интеграции) в соответствии с расписанием.
  • Сервисный слой (WCF, OData): обеспечивает взаимодействие с внешними системами через веб-сервисы (SOAP, REST).

Взаимодействие с базой данных

AOS не выполняет прямые SQL-запросы к базе данных. Вместо этого он использует уровень абстракции — Data Access Layer (DAL), который транслирует вызовы X++ в оптимизированные SQL-запросы. Это позволяет:

  • Скрывать сложность схемы базы данных от разработчиков.
  • Применять кэширование на уровне сервера.
  • Обеспечивать целостность транзакций (commit/rollback).

Классификация и разновидности

По типу развёртывания

  • Локальный AOS (on-premises): устанавливается на серверы заказчика. Требует администрирования, обновления и лицензирования Windows Server и SQL Server.
  • Облачный AOS (cloud): работает в инфраструктуре Microsoft Azure. Управляется Microsoft, автоматически масштабируется, обновляется без простоев. Используется в Dynamics 365.

По роли в кластере

  • Основной AOS (primary): обрабатывает все запросы пользователей. При кластеризации один экземпляр может быть назначен основным для определённых задач (например, обработка пакетных заданий).
  • Резервный AOS (secondary): используется для балансировки нагрузки и отказоустойчивости. При отказе основного сервера запросы перенаправляются на резервный.

По функциональности

  • AOS для разработки: используется для написания и тестирования кода X++. Обычно не подключён к продуктивной базе данных.
  • AOS для тестирования: изолированная среда для проверки изменений перед развёртыванием в продуктивной среде.
  • Продуктивный AOS: обрабатывает реальные бизнес-операции.

Применение и значение

В корпоративных системах

AOS является основой для работы Microsoft Dynamics AX и Dynamics 365 for Finance and Operations. Он обеспечивает:

  • Масштабируемость: поддержка сотен и тысяч одновременных пользователей за счёт кластеризации и балансировки нагрузки.
  • Безопасность: централизованное управление доступом, шифрование данных, аудит действий.
  • Производительность: кэширование, оптимизация запросов, параллельная обработка.
  • Интеграцию: взаимодействие с другими системами (CRM, SharePoint, Azure Logic Apps) через веб-сервисы.

В разработке

AOS используется разработчиками для создания и отладки бизнес-логики. Он поддерживает:

  • Компиляцию кода X++ в промежуточный язык (CIL), который выполняется на сервере.
  • Развёртывание моделей (пакетов кода) без остановки системы.
  • Версионирование метаданных и кода.

В облачных средах

В Dynamics 365 AOS полностью управляется Microsoft. Заказчики получают:

  • Автоматическое обновление до последней версии.
  • Гарантированную доступность (SLA 99,9%).
  • Эластичное масштабирование (добавление ресурсов по требованию).

Критика и ограничения

Сложность администрирования

Локальный AOS требует квалифицированных администраторов для настройки, мониторинга и устранения неполадок. Неправильная конфигурация (например, недостаточный объём оперативной памяти) может привести к снижению производительности или сбоям.

Зависимость от Microsoft

AOS тесно связан с экосистемой Microsoft (Windows Server, SQL Server, Azure). Переход на альтернативные платформы (Linux, PostgreSQL) невозможен. Это создаёт vendor lock-in (зависимость от поставщика).

Производительность при больших нагрузках

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

Ограниченная поддержка устаревших версий

Microsoft прекратила поддержку Dynamics AX 2012 в 2021 году. Локальные развёртывания AOS для этой версии больше не получают обновлений безопасности, что создаёт риски.

Интересные факты

  • AOS написан на C++ и использует собственный виртуальный стек для выполнения кода X++.
  • В Dynamics 365 AOS может автоматически масштабироваться до 16 экземпляров в одном кластере.
  • При первом запуске AOS загружает все метаданные приложения (модели, классы, формы) в оперативную память, что может занимать до нескольких минут.
  • AOS поддерживает «горячее» развёртывание кода: изменения можно вносить без остановки сервера, но для активации некоторых обновлений требуется перезапуск службы.

Источники

  • Microsoft Docs: «Architecture of Dynamics AX 2012» (2012)
  • Microsoft Docs: «Application Object Server (AOS) in Dynamics 365 for Finance and Operations» (2020)
  • «Inside Microsoft Dynamics AX 2009» by Microsoft Press (2009)
  • «Microsoft Dynamics AX 2012 Development Cookbook» by Packt Publishing (2012)
  • Техническая документация Microsoft: «AOS Clustering and Load Balancing» (2011)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →