WCF学习第一晚:基本知识的了解

 

WCF,即Windows Communication Foundation,是一个面向服务编程的综合分层架构,具有跨平台、安全、可信赖、事务性等特点。。它可以被看作是Asmx、.Net Remoting、Enterprise Service、WSE、MSMQ等技术的并集。


说明:面向服务(SO)是一组原则的抽象,是创建面向服务应用程序的最佳实践。软件工程的现有经历可以称为--面向过程—>面向对象—>面向组件—>面向服务。面向服务是具有技术无关性的,就是说我(客户端)应当不了解你具体使用了哪种技术实现的服务端,或者你的服务端的位置。服务只需要公开自己的逻辑操作给客户端,告诉客户端我可以做什么,你应该如何和我打交道,其他所有的一切都隐藏在服务边界里,公开的信息则应该是类型无关的,服务边界就像小时候座位里的“三八线”,区分开了服务端和客户端,但是和“三八线”不同的是,服务边界还需要给两边传递消息。


WCF分为以下重要因素组成:服务、终结点、消息、托管、元数据交换。

服务与地址、绑定及契约有关。其中地址定义了服务的位置,绑定定义了服务通信的方式,契约则定义了服务的内容。WCF用终结点表示这样的一种组成关系,终结点就是地址、契约与绑定的混合体。每个终结点包括3个元素,而宿主则负责公开终结点。逻辑上将,终结点相当于服务的接口。

每个服务必须至少公开一个业务终结点,每个终结点有且只能有一个服务契约。服务的所有终结点都包含唯一的地址,一个单独的服务可以公开多个终结点,这些终结点可以使用相同或不同的绑定,公开相同或者不同的契约。每个服务提供的不同终结点之间是没有任何关系的。

终结点是用来发送和接受消息的构造。

WCF的绝大多方法都在System.ServiceModel命名空间下。

服务协定是使用ServiceContractAttribute来标记的类或者接口。

服务操作是在方法上使用OperationContractAttribute属性进行标记。

参数和返回值-每个服务操作都有一个返回值和一个参数,即使它们为void。可以使用局部方法将对对象的引用,从一个对象传递到另外一个对象,但与局部方法不同的是,服务操作不会传递对对象的引用,它们传递的只是对象的副本。参数或返回值中使用的每个类型都必须是可序列化的(必须能够转换为字节流,并能够从字节流转换成为对象)。

服务操作的消息模式:请求/应答、单向、双工。

  1. 请求/应答:

    客户端将接受与请求相关的答复。这个是默认模式,他可以支持传入也可以支持返回。这种从操作的结果是:除非客户端异步调用操作,否则客户端将停止处理,知道收到返回消息,即使该消息正常情况下为空时也是如此。

    缺点是容易造成客户端假死,

  2. 单向:

    客户端不必等待操作完成,并且不理会SOAP的错误,则该操作可以指定单向消息模式。除非客户端发送数据极大,则客户端几乎可以立刻进行下一步操作。

    设置OperationContract(IsOneWay=True)

  3. 双工:

    无论使用单向消息发送,还是请求/应当消息发送,服务和客户端均可以独立的向对方发送消息。对于必须直接与客户端通信或者向消息交换的任意一方提供异步体验(类似事件的行为)的服务来说,这种形式非常有用。

    若要设计双工协定,则必须设计回调写定,并将该回调协定的类型分配给标记服务写定的ServiceContractAttribute的CallbackContract属性。

    若要实现双工模式,必须创建第二个接口,这个接口包含在客户端调用的方法声明。

你可能感兴趣的:(WCF)