首页 > Web开发 > 详细

[Programming WCF Services]Chapter 1. WCF Essentials - Metadata Exchange

时间:2016-03-06 23:15:40      阅读:178      评论:0      收藏:0      [点我收藏+]

1.HTTP-GET WCF 方式

通过Http的方式提供metadata

1.1.配置文件方式

<system.serviceModel>
  <services>
    <service name = "MyService" behaviorConfiguration = "MEXGET">
      <host>
        <baseAddresses>
          <add baseAddress = "http://localhost:8000/"/>
        </baseAddresses>
      </host>
      ...
    </service>

    <service name = "MyOtherService" behaviorConfiguration = "MEXGET">
      <host>
        <baseAddresses>
          <add baseAddress = "http://localhost:8001/"/>
        </baseAddresses>
      </host>
      ...
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name = "MEXGET">
        <serviceMetadata httpGetEnabled = "true"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

 一般通过HTTP的基地址即可以访问元数据,也可以指定不同的地址:

<behavior name = "MEXGET">
  <serviceMetadata httpGetEnabled = "true" httpGetUrl = "MyMEXAddress"/>
</behavior>

 

 

1.2.代码方式

ServiceHost host = new ServiceHost(typeof(MyService));
ServiceMetadataBehavior metadataBehavior;
metadataBehavior = host.Description.Behaviors.Find<ServiceMetadataBehavior>();
if(metadataBehavior == null)
{
Debug.Assert(BaseAddresses.Any(baseAddress=>baseAddress.Uri.Scheme == "http"));
metadataBehavior = new ServiceMetadataBehavior();
metadataBehavior.HttpGetEnabled = true;
host.Description.Behaviors.Add(metadataBehavior);
}
host.Open();

 

 

2.Metadata Exchange Endpoint

平台无关的元数据交换方式,支持多种协议

<services>
  <service name = "MyService" behaviorConfiguration = "MEX">
    <host>
      <baseAddresses>
        <add baseAddress = "net.tcp://localhost:8001/"/>
        <add baseAddress = "net.pipe://localhost/"/>
      </baseAddresses>
    </host>
    <endpoint
    address = "MEX"
    binding = "mexTcpBinding"
    contract = "IMetadataExchange"
/>
    <endpoint
    address = "MEX"
    binding = "mexNamedPipeBinding"
    contract = "IMetadataExchange"
/>
    <endpoint
    address = "http://localhost:8000/MEX"
    binding = "mexHttpBinding"
    contract = "IMetadataExchange"
/>
    ...
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name = "MEX">
      <serviceMetadata/>
    </behavior>
  </serviceBehaviors>
</behaviors>

 

[Programming WCF Services]Chapter 1. WCF Essentials - Metadata Exchange

原文:http://www.cnblogs.com/vicsmb/p/5248799.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!