📜  WCF-体系结构(1)

📅  最后修改于: 2023-12-03 15:05:54.718000             🧑  作者: Mango

WCF-体系结构

WCF(Windows Communication Foundation)是微软提供的一种基于SOAP协议的分布式服务框架。它支持多种传输协议,包括HTTP、TCP、MSMQ等,并支持多种编码格式,包括XML、JSON等。

架构

WCF的体系结构由三个关键的组件组成:

  1. 服务契约(Service Contracts):定义了服务可以执行的操作以及相应的参数和返回值类型。

  2. 服务宿主(Service Host):负责承载服务,监听客户端请求并将请求转发到服务。

  3. 通道(Channel):负责传输客户端和服务之间的消息。

这三个组件共同构成了WCF的体系结构。以下是WCF的体系结构图:

WCF-Architecture

服务契约

服务契约定义了服务可以执行的操作,它们是WCF服务的核心部分。每个服务都必须实现至少一个服务契约。下面是一个简单的服务契约定义:

[ServiceContract]
public interface IMyService
{
    [OperationContract]
    void DoSomething();

    [OperationContract]
    string GetData(int value);
}

在上面的代码中,ServiceContract特性用于表示这是一个服务契约。OperationContract特性用于表示一个操作,DoSomething()GetData()是两个操作。

服务宿主

服务宿主是一个托管应用程序或Windows服务,负责承载服务。WCF提供了多种服务宿主,包括IIS、Windows服务等。以下是服务宿主的配置示例:

<system.serviceModel>
  <services>
    <service name="MyNamespace.MyService">
      <endpoint address="http://localhost:8000/MyService/"
                binding="basicHttpBinding"
                contract="MyNamespace.IMyService"/>
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior>
        <serviceMetadata httpGetEnabled="true"/>
        <serviceDebug includeExceptionDetailInFaults="false"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

在上面的代码中,system.serviceModel节用于定义WCF服务的配置。services节定义了服务,endpoint用于定义服务的终结点。behaviors节用于指定服务行为,例如打开服务元数据或启用调试模式等。

通道

通道负责传输客户端和服务之间的消息。WCF支持多种传输协议和编码格式。以下是一些常用的传输协议和编码格式:

  • 传输协议:HTTP、TCP、MSMQ等。
  • 编码格式:XML、JSON、二进制等。

在WCF中,消息由三个部分组成:消息头(Message Header)、消息体(Message Body)和消息尾(Message Footer)。以下是一个简单的消息定义:

<MyMessage xmlns="http://mynamespace.com/">
  <Header></Header>
  <Body></Body>
  <Footer></Footer>
</MyMessage>

在上面的代码中,xmlns属性用于定义命名空间。HeaderBodyFooter分别对应消息头、消息体和消息尾。WCF使用SOAP协议来序列化和反序列化消息体。SOAP是一个基于XML的协议,用于在客户端和服务之间传输消息。

结论

WCF是微软提供的一种分布式服务框架,支持多种传输协议和编码格式。它的体系结构由服务契约、服务宿主和通道三个组件构成。了解WCF的基本概念和架构对于开发分布式应用程序非常重要。