zoukankan      html  css  js  c++  java
  • [Programming WCF Services]Chapter 1. WCF Essentials

    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>
  • 相关阅读:
    hadoop文件写入
    elastic(10) 基本查询
    hadoop 小知识点
    "hadoop namenode -format"命令的作用和影响的文件
    elastic(9)映射
    Linux 学习笔记之 --- epoll 事件模型详解
    Linux 学习笔记之 --- select 与 poll 事件模型详解
    Tornado 高并发源码分析之二---Tornado启动和请求处理流程
    Tornado 高并发源码分析之五--- IOLoop 对象
    Tornado 高并发源码分析之四--- HTTPServer 与 TCPServer 对象
  • 原文地址:https://www.cnblogs.com/vicsmb/p/5248799.html
Copyright © 2011-2022 走看看