【问题标题】:WCF Service @ N-Tier App: Switching between development/production?WCF Service @ N-Tier App:在开发/生产之间切换?
【发布时间】:2013-01-09 19:51:19
【问题描述】:

上下文

我们使用 .NET Stack 开发了端到端的应用程序。所以,假设我们正在管理这样的事情:

WPF 客户端 网络服务:

  1. 开发)纯引用(直接调用 VS 内的 WCF 服务项目,未部署在 IIS 中)
  2. 生产)远程Web服务[IIS@远程服务器,需要VPN连接]

Web 服务 数据库:

  1. 开发)SQL Server Express本地DB[@开发机]
  2. 生产)SQL Server DB [@生产服务器,与 WS 相同]

请注意,我已经实现了“手动方式,正确方式”(http://www.code-magazine.com/Article.aspx?quickid=0809101)。因此,单独的合同/客户代理等等......

问题

我怎样才能以优雅的方式获得如前所述的设置?我的意思是,Web 服务 数据库很简单,因为我可以使用 web.config 转换来在调试和发布之间切换连接字符串。但是,如何自动将“连接”从客户端应用切换到 Web Service?

在生产中,我使用了对代理的引用,并在 app.config 文件中描述了一个端点。我想在开发中我只需要一个对 Web 服务本身的简单引用。 [我应该在调试/发布配置之间添加/删除引用吗?如果是,如何以编程方式实现? ...我完全迷路了]。

感谢你们的时间! ;)

编辑:

正如@AlexanderBalte 所建议的,开发行为只是对方法的直接调用。我在主开发机器上没有应用服务器。

【问题讨论】:

  • 我认为您只需将服务端点 url 更改为生产中使用的。
  • 您的开发行为是否只是直接调用方法而不与 Web 服务交互?
  • 对服务端点配置使用配置转换有什么问题?如果您担心 App.config 上的转换,请查看:stackoverflow.com/questions/3004210/…
  • 正如@AlexanderBalte 建议的那样,我的开发行为只是对方法的直接调用。我在主开发机器中没有应用服务器,因此......没有端点。事实上,这就是问题的重点:P

标签: c# asp.net .net wcf


【解决方案1】:

就像prthrokz,评论说,我们只是切换端点。使用conditional compilation symbols 尽可能简单(但并不简单):

    WCFServiceClient client = new WCFServiceClient();
#if DEBUG
    client.Endpoint.Address = new EndpointAddress(new Uri("http://devSrv/WCFService.svc"));
    client.Endpoint.Name = "Dev";
#else
    client.Endpoint.Address = new EndpointAddress(new Uri("http://prodSrv/WCFService.svc"));
    client.Endpoint.Name = "Prod";
#endif

【讨论】:

    【解决方案2】:

    据我了解, 开发行为只是直接调用方法,生产行为是通过生成的代理与 Web 服务交互。

    在开发和生产中,您分别使用不同的类,但使用相似的方法集。

    也许我们应该创建另一个代理接口,其中包含 Web 服务所具有的精确方法集。 该接口将有两种实现:一种是代理直接方法调用,另一种是 Web 服务方法调用。

    此外,您还需要编写一个Factory 类,该类将根据您的 app.config 中的某些配置为您提供代理接口的具体实现。

    【讨论】:

      猜你喜欢
      • 2013-12-14
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多