WSDL和amp;之间的区别是什么? WCF中的Mex端点

时间:2014-02-03 08:17:40

标签: c# wcf wsdl mex

我对mex端点有几个问题。

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

  2. 感到困惑
  3. httpGetEnabled="false" or httpGetEnabled="true"是什么意思?

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

  5. 一个人说

  6.   

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

    如果上述说法属实,请告诉我何时使用MEX&何时使用WSDL?

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

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

    3. 更新

      你说

      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获取网址公开(比如安全限制或   向后兼容)。 MEX端点公开元数据   可配置的端点,可以使用不同类型的传输,   例如TCP或HTTP,以及不同类型的安全机制。

      你说mex是可配置的,但是wsdl不是。你mex is configurable是什么意思?请讨论mex支持的配置类型以及配置方式。

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

2 个答案:

答案 0 :(得分:56)

  

1)在遗留Web服务中,我们使用wsdl创建代理。 WSDL暴露Web   服务元数据。在wcf另一个术语来自mex端点   也暴露了元数据,但wsdl仍然存在于wcf中。我是wcf的新手   因此我很困惑wsdl和amp;之间的区别是什么? MEX   端点?

这是完全相同的事情,但mex旨在支持非HTTP协议和高级配置/安全方案。 WSDL是传统方式,MEX是使用WCF的新改进版本。

  

2)httpGetEnabled =“false”或者是什么意思   httpGetEnabled = “真”

即使您没有为您的服务定义mex端点,它也会通过defautl url通过wsdl公开元数据。

  

3)如果我设置httpGetEnabled =“false”那么会发生什么?这是什么意思   该客户端将无法从IDE添加服务引用?但是我   设置httpGetEnabled =“false”并看到客户端可以添加服务引用。   所以对于我来说,httpGetEnabled是假的还是非常混乱   是吗?

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

  4)一个人说: - MEX和WSDL是两种不同的方案   有关您服务结构的潜在客户。所以你可以   选择将您的服务合同公开为(MEX)或WSDL。   如果上述说法属实,请告诉我何时使用MEX&amp;什么时候使用WSDL?

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

因此,MEX更易于配置,而WSDL与使用WSDL的旧版客户端和非.NET客户端更具互操作性。

  

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

请勿在配置中指定mex端点并使用httpGetEnabled

  

6)WSDL支持所有出价,如wshttp,wsdualhttp或tcp等......

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

<强>更新

  

你试图意味着应该没有与mex端点相关的条目   在config和httpgetenable中看起来像

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

  

你说mex是可配置的,但是wsdl不是。你试图表达什么   mex是可配置的......请讨论mex的配置类型   支持&amp;如何配置。

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

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

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

我理解你有意理解这一部分,但不要花太多时间来讨论这个问题:还有很多其他复杂的功能!

答案 1 :(得分:0)

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

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