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>
  • 相关阅读:
    java中的位运算符
    Servlet中的初始化参数、上下文参数、以及@Resource资源注入
    Servlet中文件上传的几种方式
    marquee标签的使用
    SpringBoot热部署的两种方式
    eclipse中安装lombok插件
    关于Servlet中的转发和重定项
    Cormen — The Best Friend Of a Man CodeForces 732B
    牛客小白月赛9之签到题
    Codeforces アンバランス / Unbalanced
  • 原文地址:https://www.cnblogs.com/vicsmb/p/5248799.html
Copyright © 2011-2022 走看看