|
![]() |
#1 |
Участник
|
Добрый день EVGL , пардон за много букв, надеюсь мои размышления окажутся хоть сколько-нибудь полезными.
Я правильно понимаю, что у вас проблема с обработкой реквестов на стороне аксапты, т.е кол-во реквестов в единицу времени не слишком большое но каждый реквест выполняется очень долго? И судя по вопросу вы готовы вкладываться в разработку которая позволит клиенту отложено понимать что запрос на сервере выполнен. Если да то можете рассмотреть следующий варианты (я привел все пару самых незамысловатых хотя на практике их гораздо больше) раз аксапта разработчики начинают активно использовать дот.нет. Если нет то поясните в чем у вас техническая трудность? Как говорил Alex_KD тут нужно использовать промежуточный WCF, так как сервисы акспаты несколько урезаны с точки зрения технической функциональности.
Вообще http устроен как протокол без состояний это дает наибольшую производительность, т.е. сервер не хранит состояние в памяти между вызовами клиента, а практически любая вещь (не считая кода 100 Continue) связанная с сессией (о том что сервер как бы помнит что это за клиент, храня его состояние в памяти постоянно) уже строится поверх http и снижает производительность. Что касается «асинхронных http» запросов, которые вы можете делать через .net это конечно асинхронно только со стороны клиента. Клиент, делая вызов асинхронно может не ждать ответа от сервера, а продолжать исполнять код текущего потока, а ответ, который сервер обработал синхронно, приходит в другой поток клиента, после чего он становиться доступен в пользовательском обработчике. В общих чертах это можно найти здесь |
|
|
За это сообщение автора поблагодарили: EVGL (10), Logger (1). |
![]() |
#2 |
Banned
|
Благодарю за глубокий ответ.
Цитата:
Сообщение от hardcore
![]() Я правильно понимаю, что у вас проблема с обработкой реквестов на стороне аксапты, т.е кол-во реквестов в единицу времени не слишком большое но каждый реквест выполняется очень долго? И судя по вопросу вы готовы вкладываться в разработку которая позволит клиенту отложено понимать что запрос на сервере выполнен.
Цитата:
Сообщение от hardcore
![]() Развернуть wcf сервис над ах, развернуть wcf сервис на клиенте. Клиент вызывает сервис над ах, асинхронно (имеется ввиду стандартный для .net подход
Цитата:
Сообщение от hardcore
![]() Способ в лоб: То вы можете также вызвать клиентом сервис над ах из него запустить операцию в ах асинхронно, по завершении выполнения просто сохранять результат в сериализованнов виде например в базе. А клиент должен периодически опрашивать сервер. Минусы подхода со стороны клиента, что придется писать логику повторного забора результата.
Цитата:
Сообщение от hardcore
![]() Клиент, делая вызов асинхронно может не ждать ответа от сервера, а продолжать исполнять код текущего потока, а ответ, который сервер обработал синхронно, приходит в другой поток клиента, после чего он становиться доступен в пользовательском обработчике. В общих чертах это можно найти здесь
|
|
![]() |
#3 |
Модератор
|
А на Azure Service Bus adapter не смотрели еще? Там вроде и Service reference при разработке клиента, и реальная асинхронность. Я не агитирую, просто интересно (возможно сами скоро будем тестировать)
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: EVGL (5). |
![]() |
#4 |
Banned
|
Цитата:
Сообщение от Vadik
![]() А на Azure Service Bus adapter не смотрели еще? Там вроде и Service reference при разработке клиента, и реальная асинхронность. Я не агитирую, просто интересно (возможно сами скоро будем тестировать)
|
|
![]() |
#5 |
Участник
|
Цитата:
Цитата:
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)]
Цитата:
Этого хотелось бы избежать, поскольку надстройка неминуемо скроет WSDL-описание
Цитата:
Совершенно верно. Опыт на моем компьютере показал, что доставка сообщения через все уровни абстракции занимает 30 мс, тогда как полная обработка простейшего запроса требует 2 с. Клиент требует ответ <1с.
Евгений, а в вашем примере с 1000 паралельными запросами все ли запросы действительно выполнились паралельно? Все ли запросы выполнились в примерно одинаковый промежуток времени? Что-то мне подсказывает, что первые 200 прошли на ура, а дальше пошел беспредел...
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
![]() |
#6 |
Модератор
|
Цитата:
![]()
__________________
-ТСЯ или -ТЬСЯ ? |
|
|
За это сообщение автора поблагодарили: Link (1), gl00mie (2), kpoxa (1). |
Теги |
aif, ax2012, azure service bus, document service, service, законченный пример, производительность |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|