Programming WCF Services中文翻译(1)-WCF是什么,服务

Chapter 1. WCF Essentials(第一章 WCF概要)

 本章描述WCF的基本概念和架构,使您能够建立一个简单的服务。您将学习到一些基本术语如:地址(addresses),绑定(bindings),契约(contracts)和端点(endpoints);了解如何去寄存一个服务(host a service),学习如何去写一个客户端;并且理解一些相关的主题,例如:处理托管和可靠性(in-proc hosting and reliability)。虽然你已经熟悉WCF的基本概念,我还是推荐你至少对本章进行一个略读,这样做不但可以帮你夯实基础,也可以去知道一些贯穿本书都会使用和扩展的类别和术语的帮助。

1.1. What Is WCF?(WCF是什么)

Windows Communication Foundation(WCF)是一个用于在Windows开发和部署服务的SDK。WCF为您的服务提供了一个运行时环境,使您能够暴漏一个服务为CLR类型,也可以使CLR类型使用一些服务。虽然在理论上你能在没有WCF的条件下建立一个服务,但是实际上用WCF建立一个服务是相当容易的(可以极大的提高效率)。WCF是一套工业标准定义服务交互、类型转换、封装处理(marshaling)、以及许多端口管理的Windows实现。正因为如此,WCF提供了服务间的相互操作,WCF为开发者提供了几乎所有能被应用程序请求的重要的现成的管道(off-the-shelf plumbing),因此,WCF大大提高了效率。WCF的首次发布版为服务开发提供了许多有用的功能,例如:宿主(hosting)、服务实例化管理(service instance management)、异步调用(asynchronous calls)、可靠性(reliability)、事务管理(transaction management)、断开排队请求(disconnected queued calls)和安全性(security)。WCF还提供了您能使用的丰富的基本服务(enrich the basic offering扩展性模型(extensibility model。实际上,WCF它本身就是被扩展性模型写出来的。在本书的其他章节将完全探究这些方面和特性。WCF最重要的功能是一个单一的叫做System.ServiceModel.dll装配件,它位于System.ServiceModel名称空间下。

1.2. Services(服务)

一个服务是暴漏给世界的一个单元的功能。它是下一个发展步骤(发展过程从功能到对象再到服务)。面向服务(Service-orientation是一套抽象的理论,建立面向服务的应用程序是最好的实践。如果你不熟悉面向服务的理论,附录A提供了使用面向服务的简单概述和动机(motivation),本书的其他部分将假定您已经熟悉了这些理论。一个面向服务应用程序SOA)在单一的逻辑程序聚集了服务,方法类似于面向组件应用程序聚集组件,面向对象应用程序聚集对象。面向服务应用程序如下图。 

服务可以被多方技术(multiple parties)开发,具有版本独立性,甚至可以执行在不同的时间线,服务可以是本地的服务或者是远程的服务。在服务内部,您将发现概念如:语言、技术、平台、版本、框架以及服务之间仅仅规定了通信模式是被允许的。

一个服务的客户端仅仅是消费(consume)服务功能的一部分。客户端可以是Windows FormsASP.NET page或者其他服务。

客户端和服务通过发送和接受消息进行交互。消息可以直接改变从客户端到服务或者通过媒介。在WCF中所有的消息是SOAP消息。注意,消息是独立的,WCF服务可以在许多传输上进行通信,而不只是HTTPWCF客户端可以在non-WCF服务进行相互操作,WCF也能在non-WCF客户端进行相互操作。也就是说,如果您开发客户端和服务,您可以构造所有WCF请求利用WCF-Specific优点的应用程序。

一个WCF服务暴漏可以通过描述有效的功能和与服务进行通信的元数据(metadata),从而使服务透明给外界。元数据为预定义、技术中性(technology-neutral)的方式被发布,例如使用WSDL或者具有工业标准的元数据交换。一个non-WCF客户端能把元数据作为本地类型导入到本地。相似的,一个WCF客户端可以导入一个non-WCF服务的元数据或者把元数据消费为本地的CLR类或者接口。

1.2.1. Services' Execution Boundaries(服务的执行边界)

WCF中,客户端从不会和服务直接进行交互,即使是在本机处理或者在内存中(in-memory)的服务。然而,客户端总是使用一个代理(proxy)去调用服务。代理会使用一些代理管理方法暴漏出和服务相同的操作。

WCF允许客户端能跨过所有执行边界(execution boundaries)和服务进行通信。在相同的机器上(见图),客户端能在相同的进程或跨进程中跨过应用程序域(app domain)去消费服务。

 

跨机器边界(见图),客户端能在局域网和因特网中和服务进行交互。

1.2.1.1. WCF and location transparency(WCF和位置透明性)

在过去,分布式计算技术(如:DCOM或者.NET Remoting)渴望不论对象是本地或者远程的都能提供相同的程序模型给客户端。在本地调用的情况下,客户端直接使用了引(reference),当处理一个远程对象时,客户端使用了一个代理(proxy)。这种方法存在的问题是试图采用当地的编程模型使远程编程模型有更多的远程调用的对象。生命周期管理(life cycle management)、可靠性(reliability)、状态管理(state management)、可伸缩性(scalability)和安全性(security)等复杂的情况使得远程编程模型更加复杂。WCF也努力提供相同的编程模型而不用关心本地的服务。然而,WCF的方法是完全相反的;即使在大多数本地情况,它仍然使用远程模型的实例和代理。因为所有的交互由一个代理、一个相同的配置和宿主来完成,WCF为本地和远程保留了相同的编程模型;这样做不仅能使您在不影响客户端的情况下进行本地控制,而且可以简化程序的编程模型。


 Programming WCF Services中文翻译(2)-地址

posted @ 2009-01-05 18:12  HelloCG  阅读(761)  评论(1编辑  收藏  举报