【问题标题】:web service, service reference, command line wsdl creationWeb 服务、服务参考、命令行 wsdl 创建
【发布时间】:2016-01-05 14:24:04
【问题描述】:

我有一个使用 .NET ASMX 服务进行通信的应用程序。我见过一些开发人员通过命令行使用wsdl 命令来生成强类型类,这些类不依赖于 web.config 中的端点。

为什么有些人会使用wsdl 命令行而不是service reference(右键单击-> 添加服务引用)?你会怎么做?

【问题讨论】:

  • 您确实可以毫无问题地使用“添加服务引用”,如果您需要代理调用不同的 URL,只需使用允许您指定远程地址的构造函数进行实例化。

标签: c# web-services wcf soap wsdl


【解决方案1】:

我认为,如果您需要在设计时与未知的 WS 交谈,您解释的技术应该很有用。

我没有看到任何其他使用它的好理由,因为它提供了极大的灵活性,但这种灵活性很容易成为痛苦(如果您的解决方案中没有严格的架构,风险是引入运行时错误,在设计时很难找到)

【讨论】:

  • wsdl 命令生成强类型类。这不会有任何运行时错误,除非服务发生了变化,如果发生了变化,那么无论哪种方式你都会遇到麻烦。
  • 对不起,如果我错过了您的问题,我的意思是,如果您需要将数据传输到未知 WS,您将在运行时按照您的描述动态生成类(因此在您的设计器中没有类自动生成)。您获得了极大的灵活性,但另一方面也为大量问题打开了大门(所以如果不是绝对必要的话,我认为这不是一个好主意)
  • 啊,什么样的问题?
  • EG :每次在运行时生成类时,都会在应用程序域中造成污染。要做到这一点,您需要在单独的 AppDomain 中生成类并在需要重新生成此类时卸载它,但是 AppDomain 之间的通信很痛苦
【解决方案2】:

我这样做的一个原因是我可以模拟一个外部 Web 服务并从中返回测试数据。 使用wsdl 命令,我可以创建我期望调用的 Web 服务的确切版本(例如,由于存在于另一个网络上,它可能不可用),然后从可用的例程中返回这些“虚拟”响应.通过仅添加服务引用,您无法对此进行任何控制。

【讨论】:

    猜你喜欢
    • 2013-09-26
    • 2012-08-26
    • 2011-01-10
    • 2014-07-19
    • 2010-11-15
    相关资源
    最近更新 更多