WCF中的WSDL和Mex端点之间有什么区别

Tho*_*mas 38 c# wcf wsdl mex

我对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.

UPDATE

你说

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.
Run Code Online (Sandbox Code Playgroud)

你是否意味着在配置中应该没有与mex端点相关的条目,而httpgetenable看起来如下所示?

<serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8080/SampleService?wsdl"/>
Run Code Online (Sandbox Code Playgroud)

你说

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

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

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

Cyb*_*axs 59

1)在遗留Web服务中,我们使用wsdl创建代理.WSDL公开Web服务元数据.在wcf另一个术语是mex端点,它也暴露元数据,但wsdl仍然存在于wcf.i是wcf中的新功能,因此我混淆了wsdl和mex端点之间的区别是什么?

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

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

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

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

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

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

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

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

5)我怎么能禁用mex并通过WSDL公开我的服务

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

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

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

UPDATE

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

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

你说mex是可配置的,但是wsdl不是.ru试图表示mex是可配置的......请讨论mex支持的配置和配置方式.

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

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

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

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