超简单WCF例子

我最欣赏linux的可定制性

so, 配置本身就是一种美

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <!--第一种元数据发布方式,好像只支持HTTP/HTTPS-->
        <behavior name="CalcServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>

      <service name="ServiceLib.CalcService" behaviorConfiguration="CalcServiceBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://127.0.0.1:8888/Calc"/>
          </baseAddresses>
        </host>
        <endpoint address=""
                  binding="wsHttpBinding"
                  bindingConfiguration=""
                  contract="ServiceLib.ICalcService" />
        <!--第二种元数据发布方式,支持各种协议-->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
  </system.serviceModel>
配置服务

同样的,代码就可以省略为以下内容

using (ServiceHost host = new ServiceHost(typeof(CalcService)))
{
    host.Opened += (a, b) => Console.WriteLine("服务已开启");
    host.Open();
    Console.Read();
}

而,客户端无须做任何修改

~~~

再来看两种元数据发布方式。

你把第一种去掉试试 (●'◡'●)

又报错了 ------

不管了,网上的解释大概就是:第一种是HTTP—GET方式获取,而第二种以终结点形式发布则支持WS—*

上面那句话是谁说的?怎么会出现在那?不管了,存在既有理,就让它留在那儿吧

咳,下一篇将介绍WCF的亮点之一,多协议支持。

&:思考会让你更睿智

原文地址:https://www.cnblogs.com/hualongbei/p/4150174.html