我对mex端点有几个问题。
在旧版Web服务中,我们使用wsdl创建代理。 WSDL公开Web服务的元数据。在wcf中,另一个术语是mex端点,它也暴露了元数据,但wsdl仍然存在于wcf中。我是wcf的新手,我对difference between wsdl & mex endpoint
?
httpGetEnabled="false" or httpGetEnabled="true"
是什么意思?
如果我设置httpGetEnabled="false"
那么会发生什么?是否意味着客户端无法从IDE添加服务引用?但是如果我设置httpGetEnabled="false"
,并且看到客户端可以添加服务引用。 httpGetEnabled
设置的作用非常混乱。
一个人说
MEX和WSDL是告诉潜在客户的两种不同方案 关于你的服务结构。所以你可以选择制作 您的服务公共合同(MEX)或WSDL。
如果上述说法属实,请告诉我何时使用MEX&何时使用WSDL?
如何禁用mex并仅通过WSDL公开我的服务?
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获取网址公开(比如安全限制或 向后兼容)。 MEX端点公开元数据 可配置的端点,可以使用不同类型的传输, 例如TCP或HTTP,以及不同类型的安全机制。
你说mex是可配置的,但是wsdl不是。你mex is configurable
是什么意思?请讨论mex支持的配置类型以及配置方式。
如果我设置httpGetEnabled="false" then the WSDL
将无法生成?
答案 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文件。