智能客户端研究与实现_第1页
智能客户端研究与实现_第2页
智能客户端研究与实现_第3页
智能客户端研究与实现_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、智能客户端研究与实现    2 智能客户端相关知识简介 2.1 客户端类型及其背景 客户端服务器模式作为一种重要的应用,在当今分布式应用中,几乎无处不在。从其客户端形式的发展,大概可以分为胖客户端应用程序、瘦客户端应用程序,智能客户端应用程序三种形式。 2.1.1 胖客户端应用程序 在二十世纪九十年代中期,为 Microsoft® Windows® 操作系统开发的胖客户端应用程序的数量急剧增长。设计这些客户端的目的是利用本地硬件资源以及客户端操作系统平台的功能。 尽管许多上述应用程序的功能令人印象深刻,但

2、它们都具有局限性。许多上述应用程序是独立的并且在客户计算机上工作,对它们的工作环境所知甚少或一无所知。该环境包括其他计算机和网络上的任何服务,以及用户计算机上的任何其他应用程序。非常常见的情况是,应用程序之间的集成局限于使用 Windows 提供的剪切或复制并粘贴功能在应用程序之间传输少量的数据。 有一些有助于提高胖客户端应用程序连接性的技术。例如,两层应用程序使多个用户可以访问驻留在网络上的公用数据,而DCOM 使应用程序可以具有更高的分布性8。(就 DCOM 而言,不再将逻辑和状态与客户计算机相联系,而是将其封装在对象内,然后在多台计算机中分布这些对象。)但是,连接的应用程序的开发要复杂得

3、多。随着这些分布式应用程序的规模和复杂性逐渐增加,将越来越难以维持客户端应用程序及它们使用的服务之间的紧耦合。 尽管胖客户端通常提供了高质量、响应迅速的用户体验,并且具有良好的开发人员和平台支持,但它们非常难于部署和维护。随着应用程序和客户端平台的复杂性不断增加,以可靠且安全的方式将应用程序部署到客户计算机的难度也将不断增加。如果部署了不兼容的共享组件或软件库,则一个应用程序可以很容易地破坏另一个应用程序,这种现象称为应用程序脆弱性。新版本的应用程序通常通过重新部署整个应用程序来提供,这可能使应用程序脆弱性问题变得更加严重。 2.1.2 瘦客户端应用程序 Internet 提供了传统

4、胖客户端模型的替代模型,它解决了许多与应用程序部署和维护相关联的问题。基于浏览器的瘦客户端应用程序是在中央 Web 服务器上部署和更新的;因此,它们消除了将应用程序的任何部分显式部署到客户计算机并加以管理的必要性。 该模型使各个公司可以非常高效地将它们的应用程序公开给规模庞大、多种多样的外部受众。因为瘦客户端已被证明能够高效地解决一些部署和可管理性问题,所以它们现在用于向组织内的用户提供对许多业务线 (LOB) 应用程序的访问,以及向客户和合作伙伴提供对面向外界的应用程序的访问。尽管事实上这两种用户的需要和期望通常是根本不同的,也是如此。 瘦客户端应用程序具有一些缺点。浏览器必须总是具有网络连

5、接。这意味着移动用户在断开连接时将无法访问应用程序,因此当他们返回办公室时,必须重新输入数据。而且,常用的应用程序功能(如拖放、撤消-重复以及上下文相关帮助)可能不可用,这可能降低应用程序的可用性。 因为应用程序的大部分逻辑和状态位于服务器上,所以瘦客户端会频繁地向服务器发回数据和处理请求。浏览器必须等待响应到达,然后用户才能继续使用该应用程序;因此,该应用程序的响应速度通常要比胖客户端应用程序慢得多。该问题在低带宽或高延迟的情况下被恶化了,并且产生的性能问题可能导致应用程序可用性和用户效率大幅度下降。要求输入大量数据以及/或者在多个窗口中频繁导航的 LOB 应用程序尤其会受到这一问题的影响。

6、 2.1.3 智能客户端应用程序 经过设计,智能客户端应用程序可以将胖客户端应用程序的优点与瘦客户端应用程序的部署和可管理性优点结合起来,尽管这两种方法之间的平衡的准确性质取决于确切的情况。 智能客户端应用程序通常具有形形色色的要求,因此在设计和实现方面会有极大的差异。但是,所有智能客户端都具有下列部分或全部特征: 1. 利用本地资源 2. 利用网络资源 3. 支持偶尔连接的用户 4. 提供智能安装和更新 5. 提供客户端设备灵活性 许多应用程序不需要具有上述所有特征。当您设计您的智能客户端时,将需要仔细考虑您的应用程序方案,并且决定

