2010-05-30 5 views

답변

2

작업자 역할에서는 소켓 서버를 쉽게 실행할 수 있지만 udp가 아닌 tcp 만 실행할 수 있습니다. 작업자 역할의 OnStart() 메소드에서 자신의 프로세스를 시작할 수 있습니다. Run() 메소드에서도 수행 할 수 있지만 실행 상태에 도달하면로드 밸런서와 외부에서 역할을 볼 수 있으므로 tcp를 얻을 수 있습니다 귀하의 소켓 서버가 실행되기 전에 트래픽.

당신은 당신의 직원 역할의 구성에서 TCP 끝점을 만들어야합니다 (작업자 역할을 마우스 오른쪽 단추로 클릭하고 속성을 볼 수) : 사용자가 지정한 포트 번호가 외부 세계입니다

alt text

있다. 로드 밸런서는 각 역할 인스턴스에 코드가 바인딩되는 고유 한 포트를 제공합니다. 예를 들어, 시작에 --tcpport 매개 변수를 사용하여 MyApp.exe의 상상 :

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

감사합니다 : 당신의 실행() 메소드에서 다음

 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(); 

를 간단하게해야 결코 종료 알고, 영원히 기다릴 . 이미 UDP에 대한 투표가 있습니다. http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting/suggestions/400782-udp-endpoints. 프로세스에서 CLR을 호스팅 할 수 있는지 알고 있습니까? – bertelmonster2k