Azure でネイティブ コードをホストできるようです: http://msdn.microsoft.com/en-us/library/dd573362.aspx。ここでソケット サーバー (tcp/udp をリッスン) を実行できますか? そして、上に CLR をホストすることさえありますか?
1 に答える
2
worker ロールでソケット サーバーを実行するのは簡単ですが、udp ではなく tcp のみです。ワーカー ロールの OnStart() メソッドから独自のプロセスを開始できます。Run() メソッドからも実行できますが、実行状態になると、ロード バランサーと外部からロールが認識されるため、tcp を取得する可能性があります。ソケット サーバーが実行される前のトラフィック。
worker ロールの構成で tcp エンドポイントを作成する必要があります (worker ロールを右クリックし、[プロパティ] を表示します)。
指定したポート番号は外部用です。ロード バランサーは、ロールの各インスタンスに、コードがバインドされる一意のポートを提供します。たとえば、起動時に --tcpport パラメーターを取る MyApp.exe を想像してください。
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!");
于 2010-05-30T15:50:38.300 に答える