2009-12-26 145 views
2

ASP.NET MVC如何处理或提供使用多个环境创建应用程序的方式?例如:ASP.NET MVC和多种环境

  1. 开发环境(本地计算机,可能是通过内置的Web服务器上运行,并谈论到本地数据库)
  2. 测试(运行针对带有示例数据预加载DATABSE,虽然这部分可能是跳过,可以用来嘲笑)
  3. 生产数据库与真实数据
  4. 一个真正的服务器上

的Ruby on Rails有环境的理念和“自动地”可以,如果你在开发或生产的时候,演绎所以你可以指定您的连接信息(connec在一个配置文件和框架动态拉动适当的一个。 .NET MVC有没有类似的方法?如果不是,那么专业开发人员如何使用.NET MVC处理不同的环境?

我能想到的唯一方法是手动添加一个“环境”全局方法(或使用枚举,或类似的东西,也许这是用于像状态模式的东西?)并存储不同的连接字符串放在web.config文件中,然后创建一个所有数据访问类派生出的基类,从而为获取当前环境的连接字符串提供了一种方法;如果需要将应用程序投入使用,则必须将其设置为生产。

还有别的办法吗?我所见过的大多数.NET MVC视频和文章都不用单独的环境,但只使用开发数据库,​​并没有说明在生产环境中如何实现。

回答

2

我想说这实际上是贵公司内部流程的问题。由于每个公司都有点不同,很难有一个“正确”的通用方法来支持开发/测试/ alpha /生产和/或其他环境。

一种方法:创建一个提供基于在安装过程中选择的环境中正确的连接字符串安装程序。

另一种方法:系统管理编辑web.config文件,在安装过程中提供正确的连接字符串。

另一种方式:连接字符串存储在系统注册表中。

即使另一个奇数方式:您有在web.config中所有环境所有的连接字符串,然后在一个的appSettings设定告诉你使用哪一个。

根据客户端上,我已经做了所有的这些。还有更多,但这些更受欢迎。

(一个客户想要存储在数据库本身连接柱,真的。)

+0

我同意,但在这种情况下,我是我自己的公司(网络应用程序启动),所以我从来没有给它太多的想法:) – 2009-12-26 22:41:13

0

有一个发布向导(在Visual Studio)至极让你改变web.config中的零件发布版本automaticaly。这恰好是你所问的功能。没有魔力。

0

我们所做的工作在我们的自动生成过程(哈德森)是,我们这取决于环境的构建是在web.config中改变的值。不幸的是,没有一种不可思议的方式来做到这一点。

0

您可以为数据库使用别名。您只需将这些别名指向不同环境中的不同服务器即可。如果我记得没错,存储在注册表下的HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSSQLServer \ Client \ Connect下。然后在连接字符串中使用别名。

回应Jason的回应: 我们使用企业库环境来配置不同的环境参数,并通过msbuild调用合并配置工具,为每个环境生成不同的配置。部署过程根据要安装的环境选择正确的配置文件。

0

对于部署,我认为这是操作系统的要求,创建多个配置并在发布中选择不同的配置。这些被称为转换,它们在web.config上运行。其中至少有三个发布配置文件,一个用于开发,测试和产品。用这种方法可以改变的不仅仅是连接字符串。可以打开自定义错误,关闭调试并更改配置变量的值。我强烈推荐它。

我有类似的问题。我有一个日志表阅读器。我希望它在开发,测试和生产数据库中读取日志表。主要困难在于我的用户帐户没有权限查看测试和生产。这是一个愚蠢的安全事情。我在应用程序中扮演的用户确实有权限。我正在努力告诉MVC使用模拟用户构建测试和生产模型。