好山好水好风光

横看成岭侧成峰
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

超越浏览器 迎接Smart Client (转)

Posted on 2006-03-30 09:39  小河弯弯  阅读(200)  评论(0编辑  收藏  举报

导语:越来越多的人发现,B/S架构虽然得到了最好的支持,但是对于不断出现的新的需求,依旧有心无力,许多事情依旧需要回归到C/S架构,于是有人提出了“回归胖客户端”的论调。姑且不去论证其准确性到底有多少,但是有一点可以肯定,一种新的文化正在渐渐颠覆经过许多年发展建立起来的B/S文化。
         自微软.NET战略推出以来,一个新的概念也随之而广为人知——智能客户端。可以预见的是,在未来的几年内,智能客户端将成为应用开发的主流架构。
        面对当前B/S架构的种种问题,软件业提出了一些新的架构作为解决方案。未来的应用在技术架构经历了大型机—C/S—B/S发展历程之后,经过深刻的反思,摈弃了各个阶段不同软件架构的缺点,期待着既具有更加丰富表现力又契合开发、应用和维护需要的客户端,智能客户端正是如此。
开启Smart Client之门

    那么许多人会反问,什么是智能客户端,它又如何能够代表下一代应用的趋势,如何赢得未来呢?
        简单而言,智能客户端是一个连接Internet的设备,允许用户本地应用程序通过Web服务和服务器应用程序交互,从而结合了胖客户端应用程序的丰富特性和瘦客户端应用程序的易于部署和可管理的特性。例如,运行文字处理程序(比如Office Word)的智能客户端可以通过网络和远程数据库交互,从数据库获取文档处理需要使用的数据;运行Windows Mobile的智能手机可以从网络上获取相关图书的信息,可以获取天气预报。要获得这些功能,不需要其他设备,只需要这些终端拥有网络连接和后台的Web服务。智能客户端是一个连接Internet的设备,允许用户本地应用程序通过Web服务和服务器应用程序交互,从而结合了胖客户端应用程序的丰富特性和瘦客户端应用程序的易于部署和可管理的特性。
 智能客户端必须具有下列部分或者全部特征:
         灵活充分使用客户端资源 这里包含客户端的硬件资源和软件资源,可能是利用客户端的CPU计算能力,也可能是利用其存储能力,还可能是利用客户端的资源提供更加友善的用户体验。
        智能集成网络资源服务 通常而言,智能客户端是整个应用系统的一个部分,大部分的商务逻辑还是在服务器端实现,那么智能客户端就必须尽可能利用通过网络可以获取的资源和服务,不限于提供分别的应用程序,而是整合在分布式商业应用环境中的一个组成部分。
       强大的离线能力 并不是所有的应用都能够保证随时在线(always online),需要保证在明确脱机,使用低带宽或高延迟网络,或者连接时断时续的情况下继续高效地工作。
        易于部署和安装 通过一个集中的服务器,智能客户端通过网络可以非常容易地实现部署和更新。这是和传统胖客户端程序最大的不同之处,智能客户端应用程序可以在其运行时或位于后台时对自身进行自动更新,避免陷入版本的噩梦。
        终端设备的多样化 智能客户端应用程序能够运行在许多具有网络连接能力的设备之上,包括台式机、工作站、笔记本、PDA、智能手机等等,支持多种语言,并能够通过分布在不同平台上的Web Services实现跨平台应用。
        这些完整地反映了智能客户端应用程序的优点,在融合了胖客户端和客户端的优势之外,还引入了智能网络连接和数据管理的功能。由于智能客户端应用程序涵盖各个领域,这些程序在设计和实现上的差异比较大,这里既与应用的要求有关,也和运行的设备有关。从最终运行平台来划分,大致可以分为如下三类:
        Windows智能客户端程序:通过.NET Framework 1.1,Windows智能客户端应用程序极大的发展了原先的胖客户端应用程序架构,并且在原来的基础之上,提供了完整的智能客户端特性,Microsoft Money和Microsoft Outlook就是这种应用的典型案例。
        Office智能客户端应用程序:从Office 2003开始,已经不仅仅是一个文档数据的静态,通过内置的XML支持和Web Services的访问能力,在企业应用领域,Office System成为信息工作者最有效的工作平台,同时也成为智能客户端应用程序的运行平台。用户可以在不离开Office的情况下访问企业数据,可以根据文档提供的标记扩展操作企业业务。
         移动智能客户端应用程序:自从微软将Pocket PC和SmartPhone整合在统一的平台“Windows Mobile”下之后,基于Windows Mobile的应用也越来越多,与此同时Visual Studio.NET对于移动开发也提供了强有力的支持,通过.NET Compact Framework和越来越多的模拟器,基于移动的智能客户端应用程序开发已不再是难题了。

 智能客户端将带来什么?
        在微软的开发代号为“Longhorn”的新一代操作系统没有到来之前,相信智能客户端必将是从现在开始未来几年中基于客户端应用的主流软件技术架构,因为大部分的客户端应用都是承载在Windows操作系统之上。而在智能设备领域,微软经过几年的努力也渐现佳绩,得到越来越多的厂商支持,基于Windows Mobile的相关应用也越来越广泛。在Avalon(Longhorn中的图形和展示引擎)问世之前,智能客户端将是客户端开发的代名词,与之竞争的技术还有Java的WebStart。随着Visual Studio 2005的即将发布,它所提供的ClickOne技术会将智能客户端推向一个更加成熟的阶段。
         智能客户端可以提供强大的客户端体验,动态适应不断变化的商业需求,这与IBM倡导的“On Demand”战略颇有异曲同工之感,但或许智能客户端更进一步。
如何利用智能客户端技术
        通过.NET Framework,通过Visual Studio.NET,微软在智能客户端的设计、开发、测试和部署等各个阶段都提供了全面的支持,主要有以下这些相关的技术:
Application Block(应用程序块)
        为了帮助更多的开发人员利用.NET技术快速构建功能强大的应用系统,微软的Practice & Pattern 小组编写了大量的应用程序块(Application Block)以帮助开发人员从繁琐重复的编程中解脱出来,从而更加专注于业务的实现。这些应用程序块包括授权、缓存、配置管理、数据访问、异常管理、自动更新、日志、智能客户端离线支持及其用户界面等方面,几乎涵盖了商业应用领域需要考虑的所有底层功能支持。其中的离线支持管理和自动更新为开发人员在开发智能客户端应用程序的过程中提供了有效的帮助,可以利用这些应用程序块,快速开发出智能客户端应用程序。
        离线应用程序块(OAB,Offline Application Block)可以为应用程序提供支持脱机工作的功能。而更新应用程序块(UAB,Updater Application Block)为客户应用程序的自动更新和安装提供了一个可伸缩的基础架构,开发人员可以利用其构建一个需要智能更新的应用程序。在一些大型机构的应用中,通常需要保证所有桌面应用程序都是最新版本,系统管理员或者工程师只需做一次部署和安装,在此后的运行过程中可自动及时更新应用程序。如果没有这一组件的帮助,开发人员将重新回归胖客户端时代部署困难的灾难之中,而UAB可以很好的解决这一问题。
        所有的应用程序块都是以源代码的形式提供的,同时提供了大量的文档和示例,开发人员可以非常方便地将代码集成到自己的应用程序中去,从而构建出功能强大的智能客户端应用程序。
智能文档和信息检索服务
  作为Office 2003的创新,智能文档(Smart Document)和信息检索服务(Research Services)在真正意义上为Office提供了内在的交互可能性,利用这些技术,我们可以轻松地构建出基于文档的应用系统。
        利用智能文档,我们可以在普通文档中嵌入一些高度交互的应用,在原有文档的基础上提供了更加强大的交互功能;同时构建在Office System中的还有另外一个强大的功能——信息检索服务。
        虽然智能文档和信息检索服务提供了强大的客户端交互功能,但是其产生的标记是相对不容易理解的XML标记,微软的MSDN开发站点提供了一些工具和SDK用来帮助开发人员加速应用开发,并提供了必要的指导使XML更易被人理解。 
  同时微软提供了Visual Studio.NET Tools for Office(VSTO),VSTO为Word和Excel提供了托管代码扩展的对象模型访问入口。利用VSTO,开发人员能够构建出功能强大的Office智能客户端应用解决方案,因为其不仅提供了访问Word和Excel的全部功能,并且能够利用.NET Framework的全部特性诸如Windows Forms, 从而可以更加容易地提供丰富和高度响应的用户交互环境。VSTO同时提供了出色的开发体验,它允许开发人员非常方便的创建和调试应用解决方案。VSTO本质上来说是提供了代码隐藏(Code-Behind)的文档来组成应用解决方案,从而能够利用“宿主”应用程序提供的各种功能。

智能客户端的安全支持
        作为一种客户端表现技术,智能客户端是分布式应用程序,通常跨越多种不同的产品和技术。那么如何去保证这些应用程序的安全呢?在服务器端,需要采用一套方法来保护网络、服务器本身及其应用程序;在客户端,应集中于利用平台(其中包括操作系统和 Microsoft .NET Framework)的安全特性、客户端代码可以执行的特权操作(代码访问安全)以及与服务器平台(域)和服务器应用程序的交互。
        智能客户端技术通过一系列的安全措施,如身份验证、授权、数据验证、保护敏感数据、审核和日志记录、异常管理和更改和配置管理等来去保证从服务器到客户端应用程序的安全。
  通过应用程序块,在.NET Framework强大的安全性和可扩展性的基础之上,智能客户端提供了全面可靠的安全支持。智能客户端技术构建在微软“可信任计算”的基础之上,从设计、开发、测试、部署的各个过程都提供了安全参考,利用.NET Framework全新的安全模型,可以开发出安全的应用,利用Office的IRM(Information Rights Management),用户可以严格的控制文档的阅读、转发、复制等过程1。

Office 信息桥框架(IBF)
         在商业企业办公中用得最多的软件是Office套件。但是问题是为了在Word中写一篇给领导的报告或者在Excel中编写财务收支表的时候,我们常常要切换到企业的内部系统中,或者用IE或者用专门的客户端软件来查找自己需要的信息,诸如客户表、营业额、库存情况等等。
  IBF(信息桥框架)正是针对这样的问题而提出的解决方案,它构建在智能文档技术之上,目的是使Office文档和企业提供的Web服务连接起来,其核心目标是:使典型的 Office 用户或信息工作者能够在 Office 应用程序内部发现并执行企业业务对象。这些业务对象使用专门用于表现松耦合的企业业务线 (LOB) 系统中的数据和操作的 Web 服务进行公开。换句话说,作为解决方案的开发人员,可以使用信息桥框架来实现某些方案,使用户能够在不离开 Microsoft Office 应用程序的情况下访问重要的业务数据和过程。
  通过IBF,用户可以:
       简化解决方案开发。开发人员可以开发独立于Web服务的Office解决方案,从而使Office到企业解决方案的开发大大简化。因为解决方案是在元数据中定义的,所以开发人员编写少量代码或者不用编写代码就可以构建简单而强大的Office解决方案。
        灵活高效的扩展应用解决方案。IBF很容易进行扩展、更新或修改。自描述元数据、UI 控件、Web 服务可以在组织内的多个功能性解决方案中重用。因此,可以将新的解决方案部署或添加到现有的应用程序中,而无需进行重新编码。
       方便部署。解决方案是在部门或企业服务器上集中部署的,因而可以减少推出新的解决方案或支持现有解决方案所需的人力物力。通过使用管理良好且安全可靠的代码,并运行在广为赞誉且进行了良好测试的 CLR 环境中,确保了可靠性和安全性。

案例研究
       智能客户端绝不可能仅仅停留在概念上,不像Mozilla的XUL只是一个远离商业的美好的技术梦幻——智能客户端显然更贴近实际,一系列成功的商业案例正在证明智能客户端已经在商业应用中持续地创造出新的成就。
       作为中国高等教育的典型代表,复旦大学管理学院的MBA管理与教育服务信息系统从很大程度上体现了高等教育体制、服务管理和信息技术的完美结合。作为MBA项目的核心业务系统,它将支撑管理学院MBA管理与服务的日常运营,从系统上保证复旦MBA项目的长期竞争优势;将支持MBA项目从新闻发布、招生宣传、学生教学与教务管理、学位管理、日常信息服务、就业信息服务、到学生毕业信息服务的各项工作;支持学院各项目的年度教学计划、统计分析工作等一系列基础业务。通过调研,他们选择了智能客户端技术,因为它可以解决目前管理学院MBA管理与教育服务存在的种种问题,一方面Smart Client可以拥有C/S的强大的表现能力,同时在部署简洁上也不输于B/S。还有一个优点就是可以将整个系统以模块的形式分割,每一个单独的模块都有一个独立的软件模块,利用Web服务通讯,使整个系统松耦合,以后每个模块都可以剥开独立使用,这样也增加了复用的机会。智能客户端技术提供了胖客户端技术和瘦客户端技术所没有的优势,包括如下几点:
         

无接触部署:安装时只要将一个主程序文件下载到本地,直接运行即可,无须改变注册表或共享的系统组件,其他应用组件将在第一次运行时自动下载。
       自动更新:只需将新版本的程序发布在服务器上,由客户端自动发现最新版本的程序和应用组件,并自动下载和更新。
       离线运用:允许脱离服务器时,利用本地的客户端程序和应用组件进行工作。 
        动态加载应用组件:应用软件开发商可根据企业应用系统的公共接口进行开发,然后将应用组件发布在企业的服务器上,客户端应用程序将自动发现并加载该应用组件。
       个性化用户界面:用户可根据喜好自行设置客户端应用程序,配置信息将被保存到服务器上。
       上述提到的智能客户端技术通过上面图2所示的AppLoader,Smart Client Pool和Loaded Smart Client Assemblies三个方面提供了全方位的支持,目前的系统已经正式投入使用,同时因为架构的高度可扩展性也为二期开发带来了极大的便利。
   
        LeySer System是一系列具有悠久历史的学校系列管理系统软件,具体产品有学校会计、学校给与、人事管理、学费管理、资产管理系统、PhotoBoard。目前LeySer软件在同类软件的日本市场占有率排名第一,达到了70%之多,其版本也在不断更新,为了满足新的用户需求和适应新技术的发展,Ver.8.0版本(.Net版)更是以大幅度地重新制作和全新设计实现了前所未有的多功能和高性能。在Windows环境、Internet环境下以更简便的操作性成为面向学校法人的最强的会计系统。
        LeySer System的客户端是一个Smart Client。它们可以为用户提供内容丰富且响应迅速的用户界面,提供脱机工作的能力,并且提供利用本地硬件和软件资源的方法。智能客户端为用户提供了在强大且直观的客户端环境中访问信息和远程服务的能力,并且是一种用来开发灵活的、面向用户的应用程序以及提高用户工作效率和满意度的有效的解决方案。通过智能客户端技术,LeySer比其他同类系统提供了更多的特性支持,包括自动更新、离线使用和数据缓存。
       此外,在一些高端行业例如金融证券业中也采纳了智能客户端的解决方案,并且在实际应用中取得了很大的成功。一家国内的大型商业银行的金融服务开发和管理平台采用了Windows窗体技术实现的智能客户端,提高了业务流程设计界面的可用性;更广为人知的是中国工商银行通过将自助终端系统构建在WinForm之上,内嵌IE控件,不仅提供了强大的浏览能力,同时提供了丰富的客户端体验;银河证券在其风险监控系统的开发中,也引入了智能客户端技术,以实现程序的自动升级,免除了繁琐的维护工作,融合了“瘦”客户端易维护和“胖”客户端功能丰富两方面的优势。甚至,在个人应用中也出现了采用智能客户端技术的情况。就此看来,智能客户端已经在各个领域得到比较成熟的应用,进入了一个百花齐放的时代。
        结束语:B/S架构的不足、终端设备的多样化、应用需求的不断扩展,这些因素结合起来宣告了一个时代更替的到来。如同在一场烧荒的野火之后恢复旺盛生机的热带草原,软件世界也正在构造其新一代的“生态系统”,从中催生出更加富有生命力的技术架构,而智能客户端正是这一时代的产物。
        某些人或许不会很快转变,毕竟B/S架构曾经是市场的主流。但是所有的技术都会被更新的技术所替代。尽管我们会继续看到基于浏览器的应用程序仍会在某些情况下被开发和沿用许多年,但是下一代应用方向是明确的,智能客户端定将随着网络和应用的发展而成为主流。