论文部分内容阅读
摘 要:介绍WCF的技术背景,以及WCF技术的重要性和优势。并研究使用WCF的技术要素,各要素的具体含义及各自之间的关系。从而帮助大家清晰思路,更好的理解和应用WCF技术在项目开发实践中。
关键词: WCF;SOA;远程访问
中图分类号:TP311 文献标识码:A 文章编号:1671-7597(2011)0820029-01
WCF是Windows Communication Foundation的缩写,是微软为SOA(Service Oriented Architecture面向服务架构)而设计的一套完整的分布式应用程序技术框架。它的一切都是关于服务的。是关于服务的创建,寄宿,消耗及安全的一项技术。它具有标准和互操作性。
什么是SOA?SOA是一种松耦合并且具有统一接口定义方式的Service
组合构建起来的。它是一种面向企业级服务的系统架构。对于企业来说,业务是会随时变动的,需要系统满足尽可能大的灵活性来满足业务变更快速的需求,有效地进行相应调整,并且利用业务变更来得到竞争优势的能力。所以创建一个业务灵活的架构意味着创建一个可以满足当前还未知的业务需求的IT架构。利用WCF的灵活性,把业务层封装发布为Web Service。这样可以降低系统的耦合度,加大对未知业务的扩展性。
WCF提供了现有ASP.NET Web Service,.Net Remoting,Message Queu
ing,和Enterprise Services技术的全部功能。它可以跨进程,跨机器,跨子网,企业网乃至Internet。它可以以ASP.NET,EXE,WPF,Windows Forms,COM+等作为Host(宿主)。它可以支持的协议包括TCP,HTTP,跨进程以及自定义。
在我们了解它如何工作之前,我们需要知道为什么WCF如此重要?简单地说,因为服务是整个分布式网络的核心,WCF是在微软平台上创建,消耗服务的简单方便的方法。利用WCF,开发人员可以只关注他们自己的应用程序,而不是通信原理等细节。这是典型的技术封装工具化的一个例子。合并在Visual Studio 2008的WCF正是如此。
现在的应用程序架构里总会把设备,客户端软件,和服务算在内。毫无疑问,1995年网站概念产生时候的模式(在web服务器上寄宿一个应用程序,然后通过HTML传送UI界面到任何浏览器)将继续,但新的模式(合并本地软件和WEB服务)将变得更加常见。
例如:XBOX360,RSS,AJAX,SharePoint及3D场景,这些都将它们各自的软件和Web服务绑定。开发人员用Visual Studio建立.NET应用程序。WCF和Visual Studio把实现服务工具化。
总之,WCF之所以有意义,是因为当今的应用程序都和服务相关,服务正是WCF关注的一切。
作为和服务一起工作的综合技术,WCF有一些重要的术语,我们需要首先熟悉的。在大多数情况下,这些术语并不一定代表新的概念,但是他们提供了一致的规范让我们用它们来研究WCF技术。
从核心讲,一个服务是一些endpoint(终结点)的集合,用来对客户端提供有用的功能。一个endpoint是网络上可以接收message(消息)的一个资源。客户端通过发消息到endpoint来访问服务,并且根据客户端和服务端之间约定好的契约,把消息进行格式化。服务端监听endpoint上设置地址发来的相应格式化好的消息。如下图:
对于客户端与服务端进行有用消息的通信,我们需要了解著名的ABCs:address(地址),binding(绑定),contract(契约)。
Address,就是“哪里”。它定义了消息需要被客户端发送到网络上的哪里,也就是地址,以便endpoint接收到。对于HTTP,地址可以象http://ServerName/ServiceName;对于TCP,它可能是这样的:net.
tcp://ServerName:PortName/ServiceName。
Binding,就是“如何”。它定义了用于和一个endpoint通信的channel(通道)。channel是在一个WCF应用程序中所有消息需要经过的管道。一个channel有一系列的binding elements(元素)组成。binding的最低一级element是transport,它在网络上传递消息。内建的transport包括HTTP,TCP,NamedPipes,PerChannel和MSMQ。再上一层的binding elements是相应的security和transactions。幸运的是,WCF拥有系统提供的binding,是已经正确配置的,以节省开发人员的时间。例如basicHttpBinding是符合WS-I BP1.1的规范。wsHttpBinding实现通用的WS-*协议,以启用安全可靠的消息。
Contract,就是“什么”。它定义了endpoint提供的功能集。contract定义一个endpoint暴露出的Operations(操作),和operations
所需要的消息格式。Contract operations映射了类的方法,包括方法的输入输出参数。
一个服务端的endpoint是不能响应消息的,直到这个服务被寄宿在运行的操作系统的进程中。Host(宿主)可以是任何进程,一个WEB服务器,或者一个全屏或最小化的一个客户端应用程序。
服务有很多behaviors(行为)用来控制他们的并发性,安全性,线程等。Behaviors可以用.NET的Attribute(属性),操作WCF runtime,或者通过配置实现。
对于创新性,一个服务可能包含一个基本的endpoint,叫做Metadata Exchange(MEX)endpoint。这个endpoint是可以让客户端访问,以取得这个服务的ABCs,并且返回WEB服务表述语言(WSDL)。当你点Visual Studio2008里的“Add Service Reference”时,或者使用svcutil.exe工具的时候,MEX endpoint会被调用。在取到WSDL之后,会产生两个东西:一个代理类,和一个app.config文件。这个代理类可以让客户端的代码很方便的调用一个endpoint.app.config文件包含了binding的相应信息。
关键词: WCF;SOA;远程访问
中图分类号:TP311 文献标识码:A 文章编号:1671-7597(2011)0820029-01
WCF是Windows Communication Foundation的缩写,是微软为SOA(Service Oriented Architecture面向服务架构)而设计的一套完整的分布式应用程序技术框架。它的一切都是关于服务的。是关于服务的创建,寄宿,消耗及安全的一项技术。它具有标准和互操作性。
什么是SOA?SOA是一种松耦合并且具有统一接口定义方式的Service
组合构建起来的。它是一种面向企业级服务的系统架构。对于企业来说,业务是会随时变动的,需要系统满足尽可能大的灵活性来满足业务变更快速的需求,有效地进行相应调整,并且利用业务变更来得到竞争优势的能力。所以创建一个业务灵活的架构意味着创建一个可以满足当前还未知的业务需求的IT架构。利用WCF的灵活性,把业务层封装发布为Web Service。这样可以降低系统的耦合度,加大对未知业务的扩展性。
WCF提供了现有ASP.NET Web Service,.Net Remoting,Message Queu
ing,和Enterprise Services技术的全部功能。它可以跨进程,跨机器,跨子网,企业网乃至Internet。它可以以ASP.NET,EXE,WPF,Windows Forms,COM+等作为Host(宿主)。它可以支持的协议包括TCP,HTTP,跨进程以及自定义。
在我们了解它如何工作之前,我们需要知道为什么WCF如此重要?简单地说,因为服务是整个分布式网络的核心,WCF是在微软平台上创建,消耗服务的简单方便的方法。利用WCF,开发人员可以只关注他们自己的应用程序,而不是通信原理等细节。这是典型的技术封装工具化的一个例子。合并在Visual Studio 2008的WCF正是如此。
现在的应用程序架构里总会把设备,客户端软件,和服务算在内。毫无疑问,1995年网站概念产生时候的模式(在web服务器上寄宿一个应用程序,然后通过HTML传送UI界面到任何浏览器)将继续,但新的模式(合并本地软件和WEB服务)将变得更加常见。
例如:XBOX360,RSS,AJAX,SharePoint及3D场景,这些都将它们各自的软件和Web服务绑定。开发人员用Visual Studio建立.NET应用程序。WCF和Visual Studio把实现服务工具化。
总之,WCF之所以有意义,是因为当今的应用程序都和服务相关,服务正是WCF关注的一切。
作为和服务一起工作的综合技术,WCF有一些重要的术语,我们需要首先熟悉的。在大多数情况下,这些术语并不一定代表新的概念,但是他们提供了一致的规范让我们用它们来研究WCF技术。
从核心讲,一个服务是一些endpoint(终结点)的集合,用来对客户端提供有用的功能。一个endpoint是网络上可以接收message(消息)的一个资源。客户端通过发消息到endpoint来访问服务,并且根据客户端和服务端之间约定好的契约,把消息进行格式化。服务端监听endpoint上设置地址发来的相应格式化好的消息。如下图:
对于客户端与服务端进行有用消息的通信,我们需要了解著名的ABCs:address(地址),binding(绑定),contract(契约)。
Address,就是“哪里”。它定义了消息需要被客户端发送到网络上的哪里,也就是地址,以便endpoint接收到。对于HTTP,地址可以象http://ServerName/ServiceName;对于TCP,它可能是这样的:net.
tcp://ServerName:PortName/ServiceName。
Binding,就是“如何”。它定义了用于和一个endpoint通信的channel(通道)。channel是在一个WCF应用程序中所有消息需要经过的管道。一个channel有一系列的binding elements(元素)组成。binding的最低一级element是transport,它在网络上传递消息。内建的transport包括HTTP,TCP,NamedPipes,PerChannel和MSMQ。再上一层的binding elements是相应的security和transactions。幸运的是,WCF拥有系统提供的binding,是已经正确配置的,以节省开发人员的时间。例如basicHttpBinding是符合WS-I BP1.1的规范。wsHttpBinding实现通用的WS-*协议,以启用安全可靠的消息。
Contract,就是“什么”。它定义了endpoint提供的功能集。contract定义一个endpoint暴露出的Operations(操作),和operations
所需要的消息格式。Contract operations映射了类的方法,包括方法的输入输出参数。
一个服务端的endpoint是不能响应消息的,直到这个服务被寄宿在运行的操作系统的进程中。Host(宿主)可以是任何进程,一个WEB服务器,或者一个全屏或最小化的一个客户端应用程序。
服务有很多behaviors(行为)用来控制他们的并发性,安全性,线程等。Behaviors可以用.NET的Attribute(属性),操作WCF runtime,或者通过配置实现。
对于创新性,一个服务可能包含一个基本的endpoint,叫做Metadata Exchange(MEX)endpoint。这个endpoint是可以让客户端访问,以取得这个服务的ABCs,并且返回WEB服务表述语言(WSDL)。当你点Visual Studio2008里的“Add Service Reference”时,或者使用svcutil.exe工具的时候,MEX endpoint会被调用。在取到WSDL之后,会产生两个东西:一个代理类,和一个app.config文件。这个代理类可以让客户端的代码很方便的调用一个endpoint.app.config文件包含了binding的相应信息。