Azure и собственный код

Похоже, что можно разместить собственный код на Azure: http://msdn.microsoft.com/en-us/library/dd573362.aspx. Действительно ли возможно выполнить сервер сокета (слушающий tcp/udp) сюда? И даже размещая CLR на вершине?

1
задан bertelmonster2k 30 May 2010 в 12:51
поделиться

1 ответ

Сервер сокетов легко запустить с рабочей ролью, но только 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!");
2
ответ дан 3 September 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: