asp.net-mvc - 如何从 MVC 调用 Web API 无延迟?

标签 asp.net-mvc asp.net-web-api azure-cloud-services azure-cosmosdb

我正在考虑将使用 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/

相关文章:

c# - ASP NET MVC 3 - 如何首先使用两个表和 Database.Setinitializer 在代码中重置数据库?

asp.net - Controller.执行渲染为没有内容类型的文本文件

c# - 如何从控制台应用程序使用带有表单例份验证的 Web API Restful Web 服务?

android - ASP.NET Web API 身份验证

c# - 从 Azure Web 角色中,检查进程是否正在辅助角色中运行

Html.BeginForm 不会返回 POST 操作结果 - RAZOR

c# - ASP.NET MVC 5 中的 DateCreated 和 DateModified

c# - 使用 XMLHttpRequest 将带有参数的数据发送回 Web 服务器

azure - 无法连接到 Azure 公共(public) IP/负载均衡器(连接被拒绝)

Azure 持续部署 - 使用 VSO 设置发布