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>
  • 相关阅读:
    原型设计
    简单APP——ToDoList的二次开发(日期规范化+构建搜索栏)
    Java基本语言篇
    C++中各种常用转换汇总学习
    语言篇swift
    洛谷P2384 最短路,积化加
    洛谷P4568 分层图最短路
    【洛谷P1962】矩阵快速幂求Fibonacii数列
    vue-cli教程
    单页应用原理
  • 原文地址:https://www.cnblogs.com/vicsmb/p/5248799.html
Copyright © 2011-2022 走看看