【发布时间】: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