2009-11-18 16 views
5

No me refiero a preguntar, es Comet más fácil en ASPNET que en Jetty? Quiero decir, es Comet más fácil en ASPNET o Jetty, en comparación con otras alternativas? Creo que las capacidades de asincronización de ASP.NET y Jetty hacen que Comet sea más escalable cuando se implementa en esas plataformas y me gustaría confirmarlo.¿Comet es más fácil en ASP.NET con páginas asíncronas?

ASPNET presentó "Paginas asincrónicas" en 2005. La idea era apply the familiar .NET asynch model to ASP.NET page processing.

public partial class AsyncPage : System.Web.UI.Page 
{ 
    private WebRequest _request; 

    void Page_Load (object sender, EventArgs e) 
    { 
     AddOnPreRenderCompleteAsync (
      new BeginEventHandler(BeginAsyncOperation), 
      new EndEventHandler (EndAsyncOperation) 
     ); 
    } 

    IAsyncResult BeginAsyncOperation (object sender, EventArgs e, 
     AsyncCallback cb, object state) 
    { 
     _request = WebRequest.Create("http://msdn.microsoft.com"); 
     return _request.BeginGetResponse (cb, state); 
    } 
    void EndAsyncOperation (IAsyncResult ar) 
    { 
     string text; 
     using (WebResponse response = _request.EndGetResponse(ar)) 
     { 
      using (StreamReader reader = 
       new StreamReader(response.GetResponseStream())) 
      { 
       text = reader.ReadToEnd(); 
      } 
     } 

     Regex regex = new Regex ("href\\s*=\\s*\"([^\"]*)\"", 
      RegexOptions.IgnoreCase); 
     MatchCollection matches = regex.Matches(text); 

     StringBuilder builder = new StringBuilder(1024); 
     foreach (Match match in matches) 
     { 
      builder.Append (match.Groups[1]); 
      builder.Append("<br/>"); 
     } 

     Output.Text = builder.ToString(); 
    } 
} 

P1: ¿Esto no crea ASP.NET escala mucho mejor para aplicaciones de estilo Comet? ¿Alguien ha usado esto y lo ha probado?

Creo que otros marcos del lado del servidor también tienen algo similar. Si no me equivoco, Jetty tiene algo como esto, para permitir una mejor escala en los escenarios de Comet.

Q2: ¿Alguien puede arrojar luz sobre que?

+0

Por lo que puedo ver, asíncrono en este caso parece ser la forma en que se manejan los hilos en el servidor ... Hasta donde yo sé, la salida todavía se envía en un fragmento cuando la página se termina de procesar, que completamente elimina la posibilidad de que Comet trabaje con el modelo de ASP.NET ... Sin embargo, estaría feliz de haber demostrado que estaba equivocado. – Blixt

+0

Hey Blixt: echa un vistazo a WebSync (http://www.frozenmountain.com/websync). Comet no solo es posible, sino que está probado con IIS/.NET. – jvenema

+0

jvenema, esa no era la pregunta. La pregunta era: * ¿es más fácil o más escalable usando páginas asíncronas *? – Cheeso

Respuesta

4

El procesamiento asincrónico en .NET sí proporciona una base para crear aplicaciones de cometas. Específicamente, es el IHttpAsyncHandler el que se puede usar como base.

Dicho esto, sin una biblioteca de terceros, la implementación de Comet desde cero es ... difícil. Hay una implementación .NET de Comet for IIS llamada WebSync que se compararía con Jetty.

+0

Lástima que no hay ningún producto de código abierto en el espacio de ASP.NET que puedo encontrar. Un montón de opciones en el espacio de Java. – Kelly

+2

@Kelly: Hay una implementación de código abierto en GitHub llamada aspComet: https://github.com/nmosafi/aspComet –

Cuestiones relacionadas