2009-11-18 7 views
5

Non intendo chiedere, Cometa è più semplice in ASPNET che in Jetty? Voglio dire, Cometa è più semplice in ASPNET o Jetty, rispetto ad altre alternative? Penso che le funzionalità asynch di ASP.NET e Jetty in particolare rendano Comet più scalabile quando implementato su quelle piattaforme e vorrei confermarlo.Cometa è più semplice in ASP.NET con pagine asincrone?

ASPNET ha introdotto "pagine asincrone" nel 2005. L'idea era di 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(); 
    } 
} 

Q1: non questo rende vanno molto meglio per le applicazioni in stile Comet ASP.NET? Qualcuno ha usato questo e testato?

Penso che anche altri framework lato server abbiano qualcosa di simile. Se non sbaglio, Jetty ha qualcosa di simile, per consentire una migliore scala negli scenari di Comet.

Q2: Qualcuno può far luce su che?

+0

Da quello che posso vedere, asincrono in questo caso sembra essere per come i thread sono gestiti sul server ... Per quanto ne so, l'output è ancora inviato in un chunk quando la pagina è finita l'elaborazione, che completamente elimina la possibilità per Comet di lavorare con il modello ASP.NET ... Sarei felice di essere smentito però. – Blixt

+0

Hey Blixt - controlla WebSync (http://www.frozenmountain.com/websync). Comet è infatti non solo possibile, ma dimostrato con IIS/.NET. – jvenema

+0

jvenema, non era questa la domanda. La domanda era, * è più facile o più scalabile usando le pagine asincrone *. – Cheeso

risposta

4

L'elaborazione asincrona in .NET fornisce effettivamente una base per la creazione di applicazioni comet. In particolare, è IHttpAsyncHandler che può essere utilizzato come base.

Detto questo, senza una libreria di terze parti, l'implementazione di Comet da zero è ... difficile. Esiste un'implementazione .NET di Comet per IIS denominata WebSync che potrebbe essere confrontata con Jetty.

+0

Peccato che non ci siano prodotti open source nello spazio ASP.NET che posso trovare. Un sacco di scelte nello spazio Java. – Kelly

+2

@Kelly: Esiste un'implementazione open source su GitHub chiamata aspComet: https://github.com/nmosafi/aspComet –