如何处理两个数据库之间的切换

本文关键字:之间 数据库 两个 何处理 处理 | 更新日期: 2023-09-27 18:25:01

假设我将在ASP.NET MVC 4中创建项目,用户应该能够轻松地在测试/演示数据库和生产数据库之间切换。两个数据库将具有相同的模式,但用户和数据不同。

我应该简单地使用具有不同连接字符串的web.config的两个版本,并将其部署到两个独立的IIS实例吗?

我还考虑过在登录期间从下拉列表中选择数据库,所以我只需要一个IIS实例和一个带有两个连接字符串的配置。除了处理更复杂的代码外,我还能从后一种方法中获得什么吗?

如何处理两个数据库之间的切换

在我们的系统中,我们使用web.config转换,并在项目中为我们的两个不同服务器(开发和生产)使用MSDeploy和发布配置文件。

要部署到开发人员,只需单击"发布"并选择"开发人员服务器"发布配置文件即可。生产上也是如此,但您可以从发布配置文件中选择"生产服务器"。

Dev和Production是两个不同的物理服务器,这是理想的。如果你做了一些需要重新启动开发服务器以测试一些重大更改或新更新等的事情,你不希望生产随之下降,该怎么办?

我们的环境是虚拟化的,所以很容易创建生产服务器和开发服务器。实际上,我们创建了一个开发服务器,一旦完成,我们就根据开发服务器的快照进行生产,所以它们基本上是相同的,有不同的代码库。

我们还在两台服务器上都安装了Visual Studio远程调试器,这样我们就可以调试代码,而无需在它们上安装Visual Studio。

在两个不同的服务器上,它们有不同的url,例如

something.com
login.something.com
admin.something.com
dev.something.com
dev.login.something.com
dev.admin.something.com

现在,我们也使用twitter引导带和out设计,左边有2列,右边有2列用于间距。因此,当在dev服务器上时,我在列空间中垂直渲染巨大的"dev"图像。

我还应该提到源头控制。我们使用源代码管理服务器的SubVersion和带有Visual SVN VisualStudio扩展的Tortoise SVN来保持我们的项目处于源代码管理中。

它的设置使得任何有权访问代码的开发人员都可以访问存储库上的Get,并在visual studio 2013中打开它,然后单击发布。代码很容易从开发人员转移到开发人员。

我们还有一些网站使用的版本化资产,我们也有使用Tortoise SVN设置的dev/prod服务器。例如,EmployeePhotos处于源代码管理中,开发人员可以向SVN添加新照片,然后进入服务器,进入包含这些照片的虚拟目录,这些照片就是最新的。也可以处理删除。如果我们从源代码管理中删除一个文件夹并对其进行更新,SVN将删除已删除的图像。

抛开所有代码不谈,我将分别托管这两个代码。当有人认为自己在篡改测试数据时,他们篡改生产数据的可能性很高,因此最好有明确不同的URL。我甚至可能在你的主布局中有视觉提示(颜色差异、主页头的差异等),让用户清楚地知道他们在哪里,以及他们应该在那里做什么。

即使你本身并不担心这一点,但你是对的,内部管理也会更加复杂,而且容易出错。我会避开它。