第 1 章 — 简介
什么是智能客户端
要完全了解智能客户端如何将胖客户端与瘦客户端的优点结合起来,有用的做法是分析胖/瘦客户端应用程序模型背后的历史和基础原理,并且回顾一些与它们相关联的优点和缺点。
胖客户端应用程序
在二十世纪九十年代中期,为 Microsoft? Windows? 操作系统开发的胖客户端应用程序的数量急剧增长。设计这些客户端的目的是利用本地硬件资源以及客户端操作系统平台的功能。
尽管许多上述应用程序的功能令人印象深刻,但它们都具有局限性。许多上述应用程序是独立的并且在客户计算机上工作,对它们的工作环境所知甚少或一无所知。该环境包括其他计算机和网络上的任何服务,以及用户计算机上的任何其他应用程序。非常常见的情况是,应用程序之间的集成局限于使用
Windows 提供的剪切或复制并粘贴功能在应用程序之间传输少量的数据。
有一些有助于提高胖客户端应用程序连接性的技术。例如,两层应用程序使多个用户可以访问驻留在网络上的公用数据,而
DCOM 使应用程序可以具有更高的分布性。(就 DCOM 而言,不再将逻辑和状态与客户计算机相联系,而是将其封装在对象内,然后在多台计算机中分布这些对象。)但是,连接的应用程序的开发要复杂得多。随着这些分布式应用程序的规模和复杂性逐渐增加,将越来越难以维持客户端应用程序及它们使用的服务之间的紧耦合。
尽管胖客户端通常提供了高质量、响应迅速的用户体验,并且具有良好的开发人员和平台支持,但它们非常难于部署和维护。随着应用程序和客户端平台的复杂性不断增加,以可靠且安全的方式将应用程序部署到客户计算机的难度也将不断增加。如果部署了不兼容的共享组件或软件库,则一个应用程序可以很容易地破坏另一个应用程序,这种现象称为应用程序脆弱性。新版本的应用程序通常通过重新部署整个应用程序来提供,这可能使应用程序脆弱性问题变得更加严重。
瘦客户端应用程序
Internet 提供了传统胖客户端模型的替代模型,它解决了许多与应用程序部署和维护相关联的问题。基于浏览器的瘦客户端应用程序是在中央
Web 服务器上部署和更新的;因此,它们消除了将应用程序的任何部分显式部署到客户计算机并加以管理的必要性。
该模型使各个公司可以非常高效地将它们的应用程序公开给规模庞大、多种多样的外部受众。因为瘦客户端已被证明能够高效地解决一些部署和可管理性问题,所以它们现在用于向组织内的用户提供对许多业务线
(LOB) 应用程序的访问,以及向客户和合作伙伴提供对面向外界的应用程序的访问。尽管事实上这两种用户的需要和期望通常是根本不同的,也是如此。
瘦客户端应用程序具有一些缺点。浏览器必须总是具有网络连接。这意味着移动用户在断开连接时将无法访问应用程序,因此当他们返回办公室时,必须重新输入数据。而且,常用的应用程序功能(如拖放、撤消-重复以及上下文相关帮助)可能不可用,这可能降低应用程序的可用性。
因为应用程序的大部分逻辑和状态位于服务器上,所以瘦客户端会频繁地向服务器发回数据和处理请求。浏览器必须等待响应到达,然后用户才能继续使用该应用程序;因此,该应用程序的响应速度通常要比胖客户端应用程序慢得多。该问题在低带宽或高延迟的情况下被恶化了,并且产生的性能问题可能导致应用程序可用性和用户效率大幅度下降。要求输入大量数据以及/或者在多个窗口中频繁导航的
LOB 应用程序尤其会受到这一问题的影响。
智能客户端应用程序
经过设计,智能客户端应用程序可以将胖客户端应用程序的优点与瘦客户端应用程序的部署和可管理性优点结合起来,尽管这两种方法之间的平衡的准确性质取决于确切的情况。
智能客户端应用程序通常具有形形色色的要求,因此在设计和实现方面会有极大的差异。但是,所有智能客户端都具有下列部分或全部特征:
利用本地资源
利用网络资源
支持偶尔连接的用户
提供智能安装和更新
提供客户端设备灵活性
许多应用程序不需要具有上述所有特征。当您设计您的智能客户端时,将需要仔细考虑您的应用程序方案,并且决定您的智能客户端应用程序要求具备上述哪些特征。要将上述所有特征合并到您的应用程序中,将需要进行非常认真的计划和设计,并且在很多情况下您将需要大量的实现资源。
注 .NET 框架可以帮助您实现智能客户端应用程序的许多特征。该框架提供了具备自我描述能力且牢固绑定的程序集,并且支持单独和并列安装应用程序的多个版本,从而有助于减少与胖客户端相关联的应用程序部署和脆弱性问题。.NET
框架基类库为与 Web 服务进行交互提供了广泛的支持,并且提供了 Windows 窗体。通过使用公共语言运行库
(CLR),您可以利用任何受到 .NET 支持的语言来开发智能客户端。
提供内容丰富的用户界面 |
可以,但难以开发、测试和调试。通常将应用程序与单个浏览器联系起来。 |
是。更易于开发、测试和调试。 |
可以利用本地计算机上的硬件资源 |
是,但只能通过 COM 组件使用。 |
是 |
可以与其他本地应用程序交互 |
否 |
是 |
可以多线程化 |
否 |
是 |
可以脱机工作 |
否 |
是 |
在低带宽和高延迟环境中可以很好地执行。 |
否 |
是 |
易于部署 |
是 |
不一定。困难程度取决于应用程序要求。 |
低维护和更改管理成本 |
是 |
不一定。成本取决于应用程序要求。 |
可以部署到具有不同功能的多种客户端上。 |
是,尽管更复杂的瘦客户端可能要求单个浏览器。 |
是。可以在支持 .NET 框架(包括 .NET 框架压缩版)的任何平台上部署。 |
|