2010-05-30 3 views

ответ

2

Простой запуск сервера сокетов на роль рабочего, но только tcp, а не udp. Вы можете запустить свой собственный процесс из метода OnStart() рабочей роли. Вы можете сделать это из метода Run(), но как только вы нажмете на состояние выполнения, ваша роль будет отображаться балансировщиком нагрузки и внешним миром, поэтому вы можете получить tcp трафик перед запуском вашего сервера сокетов.

Вам нужно создать TCP конечную точку в конфигурации вашего работника роли (в правой кнопкой мыши роль уборщица и просмотра свойств):

alt text

Этот номер порта указывается для внешнего мира. Балансировщик нагрузки предоставит каждому экземпляру вашей роли уникальный порт, к которому будет привязан ваш код. Например, представьте себе ваш MyApp.exe, который принимает --tcpport параметр при запуске:

 var rootDirectory = Path.Combine(Environment.GetEnvironmentVariable("RoleRoot") + "\\", "approot\\MyApp"); 
     int port = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["MyExternalEndpoint"].IPEndpoint.Port; 
     var cmdline = String.Format("--tcpport {0}",port); 
     MyProcess = new Process() 
      { 
       StartInfo = new ProcessStartInfo(Path.Combine(rootDirectory, "myapp.exe"), cmdline) 
       { 
        UseShellExecute = false, 
        WorkingDirectory = rootDirectory 
       } 
      }; 
      MyProcess.Start(); 

Затем в методе Run(), просто ждать вечно, зная, что вы никогда не должны выйти:

MyProcess.WaitForExit(); 
throw new Exception("MyApp quit on me!"); 
+0

Спасибо , Я вижу, что в UDP уже есть голосование: http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting/suggestions/400782-udp-endpoints. Знаете ли вы, могу ли я разместить CLR в процессе? – bertelmonster2k

Смежные вопросы