当前位置:编程学习 > asp >>

WCF4.0进阶系列第一章WCF简介

 

 第一章 WCF简介

 1. 什么是WCF

如果你读这本书的目的是为了了解如何使用WCF构建分布式应用程序和服务,那么什么是WCF,为什么如何使用它?该如何使用? 回答这些问题,让我们来回顾一下过去。

(1)早期个人电脑的应用程序
个人电脑时代,商业解决方案由一套应用程序组合而成。一般都会包含文字处理程序,电子表格处理程序,和数据库套件。有经验用户能够把业务数据存贮在数据库中,使用电子表格分析数据,创建基于数据的报表与文档,或利用文字处理软件写分析报告。这些程序往往被安装在同一台电脑上,并且其数据和文件格式只为其所有。这就是典型的桌面应用程序平台,其特点是仅供单个用户使用,并且只在很小范围内处理多任务。
随着个人电脑的价格逐渐便宜并且广泛地作为商业工具,应用程序面对的挑战是如何面对多个用户之间数据的共享。它并不是一个新的挑战,因为多用户数据库已经开始面世一段时间,但是多用户数据库是运行在大型计算机而非个人电脑上。 很快,基于网络的解决方案和网络操作系统出现在个人电脑平台上,使一个机构内部部门间的电脑均连接到网络中,并且在网络里共享其资源。而且,数据库厂商也很快开发出独立于大型机的的数据库管理软件,它可以运行在网络中的个人电脑上,其结果,人们可以利用这些软件或者方案便利地共享业务数据;

(2) 进程间的通讯技术
网络平台仅仅是整个故事的一部分。 虽然基于网络的方案允许个人电脑之间相互通讯,共享打印机和磁盘,但是程序还需要和同时运行在其他个人电脑上的程序之间发送数据、接受数据以及互操作。许多常见的进程间的通迅机制开始逐步可以使用,比如named pipes和sockets。 这些技术在当时使用率十分低下,因为要掌握它们,你必须很好的理解网络。如今这种境况仍旧一样。比如,使用socket创建收发送数据的应用程序的职位仍旧是一个富有挑战的工作岗位。表面上,进程相当简单,但是并行访问是一件相当复杂的事情。随着计算机和网络的不断进化,进程间通讯的种类和能力也相应变化。比如:微软开发了COM技术用以在Windows平台上应用程序和组件之间的相互通讯。开发人员能够使用COM创建可复用的软件组件,链接多个组件构建程序,利用Windows服务。微软自己也使用COM技术使自己的程序作为服务的组件用以构建各种方案。
微软设计COM的最初想法是解决同一计算机上应用程序和组件之间通讯。后来,微软推出了DCOM,也称作分布式COM,其使应用程序可以访问网络中其他计算机上的组件。再之后,DCOM发展为COM+。COM+包含很多特性,比如与微软分布式服务器集成,使程序能将一些里操作放在一个组中,并使用该组操作以事务的方式与组件相互通讯。COM+还具有自动管理资源(比如你使用一个组件连接到数据库,你能确保当程序使用完组件后,组件会自动关系该数据连接)和异步操作能力。COM+后来被.NET Framework替代。.NET Framework不仅扩展了COM+, 而且提供很多新功能(Remoting:使客户端应用程序像访问本地对象一样的方式访问位于远程服务器上的对象)。微软将此项技术命名为企业服务。

(3) Web与Web服务
COM,DCOM,COM+,企业服务,.NET Framework Remoting在局域网上运行的非常不错,并且它们都能运行在Windows操作系统之上。
然后,当微软推出COM和DCOM的时候,万维网出现了。万维网是基于互联网,其已经经过数十年的发展。万维网提供了一个架构,开发人员使用此架构,利用位于世界各地的组件和其他元素构建应用程序,而且这些应用程序能运行在不同计算机体系下。第一代web应用程序非常简单,仅仅由一些静态网页组成;用户可以使用本地计算机上的网络浏览器下载并查看这些页面。第二代web应用程序提供给开发者一些可编程的元素(组件或者插件),用户从web站点下载然后在本地计算机的浏览器上运行出结果。第三代则推出了web服务。 Web服务是一个应用程序或者组件,其在服务器端运行。Web服务能接收来自客户端程序的请求,在服务器端运行,然后将结果返回给发出请求的客户端。Web服务还可以访问另外一个位于互联网上Web服务。这就是全球的、分布式的程序。
你可以通过visual studio和.NET Framework创建基于Windows的web服务。当然你也可以使用其他技术创建运行在非Windows平台的web服务。尽管web服务不限定某种语言或者平台。创建一个分布式的、全球性的web服务,开发人员必须遵循一些原则,其包括数据的格式,发送和接受消息的协议,安全处理方式。这些特性都是与平台无关的。

