Я работаю над приложением, которое может генерировать тысячи сообщений в довольно узком цикле на клиенте для обработки на сервере. Цепочка событий выглядит примерно так:
- Клиент обрабатывает элемент, помещает в локальную очередь.
- Локальная обработка очереди принимает сообщения и вызывает веб-сервис.
- Веб-служба создает сообщение в служебной шине на сервере.
- Сервисная шина обрабатывает сообщение в базе данных.
Идея заключается в том, что все коммуникации асинхронные, поскольку для веб-службы будет много клиентов. Я знаю, что MSMQ может делать это напрямую, но у нас не всегда есть такая возможность администрирования на клиентах, чтобы настроить такие вещи, как безопасность и т. Д.
Мой вопрос о гранулярности сообщений на каждом этапе. Самый простой способ будет означать, что каждый элемент, обрабатываемый на клиенте, генерирует одно сообщение клиента / вызов веб-службы / сообщение служебной шины. Это хорошо, но я знаю, что лучше, если это возможно, объединять вызовы веб-служб, за исключением того, что существует компромисс между DTO веб-службы с высокой степенью детализации и краткосрочными транзакциями в базе данных. Этот конкретный сценарий не требует «бизнес-транзакции», когда обрабатываются все или ни одного элемента, я просто стремлюсь достичь наилучшего баланса между размером сообщения и количеством вызовов веб-службы и транзакциями базы данных.
Любой совет?