【问题标题】:Pros/Cons of writing a custom web server编写自定义 Web 服务器的优点/缺点
【发布时间】:2011-02-11 17:31:27
【问题描述】:

我已经创建了一个 ASP.NET Webforms Web 应用程序,它基本上通过 jQuery.ajax 方法使用后面的代码。

  • 页面上的数据应该每1秒刷新一次,每个请求大约1KB。
  • Web 应用程序将托管在 Intranet 上。因此,对于这样的刷新率,它具有合理的速度。
  • 我使用 ASP.NET 开发服务器。
  • 服务器端代码执行大约需要 20 毫秒(对我来说是理想的),但是(使用 firebug)来自客户端的每个请求,来回大约需要 1.5 到 2 秒(这与将 XMLHttpRequest 发送到我的 web服务器并接收回调数据。这对我来说并不理想)而且我找不到加速它的解决方法。

现在,一位同事建议我编写自定义 Web 服务器来处理页面并通过在页面上使用 javascript 与该 Web 服务器进行交互;这样,我可以将我的业务逻辑放在我创建的 Web 服务器上并有效地加快速度。 (与使用 IIS 或 ASP.NET 开发服务器相比)。

基本上,我对这种方法一无所知。
如果有人告诉我编写自己的 Web 服务器的优缺点以及它对我的自定义场景中数据传输率的影响,我会很高兴。

【问题讨论】:

  • 我能想到一大堆缺点——不使用 IIS 的优点是什么?
  • @Kirk:正如我所提到的,有人告诉我,通过编写自己的 Web 服务器并将业务逻辑放入其中,我可以非常有效地加快请求速度。

标签: ajax xmlhttprequest webserver data-transfer


【解决方案1】:

不要那样做。

IIS 速度很快。没有理由相信您将能够自己编写服务器,这要快得多。自定义 Web 服务器将添加完全为零的附加值,但需要一些开发时间来实现。而且您将不得不担心安全、维护等问题。

如果您不需要 ASP .NET 页面的开销,在 IIS 中托管的 WCF 服务,或者只是一个简单的 IHttpHandler 都是不错的选择。我非常相信您可以在没有自定义 Web 服务器的情况下克服性能问题。

尝试衡量什么是花费时间。例如,首先测量您的服务器端执行时间。然后测量传输时间(例如,使用Fiddler)。哪一个在花时间?如果您在客户端上做了很多工作(例如处理接收到的数据),这也可能是延迟的原因。

【讨论】:

  • @driis:谢谢!使用 WCF 或 Web 服务是否比在 c# 中使用 PageMethods 更有效(在速度方面)?
  • 据我所知,PageMethods 是作为 SOAP 服务调用实现的。因此,WCF 可能不会更有效 - 但是,如果您的应用程序运行缓慢,我愿意打赌这不是服务器故障。试着看看是什么花费了时间——如果你的方法在 20 毫秒内运行,那么剩下的时间在哪里?是转机时间吗?客户处理 ?还有什么? (提示:Firebug 和/或 Fiddler 是弄清楚网络上发生了什么的好工具)。
  • 我想是转机时间。你知道有什么方法可以让它更快吗?
  • 您要传输多少数据?你量过吗?
  • 这应该不会花很长时间,尤其是在 Intranet 上。 Fiddler 会给你传输时间,试一试。 fiddler2.com/fiddler2
【解决方案2】:

专业版: 您可以将 Web 服务器剥离为您需要的关键部分,而无需承担您的应用不需要/使用的所有内容的开销。

缺点:

  • 您将不得不重新发明轮子来使用现有的 Web 服务器免费获得很多东西。例如,身份验证、加密、解析请求、制定响应、管理端口等。

  • 所有这些时间都将花在与您的实际发展目标相切的事情上。除非您打算在大量项目中重复使用此 Web 服务器,否则这是在浪费宝贵的开发时间。

  • 您之前已经建立了一个网络服务器,对吧?您确定它比已经存在并由整个开发团队构建的主要产品做得更好吗?你确定它会更快吗?它会比已经被数百万网络用户(例如 IIS 或 Apache)测试过的东西更少错误吗?

【讨论】:

  • 嗯。关于如何加快 XMLHttpRequests 的任何建议?
  • 我必须更多地了解您的应用程序以及导致速度下降的原因。例如,您是否通过 SSL 发出请求?有什么办法可以减小请求/响应消息的大小?是否存在某种阻碍传输速度的瓶颈?您是否已将 IIS 配置为最大性能(HTTP Keep Alives)?您是否配置了网络设备和拓扑以实现最佳性能?在创建可能不会加快速度的新网络服务器之前,我会查看所有这些内容。
【解决方案3】:

最大的缺点:您必须重新发明现有 Web 服务器平台已经经历的所有错误和安全漏洞。您希望将多少时间花在处理与安全相关的编码问题上?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 2011-03-27
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    相关资源
    最近更新 更多