2009-11-18 8 views
5

Nie chcę pytać, jest Comet łatwiej w ASPNET niż w Jetty? Mam na myśli, jest Comet łatwiejszy zajazd ASPNET lub Jetty, w porównaniu do innych alternatyw? Myślę, że asynchroniczne możliwości ASP.NET i Jetty w szczególności powodują, że kometa jest bardziej skalowalna po wdrożeniu na tych platformach i chciałbym to potwierdzić.Czy Comet jest łatwiejszy w ASP.NET z asynchronicznymi stronami?

ASPNET wprowadził "strony asynchroniczne" w 2005 roku. Pomysł polegał na 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: Nie to zrobić znacznie lepiej skalować ASP.NET aplikacji Comet stylu? Czy ktoś to użył i przetestował?

Myślę, że inne frameworki po stronie serwera również mają coś podobnego. Jeśli się nie mylę, Jetty ma coś takiego, aby umożliwić lepszą skalę w scenariuszach komet.

Q2: Czy ktoś może rzucić światło na , że?

+0

Z tego, co widzę, asynchroniczne w tym przypadku wydaje się, jak wątki są obsługiwane na serwerze ... O ile mi wiadomo, dane wyjściowe są nadal wysyłane w jednym kawałku, gdy strona jest zakończona przetwarzania, które całkowicie eliminuje możliwość pracy Cometa z modelem ASP.NET ... Byłbym szczęśliwy, gdyby mi udowodniono, że jest źle. – Blixt

+0

Hey Blixt - sprawdź WebSync (http://www.frozenmountain.com/websync). Kometa jest rzeczywiście nie tylko możliwa, ale również sprawdzona w IIS/.NET. – jvenema

+0

jvenema, to nie było pytanie. Pytanie brzmiało: * jest łatwiejsze lub bardziej skalowalne za pomocą stron asynchronicznych *. – Cheeso

Odpowiedz

4

Asynchroniczne przetwarzanie w .NET rzeczywiście stanowi podstawę do budowania aplikacji komet. W szczególności jest to IHttpAsyncHandler, który może być użyty jako fundament.

To powiedziawszy, bez biblioteki osób trzecich, wdrożenie komety od zera jest ... trudne. Istnieje implementacja .NET Comet dla IIS o nazwie WebSync, która byłaby porównywalna z Jetty.

+0

Szkoda, że ​​nie ma produktu o otwartym kodzie źródłowym w przestrzeni ASP.NET, którą mogę znaleźć. Mnóstwo opcji w przestrzeni Java. – Kelly

+2

@Kelly: Na GitHub jest implementacja open source o nazwie aspComet: https://github.com/nmosafi/aspComet –

Powiązane problemy