7、您的智能客户端应用程序要求具备上述哪些特征。要将上述所有特征合并到您的应用程序中,将需要进行非常认真的计划和设计,并且在很多情况下您将需要大量的实现资源2。 2.2 现有数据同步方案介绍 离线操作,作为智能客户端一个重要特性,当客户端与服务器之间存在数据交换时,必然涉及到另外一个必须要解决的问题,即数据同步。因为客户端在离线操作时,必然对数据进行缓存,而缓存的结果直接导致服务器端与客户端之间的数据存在差异性,为了保存数据始终一致和有效,所以在对数据的同步方面,必须非常慎重。 2.2.1 使用数据集对象进行数据同步 MSDN上的智能客户端体系结构与设计指南是微软在智能客户端设

8、计与实现的一个具有指向作用的技术文档,现有很多智能客户端的实现技术都是建立在这篇文档的基础之上的错误!未找到引用源。 智能客户端体系结构与设计指南的第2章,即处理数据介绍了智能客户端的数据处理的类型,数据缓存的策略,数据同步的方法,以及在Windows Form中数据的处理技巧。我们特别关注一下其数据同步的方法: 使用 ADO.NET 数据集来管理数据:DataSet 是一个表示一个或多个关系数据库表的对象。数据集在断开连接的缓存中存储数据。DataSets的结构与关系数据库类似:它公开了一个由表、行和列组成的层次结构对象模型。另外,它还包含为DataSets定义的约束和关系。 ADO.NET

9、 DataSet 包含零个或更多个由 DataTable 对象表示的表组成的集合。DataTable 在 System.Data 命名空间中定义,并且表示单个由内存驻留数据组成的表。它包含由 DataColumnCollection 表示的列和由 ConstraintCollection 表示的约束组成的集合,它们共同定义了该表的架构。DataTable 还包含由 DataRowCollection(它包含该表中的数据)表示的行组成的集合。与其当前状态一起,DataRow 保留其当前版本和原始版本,以便标识对该行中存储的值所做的更改。 DataSets可以强类型化或非类型化。类型化的 Data

10、Set 从 DataSet 基类继承,但是向 DataSet 中添加了强类型化的语言功能,从而使用户可以用更加强类型化的编程方式访问内容。在生成应用程序时,可以使用任一种类型。但是,Microsoft Visual Studio ® 开发系统对类型化DataSets具有更多支持,它们使得用DataSets编程变得更加容易,而且更不容易出错错误!未找到引用源。 DataSets在智能客户端环境中尤其有用,因为它们提供了能够帮助客户端在脱机状态下使用数据的功能。它们可以跟踪对数据进行的本地更改,这有助于与服务器同步数据以及协调数据冲突,并且它们还可用于合并来自不同源的数据2,13错误!未

11、找到引用源。 2.2.2 使用出版订阅进行数据同步 SQL Server有自己的数据同步解决方案,它提出了被称为“出版一订阅”模式的数据同步方法。下面介绍一下该模式的几个同步组件: 1. 项目:项目是同步的基本单元。它指定要同步的一个数据表、数据分区或数据对象。它可以是整个表、表中的某些特定列(采用垂直筛选)或是某些特定行(采用水平筛选),也可以是一个存储过程或视图定义,还可以是一个存储过程、视图、索引视图或用户定义函数的执行。 2. 发布:发布也称为出版物是一个数据库内的一个或多个项目的集合。这种多个项目的分组易于管理,因为只要处理一个逻辑组而不是每个单独的项目

12、。实际上,订阅服务器订阅的是一组逻辑相关的数据和数据库对象即发布而不是发布中的某一个项目。 3. 订阅:订阅是对要同步的一个数据副本或数据库对象的请求,它定义要接收哪些发布,以及在何时何处接收。发布服务器(强制订阅)和订阅服务器(请求订阅)都能请求同步或订阅的数据分发。发布还能够支持强制订阅和请求订阅的集合。在分布式数据库应用环境中,不同的应用领域对数据同步的要求各异,不可能有一种同步方法能够适合所有领域中的应用需要。 4. 分发服务器:分发服务器使数据可以复制到其他服务器上。除了确定哪个数据被复制,发行者还检测哪个数据己经改变,并维护站点上关于所有发行物的信息。所有被复制

13、的数据元素都有一个单一的发行者,即使它可能被任意数目的订阅者更新或被一个订阅者重新发行。 5. 发布服务器:发布服务器是使数据成为其他服务器同步时使用的服务器。发布可以一个或多个发布,其中每一个发布都表示逻辑上的一组相关数据。发布服务器不仅是用以指定要同步哪些数据的服务器,同时还检测在事务同步过程中哪些数据发生了变化,并保留关于该站点上所有发布的信息。 6. 订阅服务器:订阅服务器是存储被复制的数据并接收更新的服务器。在早期版本的SQL Server中,更新一般只能在发行者执行。然而,SQL Server 7.0允许订阅者对数据进行更新(但是进行的更新与发行者不同)。反过来

