【问题标题】:What was the difference between WSDL & Mex Endpoint in WCFWCF 中的 WSDL 和 Mex Endpoint 有什么区别
【发布时间】:2014-02-26 15:38:42
【问题描述】:

我有几个关于 mex 端点的问题。

  1. 在旧版 Web 服务中,我们使用 wsdl 创建代理。 WSDL 公开 Web 服务的元数据。在 wcf 中,另一个术语是 mex 端点,它也公开元数据,但 wsdl 在 wcf 中仍然存在。我是 wcf 的新手,我对 difference between wsdl & mex endpoint 感到困惑?

  2. httpGetEnabled="false" or httpGetEnabled="true"是什么意思?

  3. 如果我设置httpGetEnabled="false" 那么会发生什么?这是否意味着客户端将无法从其 IDE 添加服务引用?但是如果我设置httpGetEnabled="false",并且看到客户端可以添加服务引用。 httpGetEnabled 设置的作用非常令人困惑。

  4. 一个人说

MEX 和 WSDL 是告诉潜在客户的两种不同方案 关于您的服务的结构。所以你可以选择制作 您的服务合同公开为 (MEX) 或 WSDL。

如果上述陈述为真,请告诉我何时使用 MEX 以及何时使用WSDL?

  1. 如何禁用 mex 并仅通过 WSDL 公开我的服务?

  2. WSDL support all bidning like wshttp,wsdualhttp or tcp etc...如果可能请详细讨论wsdl和mex。

更新

你说

5. How can I disable mex and expose my service only through WSDL?

Do not specifiy a mex endpoint in your config and use httpGetEnabled.

您的意思是说配置中不应该有与 mex 端点相关的条目,并且 httpgetenable 应该如下所示?

<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8080/SampleService?wsdl"/>

你说

WSDL 通常通过 http 或 https 获取您无法真正配置的 URL(例如出于安全限制或 向后兼容性)。 MEX 端点公开元数据 可配置的端点,并且可以使用不同类型的传输, 例如 TCP 或 HTTP,以及不同类型的安全机制。

您说 mex 是可配置的,但 wsdl 不是。 mex is configurable 是什么意思?请讨论哪种配置 mex 支持以及如何配置它。

如果我设置httpGetEnabled="false" then the WSDL将无法生成?

【问题讨论】:

标签: c# wcf wsdl mex


【解决方案1】:

1) 在旧版 Web 服务中,我们使用 wsdl 创建代理。 WSDL 暴露网页 服务元数据。在 wcf 中,另一个术语是 mex 端点,它 还公开元数据,但 wsdl 仍然存在于 wcf 中。我是 wcf 中的新成员 因此我很困惑wsdl和mex有什么区别 端点?

这几乎是一回事,但 mex 旨在支持非 HTTP 协议和高级配置/安全方案。 WSDL 是传统方式,MEX 是 WCF 的新改进版本。

2) httpGetEnabled="false" 是什么意思或 httpGetEnabled="真"

它将通过 wsdl 通过默认 URL 公开元数据,即使您没有为您的服务定义 mex 端点。

3) 如果我设置 httpGetEnabled="false" 那么会发生什么?是不是意味着 该客户端将无法从 IDE 添加服务引用?但是我 设置 httpGetEnabled="false" 并看到客户端可以添加服务引用。 所以我很困惑 httpGetEnabled 是假的还是 真的吗?

只有在启用 httpGetEnabled/httpsGetEnabled 或者您在服务配置中定义了 mex 端点时,客户端才能在 VS 中添加引用。最佳实践是在开发环境中而不是在生产环境中公开元数据。您还可以通过单独的程序集分发服务合同并使用ChannelFactory

4) 一个人说:- MEX 和 WSDL 是两种不同的方案 潜在客户了解您的服务结构。这样你就可以 选择将您的服务合同公开为 (MEX) 或 WSDL。 如果上述陈述属实,那么请告诉我何时使用 MEX 以及何时使用 WSDL?

WSDL 通常通过 http 或 https 获取您无法真正配置的 url 公开(例如出于安全限制或向后兼容性)。 MEX 端点通过可配置的端点公开元数据,并且可以使用不同类型的传输,例如 TCP 或 HTTP,以及不同类型的安全机制。

因此 MEX 的可配置性更高,而 WSDL 与旧版本的客户端和使用 WSDL 的非 .net 客户端的互操作性更高。

5) 我如何禁用 mex 并仅通过 WSDL 公开我的服务

不要在配置中指定 mex 端点并使用 httpGetEnabled

6) WSDL 支持 wshttp、wsdualhttp 或 tcp 等所有的投标...

公开元数据与调用服务完全不同。

更新

您是否试图表示不应该有与 mex 端点相关的条目 在 config 和 httpgetenable 看起来像

是的,您不必指定 mex 端点和 httpGetEnabled。公开元数据只需要一个。不要指定 httpGetUrl,因为这取决于您的托管环境。

您说 mex 是可配置的,但 wsdl 不是。你想表达什么意思 mex 是可配置的...请讨论什么样的配置 mex 支持和如何配置。

MEX 端点是允许客户端通过使用 SOAP 消息而不是 http get 请求来接收服务的元数据的特殊端点。您可以创建可以通过 http、https、tcp 甚至命名管道访问的 MEX 端点。 HttpGetEnable 允许你通过 HTTP GET 方法暴露元数据,通常是服务的地址,后缀为'?wsdl'

MEX 和 WSDL 都输出几乎相同的东西。

在大多数情况下,不需要 MEX 端点 - 通常使用带有 http get 的 WSDL 就足够了。

我理解你理解这部分的意图,但不要花太多时间在这上面:还有很多其他复杂的功能!

【讨论】:

  • 我在阅读您的回答后更新了我的问题。很少出现混淆......所以请查看我更新的部分并相应地提供您的反馈。谢谢
  • 感谢您的回复。您说:- 不要指定 httpGetUrl,因为这取决于您的托管环境......如果我指定 httpGetUrl 会有什么问题。为什么你说不要指定 httpGetUrl?请解释。谢谢
  • 默认情况下以 wcf 或二进制的 xml 模式传输数据?你能简要介绍一下每种类型绑定的数据传输类型,如 http、tcp、msmq、net-pipe 等吗?
  • 这是一篇关于相同内容的好博文...blogs.microsoft.co.il/idof/2011/08/10/…
  • gr8 @Cyber​​maxs !!你能列出那些复杂的功能吗?
【解决方案2】:

MEX 端点是特殊的端点,它允许客户端通过使用 SOAP 消息而不是仅使用 http get 请求(即 httpGetEnabled="true")来接收服务的元数据。您可以创建可以通过 http、https、tcp 甚至命名管道访问的 MEX 端点。

在调用 MEX 端点的 GetMetadata 操作时您将收到的响应将包括 WSDL 的内容以及链接到它的所有 XSD 文件。

【讨论】:

  • 困惑:你说“MEX 允许客户端通过使用 SOAP 消息而不是 http get 请求来接收服务的元数据”你又说“可以通过 http、https 访问的 MEX 端点”你尝试了什么说....不清楚。
  • 嗨,Thomas,我的意思只是 http..感谢您的指点,我更新了它
猜你喜欢
  • 2011-03-02
  • 2013-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 2014-09-17
  • 1970-01-01
  • 2014-10-06
相关资源
最近更新 更多