AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.09.2020, 19:05   #1  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,160 / 1289 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от Sergey Petrov Посмотреть сообщение
Есть определённые сомнения, что ... мы получим проседание по производительности из-за траты ресурсов на открытия-закрытия сессий DAX.
Если Вы заметили, то у Business Connector есть два вида сессий.
Одна имеет тип «Рабочий», она относится к процессу в целом и в ней загружаются какие-то постоянные данные (типа приложения, каких-то библиотек и т. п., что именно там загружено изучать пока не было потребности). То есть, в первое обращение процесса (Windows службы, IIS и т. д.) к Business Connector создает эту сессию и подгружает все эти данные. Такая сессия существует до тех пор, пока процесс не завершился, ну или бывает, что планировщик может решить что процесс давно не выполняет действия и выгрузить процесс из памяти, тогда и сессия соединения с DAX «Рабочий» пропадает.

На этот тип сессии мы не влияем, как понимаю, речь идет о сессиях, которые создаются в момент обращения конкретного подключения для выполнения работы. Обычно работа происходит примерно так:
  • Axapta.LogonAs
  • Вызов Axapta.Чего-то-там.
  • Axapta.Logoff();
Насколько понимаю, вопрос в том, нужно ли использовать указанный подход и на каждое обращение делать указанную цепочку или сделать Axapta каким-то статическим Singleton и использовать его, открыв один раз.

Тут следует учесть, что LogonAs выполняется намного быстрее, чем создание первого коннекта «Рабочий», поэтому все зависит от частоты обращения к бизнес-логике. Если такие обращения идут 1-2-3-4 раза в минуту, то что-то городить нет смысла, справимся и при классическом подходе.

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

А вот если запросов много, компания одна, то постоянное соединение может дать выигрыш. Но есть нюанс: мы же многозадачные, поэтому соединение должно быть не одно. И тут помогает то, что предлагает _scorp_ - пул соединений.

То есть, есть какой-то пул открытых соединений, при обращении за бизнес-логикой вызывается не Axapta.LogonAs, а запрашивается соединение из пула, а уже пул решает есть ли у него свободные соединения, можно ли отдать такое соединение или нужно создать новое, сам пул обслуживает открытые соединения и если они долго не используются закрывает их, определяет «зависшие» соединения и т. п.

Ну, естественно, раз мы многозадачные, то пул обрабатывает ситуации одновременного обращения многих потребителей при помощи критических секций (как он это делает уже технический вопрос).
Конечно, если работаем в WEB среде есть свои заморочки, связанные с циклом обработки WEB запросов, но они уже сто раз обсуждены на специализированных форумах.

Последний раз редактировалось Raven Melancholic; 16.09.2020 в 19:09.
За это сообщение автора поблагодарили: Logger (3), Sergey Petrov (1).
Старый 17.09.2020, 01:53   #2  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
А вот если запросов много, компания одна, то постоянное соединение может дать выигрыш.

То есть, есть какой-то пул открытых соединений, при обращении за бизнес-логикой вызывается не Axapta.LogonAs, а запрашивается соединение из пула, а уже пул решает есть ли у него свободные соединения, можно ли отдать такое соединение или нужно создать новое, сам пул обслуживает открытые соединения и если они долго не используются закрывает их, определяет «зависшие» соединения и т. п.
Кстати интерестно - а вы тестировали подобный подход(что пул будет давать какой-то выигрыш) или это просто размышления? Мне казалось что АОС уже сам делает что-то подобное, хотя возможно зависит от версии. Ну и надо тестировать конечно же
Теги
businessconnector

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
The right cloud option for your business sukhanchik DAX Blogs 6 26.02.2017 17:26
atinkerersnotebook: Creating Lifecycle Services Business Process Models Blog bot DAX Blogs 0 09.04.2014 15:11
Inside Dynamics AX 4.0: Working with the .NET Business Connector Blog bot DAX Blogs 0 04.10.2007 05:15
Inside Dynamics AX 4.0: Inside the Business Connector Blog bot DAX Blogs 0 04.10.2007 05:15

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:00.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.