2009-11-18 5 views
5

私は質問するつもりはありません、はJettyよりASPNETで彗星ですか?私は、は、他の選択肢と比較して、彗星ASPNETまたは桟橋のどちらかに易しいですか?私は、ASP.NETとJettyの非同期機能は、特にこれらのプラットフォームで実装されたときにCometをよりスケーラブルにすると考えています。Asynchronous Pagesを使用したASP.NETでは、彗星は簡単ですか?

ASPNETは2005年に「非同期ページ」を導入しました。その考えは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:これは彗星スタイルのアプリケーションのためのASP.NET規模ははるかに良いことはありませんか? 誰もこれを使ってテストしましたか?

私は他のサーバー側のフレームワークも同様のものを持っていると思います。もし私が間違っていないなら、Jettyはこのようなことをして、Cometシナリオでより良いスケールを可能にします。

Q2:に誰でも光を当てることができますか?

+0

この場合の非同期は、スレッドがサーバー上でどのように処理されるかのようです...私が知る限り、ページは処理が完了すると出力が1つのチャンクで送信されます。 CometがASP.NETモデルで動作する可能性を排除します...私は間違っていると証明されてうれしいです。 – Blixt

+0

Hey Blixt - WebSync(http://www.frozenmountain.com/websync)をチェックしてください。 Cometは実際に可能であるだけでなく、IIS/.NETで証明されています。 – jvenema

+0

ジュベマ、それは問題ではありませんでした。疑問は、*非同期ページ*を使用する方が簡単でスケーラビリティが高いことです。 – Cheeso

答えて

4

.NETの非同期処理は、実際に彗星アプリケーションを構築するための基礎を提供します。具体的には、IHttpAsyncHandlerを基盤として使用できます。

しかし、第三者のライブラリがなければ、最初からCometを実装するのは難しいと言えます。 Jettyと比較するWebSyncと呼ばれるIIS用Cometの.NET実装があります。

+0

私は見つけることができるASP.NETスペースにオープンソース製品がありません。 Javaの領域にはたくさんの選択肢があります。 – Kelly

+2

@Kelly:GitHubにaspCometというオープンソースの実装があります:https://github.com/nmosafi/aspComet –

関連する問題