软件知识
Windows Communication Foundation(WCF)为.NET Framework提供了一个能够编写代码, 以在组件, 应用程序和系统之间进行通信的基础. 通常应用程序通信的方式有很多种,但这些方式一般需要编码处理诸如通信协议, 兼容性, 连接故障等很的问题. WCF就是对应用程序之间的通信进行了封装, 大大降低了通信的难度.
WCF的设计是面向服务的.服务是指可以通过消息与之进行交互的一段代码. 服务提供一个或多个端点, 可将消息发送到这些端点。每个端点由一个地址、一个绑定和一个合同组成。
端点是WCF编程模型的和基础结构的核心. 通过WCF, 你可以编写提供端点的服务, 也可以编写与端点进行交互的客户端.
WCF服务端是一个公开终结点集合的程序, 每个终结点都是一个与外界通讯的入口.
WCF客户端是一个与一个或多个终结点交换消息的程序, 客户端还可以公开一个终结点, 从而以双工消息交换的模式从服务器接收消息.
端点结构
地址: 指定发送消息的目标位置. 是终结点驻留的网络地址(包括域名或IP, 端口).
绑定: 描述如何发送消息;是终结点与外界通讯的方式, 包括传输的协议(TCP, HTTP), 编码(文本, 二进制文件)以及安全要求(SSL, SOAP消息安全).
合同: 描述消息所包含的内容, 一般定义为.NET接口, 它本质上是操作有组织的消息集合, 这些操作具有基本的消息交换模式, 如单工,双工, 以及请求/应答.
在WCF程序中, 所编写代码控制的只是一部分工作, 实际通信部分的工作都是由WCF运行时来完成. WCF运行时是一组复杂发送和接收消息的对象. 如: 格式化消息, 安全性, 使用各种传输协议传输和接收消息, 以及向适当的操作分发接收到的消息, 所有的这些操作都在WCF运行时种发生.
客户端运行时由ServiceHost.Open在后台创建. 客户端运行时由ChannelFactory在客户端创建.
信道是将消息发送至终结点和从终结点接收消息的核心抽象.
服务端: 建立WCF服务端时, 首先要定义用作服务的合同的.NET接口. 然后在.NET类中实行该接口并进行相应的配置.再在应用程序配置文件定义服务要提供的端点, 并为每个端点指定位置, 绑定及合同. 最后由WCF托管基础结构在应用程序中托管服务类型.服务类型被托管后, 客户端就可以检索其端点描述并开始与其集成.
客户端: 建立WCF客户端时,首先需要获得服务端的目标端点的描述. 该端点描述可以用于动态的创建一个类型代理. 然后可以针对类型代理编写代码, 通过向目标端发送相应的消息来访问服务.
程序配置文件. 各个端点都是在配置文件中描述的.
应用程序间的具体通信问题都由WCF运行时处理了. WCF程序运行的时候会在服务端与客户端之间相应的Channel(信道?). 通过该Channel对客户端来说可以将服务端抽象为一个对象, 通过该对象就可以直接调用服务端通过合同暴露出来的方法; 对服务端来说, 客户端可以抽象为一个回调对象, 通过该对象就可以直接调用客户单通过回调合同暴露的的方法. 就这样, 服务端和客户端在对方运行的时候都被抽象成一个直接访问的对象.