Как получить доступ к данным WebRole со страницы .aspx?

Привет, я работаю над TCP / IP в Windows Azure и успешно могу разработать TCP-клиент для отправки и веб-роль для получения данных TCP.

Я хочу отобразить полученные данные на странице .aspx. Как мне получить доступ к данным веб-ролей со страницы .aspx?

ОБНОВИТЬ:

Я изучил архитектуру MVC и понял, в чем ее поток.

У меня вопрос, как я могу получить данные в контроллер из файла Webrole.cs / WorkerRole.cs. Я использую следующий код для получения данных TCP: msdn.microsoft.com/en-us/hh285885


person Anil Maddala    schedule 21.03.2012    source источник


Ответы (1)


В любом случае (веб-роль или рабочая роль) есть одно общее решение - использовать промежуточное хранилище для данных, которые вы хотите передать. Для рабочей роли - очевидно, что сама рабочая роль отличается от роли веб-роли, поэтому между ними нет прямой связи. Для веб-роли ситуация почти такая же. Ваш WebRole.cs создается в другом процессе (WaIISHost.exe), чем ваше веб-приложение (w3wp.exe).

Итак, общее решение - используйте промежуточное хранилище для ваших данных. Вы можете найти разные подходы к тому, как общаться между разными ролямиздесь и здесь). В зависимости от ваших конкретных требований вам может оказаться еще проще использовать Azure Table Storage Serivce для хранения ваших данных из TCP, а затем чтение таблицы из контроллера. Возможно, вам даже потребуется просто использовать Хранилище Azure. Очереди.

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

ОБНОВЛЕНИЕ

Привет, часть чтения данных выполняется в Webrole для моего приложения в функции Run ().

Итак, ваша функция запуска не имеет прямого канала связи с вашим rcontroller. Так что я не знаю, что вы там читаете, если вам нужны только данные в контроллере.

Я думаю, вам следует пересмотреть архитектуру вашего основного приложения. Метод вашего контроллера (он же Action) выполняется только после того, как из клиентского браузера в ваше приложение отправляется действительный HTTP-запрос. Я не вижу причин, по которым вы читали бы данные до того, как они будут запрошены. Особенно быстро меняющиеся данные. Просто дождитесь запроса от браузера (который также может быть запросом AJAX), а затем прочитайте данные. У вас может быть хорошая стратегия ключей раздела / строки, чтобы вы могли хранить данные, прочитанные в локальном кеше приложения, и читать только то, что еще не было прочитано. Или просто удалить из таблицы после прочтения данных? Не знаю общих требований к приложению, семантики и архитектуры.

Что касается вашего другого вопроса:

Если я реализую часть чтения данных в контроллере ASP.net MVC, что будет делать веб-роль?

Итак, ваш "webrole.cs" существует только для того, чтобы контроллер Windows Azure Fabric знал, что у вас есть действующее и работающее веб-приложение. Вы можете оставить поле пустым (не для реализации)! В самом классе RoleEntryPoint по умолчанию реализован метод Run (), который представляет собой просто бесконечный сон, никому не причиняющий вреда.

person astaykov    schedule 21.03.2012
comment
Я понял, как взаимодействовать между Интернетом, ролью Eorker и потоком в архитектуре MVC. Теперь мой вопрос: после того, как мы запросим данные из таблицы с помощью workerrole.cs, как контроллер в MVC может получить эти данные для отображения в представлении? Спасибо. - person Anil Maddala; 30.03.2012
comment
Workerrole.cs (или webrole.cs) записывает в хранилище таблиц. Контроллер просто прочитает таблицу. - person astaykov; 30.03.2012
comment
Привет, часть чтения данных выполняется в Webrole для моего приложения в функции Run (). Если я реализую часть чтения данных в контроллере ASP.net MVC, что будет делать веб-роль? Мой второй вопрос: я должен запрашивать таблицу каждые 10 секунд, чтобы получить самые свежие данные. как это сделать с контроллера? Спасибо. - person Anil Maddala; 30.03.2012