SuperSocketѧϰ½øÕ¹

ÔÚ 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ʵÀýÁË¡£

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)