В любом случае (веб-роль или рабочая роль) есть одно общее решение - использовать промежуточное хранилище для данных, которые вы хотите передать. Для рабочей роли - очевидно, что сама рабочая роль отличается от роли веб-роли, поэтому между ними нет прямой связи. Для веб-роли ситуация почти такая же. Ваш 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