WebRole против WorkerRole

Привет, я внедряю прослушиватель TCPIP в Azure WorkerRole. Рабочая роль прослушивает входящие данные TCP и сохраняет их в хранилище таблиц Azure.

Все работает нормально, когда я делаю это в Run() WorkerRole.

Но когда я реализую то же самое в Run() WebRole, я получаю сообщение «WebIIS вышел», и режим отладки выходит из среды разработки.

Почему это?

Может кто-нибудь объяснить, чем WebRole отличается от WorkerRole? Можем ли мы реализовать прослушиватель TCPIP, который постоянно прослушивает WebRole?

Спасибо, Анил.


person Anil Maddala    schedule 04.05.2012    source источник
comment
Ваш прослушиватель портов находится на том же порту, что и IIS?   -  person Richard Astbury    schedule 04.05.2012
comment
@RichardAstbury Нет. И Http, и TCP находятся на разных портах.   -  person Anil Maddala    schedule 04.05.2012


Ответы (3)


Просто подумайте, что WebRole работает как веб-приложение. получив запрос, он возвращает ответ, в то время как рабочая роль работает как служба Windows. Хотя оба могут передавать сообщения TPC, они различаются по способу их передачи. Во время обработки запроса будет доступна только веб-роль. Рабочая роль будет доступна постоянно. Если вы хотите, чтобы веб-роль постоянно прослушивала TCP-канал, скорее всего, рабочая роль лучше соответствует вашим требованиям.

С уважением,

person josemiguel.torres    schedule 04.05.2012
comment
Это неправда. Веб-роль имеет RoleEntryPoint, как и рабочая роль, и может запускать любой код в любое время (с входящим запросом или без него). - person user94559; 04.05.2012
comment
Привет, Смаркс. Судя по вашему ответу на stackoverflow.com/a/2610895/94559, WebRole = WorkerRole+IIS. Выполнение того же кода в Run() из webrole делает webrole нестабильным, но тот же код отлично работает в WorkerRoel. В чем может быть причина и есть ли какая-то конкретная причина, по которой вы считаете, что рабочая роль лучше всего подходит в этом случае? - person Anil Maddala; 04.05.2012

Мой ответ на аналогичный вопрос: https://stackoverflow.com/a/2610895/94559

Короче говоря, веб-роли предназначены для IIS, а рабочие роли — для всего остального. В этом случае, я думаю, вам нужна рабочая роль.

person user94559    schedule 04.05.2012
comment
Привет, Смаркс. Судя по вашему ответу на stackoverflow.com/a/2610895/94559, WebRole = WorkerRole+IIS. Выполнение того же кода в Run() из webrole делает webrole нестабильным, но тот же код отлично работает в WorkerRoel. В чем может быть причина и есть ли какая-то конкретная причина, по которой вы считаете, что рабочая роль лучше всего подходит в этом случае? - person Anil Maddala; 04.05.2012
comment
Да Веб-роль == Рабочая роль + IIS. Это зависит от того, что это за код. Какую ошибку вы получаете? Одна вещь, на которую следует обратить внимание, это то, что в веб-роли IIS привязывается (я полагаю) ко всем вашим входным конечным точкам, поэтому, если вы пытаетесь привязаться к чему-то и получаете сообщение об ошибке, это может быть потому, что IIS уже захватил порт . - person user94559; 04.05.2012
comment
На машине разработки я продолжаю получать сообщение об ошибке WaIISHost.exe: Managed (v4.0.30319) 'вышел с кодом -66053 (0xffefdfb) - person Anil Maddala; 04.05.2012
comment
Аналогичная тема есть в социальной сети. .msdn.microsoft.com/Forums/en-ZA/windowsazuredevelopment/, который может помочь. Однако он использует рабочую роль. - person Ming Xu - MSFT; 07.05.2012

Что такое роль облачной службы Azure?

В Azure роль облачной службы — это набор управляемых виртуальных машин с балансировкой нагрузки по принципу «платформа как услуга», которые работают вместе для выполнения общих задач. Роли облачных служб управляются контроллером структуры Azure и обеспечивают идеальное сочетание масштабируемости, контроля и настройки.

Что такое веб-роль?

Веб-роль — это роль облачной службы в Azure, настроенная и настроенная для запуска веб-приложений, разработанных на языках программирования и технологиях, поддерживаемых службами IIS, такими как ASP.NET, PHP, Windows Communication Foundation и Fast CGI.

Что такое рабочая роль?

Рабочая роль — это любая роль в Azure, которая выполняет задачи уровня приложений и служб, для которых обычно не требуются службы IIS. В рабочих ролях IIS не устанавливается по умолчанию. Они в основном используются для выполнения вспомогательных фоновых процессов вместе с веб-ролями и выполнения таких задач, как автоматическое сжатие загружаемых изображений, запуск сценариев при изменении базы данных, получение новых сообщений из очереди и обработка и многое другое.

person Pankaj Rawat    schedule 27.11.2017