architecture - 我可以构建一个 Web 应用程序,以便将其部署到云或专用服务器/VPS 上吗?如何?

标签 architecture azure message-queue cloud cqrs

是否有一种架构足够通用,可以以最小的更改部署到云服务器或专用(或 VPS)服务器?显然,配置会发生变化,但我宁愿让应用程序的其余部分保持一致,保留一个可维护的代码库。

该应用程序将是 ASP.NET 和/或 ASP.MVC。我的开发环境是 VS 2010。云可能是也可能不是 Azure。专用或 VPS 将是 Win Server 2008。可能。

这不是一个面向公众的网站。我想到的网络应用程序将为每个客户端单独部署。有些客户规模较小,有些客户更喜欢应用程序在本地 Intranet 上运行,而不是在 Web 上运行。其他客户可能更喜欢使用云方法作为黑盒解决方案。该应用程序可能会运行几个小时,也可能会无限期运行,这取决于客户和项目。除了部署场景之外,这些应用程序或多或少是相同的。

正如您从标签中看到的那样,我假设基于消息的架构可能是最通用的,但我也习惯了对这些东西的错误。

欢迎所有有关通用架构和具体解决方案的建议和指示。

最佳答案

是的,这是可能的。 Web 应用程序 istelf(MVC 或 Webforms)可能会保持不变(配置更改)。

如果您考虑将 Windows Azure 作为“云”部署选项,那么需要考虑的主要事项是:

网络应用:

  • session 管理:您必须使用网络场友好的方法(例如,不能使用内存服务器端 session 状态)
  • 带宽使用:当您部署到云端时,延迟会高于本地 100%,而且您还需要为来回发送的位数更多而支付更多费用。开发更节俭的应用程序会受到金钱激励。
  • 身份验证机制:如果您想提供 SSO,您可能需要转向基于声明的方法(使用 WIF)。这在很大程度上是您可以隔离和更改的内容(例如 Windows 本地集成安全性、基于云的声明)
  • 使用所有标准提供商(例如个人资料、成员(member)资格、跟踪等)。所有这些都有 Win Azure 实现,因此您只需更改它们即可。

数据:

  • 实现最大可移植性的最简单方法是使用 SQL Azure,它是 SQL Server 的(大)子集。
  • 如果您使用其他存储系统(例如 Windows Azure 表等),那么您需要抽象应用中的所有数据访问(工作量更大)
  • 除了 SQL Azure 中不提供的某些功能(例如 SQLCLR、SQL Broker)之外,数据库大小也有限制(当前最大 = 50GB)。因此,如果您客户的数据库增长超出了这个范围,您需要对数据库进行分区(这会增加更多的复杂性,但这是可行的)

管理:

  • 如果您使用标准方法进行日志记录和跟踪(例如 Systems.Diagnostics 等),则应用程序将基本保持不变。您的流程(以及您的脚本等)必须进行调整

提供更多详细信息 here

我不知道您试图考虑消息队列的用途,但您也可以抽象这些内容(例如,用于本地的 MSMQ、用于云的 Windows Azure 队列)。您必须适应一些语义差异,但这是可行的。

关于architecture - 我可以构建一个 Web 应用程序,以便将其部署到云或专用服务器/VPS 上吗?如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3049793/

相关文章:

c# - 运算符和继承

c - 通过消息队列发送缓冲区

python - 如何使用三个使用公共(public)模块的应用程序构建一个 python 项目

c++ - 如何在每个新模块中自动注入(inject)辅助类?

java - 在 Windows Azure 上部署 Play 2.3.X 应用程序

python - Azure 应用服务无法在嵌套文件夹中找到 Flask 应用程序。即使有 GUnicorn

message-queue - NATS - 只需一个订阅者即可对微服务架构中发布的事件采取行动

SQL Server 服务代理 - 消息超时

sql - 如何使用 UUID 但保持与现有数据库 ID 兼容?

powershell - 删除其中没有资源的 Azure 资源组