14、,订阅者可以成为其他订阅者的发行者。 为此SQL Server提供了以下三种同步类型来满足不同环境中的应用需要: 1. 快照同步:SQL Server的快照同步与Oracle的快照同步类似。它是SQL Server中最简单的一种同步方式,快照同步类型就是把在出版服务器上的出版物中的当前某一时刻的结构和数据状态进行快照,然后周期地替代订阅服务器上的出版物。快照同步过程大约可以分两步:第一步,快照进程阅读出版数据库的内容,并且在分布工作文件夹中创建结构和数据文件。在快照同步中,分发数据只是跟踪同步的状态,而不存储同步的数据。第二步,分布进程使用分布工作夹中的文件在订阅服务器上创建相应的表

15、、阅读数据和创建索引。每一种新的快照内容,替代订阅数据库中以前同步过来的内容。在快照同步类型中,对于推出订阅,分布代理运行在分布服务器上,占用分布服务器的资源:对于拉回订阅,分布代理运行在订阅服务器上,占用订阅服务器的资源。 2. 事务同步:就是把出版服务器上的事务作为增加的变化分布到订阅服务器中。事实上,事务同步就是只把改变的内容同步过去,而快照同步则不论数据是否变化,都要把标记为同步的数据全部同步过去。在这些同步类型中,事务同步是一种常用的同步类型,因为它可以最大程度地降低事务一致性的延迟。当然,事务同步不是一种可以完全独立的同步类型,而是建立在快照同步基础上的一种同步。也就是说

16、,在采用事务同步类型时,必须进行一次快照同步,以便同步出版服务器和订阅服务器。一般地,当要同步的数据量比较大时,并且网络传输费用比较高时,应该考虑选择事务同步,因为与快照同步相比较,这样可以加快同步速度、降低同步费用。事务同步的进程包括下列步骤:第一步,使用快照同步,初始化出版服务器和订阅服务器;第二步,执行事务同步,日志读代理阅读出版数据库的事务日志,如果有变化的数据,那么将这些事务日志数据临时存储在distribution数据库中;第三步,分布代理负责把在distribution数据库中的数据应用到多个订阅服务器中。在事务同步中,与快照同步类似,对于推出订阅,分布代理运行在分布服务器上,占

17、用分布服务器的资源;对于拉回订阅,分布代理运行在订阅服务器上,占用订阅服务器的资源。但是,在事务同步中,要同步的表必须有主键,无主键的表是不能同步的。 3. 合并同步:合并同步允许用户修改订阅服务器中的订阅数据,它能够自动监视订阅数据库中的数据变化并定期将这些变化进行合并再把合并后的结果提交给所有订阅者,如果在合并过程中发现不同用户对数据所做的修改存在冲突时,合并代理程序将根据建立订阅时为订阅者所设置的优先级裁决哪个用户的修改有效。 除了基本组件,复制设计可能还有两个或多个复制代理: 1. 快照代理:准备模式并初始化被发行表格和存储过程的数据,在分发者上存储快照,以及记录关

18、于分发数据库中同步状态的信息。每个发行物都有自己的快照代理,它运行在分发者上并连接到发行者。快照代理一般运行在SQL Server Agent下,可以直接利用SQL Server企业管理器进行管理。快照代理运行在SQL Server代理服务环境下。其功能是:为同步准备表结构、初始化出版表和存储过程的数据文件、将出版物快照存储到分发服务器的分发数据库中、并记录分发数据库的同步状态信息。每个出版物在分发服务器上均运行着自己的快照代理,并通过快照代理与出版服务器连接。 2. 日志阅读代理:将为复制而标记的事务从发行者上的日志转移到分发数据库。每个利用事务复制发行的数据库都有自己的日志读者代理,它运行在分发者上并连接到发行者。 3. 分发代理:将事务和保存在分发数据库表格中的快照转移到订阅者。每个事务和在一个新的推订阅创建时为了立即同步而建立的快照发行物,都有自己的分发代理,运行在分发者上并连接到订阅者。事务和不是为立即同步建立的快照发行物,跨越一个Publisher/Subscriber对共享一个分发代理,它运行在分发者上并连接到订阅者。对于快照或事务发行物的拉订阅,拥有运行在订阅者而不是分发者上的分发代理。合并发行物没有分发代理。分发代理一般运行在SQL Server Agent之下,可以直接利用SQL Se

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论