我正在考虑将使用 DocumentDb 和 Azure 表存储的 DAL 移至单独的 Web API,并将其作为 Azure 上的云服务托管。
这样做的主要目的是确保我保持一个高性能的 DAL,它可以独立于我的前端应用程序轻松扩展 - 目前 ASP.NET MVC 5 作为 Azure 上的云服务运行,但我肯定还会添加移动应用程序。使用 DocumentDb 和 Azure 表存储,我发现自己在 C# 代码中进行了大量数据处理,因此,我认为将其与前端应用程序分开是一个好主意。
但是,我非常担心从一个云服务到另一个云服务的 HTTP 调用所带来的延迟问题,这将违背将 DAL 分离到其自己的应用程序/云服务中的目的。
在不引入任何延迟问题的情况下将 DAL 与前端应用程序分离的最佳方法是什么?
最佳答案
我认为扩展/分区资源和网络延迟之间的权衡是不可避免的。话虽这么说,您可能会发现在使用大型系统时,出于多种原因(即启用应用程序任务的并行执行、提高可靠性等),这种权衡是值得的。
以下是一些一般提示,可帮助您最大程度地减少对网络延迟的影响:
- 尽可能使用缓存来避免跨服务调用。
- 尽可能批量进行跨服务调用并重复使用连接,以最大限度地降低从一个云服务穿过 NAT 并通过负载均衡器进入另一个云服务的相关成本。注意 - 您的应用程序还必须能够处理丢失的连接(在云架构中不可避免)。
- 尽可能监控性能指标以进行测量并识别瓶颈。
- 将您的应用层放在同一个数据中心内,以将跨服务延迟降至最低。
您可能还会发现以下有用的文献:http://azure.microsoft.com/en-us/documentation/articles/best-practices-performance/
关于asp.net-mvc - 如何从 MVC 调用 Web API 无延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25874922/