假设我要在ASP.NET MVC 4中创建项目,用户应该能够轻松地在测试/演示数据库和生产数据库之间切换。两个数据库都具有相同的模式,但用户和数据不同。
我应该只使用两个版本的web.config和不同的连接字符串,并将其部署到两个单独的IIS实例吗?
我还考虑过在登录时从下拉列表中选择数据库,所以我只需要一个IIS实例和一个带有两个连接字符串的配置。除了更复杂的代码之外,我能从后一种方法中获得任何东西吗?
答案 0 :(得分:0)
除了所有代码之外,我会分别托管这两个代码。当人们认为他们正在弄乱测试数据时,有可能搞砸了生产数据的可能性很高,因此最好有明确不同的URL。我甚至可能在你的Master布局中有视觉提示(颜色差异,主页面标题的差异等),以便向用户说明它们在哪里以及它们应该在那里做什么。
即使你并不担心这一点,你也是正确的,内部管理也会更加复杂,并且容易出错。我会避开它。
答案 1 :(得分:0)
在我们的系统中,我们使用web.config转换并在项目中将MSDeploy与发布配置文件一起用于我们的两个不同的服务器Dev和Production。
要部署到Dev,只需单击“发布”并选择“开发服务器”发布配置文件即可。生产中也是如此,但您从发布配置文件中选择“Production Server”。
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引导带,外部设计左侧有2列,右侧有2列用于间距。因此,当在开发服务器上时,我会在列空间中垂直渲染巨大的“DEV”图像。
我还应该提到源代码控制。我们使用SubVersion作为源控制服务器,使用Tortoise SVN和Visual SVN VisualStudio扩展来保持我们的项目在源代码管理中。
设置到任何允许访问代码的开发人员都可以访问存储库并在visual studio 2013中打开它并单击发布。代码很容易从开发人员转移到开发人员。
我们还有一些网站使用的版本化资产,我们也使用Tortoise SVN设置dev / prod服务器。例如。 EmployeePhotos是源代码控制,开发人员可以将新照片添加到SVN并进入服务器并进入包含它们的虚拟目录,并且它们是最新的。处理删除也是如此。如果我们从源代码管理中删除文件夹并对其进行更新,SVN将删除已删除的图像。