ÔÚ Windows Azure ÖÐÔËÐÐSuperSocket
¹Ø¼ü×Ö: Windows Azure, WorkRole, InputEndPoint, ÔÆ¼ÆËã, ΢ÈíÔÆ
ʲôÊÇ Windows Azure?
Windows Azure ÊÇ΢ÈíµÄÔÆ¼ÆËãÆ½Ì¨£¡Î¢ÈíµÄWindows Azureͨ¹ýËüµÄÊý¾ÝÖÐÐÄÌṩÁ˰´Ðè·ÖÅäµÄ¼ÆËãÄÜÁ¦ºÍ´æ´¢¿Õ¼äÓÃÓÚÔÚ»¥ÁªÍøÉÏÍйܣ¬À©Õ¹ºÍ¹ÜÀíÓ¦ÓóÌÐò¡£
ÕâЩÔÚ Windows Azure ÉÏÔËÐеÄÓ¦ÓÃÓкܸߵĿɿ¿ÐԺͿÉÀ©Õ¹ÄÜÁ¦¡£»ùÓÚSuperSocket¿ª·¢µÄ·þÎñÆ÷³ÌÐòÒ»ÑùÒ²Äܹ»ºÜ·½±ãµÄÔËÐÐÔÚ Windows Azure ƽ̨ÉÏ¡£
SuperSocket ÅäÖÃ
ÓÃÓÚÔÚ Windows Azure ÉÏÔËÐеÄÅäÖÃÎļþ app.config ºÍÖ±½ÓÔËÐеÄSuperSocketµÄÅäÖÃÎļþÏàͬ¡£
type=\SuperSocket.SocketEngine\ type=\SuperSocket.QuickStart.RemoteProcessService\ Ìí¼ÓSuperSocketµÄÆô¶¯´úÂëµ½ Windows Azure µÄ WorkRole ÏîÄ¿ ÓëÆäËüSuperSocket³ÌÐòÏàͬ£¬Æô¶¯´úÂëͬÑùҲҪдµ½³ÌÐòµÄÈë¿Ú´¦£¬Èç Windows Azure µÄ WorkRole ÏîÄ¿µÄOnStart() ·½·¨£º public override bool OnStart() { // Set the maximum number of concurrent connections ServicePointManager.DefaultConnectionLimit = 100; // For information on handling configuration changes // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357. m_Bootstrap = BootstrapFactory.CreateBootstrap(); if (!m_Bootstrap.Initialize()) { Trace.WriteLine(\ return false; } var result = m_Bootstrap.Start(); switch (result) { case (StartResult.None): Trace.WriteLine(\configuration!\ return false; case (StartResult.Success): Trace.WriteLine(\ break; case (StartResult.Failed): Trace.WriteLine(\to start SuperSocket server! Please check error log for more information!\ return false; case (StartResult.PartialSuccess): Trace.WriteLine(\server instances were started successfully, but the others failed to start! Please check error log for more information!\ break; } return base.OnStart(); } ÅäÖúÍʹÓà Input Endpoint ÓÉÓÚWindows AzureµÄÄÚ²¿ÍøÂç¼Ü¹¹£¬Äã²»ÄÜÖ±½Ó¼àÌýÄãÅäÖÃÖеÄIPºÍ¶Ë¿Ú¡£ÔÚÕâÖÖÇé¿öÏ£¬ÄãÐèÒªÔÚWindows AzureÏîÄ¿ÖÐÅäÖÃInput Endpoint: ÕâЩ endpointµÄÃüÃû¹æÔòÊÇ \¡£ ÀýÈ磬ÎÒÃÇÔÚÅäÖÃÎļþÖÐÅäÖÃÁËÃûΪ\µÄserver£º È»ºóÎÒÃǾÍÓ¦¸Ã´´½¨Ò»¸öÃûΪ\µÄEndpoint¡£ ÔÚ´úÂëÖУ¬Äã¿ÉÒÔͨ¹ý±à³ÌµÄ·½Ê½»ñµÃ¸ÃEndpointÕæÕýµÄ¶Ë¿ÚºÅ£º var instanceEndpoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[serverConfig.Name + \serverConfig.Port].Port; µ«ÊÇÄã²»ÓÃΪSuperSocketÕâÑù×ö£¬ÒòΪ SuperSocket ÒѾʵÏÖÁ˼àÌýEndpointµÄÌæ»»ÒѾ¡£ Òò´Ë£¬ÄãÖ»Ðèµ±SuperSocketµÄBootstrap³õʼ»¯µÄʱºò½«EndpointµÄ×ֵ䴫Èë¾ÍÐÐÁË£¬×îÖÕ´úÂëÈçÏ£º public override bool OnStart() { // Set the maximum number of concurrent connections ServicePointManager.DefaultConnectionLimit = 100; // For information on handling configuration changes // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357. m_Bootstrap = BootstrapFactory.CreateBootstrap(); if (!m_Bootstrap.Initialize(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints.ToDictionary(p => p.Key, p => p.Value.IPEndpoint))) { Trace.WriteLine(\ return false; } var result = m_Bootstrap.Start(); switch (result) { case (StartResult.None): Trace.WriteLine(\configuration!\ return false; case (StartResult.Success): Trace.WriteLine(\ break; case (StartResult.Failed): Trace.WriteLine(\to start SuperSocket server! Please check error log for more information!\ return false; case (StartResult.PartialSuccess): Trace.WriteLine(\the others failed to start! Please check error log for more information!\ break; } return base.OnStart(); } ×îºó£¬Äã¾Í¿ÉÒÔÆô¶¯ÄãµÄWindows AzureʵÀýÁË¡£