什么是智能客户端?
中高移动互联应用平台体系采用智能客户端技术,要完全了解智能客户端如何将胖客户端与瘦客户端的优点结合起来,有用的做法是分析胖/瘦客户端应用程序模型背后的历史和基础原理,并且回顾一些与它们相关联的优点和缺点。
胖客户端应用程序
在二十世纪九十年代中期,为 Microsoft? Windows 操作系统开发的胖客户端应用程序的数量急剧增长。设计这些客户端的目的是利用本地硬件资源以及客户端操作系统平台的功能。
尽管许多上述应用程序的功能令人印象深刻,但它们都具有局限性。许多上述应用程序是独立的并且在客户计算机上工作,对它们的工作环境所知甚少或一无所知。该环境包括其他计算机和网络上的任何服务,以及用户计算机上的任何其他应用程序。非常常见的情况是,应用程序之间的集成局限于使用
Windows 提供的剪切或复制并粘贴功能在应用程序之间传输少量的数据。
有一些有助于提高胖客户端应用程序连接性的技术。例如,两层应用程序使多个用户可以访问驻留在网络上的公用数据,而
DCOM 使应用程序可以具有更高的分布性。(就 DCOM 而言,不再将逻辑和状态与客户计算机相联系,而是将其封装在对象内,然后在多台计算机中分布这些对象。)但是,连接的应用程序的开发要复杂得多。随着这些分布式应用程序的规模和复杂性逐渐增加,将越来越难以维持客户端应用程序及它们使用的服务之间的紧耦合。
尽管胖客户端通常提供了高质量、响应迅速的用户体验,并且具有良好的开发人员和平台支持,但它们非常难于部署和维护。随着应用程序和客户端平台的复杂性不断增加,以可靠且安全的方式将应用程序部署到客户计算机的难度也将不断增加。如果部署了不兼容的共享组件或软件库,则一个应用程序可以很容易地破坏另一个应用程序,这种现象称为应用程序脆弱性。新版本的应用程序通常通过重新部署整个应用程序来提供,这可能使应用程序脆弱性问题变得更加严重。
瘦客户端应用程序
Internet 提供了传统胖客户端模型的替代模型,它解决了许多与应用程序部署和维护相关联的问题。基于浏览器的瘦客户端应用程序是在中央
Web 服务器上部署和更新的;因此,它们消除了将应用程序的任何部分显式部署到客户计算机并加以管理的必要性。
该模型使各个公司可以非常高效地将它们的应用程序公开给规模庞大、多种多样的外部受众。因为瘦客户端已被证明能够高效地解决一些部署和可管理性问题,所以它们现在用于向组织内的用户提供对许多业务线
(LOB) 应用程序的访问,以及向客户和合作伙伴提供对面向外界的应用程序的访问。尽管事实上这两种用户的需要和期望通常是根本不同的,也是如此。
瘦客户端应用程序具有一些缺点。浏览器必须总是具有网络连接。这意味着移动用户在断开连接时将无法访问应用程序,因此当他们返回办公室时,必须重新输入数据。而且,常用的应用程序功能(如拖放、撤消-重复以及上下文相关帮助)可能不可用,这可能降低应用程序的可用性。
因为应用程序的大部分逻辑和状态位于服务器上,所以瘦客户端会频繁地向服务器发回数据和处理请求。浏览器必须等待响应到达,然后用户才能继续使用该应用程序;因此,该应用程序的响应速度通常要比胖客户端应用程序慢得多。该问题在低带宽或高延迟的情况下被恶化了,并且产生的性能问题可能导致应用程序可用性和用户效率大幅度下降。要求输入大量数据以及/或者在多个窗口中频繁导航的
LOB 应用程序尤其会受到这一问题的影响。
智能客户端应用程序
经过设计,智能客户端应用程序可以将胖客户端应用程序的优点与瘦客户端应用程序的部署和可管理性优点结合起来,尽管这两种方法之间的平衡的准确性质取决于确切的情况。
智能客户端应用程序通常具有形形色色的要求,因此在设计和实现方面会有极大的差异。但是,所有智能客户端都具有下列部分或全部特征:
利用本地资源
利用网络资源
支持偶尔连接的用户
提供智能安装和更新
提供客户端设备灵活性
许多应用程序不需要具有上述所有特征。当您设计您的智能客户端时,将需要仔细考虑您的应用程序方案,并且决定您的智能客户端应用程序要求具备上述哪些特征。要将上述所有特征合并到您的应用程序中,将需要进行非常认真的计划和设计,并且在很多情况下您将需要大量的实现资源。
注 .NET 框架可以帮助您实现智能客户端应用程序的许多特征。该框架提供了具备自我描述能力且牢固绑定的程序集,并且支持单独和并列安装应用程序的多个版本,从而有助于减少与胖客户端相关联的应用程序部署和脆弱性问题。.NET
框架基类库为与 Web 服务进行交互提供了广泛的支持,并且提供了 Windows 窗体。通过使用公共语言运行库
(CLR),您可以利用任何受到 .NET 支持的语言来开发智能客户端。
使用本地资源
设计良好的智能客户端应用程序最大限度地利用了代码和数据部署在客户端上并且在本地执行和访问这一事实。它为应用程序提供了内容丰富且响应迅速的用户界面,以及强大的客户端处理能力。例如,它可能使用户能够执行复杂的数据操作、可视化、搜索或排序操作。
智能客户端可以利用客户端硬件资源(如电话或条码读取器)以及其他软件和应用程序。这使它们非常适合于解决瘦客户端应用程序(如销售点终端应用程序)无法很好解决的问题。智能客户端还可以利用本地软件(如
Microsoft Office 应用程序)或客户计算机上安装的任何 LOB 应用程序。通过创建能够与多个
LOB 应用程序集成并对这些应用程序进行协调的解决方案,您的用户可以更为有效地工作,进行更好的决策,并减少数据输入错误。此类解决方案还可以使您的应用程序更加紧密地与用户的工作环境集成(例如,通过采用自定义的或熟悉的用户界面),从而降低培训成本。
可以通过智能客户端应用程序集成或协调其他客户端应用程序,以便提供一致且高效的总体解决方案。这些应用程序还应该了解正在使用应用程序的上下文,并且应该适应该上下文以尽可能地帮助用户;例如,通过根据用户的使用模式或角色抢先缓存适当且有用的数据。
通过最大限度地使用本地资源以及将本地资源集成到您的智能客户端应用程序,可以使您的应用程序更好、更有效地使用已经提供给您的硬件。非常常见的情况是,处理能力、内存和高级图形功能没有得到利用。使用客户计算机上的资源还可以减少服务器端硬件要求。
使用网络资源
智能客户端可以通过网络消耗和使用不同的服务和数据。它们是从许多不同的源检索数据的有效方式,并且可以设计为对数据进行分析或整合,从而使用户能够进行更为有效和明智的决策。例如,智能客户端可以使用映射服务来提供有关地点和驾驶方向的详细信息。
智能客户端应用程序应该尽可能地连接,并且应该利用可以通过网络使用的资源和服务。它们不应该是独立的应用程序,并且应该总是构成更大的分布式解决方案的一部分。智能客户端应用程序起码应该使用有助于维护该应用程序以及提供部署和更新服务的集中式服务。
智能客户端应用程序的连接性质使其可以提供有价值的数据整合、分析和转换服务。它们使用户可以实时地或者在一段时间内协作完成任务。在许多情况下,智能客户端应用程序可以向用户提供类似于门户的功能,从而将完全不同的数据和服务加以协调并集成到总体解决方案中。
支持偶尔连接的用户
可以将智能客户端设计为向偶尔连接到网络的用户提供功能,从而使用户可以在明确脱机、使用低带宽或高延迟网络,或者连接时断时续的情况下继续高效地工作。对于移动应用程序,智能客户端还可以优化网络带宽
— 例如,通过将请求批量发送到服务器,以便更好地使用代价昂贵的连接。
即使当客户端大多数时间都连接到网络时,智能客户端应用程序也可通过以智能方式缓存数据和管理连接来改善性能和可用性。例如,在低带宽或高延迟环境中,智能客户端应用程序可以用特殊的方式管理连接,即不损害应用程序的可用性和响应性,并且用户可以继续高效地工作。
通过使用户能够在断开连接或只偶尔连接的情况下工作,提高了用户的工作效率和满意度。智能客户端应用程序应该致力于在脱机时提供尽可能多的功能。
提供智能安装和更新
传统胖客户端所具有的一些最大的问题发生在部署或更新应用程序的时候。许多胖客户端应用程序具有大量复杂的安装要求,并且可能通过注册组件以及/或者在公共位置安装
DLL 来共享代码,从而导致应用程序脆弱性和更新困难。
可以对智能客户端应用程序进行设计,以使其按照远比传统胖客户端应用程序更智能和灵活的方式来管理它们的部署和更新。它们可以避免上述常见问题,从而有助于减少应用程序的管理成本。
有许多部署智能客户端的不同方式。这些方式包括:简单地将文件复制到本地计算机;使用非接触式部署自动从中央服务器下载代码;或者使用企业推技术如
Microsoft Systems Management Server (SMS) 来部署 Windows
Installer 软件包。您选择的方法将依赖于您的特定情况。
智能客户端应用程序可以在其运行时或位于后台时对自身进行自动更新。这一功能使其可以逐个角色地进行更新;以分阶段的方式更新,从而可以将应用程序推介给先导小组或受限的用户组;或者按照制定的时间表更新。
.NET 框架使您可以对应用程序组件进行强命名,这意味着应用程序可以指定用来生成和测试其确切版本的组件,并通过这些版本的组件运行。.NET
框架使应用程序可以相互隔离,以便在安装一个应用程序时不会破坏另一个应用程序,并且同一应用程序的多个版本可以并列部署。这些功能大大简化了应用程序部署,并且消除了许多与胖客户端应用程序相关联的应用程序脆弱性问题。
提供客户端设备灵活性
智能客户端还可以提供灵活且可自定义的客户端环境,从而使用户可以将应用程序配置为支持他或她喜欢的工作方式。智能客户端应用程序没有被限制到桌面计算机或膝上型计算机。随着小规模设备的连接性和能力的增加,愈发需要能够提供对多个设备上重要数据和服务的访问的有用客户端应用程序。与
.NET 框架压缩版一起,.NET 框架提供了一个可用来生成智能客户端应用程序的通用平台。
可以对智能客户端进行设计以使其适应宿主环境,并且为它们运行时所在的设备提供适当的功能。例如,适合在 Pocket
PC 上运行的智能客户端应用程序应该提供相应的用户界面,该用户界面在较小的屏幕区域上被调整为使用笔针。
在许多情况下,您需要设计多个版本的智能客户端应用程序,每个版本都面向特定的设备类型,以便充分利用该设备所支持的特定功能。因为小规模设备通常在提供完整范围的智能客户端应用程序功能方面受到限制,所以它们可能只提供对功能完善的智能客户端应用程序所提供的数据和服务子集的移动访问,或者它们可用于在用户移动时收集和整合数据。最后,可以由功能更加完善的智能客户端应用程序或服务器端应用程序来分析或处理这些数据。
能够感知目标设备的功能和使用环境(无论它是桌面、膝上型、平板还是移动设备),以及能够定制应用程序以提供最适当的功能,这些都是许多智能客户端应用程序的基本特点。
智能客户端的类型
智能客户端在设计和实现方面差异极大,这既包括应用程序要求,也包括可以使用它们的方案和环境的数量。因此,智能客户端可以采取许多不同的形式和风格。根据智能客户端应用程序所面向的平台,可以将这些形式划分为三大类:
Windows
智能客户端应用程序
Office
智能客户端应用程序
移动智能客户端应用程序
智能客户端应用程序面向上述一种或多种平台是很常见的情况,具体取决于用户的角色以及需要的功能。这种灵活性是智能客户端应用程序的主要长处之一。
本指南的其余部分将重点讨论所有三种类型的智能客户端应用程序所共有的问题,而不是详细解释影响个别类别的问题。但是,依次对各个类型进行简要分析,以便您可以确定哪种风格的应用程序最适合您的情况,这将是很有用的。
Windows 智能客户端应用程序
当您想到胖客户端应用程序时,您通常可能会想到使用可用的系统资源并且提供内容丰富的用户界面的桌面应用程序。面向
Windows 的智能客户端应用程序是在传统胖客户端应用程序的基础上发展而来的,并且提供特定的面向特殊目标的功能。
Windows 智能客户端应用程序通常最适合于在桌面 PC、膝上型 PC 或平板 PC 上运行的应用程序。此外,它们通常不会提供与特定文档或文档类型紧密关联的功能。
可以在各种各样的场合下使用这些种类的 Windows 智能客户端应用程序,例如作为 LOB、财务、科学或协作应用程序使用。这些种类的应用程序的示例有
Microsoft Money 以及 Microsoft Outlook? 消息处理和协作客户端。
Office 智能客户端应用程序
Microsoft Office System 2003 为您提供了用来生成智能客户端应用程序(尤其是在企业设置中)的有用平台。通过
Office 智能客户端解决方案,您可以将通过 Web 服务访问的数据源与 Word 2003、Excel
2003、InfoPath 2003 或其他 Office应用程序的功能集成起来,以开发智能客户端解决方案。
移动智能客户端应用程序
移动智能客户端是在智能设备上运行的应用程序,这些智能设备包括 Pocket PC、Smartphone 以及其他超小型台式设备(如机顶盒)。这些应用程序是使用
.NET 框架压缩版(它是完整 .NET 框架的子集)开发的。
.NET 框架压缩版具有完整 .NET 框架的许多功能,支持 XML,并且消耗 Web 服务。它被进行了优化以便在超小型台式设备上使用,并且它包含用于开发用户界面的
Windows 窗体设计器。
通过使用 Visual Studio .NET 智能设备项目,您可以开发能够在 .NET 框架压缩版上运行的智能客户端。采用这一方法,您可以通过在超小型台式设备的模拟器上使用
Visual Studio .NET 来开发、测试和调试应用程序。模拟器的使用大大加快了这些类型应用程序的开发和测试速度。
移动智能客户端应用程序通常用于提供对重要数据和服务的移动访问,或者在用户处于移动状态时收集和整合数据。这些类型应用程序的示例有保险和金融数据收集应用程序、库存管理应用程序和个人工作效率管理应用程序。
对智能客户端和瘦客户端进行取舍
要针对您的情况选择正确的应用程序体系结构,必须考虑许多因素。要确定智能客户端方法是否最适合您的应用程序,请认真考虑您当前和将来业务应用程序的需要。如果您的应用程序基于不适合的体系结构,则它可能无法满足用户和整个企业的要求和期望。如果以后更改体系结构以满足新的要求或者利用新的机遇,则可能要付出极为高昂的代价。
如果您需要向各种外部受众提供面向外界的应用程序,则瘦客户端体系结构通常最为适当;而对于需要与其他客户端应用程序或硬件集成或者对它们进行协调,或者需要脱机工作或通过响应迅速的用户界面提供特定高性能功能的内部应用程序而言,智能客户端体系结构通常最为适当。
实际上,这两种方法在很大程度上互相重叠,而且每种方法都具有明显的优点和缺点。您只有在认真考虑您的要求并且了解如何在您所处的场合下应用每种方法之后,才能够选择正确的方法。
|