Дуплексный обмен сообщениями или служба очередей Azure

Все,

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

1 - Клиентское приложение на основе.NET, работающее на компьютере, подключенном к каждому инструменту. Это клиентское приложение должно получить команду начала измерения от платформы Azure, выполнить измерение и обновить результат обратно до Azure *

2 - Набор сервисов [возможно, на основе REST], которые будут получать результаты из клиентского приложения и обновлять базу данных в облаке

3 - Набор сервисов и бизнес-логики, которые можно использовать для анализа данных.

4 - веб-приложение asp.net, где пользователь может просматривать сведения об инструменте, начинать измерения и т. Д.

Между платформой Azure и клиентским приложением существует двусторонняя связь, т. Е. Клиенту необходимо обновить результаты до лазера, а лазеру - начать измерение на приборе через клиентское приложение.

В таком случае, каков рекомендуемый подход для платформы Azure для общения с клиентами. Это любое из следующего

1. Создайте дуплексный сервис между клиентом и сервером и предоставьте интерфейс обратного вызова для начала измерения.

2. Создайте очередь команд, используя очередь сообщений Azure для каждого клиента. когда необходимо начать измерение, сообщение будет помещено в очередь. Клиентское приложение всегда будет читать из очереди и выполнять команду

или у нас есть другие способы сделать это, любая помощь приветствуется

2 ответа

Для связи между сервером и клиентом вы можете использовать SignalR http://signalr.net/ Azure есть две системы обмена сообщениями, которые поддерживаются "в качестве службы": это служебная шина и очереди сообщений - см. Эту ссылку http://msdn.microsoft.com/en-us/library/hh767287.aspx

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

С точки зрения сохранения результатов, ваш главный компонент может предоставить клиенту доступ SAS для записи результатов обратно в конкретный большой двоичный объект в учетной записи хранения Azure, а также чтобы ваша служба и бизнес-логика отслеживали существование этого большого двоичного объекта, чтобы начать анализ.

Вышеупомянутый подход отделит ваш клиент от сервера и сделает связь асинхронной через хранилище. Опять же, это всего лишь указатели, и вы были бы лучшим человеком, чтобы выбрать правильный подход, который соответствует вашим требованиям

Другие вопросы по тегам