首页 > 解决方案 > 将asp.net mvc项目从企业迁移到云端的最佳数据库策略(Azure优先)

问题描述

我们构建了一个 ASP.NET MVC 项目(使用 EF),该项目运行在我们客户的私有服务器上,一些大企业(我们称之为 e 版)。现在我们想为其他小公司构建一个可以在云上运行的版本(c 版)。

e 版非常简单:一个 ASP.NET MVC 网站,其中.mdf包含App_data.

对于c版,有一些解决方案:

对于网站应用程序本身:

1.1 将每个应用程序创建为独立网站 --- 成本高且不可维护,因此不予考虑。

1.2 为所有企业提供单一的网站托管服务,听起来不错。(我对吗?)

对于数据库,它相当复杂。

2.1在所有表格中添加“企业ID”。听起来很糟糕,因为 a. 性能可能很低。湾。安全性难以维护。C。e版和c版的代码会有所不同,因为新添加的Id。

2.2App_Data为每个企业创建不同的文件夹,同一个网站通过程序化连接字符串访问不同的文件夹。e版和c版的网站和表格都是一样的。

2.2 听起来不错,但有一个大问题:在像 Azure(我不熟悉)这样的云中,我认为它没有运行 SQL Server Express。相反,那些“不同的文件夹”将是“不同的数据库实例”,考虑到可能有数百个试用企业,这是非常昂贵的。一种方法是租用“老式主机服务器”,它基本上是一个带有 Windows 服务器的虚拟机,所以我可以安装 SQL Server Express。但这听起来真的不是一种时尚。

2.3创建名称中带有程序前缀的表,因此一个db但针对不同企业的多个表。但是还有一个问题:我是先用EF代码,所以所有的表名都是在编译前定义在[Table("TableName")]里面的。

在阅读了“将 MVC 应用程序迁移到 AZure Appservice 和云服务”之后,我想说 Azure 应用程序服务将是我的首选。

那么,哪一个应该是最好的策略,还是我错过了一些更好的解决方案?谢谢。

标签: asp.net-mvcazure

解决方案


这是一个意见问题,很可能会被关闭。但有几点你可能不知道:

  • 弹性数据库客户端库 - 帮助管理 N 个不同的客户数据库。我个人没有使用过这个库。看看这里
  • 弹性池 - 如果您最终管理多个数据库,则不必为每个数据库支付机架费。如果峰值因客户端而异,您可以定义弹性 DTU 池并为其付费。池中的所有数据库都来自同一个池。对于大量的数据库,这可以大大降低成本。文档在这里

推荐阅读