【问题标题】:Is Comet easier in ASP.NET with Asynchronous Pages?Comet 在带有异步页面的 ASP.NET 中更容易吗?
【发布时间】:2009-11-18 14:57:59
【问题描述】:

我不是要问,Comet 在 ASPNET 中比在 Jetty 中更容易吗?我的意思是,与其他替代方案相比,Comet 在 ASPNET 或 Jetty 中更容易吗? em> 我认为 ASP.NET 和 Jetty 的异步功能特别使 Comet 在这些平台上实现时更具可扩展性,我想确认这一点。

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 更适合 Comet 风格的应用程序吗? 有人用过这个并测试过吗?

我认为其他服务器端框架也有类似的东西。如果我没记错的话,Jetty 有这样的东西,可以在 Comet 场景中实现更好的扩展。

Q2:谁能解释一下那个

【问题讨论】:

  • 据我所见,在这种情况下,异步似乎是服务器上处理线程的方式......据我所知,当页面发送时,输出仍然以一个块的形式发送完成处理,这完全消除了 Comet 与 ASP.NET 模型一起工作的可能性......不过我很高兴被证明是错误的。
  • 嘿 Blixt - 查看 WebSync (frozenmountain.com/websync)。 Comet 确实不仅是可能的,而且通过 IIS/.NET 得到了证明。
  • jvenema,这不是问题所在。问题是,使用异步页面是否更容易或更可扩展
  • 对不起 Cheeso,我正在回复 Blixt。在回答您的问题时,绝对更容易 - 您不必编写完整的 Web 服务器来处理它,并且从测试 WebSync 和与 Jetty 进行比较显然更具可扩展性,尽管我没有进行真正的并排比较(同一台机器等)真正确认 100%。

标签: asp.net asynchronous jetty comet


【解决方案1】:

.NET 中的异步处理确实为构建彗星应用程序提供了基础。具体来说就是可以作为基础的IHttpAsyncHandler。

也就是说,如果没有第三方库,从头开始实现 Comet 是很困难的。 Comet for IIS 有一个 .NET 实现,名为 WebSync,可以与 Jetty 进行比较。

【讨论】:

  • 太糟糕了,在 ASP.NET 空间中没有我能找到的开源产品。 Java 领域有很多选择。
  • @Kelly:GitHub 上有一个名为 aspComet 的开源实现:github.com/nmosafi/aspComet
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
相关资源
最近更新 更多