【发布时间】:2015-06-03 08:23:14
【问题描述】:
我在现有应用程序中有一个场景,单击“保存”按钮会调用 Javascript 函数。这个 javascript 函数在内部对 web 服务进行 4-5 次异步调用。由于某些原因,我们现在有很大的 javascript 文件,其中包含很多业务逻辑。我们还面临应用程序中的性能问题。为了减少我们对服务器进行的 XHR 调用的数量,我们考虑在服务器端整合这些调用,然后从我们的 Javascript 中进行一次调用。 在服务器端,我们使用 Async Await 使此调用异步。因此,我们创建了一个包装服务,其中一个方法现在使用 HTTPClient 公开的 SendAsync 方法调用不同的服务方法。 我们的底层服务都是同步的,为了实现异步功能,我们使用了 HTTPClient。我们测量了性能,它显示出可观的收益。 但是,我们的一位同事指出,我们实际上会有序列化和反序列化的开销,而且我们现在从服务器发起其他 Web 服务调用,这些调用最终将同步运行。所以为什么不直接调用这些方法而不是新的 HTTP 调用。 现在我们的方法都是同步的,为了使它们异步,我们将不得不使用任务,这又是开销。 这两种方法都会产生开销,但我们看到使用 async await 发出新的 HTTP 请求更符合微服务概念。 有一场辩论,我想知道其他想法。
【问题讨论】:
-
没有争议:衡量。尽管除非您创建数百个
Tasks,否则开销可能会微不足道。
标签: asynchronous async-await task-parallel-library dotnet-httpclient