【问题标题】:How do you maintain separate webservices for dev/stage/production您如何为开发/阶段/生产维护单独的 Web 服务
【发布时间】:2010-09-11 10:52:31
【问题描述】:

我们希望为部署的不同步骤维护 3 个 Web 服务,但是我们如何在应用程序中定义要使用的服务呢?我们是否只维护 3 个网络引用并 ifdef 以某种方式使用它们?

【问题讨论】:

    标签: c# .net asp.net web-services


    【解决方案1】:

    当我上次使用 Web 服务器进行项目时,我们处理此问题如下:

    • msbuild /t:deploy 将构建和部署到一个测试环境,该环境部分由团队共享,部分是特定于开发人员的。 $(SERVER) 的默认值为 $(USERNAME)
    • msbuild /t:deploy /p:server=test 将部署到共享测试环境,非开发人员可以查看。
    • msbuild /t:deploy /p:server=live 将部署到实时服务器。我想我添加了一个额外的握手,就像一个错误,除非你有 /p:secret=foo,只是为了确保你没有意外地这样做。

    【讨论】:

      【解决方案2】:

      不使用 Web 引用,而是使用 wsdl.exe 从 Web 服务 WSDL 生成代理类。生成的类将具有一个 Url 属性,可以根据部署步骤(开发、质量保证、生产等)进行设置。

      【讨论】:

        【解决方案3】:

        仅供参考,这是昨天在这里解决的:

        How do you maintain java webapps in different staging environments?

        【讨论】:

        • 我很确定 java 和 .net 处理 web 服务配置的方式不同,但那里仍然有一些很好的信息。
        【解决方案4】:

        所有可以从 dev 到 test 到 prod 的东西都必须是可配置的。如果您有能力在产品安装过程中构建更新这些变量的过程,那就去做吧。 (将自定义内容烘焙到构建中似乎是一个低劣的想法——您最终会为同一版本的源代码获得一堆不同的不兼容构建)

        【讨论】:

          【解决方案5】:

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

          话虽如此,请确保您解决了这些潜在问题:

          如果 Web 服务对应用程序做任何特别重要的事情,您可能希望将应用程序与每个环境中的 Web 服务结合起来(即在每个环境中都有一个应用程序版本)。当然,以这种方式对界面进行任何更改都会更容易。

          确保别人清楚您正在使用的网络服务版本。

          【讨论】:

            【解决方案6】:

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

            【讨论】:

            • 或者在不同的主机上运行。 sys-dev.company.com sys-test.company.com 等
            【解决方案7】:

            将服务地址和端口放入应用程序的配置中。在服务的配置中做同样的事情可能是个好主意,至少对于端口,这样您的开发服务就可以在正确的端口上进行侦听。这样您就不必为了更改您要访问的服务器/端口而修改代码。

            使用配置而不是代码在开发、阶段和生产之间切换对于测试非常有价值。当您部署到生产环境时,您希望确保部署的代码与测试过的完全相同,而不是稍有不同。您应该在开发和生产之间进行更改的只是配置。

            【讨论】:

              【解决方案8】:

              我的建议是将此信息保存在应用程序的配置文件中。更好的是在构建过程中将给定环境的适当值注入到配置中,假设您的构建过程具有某种宏替换功能。通过这种方式,您可以为给定的环境创建有针对性的构建,而不必在每次为不同的环境进行构建时都更改配置。

              【讨论】:

                猜你喜欢
                • 2010-09-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-09-29
                • 1970-01-01
                • 2016-11-14
                • 1970-01-01
                • 2011-02-24
                相关资源
                最近更新 更多