我开发了一个商业Asp.Net MVC Web 应用程序。该应用程序是标准的,在 IIS Web 服务器上运行并利用 SQL Server 数据库。我们的商业模式是,我们在客户的 Intranet 或数据中心现场部署我们的应用程序。也就是说,我们为每个这样的客户(帐户)提供完整的设置,通常安装在专用的独立服务器中。每个这样的帐户都有自己的私有内容、用户、配置等。
我们希望在 WWW(公共互联网)上扩展和提供我们的服务。经过一番研究,我选择了微软的 Azure 云平台来托管我们的应用程序。通过一些小的努力(主要是教应用程序使用 blob 与 Azure 的文件存储一起工作),我已经成功地使用三种云服务完全部署到云:网站、数据库和文件存储。
请注意,我对两种部署类型(Intranet 和 Cloud)使用相同的代码库,通过对 Debug、Release – Intranet、Staging – Azure、Production – Azure 使用不同的配置。
但是,该应用程序(如现在所写的那样)只能为单个客户帐户提供服务,而我需要我们的云版本来为众多帐户提供服务(希望很多;)……每个帐户都有自己的私有数据集。
问题:我应该在这里采用以下哪种策略?
更改应用程序,使其支持多个帐户。这意味着数据模型(在数据层中添加 Account 实体,将其绑定到所有内容类型等)和业务逻辑中的更改。
为每个帐户在云上创建自己的站点(网站 + 数据库 + 文件存储服务)。这意味着将同一应用程序多次部署到不同的 Azure 服务。
很明显,这里第一种方法所需的开发量非常大,系统稳定性的风险也很大,而第二种方法需要的工作量要少得多。
但是,我不清楚如何管理一组许多相同的服务(应用程序),每个服务(应用程序)服务于不同的客户帐户。我已经开始在这里寻找一些可以帮助我的工具(例如Red Gate),并且希望听到更多。
另一个问题是成本——这样的解决方案是否使用许多云服务而不是只使用少数,比更标准的“一个应用程序为所有帐户”方法成本更高。
谢谢,