【发布时间】:2015-05-11 21:29:14
【问题描述】:
我有一个四层应用程序:
- HTML UI 层对 UI 服务 (Web APIController) 进行 AJAX 调用。
- UI 服务,它是一个 Web API 控制器。 UI 服务调用应用服务。
- App Service 层,其中包含通过 EF 直接调用数据库以及调用其他域服务 (Web API) 的方法。
- 域服务,它们也是 Web API。
第一层、第二层和第三层托管在一台机器上。域服务托管在不同的机器上。 SQL Server 托管在不同的服务器上。
我的问题是:
如何区分 CPU 限制和 IO 限制调用?从 UI 服务到应用服务的调用是否因存在于同一个应用域中而受 CPU 限制?
应用服务对域服务的调用是否IO Bound因为调用是通过网络进行的?应用服务对数据库的调用是否也是这种情况?
我应该让所有基于 TASK 的方法都使用 async/await 以利用可伸缩性吗?我所说的可扩展性是指HTML UI 层、UI Service 和 App Service 托管的 IIS 可以处理更多请求吗?
如果我没有异步 APIController,在网站流量大的情况下会发生什么?某些用户会因为 IIS 无法处理许多请求而收到 404 吗?
如果我有一个异步 APIController,在网站流量大的情况下会发生什么?由于 IIS 可以处理所有请求但它们都在排队,所以所有用户都会看到 UI,尽管有点晚了?
【问题讨论】:
标签: iis asp.net-web-api io cpu scalability