(4) 使用XML作为通用的数据格式
不同的计算机能使用其内部的表现形式存贮相同的值。比如:最高字节位在前的32为处理器与最低字节位置在前的32为处理器,它们使用不同的数据格式,但是可以存贮相同的值。因此,为了保证同一个程序在不同的计算机上的共享数据,开发人员必须统一采用一种与计算机体系无关的数据存贮格式。简而言之,xml是目前大家认可的数据存贮格式。 Xml是基于文本的、易读的、简单标记描述各种类型的数据的可扩展标记语言。

Person
不需要费力,你就能猜测到此数据秒速的实际意义。一个需要发送信息的程序可以利用这个格式将Person的信息发送给另外一个程序;接受方可以接受Person信息,并将其转化为有意义的数据。当然上面的数据格式也可以改成成如下:     
JSON
这里有其他很多种可能的格式变化。应用程序如何知道其格式能被其他的程序正确地识别?答案在于两个程序都统一采用同一种布局。这个布局就是xml schema。Xml schema是用来描述xml文档的结构,发送方利用其来描述发出信息的结构;接收方利用其将接收到的信息转化为有意义的数据。

(5)接受与发送Web服务请求
通过使用xml和xml schema格式化数据,web服务和客户端能将数据明确的来回传送,前提是客户端与web服务端必须采用统一的发送和接受请求的协议。此外,客户端明确自己发送的消息和从web服务端返回的相应。
简而言之,web服务和客户端程序通过使用SOAP协议进行通讯。SOAP协议定义了如下几个方面:

SOAP消息格式
输入如何编码
如何发送消息
如何处理返回的消息
Web服务能发布WSDL文档,其是一个xml文档,描述该web服务可接受的消息以及如何响应客户端传递过来的消息。客户端程序能使用这些信息来决定如何与该服务进行通讯。

(6)JavaScript对象和RIA
XML/SOAP模型用以定义和传播可交换消息的格式,这非常容易理解。但是在某些情况下,此模型显得比较复杂。因为此模型会产生大量的冗余,当是用以传送和接受数据比较小的情况下。对于当今流行RIA就是一个典型的例子。
RIA是一种近似于传统桌面应用软件系统功能,但实际上是通过web浏览器与远程服务器进行交互的网络应用系统。为了提供桌面交互功能,RIA使用JavaScript和AJAX。许多厂商提供相应的架构,比如微软的Silverlight,开发人员使用Silverlight可以非常开苏且便利地实现RIA。
尽管XML是AJAX技术的一部分,轻量级的原生的JavaScript格式被用以表示对象并且用户网络间的传输。这种格式就是JSON。虽然它的名字与JavaScript有关,但实际上JSON是语言无关的一种格式;大部分程序员一眼就看明白它。JSON通过名称/值来描述数据。比如:{"forename":"John","surname":"Sharp","Age":46} .
你可以通过代码的方式直接读写JSON数据。但是大多数开发热源喜欢使用JSON转换器自动地将其他格式的数据转化成JSON,尤其当源数据结构非常复杂的时候。现代大多数语言都提供JSON转化器来创建分布式应用程序,比如WCF。
JSON与XML罪的不同在于XML实一个完整的标语言,而JSON不是。这使得XML在程序判读上需要更多的功夫。主要原因在乎XML的设计理念与JSON不同。XML利用标记元的特性提供绝佳的扩展性;而JSON的重点在于数据的交换。

(7)全局环境下的安全和隐私的处理
安全用以识别用户和服务,然后授权其访问相应的资源。在分布式环境中,安全性有非常重

补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,