WCF学习(1) 一个简单的WCF程序

WCF学习(1) 一个简单的WCF程序

基本概念

Windows Communication Foundation是由微软开发的一系列支持数据通信的应用程序框架.其部分基本概念如下:

  • 终结点

    终结点是用来发送或接收消息(或同时执行这两种操作)的构造。终结点包括一个定义消息可以发送到的目的地的位置(地址)、一个描述消息应如何发送的通信机制规范(绑定),以及对可以在该位置发送或接收(或同时执行这两种操作)的一组消息的定义(服务协定,用于描述可以发送哪些消息)。 WCF 服务作为一个终结点集合对外公开

  • 地址

    指定接收消息的位置。它以统一资源标识符 (URI) 的形式指定。URI 架构部分指定用于到达地址的传输机制,如 HTTP 和 TCP。URI 的层次结构部分包含一个唯一的位置,其格式取决于传输机制。

  • 绑定
    WSHttpBinding
    netTcpBinding
    netMsmqBinding

  • 行为

    行为是控制服务、终结点、特定操作或客户端的各个运行时方面的要素。行为按照范围进行分组:常见行为在全局范围内影响所有终结点,服务行为仅影响与服务相关的方面,终结点行为仅影响与终结点相关的属性,操作级行为影响特定操作。例如,有一种服务行为是遏制,它指定当过多的消息可能超出服务的处理能力时,服务应该如何反应。另一方面,终结点行为仅控制与终结点相关的方面,如查找安全凭据的方式和位置

  • 服务协定

    服务协定将多个相关的操作联系在一起,组成单个功能单元。协定可以定义服务级设置,如服务的命名空间、对应的回调协定以及其他此类设置。在大多数情况下,协定的定义方法是用所选的编程语言创建一个接口,然后将 ServiceContractAttribute 属性应用于该接口。通过实现该接口,可生成实际的服务代码。

  • 服务操作

    服务操作是在服务的代码中定义的过程,用于实现某种操作的功能。此操作作为一个 WCF 客户端上的方法向客户端公开。该方法可以返回一个值,并可采用数量可选的参数,或是不采用任何参数且不返回任何响应。例如,一个实现简单的“Hello”的操作可以用作客户端存在通知,并可以开始一系列操作.


第一个例子

  • 服务协定

    这里写图片描述

  • 服务操作

    这里写图片描述

  • 配置文件

<system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="netBinding" maxReceivedMessageSize="1073741824" transferMode="Streamed" />
      </netTcpBinding>
    </bindings>
    <services>
      <service name="ConfigServer.SysConfigService" behaviorConfiguration="mexbehavior"  >
        <endpoint address="SysConfigService"
                  binding="netTcpBinding"
                  bindingConfiguration="netBinding"
                  contract="ConfigServer.ISysConfigService" />

        <endpoint address="mex"
          binding="mexTcpBinding"
          contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8000/Service" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="mexbehavior">
          <serviceDebug includeExceptionDetailInFaults="True"/>
          <serviceMetadata />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
  • ###服务端
使用配置文件
host = new ServiceHost(typeof(SysConfigService));
host.Opened += delegate
{
    Console.WriteLine("WCF服务已启动,地址:{0}", string.Format("Address{0}","net.tcp://localhost:8000/Service"));
};
host.Open();
不使用配置文件
NetTcpBinding bind = new NetTcpBinding();
bind.Security.Mode = SecurityMode.None;
bind.MaxReceivedMessageSize = 2147483647;
Uri baseAddress = new Uri(string.Format("net.tcp://{0}:{1}/Service", HostIP, 8000));
if (host == null)
    host = new ServiceHost(typeof(SysConfigService), baseAddress);

host.AddServiceEndpoint(typeof(ISysConfigService), bind, "SysConfigService");

if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)
{
    host.Description.Behaviors.Add(new ServiceMetadataBehavior());

    //暴露出元数据
    host.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
}

if (host.State != CommunicationState.Opened)
{
    host.Opened += delegate
    {
        Console.WriteLine("WCF服务已启动,地址:{0}", string.Format("Address:{0}", baseAddress.AbsoluteUri));
    };
    host.Open();
}

运行效果

这里写图片描述

配置说明

参考地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值