【问题标题】:How to use existing in memory WSDL in order to create WCF service?如何使用内存中现有的 WSDL 来创建 WCF 服务?
【发布时间】:2012-10-04 06:54:41
【问题描述】:

1) 我知道当我们想使用现有的 WCF 服务时,WSDL 文件是在客户端生成的。这是在我们使用 Visual Studio 中的“添加服务引用...”选项的情况下。我不明白的是——当我们使用客户端代理调用 WCF 服务时,究竟什么时候使用了 WSDL 文件?

2) 在创建WCF服务的过程中,我不知道如何使用或连接或附加内存中存在的WSDL。我的意思是我应该写什么?比如:

Uri mexAddress = new Uri("http://localhost:2240/Service1.svc?wsdl");

或:

Uri mexAddress = new Uri("http://localhost:2240/Service1.svc?" + SomeName.wsdl);

或:

?

提前谢谢你。

戈兰

【问题讨论】:

    标签: wcf wsdl


    【解决方案1】:

    1) 我知道 WSDL 文件是在我们想要的时候在客户端生成的 使用现有的 WCF 服务。这是在我们使用“添加服务”的情况下 参考...”Visual Studio 中的选项。我不明白的是 - 在 当我们使用客户端代理时,确切使用 WSDL 文件的时间 调用 WCF 服务?

    不,wsdl 是在服务器端生成的。它是描述服务的基于 XML 的文档。它指定服务的位置以及服务公开的操作或方法。添加服务引用时,Visual Studio(或 svcutil)保存此 wsdl 的副本,仅用于生成客户端代理。 wsdl 在那一代之后将永远不会被使用,并且不会嵌入到资源中。您也可以在没有 wsdl 的情况下创建客户端代理。

    2) 我不知道如何使用或连接或附加内存中的现有 WSDL 在创建 WCF 服务的过程中。我的意思是我应该怎么做 写?

    不清楚。你的意思是 ?在服务器端,当您激活元数据的发布时,WCF 将自动管理 WSDL 的创建(它也是可扩展的)。

    【讨论】:

    • 1) 好的。我注意到客户端的 WSDL 并且意味着它只存在于那里。但现在很清楚它是在服务器端生成并复制到客户端以创建客户端代理。谢谢。
    • 2) 我们有一个项目,我们只从客户那里获取 XSD 文件。没有 WSDL,没有 WCF 服务。我们应该基于固定的 XSD 文件和服务契约在内存中创建 WSDL:Message CustomAction(Message message)。第一个问题是如何做到这一点?第二个问题是如何使用在内存中生成的 WSDL 以编程方式创建 WCF 服务?如果您可以提供帮助,如果您需要更多空间,可以将其写为新答案。谢谢。
    【解决方案2】:

    客户端在运行时不使用 WSDL 来调用服务。它仅在设计时用于生成客户端代理代码以调用服务。

    【讨论】:

    • 好的。我已经明白了。谢谢。进一步。我们有一个项目,我们只从我们的客户那里获取 XSD 文件。没有 WSDL,没有 WCF 服务。我们应该基于固定的 XSD 文件和服务契约在内存中创建 WSDL:Message CustomAction(Message message)。第一个问题是如何做到这一点?第二个问题是如何使用在内存中生成的 WSDL 以编程方式创建 WCF 服务?如果您可以提供帮助,如果您需要更多空间,可以将其写为新答案。谢谢。
    • @tesicg。如果您的客户端为您提供 XSD 文件,而不是在内存中构建 WSDL,我建议您基于 XSD 构建一个具体的 WSDL(而不是在内存中进行)。当您拥有 WSDL 文件时,然后基于它创建您的代理(使用添加服务引用)。如果您不想依赖添加服务引用,则可以基于 XSD 生成合同类,并在手工制作的代理类中使用它们来调用服务。这篇 SO 文章讨论了 XSD.EXE stackoverflow.com/questions/5217665/…
    • 好的。如何基于 XSD 文件创建 WSDL?
    • @tesicg。那可能是一个新问题! :) 当我需要这样做时,我使用了一个名为oxygenxml.com 的工具。我认为可以下载功能齐全的试用版。这里还有一个 SO 问题stackoverflow.com/questions/920086/…。基本上,WSDL 需要包含 XSD 并使用其中的类型来定义服务方法契约。
    • 谢谢尼克。我已经能够使用 WSCF.blue 工具从 XSD 文件创建 WSDL。但是,关键是我们需要以编程方式进行,因为我们将拥有大量 XSD 文件,如果我们手动进行,将花费大量时间。所以我们需要自动化这个过程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2012-08-25
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    相关资源
    最近更新 更多