我的一个朋友告诉我他过去看过 ServiceStack。说它看起来不错,但没有异步支持,所以在他的书中,它不是使用这个框架的选项(如果没有异步就不好),我必须同意。
除非ServiceStack添加了异步,否则不确定这对我来说是否是一个不错的选择。
这让我想知道:如果没有异步,stackoverflow 是否真的使用了这个? b) 如果 a 是肯定的,那么它显然一定是它的高度定制版本,可能有异步功能?
我确信 stackoverflow 的有人可以回答这篇文章。
ServiceStack v4 中添加了服务器端异步
The 最需要的功能,添加了服务器端异步支持,其中 ServiceStack 中的 HttpHandler 现在继承自通用HttpAsyncTaskHandler
实现的基类IHttpAsyncHandler
。这使您可以通过多种方式从服务返回异步任务,如下所示AsyncTask 测试.cvs
例如。服务现在可以具有对象、任务或异步任务返回类型,它们可以返回已启动或未启动的任务(我们将自己启动)。这次过渡非常顺利,所有现有服务都像以前一样继续工作并且所有测试都通过了。
ServiceStack 服务客户端中基于任务的异步
为了匹配新的服务器端异步故事,现在所有项目都已升级到 .NET 4.0,所有服务客户端都已更改为为所有异步操作返回 .NET 4.0 任务,以便它们可以在 C# 的 async/await 方法中使用。异步操作的一些示例:AsyncRestClientTests.cs
异步 API 还提供 OnDownloadProgress 回调,您可以利用该回调在 UI 中提供进度指示器,例如:AsyncProgressTests.cs
Http Utils 中的异步 API
异步重载也已添加到 HTTP Utils 中它提供了一个很好的 API 来调用外部第 3 方(即非 ServiceStack)HTTP 服务。
缓存提供比异步更好的性能
不确定现实世界的测量结果得出这样的结论:异步对于维护高性能系统是必需的,因为良好的缓存策略将提供比异步更好的性能。有许多高性能服务和网站不使用异步,例如YouTube 采用 100 万行阻塞 Python 构建,每天可处理 40 亿次观看次数,最近 Disqus 发布了他们如何让 Django(一个重型 Python Web 框架)利用 HTTP 缓存扩展到 80 亿页面浏览量。对于大多数多线程站点/服务(例如 .NET/Ruby/Python),阻塞 IO 是常态,而不是异步 - 就像所有过早的优化一样,应该测量它是否真正产生任何最终用户/利用效益。
StackOverflow 使用 ASP.NET 的 Sync MVC 控制器
StackOverflow 本身是一个 ASP.NET MVC 网站,它使用标准同步 MVC 控制器,并采用良好的缓存策略,该策略利用本地和分布式缓存,并利用 ServiceStack 的 JSON 序列化器。因此即使使用同步 MVC 控制器StackOverflow 的服务器利用率非常高,每月可处理 9500 万页面浏览量。堆栈溢出职业2.0是什么使用了ServiceStack及其RedisMQ 支持用于其所有后台操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)