Работник и веб-роль в одном приложении - PullRequest
2 голосов
/ 16 сентября 2010

У нас есть WebRole, которая обрабатывает запрос, поступающий из службы WCF, это проверяет, а затем помещает сообщения в очередь Azure в облачном хранилище. В том же приложении у нас есть WorkerRole, который считывает информацию из очереди и выполняет вызов нашего уровня постоянства, который обрабатывает запрос и возвращает результат. Нам было интересно, почему рабочие роли не выбирают какие-либо из наших параметров конфигурации и, следовательно, не предоставляют информацию о трассировке, которую мы искали. Мы поняли, что рабочая роль, скорее всего, ищет app.config и не смогли его найти.

Есть ли способ указать рабочую роль на веб-конфигурацию или загрузить параметры нашей корпоративной библиотеки в файл ServiceConfiguration.cscfg, что в любом случае означало бы, что оба могут читать из общего места?

Большое спасибо заранее Киндо

Ответы [ 2 ]

3 голосов
/ 16 сентября 2010

Насколько я знаю, у вашей рабочей роли нет возможности получить доступ к веб-конфигурации веб-роли из коробки.

Если вы переместите элементы конфигурации в файл ServiceConfiguration.csfg, а рабочая и веб-роли будут находиться в одном облачном проекте, параметры будут в одном файле. Но поскольку веб-роль и рабочая роль - это разные проекты в этом облачном проекте, их настройки находятся в разных разделах этого файла .csfg. Если вы хотите, чтобы настройки были одинаковыми для них обоих, вам придется продублировать настройки.

Размещение ваших настроек в этом файле дает вам преимущество в том, что вы можете изменять настройки во время выполнения ролей и получать ответы, которые вам нравятся, например, например. вам может потребоваться, чтобы определенные настройки перезапускали роли, а для других вам может потребоваться обновить статическую переменную. Чтобы обновить web.config или app.config, вам необходимо повторно развернуть эту роль.

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

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

1 голос
/ 16 сентября 2010

Вы не можете совместно использовать OR.cscfg файла web.config для всех ролей в Azure, поскольку нет гарантии, что роль находится в том же хосте, кластере или даже центре данных, что и другая роль.

Если вы просто пытаетесьчтобы обмениваться такими элементами, как строки подключения, переменные, специфичные для приложения, и т. д., я просто создал бы свой собственный класс «config manager», который получал бы некоторый XML и анализировал бы его в наборе параметров.Таким образом, вы можете сохранить эту конфигурацию в хранилище BLOB-объектов Azure, и изменения будут так же просты, как обновление этого объекта и сигнал о перезагрузке приложений.(очень легко с помощью API управления сервисами).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...