【发布时间】:2011-01-09 01:44:56
【问题描述】:
为了快速构建搜索网站,我计划将工作分配给两个团队:一个负责构建搜索引擎,另一个负责构建 Web UI(移动/桌面)。我的计划是将搜索引擎构建为一组基于 .NET 3.5 的 REST 服务。用户界面可以使用其他技术构建。
问题:REST 接口是否可能成为性能瓶颈?如何最好地避免这种情况?
【问题讨论】:
标签: asp.net wcf search .net-3.5 rest
为了快速构建搜索网站,我计划将工作分配给两个团队:一个负责构建搜索引擎,另一个负责构建 Web UI(移动/桌面)。我的计划是将搜索引擎构建为一组基于 .NET 3.5 的 REST 服务。用户界面可以使用其他技术构建。
问题:REST 接口是否可能成为性能瓶颈?如何最好地避免这种情况?
【问题讨论】:
标签: asp.net wcf search .net-3.5 rest
REST 在这种情况下不太可能成为瓶颈。从您的帖子中不清楚您是直接从客户端上的 HTML UI 进行 REST 调用,还是在后端进行服务器到服务器的 REST 调用。所以我将在下面介绍这两种情况。
如果您的 REST 调用是在您的客户端 UI 和您的服务器之间进行的,那么使用 REST 或其他 HTTP 远程处理方法的影响相对较小——在后端执行搜索然后将结果发送回所需的时间对客户端的影响应该使 REST 调用本身的影响相形见绌。如果您想提高性能,请专注于客户端网络技巧(例如 HTTP 压缩、适当的缓存标头等)并优化您的搜索引擎本身。
如果您的架构是一层服务器(托管您的 Web UI)调用另一层(您的搜索引擎),那么通过 REST 在这些层之间进行调用也不应该给您的整体延迟增加太多。这是因为(与上面相同)运行搜索并将结果发送回客户端通常至少需要几百毫秒,而后端 REST 调用的开销(如果处理得当)通常为 50 毫秒或更短.
也就是说,很容易弄乱服务器到服务器 HTTP 调用的客户端。例如,许多 HTTP 客户端库(包括 .NET 的)默认情况下会限制并发客户端连接的数量,如果您正在构建一个实际的客户端应用程序,这是有道理的,但如果从实际上是服务器同时为数百个用户提供服务。其他潜在问题包括身份验证问题、代理问题、DNS 等。因此,请小心谨慎地构建和配置 REST 客户端代码,并确保对数百个并发用户进行负载测试!
【讨论】:
没有。 REST 不是(通常也不会是)瓶颈。没有花哨的 HTML 页面的 REST 是 HTTP。它比普通网页更便宜、更快捷。
【讨论】:
我认为它不应该影响你的表现,但要正确使用 REST 服务。Net 有完全支持 REST 的 ASP.Net MVC。
记得通读此链接http://www.ytechie.com/2008/10/aspnet-mvc-what-about-seo.html
【讨论】: