2008-09-19 67 views
3

我们要保持3个Web服务部署的不同步骤分开的web服务,但我们如何在我们的应用程序,它的服务使用定义?我们只是维护3个Web引用,并且如果以某种方式使用它们?你如何保持开发/台/生产

回答

4

正如其他人所提到的,您希望将这些信息存储在配置文件中。事实上,我建议为每个环境使用不同的配置文件。这将解决针对每个环境具有多个设置的不可避免的问题,例如,您可能有单独的Web服务URL和Web服务端口设置,或者有一些额外的设置来处理https /安全性。

一切都表示,一定要解决这些潜在的问题:

如果Web服务做任何事情的应用尤其重要,你可能希望在每个环境嫁给应用到Web服务(即有一个版本的你的应用程序在每个环境中)。当然,当你这样做时,对界面的任何更改都会更容易。

确保它是有目共睹的人哪个版本与您通话的网络服务。

10

不要维护代码中的差异,而是通过配置文件。这样,它们都运行相同的代码,只是用不同的配置值(即端口绑定到,主机名来回答,等)

+0

或运行在不同的主机上。 sys-dev.company.com sys-test.company.com等 – Aaron 2008-09-19 20:48:36

3

我的建议是保持配置文件信息的应用。更好的做法是在构建过程中将给定环境的适当值注入到配置中,假设构建过程具有某种宏替换功能。通过这种方式,您可以为给定环境创建目标版本,而不必在每次为不同环境构建时更改配置。

0

将服务地址和端口放入应用程序的配置中。在服务配置中至少对端口执行相同的操作可能是一个好主意,以便您的开发服务在正确的端口上进行侦听。这样你不必修改你的代码就可以改变你正在访问的服务器/端口。

使用配置,而不是代码开发,阶段之间的切换,以及生产测试非常有价值的。当您部署到生产环境时,您需要确保您部署的是相同的测试代码,而不是稍有不同。你应该在开发和生产之间切换的是配置。

1

所有可以从dev切换到测试的东西都必须是可配置的。如果你有能力建立一个在你的产品安装过程中更新这些变量的过程 - 那就做吧。 (烘烤定制到构建似乎是一种劣质的想法 - 你结束了一群不同的不相容的建立为同一版本的源代码)

0

而是使用Web引用,生成基于Web服务使用WSDL的wsdl.exe代理类。生成的类将具有一个Url属性,可以根据部署步骤(dev,qa,production等)进行设置。

2

当我在与Web服务器的一个项目最后的工作中,我们处理了这个问题,如下所示:

  • msbuild /t:deploy将建立&部署到部分被团队共享的测试环境,并部分开发-具体。 $(SERVER)的默认值是$(USERNAME)
  • msbuild /t:deploy /p:server=test将部署到共享测试环境,非开发人员可以查看。
  • msbuild /t:deploy /p:server=live将部署到活服务器。我想我加了一个额外的握手,就像一个错误,除非你有/p:secret=foo,只是为了确保你不会偶然这样做。