智能客户端的将来

来源:互联网 发布:淘宝女装宝贝卖点大全 编辑:程序博客网 时间:2024/04/30 16:00
摘要:尽管 Web 应用程序在过去数年中吸引了无数注意力,但客户端方面的改进意味着已到了应重新研究客户端开发的时候了。在以 Microsoft 地区总监为作者的“现实世界中的 .NET”这一新专栏中,Billy Hollis 说明了智能客户端以及今天如何使用它们生成应用程序。
从前体积庞大的计算机占据主导地位;它们被称为大型机。如果您的头发还没有像我的一样花白,您可能不会记得那个世界。让我来讲一讲它的工作方式。在那个世界中,庞大的大型机系统进行所有的处理工作。它汇集了一页信息并将该页发送到一个称作终端的设备。最常用的终端类型称作 3270。
终端是相当愚蠢的设备。它们的处理能力根本不值一提。用户对终端可做的事情就是,填充数据字段并在屏幕上四处浏览。
用户输入完一页数据之后,他/她按下终端上的一个按钮将此页信息发送回大型机。大型机接受此页信息并对其进行处理,然后准备好发出新的一页。
然后出现了 PC,并连接成网络,最后有个家伙说:“嘿,我们可以比大型机做得更好。我们可以使用 PC 的处理能力,使用户界面更加智能化并记住许多有关用户需要如何工作的信息。这样会有助于用户处理任务,而且效率更高”。
这样,新类型的系统诞生了。这些系统中的最佳系统做了一项非常好的工作,即将工作量在用户 PC 和大型中央计算机(被再次命名为服务器)之间进行分配。这些客户端-服务器系统使 PC 和大型中央系统在处理任务时各尽所能。客户端-服务器系统取代了许多的大型机,人们更喜欢这种系统。用户效率高而且心情愉快。
然后出现了 Internet。最初,Internet 仅用于浏览静态的、含有超链接的页面。但是后来,一些非常聪明的年轻人说,“嗨,看看我们能做什么!我们可以使应用程序在 Internet 上运行。我们将具有一个可以进行所有处理任务的大型中央 Web 服务器。该服务器将页发送给用户,然后用户会在浏览器中查看此页,并可以使用浏览器在此页中四处浏览并输入某些数据。之后,用户按下一个按钮将此页信息发送回大型系统,而此系统将处理该信息并发送回新的页。这简直太棒了”!
浏览器本身并没有内置太多智能性。它应该是一个“瘦客户端”,这意味着 PC 只负责运行此浏览器。这样,比二十年前的大型机具有更强处理能力的 PC 就降格为类似于 3270 终端的设备。
为什么是这样?为什么会发生大的回跳呢?正如许多“为什么会这样”类型的问题一样,答案是“金钱”。通过基于浏览器的系统,第一次允许全世界范围内的用户访问我们的系统,这是一个大的飞跃。使新用户可以访问我们的系统的成本基本上为零。
“胖客户端”或“智能客户端”的选择要求我们在用户系统上安装某些特殊软件。在 DOS 时代,这种方式非常简单。我们模仿这种方式,而且它起了作用。但是之后出现了 COM,它实际上几乎与浏览器同时出现,并且我们学到了术语“DLL 地狱”(DLL Hell)。因此,我们放弃了使软件在用户计算机上运行的努力,而仅使用浏览器,因为我们无法做其他任何事。不管怎么说,有胜于无。这样,一个我们可以买得起的低级选择就战胜了一个我们买不起的高级选择。
但是,让我们改变一下基础假设。假设将软件部署到用户系统便宜了很多 - 也许非常接近使用浏览器的零成本。那么会发生什么情况?
Billy 的软件开发第一定律指出:用户的数量超过程序员和技术支持代表的数量。用户是我们的系统存在的理由。如果用户知道他们可以获取智能化、且有助于更好地完成任务的应用程序软件界面,那么您认为对于笨拙的界面,用户还能忍受多长时间?还有多长时间他们对使用协议生成的页面表示满意,而此协议甚至不是旨在用于应用程序界面而是用于含有超链接的页面?我相信答案是“用不了多长时间”。
考虑一下可能发生的情况。如果一个系统具有一千个操作员,智能客户端软件只要使他们的效率提高百分之五,那么节省下的成本则非常可观。假设负担一个雇员的成本为 50,000 美元,那么一千个操作员提高百分之五的工作效率则相当于五十个全职人员的成本,即 2,500,000 美元。而且这种假设还没有考虑更低的培训成本、更低的错误率、给用户带来更少的挫折感和压力以及智能客户端软件可能带来的其他好处。(另外,上面的百分之五还是非常保守的推测。我曾经看到根据任务的不同,生产效率可提高百分之十到百分之二十。)
您的选择
如果这种分析正确,那么这种分析会怎样影响软件开发和信息技术领域的决策者?我想这种分析会导致有趣的选择:对于采用智能客户端系统,您可能被动接受或主动采用。您会为选择的策略付出代价或者收到回报。
一方面,您可以继续以 20 世纪 90 年代的方式进行工作,继续强烈依赖基于浏览器的软件。根据您所在行业和您所在组织在新技术方面向前发展的速度,该策略可能不会给您带来麻烦。但是在技术可以带来竞争优势的、任何飞速发展的行业中,这样的策略会带来影响职业发展的很大风险。也许某天,真正控制您所在组织的技术的某个人会走到您面前说:“嗨,这种基于浏览器的东西是垃圾。用户讨厌它,因为它使他们无法快起来。我看到的其他系统具有智能用户界面,可以使用户更好、更快地工作并为他们的公司节省大量的金钱。我想试试这种系统。为我提供它 - 我们昨天就需要它”。或者更糟糕的是,他们可能这样开始谈话,“我们已决定对您部门的管理进行一些变更……”
如果这听起来不那么有吸引力,您可以采用“主动”策略。首先可以考虑需要为 500 个用户编写的新应用程序是应具有一个老式的浏览器界面,还是应具有一个全新的、吸引眼球的、新的智能化用户界面。您将会成为这样一个英雄:所创建的软件提高了数百或数千用户的生产效率,也许节省了几百万美元。您的用户会说:“啊!我从没想到 Internet 应用程序可以这样棒!您真是个天才”!
入门
如果您喜欢“天才”选择,那么需要学习智能客户端开发的详细内容。要使智能客户端体系结构工作,主要需要四项技术:
•    窗体软件包,用于创建智能客户端软件。
•    数据传输技术,用于通过本地网络或 Internet 在智能客户端和中央服务器之间传输数据。
•    将智能客户端软件部署到客户端计算机的方法,许多情况下是通过 Internet。
•    防止系统受到恶意访问的安全技术。
现在,Microsoft® .NET Framework 是一个实现所有这些功能的平台的明确选择。这不仅仅是一种分布式智能客户端系统的平台的选择,而且它显然比 Java 之类的选择前进了一大步。让我们来看看以上每个领域中 .NET 的功能,看看为什么这样说。
客户端上的窗体
.NET Framework 包括可用的最高级窗体引擎之一,称作 Microsoft® Windows® 窗体。它是完全面向对象的,具有各种可供其使用的可视控件(来自 Microsoft 和第三方),并且 Microsoft® Visual Studio® 开发环境包括一个很棒的可视化设计器,可以快速地创建 Windows 窗体界面。
使用 Window 窗体的事件驱动模式,再加上使用在本地存储所需的大量状态信息的功能,用户界面的响应会更快。埋头进行的数据输入任务可以使用专门为此目的设计的界面来完成。复杂的数据验证可帮助用户第一次就获取正确的数据,而无须再次加载页面来查看数据是否正确。(是的,是的,我知道。浏览器也可以完成其中的一些任务。但是它需要进行如此多的编程才能使其正确,根本不值得花费这么多精力。)
Windows 窗体界面可以包括教程窗口、工具提示、半透明的帮助窗体、使行为适应用户的动态控件,等等。通常,开发它们比开发等效的 Web 页更快。
Microsoft 在此技术领域进行了大量投资。下一代的 UI 技术已被宣布。该项目的代码名称为“Avalon”,并且它是当前正在开发的下一个版本的 Microsoft® Windows®(代码名称为“Longhorn”)中的一部分。Avalon 添加更多的功能使用户界面响应更快,其中包括在浏览器中几乎就是不可能的、用于用户交互的某些新模式。
要利用这些技术,开发人员将需要了解更多的用户界面设计原则。如果他们仅进行过基于浏览器的编程,则他们可能不会意识到关于 UI 设计还需要了解许多东西。他们无法使系统包括响应更快的智能界面,直至他们了解如何编写响应更快的智能界面。
有一个限制因素需要说明。Windows 窗体是 .NET Framework 的一部分,因而仅在 Windows 平台上可用。但是,如果您的组织已在客户端工作站的 Microsoft® Windows Server System™ 上进行了标准化(和许多组织一样),那就不用担心该限制因素了。
应用程序需要数据
大量的企业和商业应用程序对数据进行操作,而这些数据通常存储在某个中央服务器中。如果要使智能客户端应用程序可行,则必须在实际中可以将数据从服务器发送到客户端,使客户端可以更改数据并返回数据。
Microsoft 的最新数据访问技术 Microsoft® ADO.NET 就是为这样的情况设计的。与以前的数据访问模型不同,此技术是为分布式使用情况创建的。基于 XML 的数据容器可以在服务器上创建并传输到客户端。客户端可以使用容器来处理数据,而无须维护与服务器的连接,无须进行更改和添加;然后将容器发送回服务器。
主要有两种技术可用于在客户端计算机和服务器计算机之间进行实际的数据传输。一种是 Web 服务。Web 服务的优点包括:便于实现和配置,以及跨多种类型服务器的兼容性。Web 服务甚至可以与非 Microsoft 服务器进行通信,但是必须多做些工作来创建相应的数据容器。
如果应用程序中涉及的所有系统都可以运行 Microsoft .NET,则可以使用称为“.NET 远程处理”的另一种技术。该技术具有一些性能优点和安全优点,但是配置时更困难。供内部用户使用的大型智能客户端系统通常依赖于远程处理,而用户位于组织外的系统更有可能使用 Web 服务。
在任一情况下,很可能智能客户端应用程序处理数据要比基于浏览器的系统更智能化。例如,如果智能客户端失去了与服务器的链接,它可以维护数据的本地副本,直到服务器再次可用。智能客户端应用程序可以动态调整其行为以适应联机和脱机情况。
低成本的部署
请记住,我们是从讨论部署智能客户端系统的效果是否能与基于浏览器的系统一样便宜或接近其成本,来开始这次讨论的。现在,很难获取比基于浏览器的应用程序更便宜的部署成本了,此应用程序对于每个用户而言部署成本基本为零。但是,可以将智能客户端部署成本降至足够低,以使其具有竞争优势。请记住,通过生产效率的提高,智能客户端有可能节省大量金钱;这样,承担某些其他部署成本则很有经济意义。
允许低成本部署的关键技术是 .NET Framework 的“复制并运行”功能。无需像在 COM 中那样执行系统组件的复杂注册。只需将组件复制到磁盘上即可,而 Framework 会进行余下的工作。通过多个 DLL 版本的并行执行,解决了 DLL 的不兼容性问题。
有限形式的自动 Internet 部署已包括在 .NET Framework 中,而且一个代码名称为“ClickOnce”的更高级版本被指定为下一版本。与此同时,我发现可以轻轻松松地创建自定义部署系统,并使其利用“复制并运行”来简单、便宜地生成自我更新的应用程序。
浏览器必须安装在客户端系统上,基于浏览器的应用程序才能运行;同样,.NET Framework 必须安装在客户端计算机上,基于 .NET 的智能客户端才能运行。目前,这意味着承担额外的职责,因为对于多数客户端计算机所用的操作系统(Windows XP、Windows 2000 和 Windows 98/Me)而言,它不是自动安装的。但是,安装 .NET Framework 对于这些系统是免费的。随着时间的推移,系统会更新换代,我们将看到 .NET Framework 无处不在,因为 Microsoft 打算将其包括在将来的操作系统产品中。实际上,他们已开始将其包括在 Microsoft® Windows Server™ 2003 中。
保证其全方位安全
我们在过去的数年中了解到 Internet 上的有些人是多么地恶毒,而我们通过将更可靠的安全性构建到系统中来进行回应。但是,很显然分布式智能客户端系统需要新的安全功能。
幸运的是,.NET Framework 的设计包括可靠的安全原则。除了消除缓冲区溢出之类的漏洞外,还有一种新形式的安全性,称为代码访问安全性。根据有关代码的信息(例如,代码来自什么地方或谁编写了代码),它将安全特权授予代码段。此安全性建立在普通的基于用户安全性基础之上,这样则具有另一个保护层。
我认为,正确设计的智能客户端系统比典型的基于浏览器的系统要更安全,因为可以更好地控制客户端系统和服务器系统之间的接口,而且因为系统的可执行部分可仅接收所需的特权。但是,当然,设计如此高级的安全性意味着要学习一些新技术和新概念。
您的行动计划
无须匆忙进入此智能客户端世界。以后两年中的任何时间都可以 - 当然,只要您的竞争对手没有进入此领域即可。用户尚未获取最新的相关信息。尽管部署在成本上花费不高,但仍需要您在客户端计算机上安装 .NET Framework。
但是这些都是暂时的情况。我坚信,智能客户端应用程序会在将来几年中替代许多基于浏览器的应用程序。我之所以毫不怀疑,是因为已有五个客户决定使用了,而且他们对结果感到震惊。
这并不意味着转换没有给他们带来任何痛苦。它要求开发人员学习新的分布式体系结构和新技术。在许多情况下,他们必须更好地进行面向对象的开发和用户界面设计。
那些花费最近五年时间学习基于浏览器部署的开发人员可能不希望进行改变。他们已习惯了作为他们那个时代的领先的开发人员。但是所有的技术都会经历鼎盛期、衰落期,最后被更新的技术所替代。尽管我们继续会看到基于浏览器的应用程序仍会在某些情况下使用许多年,但是我相信基于浏览器的开发现在已经过了其鼎盛期。从鼎盛到衰落可能会经过一段时间,但是这一方向是明确的。准备好迎接智能客户端的回归吧! 
原创粉丝点击