我们构建了一个ASP.NET MVC项目(使用EF),该项目运行在我们的客户、一些大企业的私有服务器上(我们称之为e版)。现在,我们想要构建一个版本,它可以运行在云上为其他小公司(c版)。
E版非常直截了当:一个ASP.NET MVC网站,在App_data中包含一些.mdf文件( Server就足够了)。
对于c版,有一些解决方案:
对于网站应用程序本身:
1.1将每个应用程序创建为一个独立的网站--这是一个昂贵且不可维护的网站,因此无需考虑。
1.2为所有企业提供单一网站托管服务,听起来不错。(我说得对吗)
对于数据库来说,它非常复杂。
2.1在所有表中添加“企业Id”。听起来很糟糕,因为a.表现可能很差。b.安全难以维持。c. e版和c版的代码将不同,因为新添加的Id。
2.2为每个企业创建不同的App_Data文件夹,同一个网站通过编程连接字符串访问不同的文件夹。网站和表格在e版和c版上都是一样的。
2.2听起来不错,但有一个大问题:在Azure这样的云中(我不熟悉),我认为它没有运行。相反,这些“不同的文件夹”将是“不同的db实例”,这是非常昂贵的,考虑到可能有数百个试用企业。一种方式是租一个“旧风格的主机服务器”,它基本上是一个带有windows服务器的虚拟机,所以我可以安装。但这听起来真的不是什么时尚。
2.3在名称中创建带有编程前缀的表,因此为不同的企业创建一个db但多个表。但是还有另一个问题:我首先使用EF代码,所以在编译之前,表的所有名称都是在表(“TableName”)中定义的。
在阅读了"将MVC应用程序迁移到AZure应用服务和云服务“之后,我会说Azure应用服务将是我的首选。
那么,哪一个应该是最好的策略,还是我错过了一些更好的解决方案?谢谢。
https://stackoverflow.com/questions/59540979
复制相似问题