mazzy-ax / Session

Extended methods for the Session class with X++

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Session 1.2

Session – это дополнительные методы для класса Session, написанные на X++ в Microsoft Dynamics AX 2009, Microsoft Dynamics AX 2012 и Axapta 4.0.

Пока проект Session реализует два публичных метода isInRoleAdmin и isInRoleAdmin_Slow. Метод позволяет узнать, можно ли в текущей сессии выполнять действия, которые требуют права администратора:

  • пользователь имеет права локального администратора
  • и текущая сессия была "запущена как администратор" (runAsAdministrator)

Методы могут вернуть разные значения в зависимости от того, где они был вызваны – на сервере или на клиенте, и в зависимости от того, был ли сервер или клиент запущен с правами администратора.

Метод isInRoleAdmin выполняет чтение значения из кэша. Если значение в кэше не найдено, то выполняет запрос к методу isInRoleAdmin_Slow, чтобы получить реальное значение. Повторные вызовы этого метода возвратят значения очень быстро.

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

Рекомендуется использовать метод isInRoleAdmin.

Кэширование данных

Класс рассчитывает и кэширует рассчитанное значение при первом вызове. В последующих вызовах метода isInRoleAdmin результат берется из кэша classFactory.

Проект Session содержит класс SessionPerfTest для тестирования производительности с кэшем и без кэша. Класс выполняет 10тыс вызовов метода isInRoleAdmin и замеряет время выполнения при помощи таймера SysStopwatch.

В таблице ниже показано время выполнения этих тестов на моем ноутбуке – кэширование признака isInRoleAdmin вполне имеет смысл.

Метод, 10тыс Вызов .net SysGlobalCache SysGlobalObjectCache
ax4.Client 00:00:01.4116551 00:00:00.2632769
ax4.Server 00:00:02.7959503 00:00:00.6125915
ax2009.Client 00:00:01.4683846 00:00:00.2289435
ax2009.Server 00:00:03.0601071 00:00:00.4563741
ax2012.Client 00:00:01.3251630 00:00:00.2256371 00:00:00.1816486
ax2012.Server(CIL) 00:00:01.7684025 00:00:00.2959108 00:00:00.2155927

ChangeLog

Помощь проекту

Буду признателен за ваши замечания, предложения и советы по проекту как в разделе Issues, так и в виде письма на адрес mazzy@mazzy.ru

Мазуркин Сергей (mazzy)

About

Extended methods for the Session class with X++

License:MIT License


Languages

Language:Java 95.8%Language:PowerShell 4.2%