软件体系结构分析与Smart Client的应用

来源:互联网 发布:博客软件app 编辑:程序博客网 时间:2024/05/08 19:32

  

软件体系结构分析与Smart Client的应用  

 

前言 

——网络以及软件体系结构的发展  

 

在软件的应用过程中曾遇到过很多问题,从初期的软件危机到后期各种为解决这种危机出现的高级语言和项目管理的方式,都是在解决因为客户不断增长的需求而带来的,对软件提供的功能到软件的实现方式的各种要求。由于这种增长是与人自身的不断学习和工作的不断深化以及人类所固有的一种追求变化的潜能所造成的。这就使得软件的发展也要与人不断增长的欲望相结合。 

在这些改变当中,软件系统的结构——软件的实现方式,也在不断的改变。从发展的初期计算机都是单机工作的,软件的结构也就只限于单机的应用。随着人类自身的发展需求的增加,慢慢的单机的系统已经不能满足日益庞大和复杂的工作了。网络在这个时候就应运而生。  

开始的时候只是零星的几台终端互相传递一些简单的数据,到后来逐步的要求资源的共享,再到后来又将网络上的某些结点作为专门用于向其他终端提供资源、服务等各项的事务大型终端。这样就根据任务的不同将计算机的应用划分成了两个基本的概念:一个是服务器(Server),专门作为服务用途并为访问它的终端提供预定的服务;另外一个就是客户端(Client,用来应用Server的资源进行相应的工作。这个时期的软件结构也从单机系统转变成了客户端/服务器结构也就是通常所说的C/S结构。这个时期整个的系统的软件和硬件也基本之局限于专用网络,例如1969年美国国防部的国防高级研究计划局(DARPA)建立了世界上第一个分组交换网(ARPARNET)。C/S结构在这种专用的网络上得到了长足的发展。 

但是,在电子技术的快速发展中,计算机网络的结构也在随之发展。超大规模集成块的出现、计算速度的不断提高、网络传送带宽的不断扩容。也直接带来了网络结点的增加。网络的应用也逐渐的向民用化发展,这是的某些专用网络已经不能提供更好的服务了。Internet(广域的网络)也就自然的产生了。它将计算机的应用从专业化走向了民用化。这时传统的C/S结构的软件体系受到了冲击,也为Internet的发展带来了困难(具体的C/S结构给广域网络带来的困难将在后面介绍)。  

为了解决C/S结构带来的问题,一种新型的软件体系结构诞生了,这就是B/S结构Browser/Server——浏览器/服务器结构。它是随着Internet技术的兴起,是对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。 

B/S结构的出现是网络的应用从量的改变转换为质的飞跃的结果。他充分的发挥了客户端简便易用,并且无需过多的维护的特点。但是随着Internet上面的计算机飞速的增加。慢慢的由于服务器所接收的请求越来越多,而且要求的服务也越来越复杂,这使得服务器的负荷增加了很多,网络的效率也降低了。客户端也要求做的事情不在简单的限于浏览。  

要解决这种矛盾,需要解决很多的问题。比如硬件的要求,软件的设计要求,软件的体系结构的要求。矛盾的恶化也影响了网络的以更快的速度发展。微软在这种两难的时期提出了一种将C/S结构和B/S结构的有点集成为一体的技术——Smart Client(智能客户端),来解决日益膨胀的需求。利用C/S结构的灵活性和充分利用客户端资源的能力,加上B/S结构的通讯方式的简洁。为软件系统结构提出了新的思维。我们将在后面详细的对着三中结构做解释,也会对新的Smart Client技术做一个论述。  

 

第一章.          什么是C/S结构  

 

一.        C/S结构的简介  

Client/Server(也称为胖客户端)是通过客户端和服务器上安装不同逻辑实现的软件,然后这些软件通过一种已经协商好的方式进行通讯,实现资源共享和提供服务的结构。 

C/S结构还没成型之前,信息系统一般采用文件共享的方式,通过直接访问数据库来达到数据共享的目的。Client/Server体系结构严格地定义了客户端和服务器端对信息数据的处理范围。即客户端要访问服务器端的数据时,一定是以特定的描述语言,将请求信息首先传递给服务器端,由服务器端的相关模块判别并处理客户端的这个请求。请求处理完毕后,服务器端再将处理结果回传给客户端。这样才算一个访问过程的结束。在这种工作方式下,将服务器和客户端的功能做了详细的区分,并且根据分工不同使信息得以保障。  

二.        C/S结构的特点  

Client/Server结构在一诞生的时候,就以它的灵活性和易用性得到了很多称赞,因为它将软件和相应的终端捆绑起来并赋予了不同的职能。它发展到今天已经也已经非常成熟了,它可以把实现友好人机交互界面的任务交给客户端处理,而服务器端只需完成数据的存储和处理。这种体系结构的优点是: 

u      系统功能强大  

在很大程度上说软件体系的分工,就可以给系统带来更加强大的功能。因为系统的每个部分可以相对独立的完成比较专一的工作,这样就可以将每个功能模块的负载降低。充分的考虑本模块的逻辑。 

u      交互能力强  

在客户端可以拥有非常友好的人机界面,增加了软件的易用性,使工作变的更加轻松自在。服务器端可以充分利用自己的资源只对客户端进行服务。这样就让交流更加简单。 

u      系统运行效率高  

由于功能的分类管理,每个部分只完成自己对应的逻辑功能,就使得整个系统的应用效率得到提高。不过因为某一部分的功能负载过重导致系统效率减低。 

u      并且开发工具和开发手段可选择性强  

C/S的实现过程中,因为很多部分的工作都分担到了客户端,所以相应的开发就灵活了许多。可以通过很多不同的工具来实现逻辑应用。 

 

三.        C/S结构的缺点  

虽然C/S结构有很多的优点,但是这并不代表它就没有缺点。随着网络的不断发展,应用的业务逻辑也越来越复杂,C/S的缺点也就慢慢的暴露出来了。具体的缺点包括一下几个部分:  

u      所开发出来的系统相对比较封闭  

C/S的应用中大多数这种结构的软件系统都只运行于局域网中,因为在广域网站因为一些安全原因导致客户端的软件容易被利用造成对服务器的攻击。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有良好的扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。这时C/S结构就不太能满足这种需求了。 

u      系统结构复杂 

由于对软件的需求的不断增加,使得C/S结构的软件系统变的越来越复杂。出现了各种不过级别的客户端和不同应用方式的服务器。这就必然带来系统的结构复杂性的增加。  

u      开发周期长  

因为系统的结构变的复杂,这就直接导致了开发过程中对相应的逻辑的理解和实现也变的复杂。开发的周期就必然会增加,开发成本和调试成本也就随之升高。这是使用者、开发者和投资者都不希望的事情。 

u      安装和维护比较麻烦  

客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。对客户端的操作系统一般也会有限制。可能适应于Win98, 但不能用于win2000Windows XP。或者不适用于微软新的操作系统等等,更不用说Linux、Unix等。 

传统的CS体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件, 加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高, 效率低。

 

第二章.          什么是B/S结构  

 

C/S的暴露的缺点越来越多的时候,为了克服Client/Server体系结构所存在的问题,人们就开始在寻找一种更好的解决方案来解决自己更高的要求。这时Browser(浏览器)诞生了,这种新的事物给人们带来了新的软件架构思想。就是我们可以通过浏览器来读取服务器端提供给我们的信息。浏览器只负责处理一些通用的协议以向使用者提供信息。这样客户端就不再有那么大的软件需要部署了。客户的请求也可以通过浏览器,用一种协议去请求相应的服务。这就诞生了Browser/Server结构(浏览器/服务器结构)。 

一.    B/S结构简介  

B/SBrowser/Server又叫瘦客户端)结构即浏览器和服务器结构。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层结构。这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。  

B/S结构的主要工作方式是通过客户端的浏览器(比如:Microsoft Internet ExplorerNetscape等浏览器)发送浏览信息的请求到服务器(通常这个请求是通过HTTP等协议来实现的),然后服务器端解析这些协议信息,将相应的信息在数据库或其他设备种找到,然后将这些数据再通过协议传递给客户端的浏览器;浏览器再用特殊的方式将信息反馈给使用者。  

整个过程中浏览器取代了以前C/S结构中的Client端应用程序。其实从某种角度来讲B/S结构是在Internet等广域网络中对C/S结构的一种进化。是用浏览器这种比较通用的客户端软件来取代原有的不能通用的客户端程序。

二.    B/S结构特点 

B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。而且还有很多其他的特性:

u      统一的客户端浏览器让网络和软件系统的应用拓展了空间  

由于客户端是通过浏览器来实现的,所以在使用服务的时候,客户不需要特殊的软件来实现,只需要可以上网就可以利用这个系统。这样就大大了简化了使用者的工作,人们也会逐渐的愿意使用这种结构的产品。无形中网络的发展就会加快步伐。

u      维护和升级方式简单。  

目前,软件系统的改进和升级越来越频繁,B/S架构的产品明显体现着更为方便的特性。对一个稍微大一点公司来说,系统管理人员如果需要在几百甚至上千部电脑之间来回奔跑,效率和工作量是可想而知的,但B/S架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;如果是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。因此,维护和升级革命的方式“瘦”客户机,“胖”服务器。 

 

u      成本降低,选择更多 

由于客户端是采用浏览器,所以软件的开发只需要服务器端的,这就极大的降低了开发的成本。而且因为使用的是相同的协议,那么具有浏览器的客户端对系统的要求也就降低了。操作系统就不向C/S结构中那样必须局限在某一个特定的操作系统中。在B/S下可以应用各种操作性来完成自己的任务,充分的发挥了B/S结构的多选择性。  

三.    B/S结构的缺点  

一次问题的解决将必然引起一些新的问题的产生。任何的系统或者任何的事情都在遵守着这个原则。正因为如此B/S结构的软件系统也不可避免的在遵循着这个原则。当然这还是因为人类需求的不断增加才产生的。 

在这里总结一下B/S结构的软件系统有什么缺点: 

u     应用服务器运行数据负荷较重 

由于B/S结构的管理软件只安装在服务器端Server)上网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑在服务器(Server)端完全通过WWW浏览器实现。因此大部分事务逻辑不需要在前端(Browser)实现,所有的客户端只有浏览器。这中情况下就必然会给服务器端的数据负荷带来较重的压力,这样如果服务器端分析的逻辑复杂度很高,那么就将造成整个系统的运行效率降低。 

u     整个系统过于依赖网络  

因为客户端没有了复杂的客户端软件,所以客户端只能通过浏览器来对网络上的资源进行访问。那么就必然造成客户端资源的浪费,客户端必须依赖于网络才能完成任务。一旦网络或者服务器因为逻辑错误或者其他的物理问题(比如停电、人为的损害等)而停止。那么客户端就等于失去了方向。就将完全没有工作能力了。 

u     安全性问题层出不穷  

众所周知微软的IE浏览器曾给我们带来了多少的安全问题,向基于IE的病毒、木马和黑客通过IE的漏洞对系统进行攻击等等,都是因为这种结构所暴露出来的安全问题。这种问题也给使用者带来了很多的不便。  

u     开发中过多的考虑客户端的显示问题  

因为客户端运行的只是浏览器。那么对于浏览器中显示的内容在设计阶段也要考虑很多。但是由于当前的技术原因,造成了客户端的显示远没有C/S中直接利用客户端资源来构架表示曾那么灵活那么简便。 

 

第三章.          问题  

 

网络的使用越来越普遍,人们对于网络和软件系统的要求也在不断的增加。这种不断增长的需求使以往的软件开发方式和软件的体系结构都难以满足人的这种贪婪所带来的新问题。这也是不可避免的,也是技术发展和人类发展的根本动力。人们对于原有的软件系统的问题越来越不能忍受,他们要求变化要求将已有的问题都一一的解决。这就必须要有一种新的解决方案来克服原有的C/S结构和B/S结构或者一些其他非主流结构带给我们的问题。  

让我们来总结一下C/S结构和B/S结构给我们带来的主要问题。 

C/S:  

u      所开发出来的系统相对比较封闭  

u      系统结构复杂  

u      开发周期长  

u      安装和维护比较麻烦  

B/S:  

u      应用服务器运行数据负荷较重 

u      整个系统过于依赖网络  

u      安全性问题层出不穷  

u      开发中过多的考虑客户端的显示问题   

 

这些问题曾经给我们带来很多的不便,也曾经让我们对软件结构的发展方向感到迷茫。很多人都有个各自不同的新的解决方案想解决这些问题。但是由于技术等诸多原因。使这种尝试变得越来越困难。人们都期待着一个新的革命来改变现在的一切。 

 

第四章.          Smart Client  

——智能客户端  

 

到现在我们应该对C/SB/S结构给我们带来的优点和缺点都有了一个大概的了解。通常情况下人们要解决一个问题都会找出以前解决方案中出现的错误,在这些方案中寻找好的部分,将这些好的部分留下,然后利用更先进的思想和技术将不好的部分克服。 

微软就是利用了这种方式,适时的推出了一种新的解决方案——Smart Client(智能客户端)。通过这种解决方案将C/S结构和B/S结构的优点继承下来,将这些结构中的缺点通过一些比较先进的技术加以克服。用这种方案来迎接下一带的技术革命和新的更复杂的需求。 

一.    什么是智能客户端? 

经过设计,智能客户端应用程序可以将C/S应用程序的优点与B/S应用程序的部署和可管理性优点结合起来,尽管这两种方法之间的平衡的准确性质取决于确切的情况。  

智能客户端应用程序通常具有形形色色的要求,因此在设计和实现方面会有极大的差异。但是,所有智能客户端都具有下列部分或全部特征: 

u      利用本地资源  

u      利用网络资源  

u      支持偶尔连接的客户 

u      提供只能安装和更新  

u      提供客户端设备的灵活性  

许多应用程序不需要具有上述所有特征。当设计智能客户的时候,将需要仔细考虑应用程序方案,并且决定智能客户端应用程序要求具备上述哪些特征。要将上述所有特征合并到应用程序中,将需要进行非常认真的计划和设计,并且在很多情况下将需要大量的实现资源。 

注: .NET 框架可以帮助我们实现智能客户端应用程序的许多特征。该框架提供了具备自我描述能力且牢固绑定的程序集,并且支持单独和并列安装应用程序的多个版本,从而有助于减少与胖客户端相关联的应用程序部署和脆弱性问题。.NET 框架基类库为与 Web 服务进行交互提供了广泛的支持,并且提供了 Windows 窗体。通过使用公共语言运行库 (CLR),您可以利用任何受到 .NET 支持的语言来开发智能客户端。 

使用本地资源  

设计良好的智能客户端应用程序最大限度地利用了代码和数据部署在客户端上并且在本地执行和访问这一事实。它为应用程序提供了内容丰富且响应迅速的用户界面,以及强大的客户端处理能力。例如,它可能使用户能够执行复杂的数据操作、可视化、搜索或排序操作。 

智能客户端可以利用客户端硬件资源(如电话或条码读取器)以及其他软件和应用程序。这使它们非常适合于解决瘦客户端应用程序(如销售点终端应用程序)无法很好解决的问题。智能客户端还可以利用本地软件(如 Microsoft Office 应用程序)或客户计算机上安装的任何 LOB 应用程序。通过创建能够与多个 LOB 应用程序集成并对这些应用程序进行协调的解决方案,您的用户可以更为有效地工作,进行更好的决策,并减少数据输入错误。此类解决方案还可以使您的应用程序更加紧密地与用户的工作环境集成(例如,通过采用自定义的或熟悉的用户界面),从而降低培训成本。

可以通过智能客户端应用程序集成或协调其他客户端应用程序,以便提供一致且高效的总体解决方案。这些应用程序还应该了解正在使用应用程序的上下文,并且应该适应该上下文以尽可能地帮助用户;例如,通过根据用户的使用模式或角色抢先缓存适当且有用的数据。 

通过最大限度地使用本地资源以及将本地资源集成到您的智能客户端应用程序,可以使您的应用程序更好、更有效地使用已经提供给您的硬件。非常常见的情况是,处理能力、内存和高级图形功能没有得到利用。使用客户计算机上的资源还可以减少服务器端硬件要求。  

使用网络资源  

智能客户端可以通过网络消耗和使用不同的服务和数据。它们是从许多不同的源检索数据的有效方式,并且可以设计为对数据进行分析或整合,从而使用户能够进行更为有效和明智的决策。例如,智能客户端可以使用映射服务来提供有关地点和驾驶方向的详细信息。

智能客户端应用程序应该尽可能地连接,并且应该利用可以通过网络使用的资源和服务。它们不应该是独立的应用程序,并且应该总是构成更大的分布式解决方案的一部分。智能客户端应用程序起码应该使用有助于维护该应用程序以及提供部署和更新服务的集中式服务。 

智能客户端应用程序的连接性质使其可以提供有价值的数据整合、分析和转换服务。它们使用户可以实时地或者在一段时间内协作完成任务。在许多情况下,智能客户端应用程序可以向用户提供类似于门户的功能,从而将完全不同的数据和服务加以协调并集成到总体解决方案中。

 

支持偶尔连接的用户  

可以将智能客户端设计为向偶尔连接到网络的用户提供功能,从而使用户可以在明确脱机、使用低带宽或高延迟网络,或者连接时断时续的情况下继续高效地工作。对于移动应用程序,智能客户端还可以优化网络带宽例如,通过将请求批量发送到服务器,以便更好地使用代价昂贵的连接。 

即使当客户端大多数时间都连接到网络时,智能客户端应用程序也可通过以智能方式缓存数据和管理连接来改善性能和可用性。例如,在低带宽或高延迟环境中,智能客户端应用程序可以用特殊的方式管理连接,即不损害应用程序的可用性和响应性,并且用户可以继续高效地工作。 

通过使用户能够在断开连接或只偶尔连接的情况下工作,提高了用户的工作效率和满意度。智能客户端应用程序应该致力于在脱机时提供尽可能多的功能 

提供智能安装和更新  

传统胖客户端所具有的一些最大的问题发生在部署或更新应用程序的时候。许多胖客户端应用程序具有大量复杂的安装要求,并且可能通过注册组件以及/或者在公共位置安装 DLL 来共享代码,从而导致应用程序脆弱性和更新困难。 

可以对智能客户端应用程序进行设计,以使其按照远比传统胖客户端应用程序更智能和灵活的方式来管理它们的部署和更新。它们可以避免上述常见问题,从而有助于减少应用程序的管理成本。 

有许多部署智能客户端的不同方式。这些方式包括:简单地将文件复制到本地计算机;使用非接触式部署自动从中央服务器下载代码;或者使用企业推技术如 Microsoft Systems Management Server (SMS) 来部署 Windows Installer 软件包。您选择的方法将依赖于您的特定情况。 

智能客户端应用程序可以在其运行时或位于后台时对自身进行自动更新。这一功能使其可以逐个角色地进行更新;以分阶段的方式更新,从而可以将应用程序推介给先导小组或受限的用户组;或者按照制定的时间表更新。  

.NET 框架使您可以对应用程序组件进行强命名,这意味着应用程序可以指定用来生成和测试其确切版本的组件,并通过这些版本的组件运行。.NET 框架使应用程序可以相互隔离,以便在安装一个应用程序时不会破坏另一个应用程序,并且同一应用程序的多个版本可以并列部署。这些功能大大简化了应用程序部署,并且消除了许多与胖客户端应用程序相关联的应用程序脆弱性问题。 

提供客户端设备灵活性  

智能客户端还可以提供灵活且可自定义的客户端环境,从而使用户可以将应用程序配置为支持他或她喜欢的工作方式。智能客户端应用程序没有被限制到桌面计算机或膝上型计算机。随着小规模设备的连接性和能力的增加,愈发需要能够提供对多个设备上重要数据和服务的访问的有用客户端应用程序。与 .NET 框架压缩版一起,.NET 框架提供了一个可用来生成智能客户端应用程序的通用平台。 

可以对智能客户端进行设计以使其适应宿主环境,并且为它们运行时所在的设备提供适当的功能。例如,适合在 Pocket PC 上运行的智能客户端应用程序应该提供相应的用户界面,该用户界面在较小的屏幕区域上被调整为使用笔针。  

在许多情况下,您需要设计多个版本的智能客户端应用程序,每个版本都面向特定的设备类型,以便充分利用该设备所支持的特定功能。因为小规模设备通常在提供完整范围的智能客户端应用程序功能方面受到限制,所以它们可能只提供对功能完善的智能客户端应用程序所提供的数据和服务子集的移动访问,或者它们可用于在用户移动时收集和整合数据。最后,可以由功能更加完善的智能客户端应用程序或服务器端应用程序来分析或处理这些数据。 

能够感知目标设备的功能和使用环境(无论它是桌面、膝上型、平板还是移动设备),以及能够定制应用程序以提供最适当的功能,这些都是许多智能客户端应用程序的基本特点。

本指南不包含特定于在移动设备上运行的智能客户端应用程序开发的体系结构和设计细节,但是,无论应用程序是在桌面计算机上运行还是在其他设备上运行,本指南包含的许多主题都同样适用。  

 

二.  智能客户端的类型 

      智能户端在设计和实现方面差异极大,这既包括应用程序要求,也包括可以使用它们的方案和环境的数量。因此,智能客户端可以采取许多不同的形式和风格。根据智能客户端应用程序所面向的平台,可以将这些形式划分为三大类: 

 

 

1

 

 

 

 

 

Windows 智能客户端应用程序

 

 

 

 

 

2

 

 

 

 

 

Office 智能客户端应用程序

 

 

 

 

 

3

 

 

 

 

 

移动智能客户端应用程序

 

 

 

 

 

智能客户端应用程序面向上述一种或多种平台是很常见的情况,具体取决于用户的角色以及需要的功能。这种灵活性是智能客户端应用程序的主要长处之一。

 

1.           Windows 智能客户端应用程序  

当我们想到胖客户端应用程序时,我们通常可能会想到使用可用的系统资源并且提供内容丰富的用户界面的桌面应用程序。面向 Windows 的智能客户端应用程序是在传统胖客户端应用程序的基础上发展而来的,并且提供特定的面向特殊目标的功能。  

这些种类的应用程序通常使用 Windows 窗体来提供熟悉的 Windows 风格的用户界面,并由应用程序本身提供大部分功能,而且不依赖于其他应用程序来提供主用户界面。这样的智能客户端既可能包括通过 HTTP 部署的简单应用程序,也可能包括非常复杂的应用程序。  

Windows 智能客户端应用程序适合于需要将应用程序作为熟悉的桌面类型应用程序进行部署和访问的情况。这些类型的应用程序通常由其自身提供其大部分功能,但是在适当的时候可以与其他应用程序集成或者协调其他应用程序。它们提供针对特定任务进行调整的应用程序功能,以提供特定的或高性能的处理或图形能力。  

Windows 智能客户端应用程序通常最适合于在桌面 PC、膝上型 PC 或平板 PC 上运行的应用程序。此外,它们通常不会提供与特定文档或文档类型紧密关联的功能。  

可以在各种各样的场合下使用这些种类的 Windows 智能客户端应用程序,例如作为 LOB、财务、科学或协作应用程序使用。这些种类的应用程序的示例有 Microsoft Money 以及 Microsoft Outlook® 消息处理和协作客户端。 

 

2.           Office 智能客户端应用程序  

Microsoft Office System 2003 为我们提供了用来生成智能客户端应用程序(尤其是在企业设置中)的有用平台。通过 Office 智能客户端解决方案,我们可以通过 Web 服务访问的数据源与 Word 2003Excel 2003InfoPath 2003 或其他 Office应用程序的功能集成起来,以开发智能客户端解决方案。 

这样的 Office 智能客户端应用程序可以成为组织的信息管理周期的集成部分,而不只是文档数据的静态容器。当用户在文档内工作时,它们可以提供上下文相关的数据,以及可以将 Web 服务公开的数据转换为有用信息的工作流和任务指导、数据分析、协作、报告和呈现功能。  

Microsoft Office 支持 XML,并且可以将该数据与文档的其他方面分开,以便它可以由其他应用程序重新使用。因为 Microsoft Office 中的应用程序数据可以由多个应用程序中相同的客户定义 XML 架构进行说明,所以开发人员可以将这些数据集成到智能客户端应用程序中。 

Microsoft Office 2003 具有许多用于生成智能客户端解决方案的重要功能和选项。这些功能和选项包括: 

 

 

 

 

 

智能标记。智能标记为应用程序提供一种方法,可以为用户提供与文档内容有关的上下文相关数据,用户在文档内工作时,可以通过该方法容易地查看和使用相关信息。例如,使用智能标记,可以在文档内引用客户时提供相应客户的帐户状态,或者可以在键入订单 ID 时提供订单状态信息。这种上下文相关的反馈使用户可以在工作时进行更为明智的决策。

 

 

 

 

 

 

 

 

 

 

智能文档。智能文档为用户提供了更为强大的与文档和业务 Web 服务进行交互的方法。智能文档是 Word 2003 Excel 2003(它们具有基础 XML 结构和自定义的任务窗格)的一种新的解决方案模型。可以使用该任务窗格向用户显示上下文信息、任务、工具、后续步骤以及其他相关信息。用户能够通过与该任务窗格交互来启动其他操作和任务,从而可以构建综合性业务解决方案。

 

 

 

 

 

 

 

 

 

 

适用于 Microsoft Office System Microsoft Visual Studio_ 工具。该工具套件使开发人员能够通过使用 Microsoft Visual Studio .NET 2003 开发系统来创建托管代码 Office 智能客户端应用程序。开发人员可以将文档解决方案与基础代码分开(与以前的包含带有自定义逻辑的 Visual Basic for Applications 宏的智能客户端模型相比,这是一种替代解决方案)。通过将托管代码与 Microsoft Office 一起使用,开发人员可以获得更多为智能客户端解决方案创建、部署和管理更新的有效选项。

 

 

 

 

 

 

 

 

 

 

Microsoft Office InfoPath™ 2003InfoPath 2003 是能够使用类似于表单的界面从用户那里收集结构性数据的应用程序。InfoPath 2003 提供了对 XML Web 服务(一种基于表单的用户界面)的支持,以及对标准技术(如 WSDL UDDI)的支持。InfoPath 2003 支持有限的脱机使用,方法是允许用户在脱机时与表单进行交互,然后允许用户在联机时将该表单转发给 Web 服务。

 

 

 

 

 

有关Office 2003的详细说明在微软的MSDN网站上可以查阅,在这里我们就不再做详细的介绍了。

 

 

 

3.移动智能客户端应用程序  

移动智能客户端是在智能设备上运行的应用程序,这些智能设备包括 Pocket PCSmartphone 以及其他超小型台式设备(如机顶盒)。这些应用程序是使用 .NET 框架压缩版(它是完整 .NET 框架的子集)开发的。 

.NET 框架压缩版具有完整 .NET 框架的许多功能,支持 XML,并且消耗 Web 服务。它被进行了优化以便在超小型台式设备上使用,并且它包含用于开发用户界面的 Windows 窗体设计器。 

通过使用 Visual Studio .NET 智能设备项目,您可以开发能够在 .NET 框架压缩版上运行的智能客户端。采用这一方法,您可以通过在超小型台式设备的模拟器上使用 Visual Studio .NET 来开发、测试和调试应用程序。模拟器的使用大大加快了这些类型应用程序的开发和测试速度。 

移动智能客户端应用程序通常用于提供对重要数据和服务的移动访问,或者在用户处于移动状态时收集和整合数据。这些类型应用程序的示例有保险和金融数据收集应用程序、库存管理应用程序和个人工作效率管理应用程序。  

 

三.  对智能客户端和瘦客户端进行取舍  

要针对我们的情况选择正确的应用程序体系结构,必须考虑许多因素。要确定智能客户端方法是否最适合我们的应用程序,必须认真考虑我们当前和将来业务应用程序的需要。如果应用程序基于不适合的体系结构,则它可能无法满足用户和整个企业的要求和期望。如果以后更改体系结构以满足新的要求或者利用新的机遇,则可能要付出极为高昂的代价。  

如果需要向各种外部受众提供面向外界的应用程序,则瘦客户端体系结构通常最为适当;而对于需要与其他客户端应用程序或硬件集成或者对它们进行协调,或者需要脱机工作或通过响应迅速的用户界面提供特定高性能功能的内部应用程序而言,智能客户端体系结构通常最为适当。  

实际上,这两种方法在很大程度上互相重叠,而且每种方法都具有明显的优点和缺点。我们只有在认真考虑要求并且了解如何在我们所处的场合下应用每种方法之后,才能够选择正确的方法。在下面的表中罗列出了对智能客户端和瘦客户端体系结构对比用来对将来的设计架构进行取舍。  

u      瘦客户端和智能客户端的特点 

 

特点

 

 

 

 

 

瘦客户端

 

 

 

 

 

智能客户端

 

 

 

 

 

提供内容丰富的用户界面

 

 

 

 

 

可以,但难以开发、测试和调试。通常将应用程序与单个浏览器联系起来。

 

 

 

 

 

是。更易于开发、测试和调试。

 

 

 

 

 

可以利用本地计算机上的硬件资源

 

 

 

 

 

是,但只能通过 COM 组件使用。

 

 

 

 

 

 

 

 

 

 

可以与其他本地应用程序交互

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

可以多线程化

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

可以脱机工作

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在低带宽和高延迟环境中可以很好地执行。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

易于部署

 

 

 

 

 

 

 

 

 

 

不一定。困难程度取决于应用程序要求。

 

 

 

 

 

低维护和更改管理成本

 

 

 

 

 

 

 

 

 

 

不一定。成本取决于应用程序要求。

 

 

 

 

 

可以部署到具有不同功能的多种客户端上。

 

 

 

 

 

是,尽管更复杂的瘦客户端可能要求单个浏览器。

 

 

 

 

 

是。可以在支持 .NET 框架(包括 .NET 框架压缩版)的任何平台上部署。

 

 

 

 

 

四. 智能客户端体系结构难题 

  智能户端的体系结构难题是不同于瘦客户端的,并且我们需要在我们的应用程序设计中予以考虑。智能客户端应用程序具有显著的优点,但是我们只有在适当地解决这些难题之后才能实现这些优点。 

通过智能客户端可以将数据和逻辑分发到客户计算机,而瘦客户端则倾向于将数据和逻辑集中存放在 Web 服务器和其他后端服务中。尽管可以通过智能客户端方法使应用程序变得更加高效,并且不需要与服务器进行往返通讯以确定后续步骤,但我们需要考虑到应用程序及其数据现在比瘦客户端应用程序分布得更为广泛,并且相应地修改我们的设计。  

如果我们要在客户端上实现业务规则,我们将需要在必要时更新这些规则,而不是更新整个应用程序。这可能意味着我们需要使用不同的机制来分别更新该应用程序以及更新该应用程序内部的业务规则。 

通过在客户端上缓存数据,我们可以显著改善应用程序的性能和可用性,但我们必须确保适当地刷新数据并且不会使用陈旧的数据。因为许多用户可以访问和使用相同的数据,我们还必须考虑数据并发的影响。我们的应用程序必须能够处理出现的数据冲突或一致问题,因为应用程序现在分布得更为广泛,并且可以脱机操作。 

.NET 框架在智能客户端应用程序的宿主方式方面提供了极大的灵活性。应用程序可以作为传统桌面应用程序运行,还可以宿主在 Office Microsoft Internet Explorer 内。也可以进行许多种组合。例如,Windows 窗体应用程序可以宿主 Internet Explorer Office 组件,并且任何宿主都可以包含任何其他宿主。 

我们可以将不稳定的应用程序逻辑(例如,控制大订单折扣的业务规则)结合到根据需要通过 HTTP 下载的程序集中。这样做消除了在开发新应用程序逻辑时部署新版本客户端应用程序的需要。我们可以使用与附加(或不常使用)应用程序功能相同的模型,以便使初始应用程序规模保持最小,并且根据需要安装附加功能。 

我们可以选择将我们的智能客户端作为复合应用程序进行部署,此时许多应用程序组合起来构成一个统一的解决方案。可以通过耦合桌面应用程序,或者通过提供一般性的外壳应用程序以容纳多个共同构成解决方案的轻型应用程序,来构成这样的解决方案。  

当用户必须访问许多应用程序以完成其工作时,复合应用程序尤其有用。例如,呼叫中心中的客户服务代理通常必须使用许多 LOB 应用程序,包括桌面应用程序、基于浏览器的应用程序以及基于终端的应用程序。所有这些 LOB 应用程序都可以宿主到在它们之间提供集成的普通 Windows 窗体应用程序中,从而大大简化用户的工作,最为重要的是减少花在特定呼叫上的时间。通过提供普通外壳来宿主这些 LOB 应用程序,可以在不同的解决方案中开发、测试和重用通用基础结构功能,如安全性、部署、窗口管理、应用程序集成、审核等等,从而使 LOB 应用程序的开发人员能够将精力集中于业务功能。  

面向服务的体系结构的出现意味着您可以设计智能客户端来利用网络服务。所有此类服务都是以行业标准方式提供的,这就改善了互操作性、开发人员工具支持以及在智能客户端应用程序中内置新功能的容易程度。

 

 

第五章     总结 

 

 

我们知道任何事物的发展都是螺旋上升的。任何一个事物也总有它的矛盾对立面。不管我们做出任何的选择总会有另外一个或者另外多个候选的方案让我们对当前的方案失去信任。这也是为什么C/SB/S等结构的产生和发展的一个必然动力。我们不能说C/S或者B/S不好,也同样不能说会有更好的方案能让我们真正的解决了我们所有的问题。 

在《没有银弹》中说过“没有任何一种单纯的技术或者管理上的进展,能够独立地承诺十年内使生产率、可靠性或者简洁性获得数量级上的进步”。也就是说不管是从技术方面还是从管理方面都不可能使我们的工作真正的达到某种我们所期望的质的提高。我们也只能通过不断的积累和不断的总结来逐步的让我们的工作在量变的方向上做的更好。我们也不要去过于依赖于技术或者管理会给我们带来多大的改变。 

C/S结构也好B/S结构也好或者是Smart Client(智能客户端)也好这些结构都只是在我们要解决一些局部问题的时候才产生的。并不能说越往后产生的结构就越适合于我们。我们只能通过对自己的不断了解逐步的选择适合于我们自己的结构来完成将来的工作。每种结构都有它自己适用的范围,每种结构也都有各种各样的优点和缺点。

在这里我们可以做一个简单的总结,说明一下这三种结构最适合的场合。C/S结构只适用于小型的局域网络,做一些比较灵活的客户端应用;B/S结构适合于广域网络(Internet)Smart Client是界于C/SB/S结构之间的一种综合运用这两种结构有点的系统可以根据需求来确定Smart Client的范围。当然,由于Smart Client的这种特殊性也造成一定的开发开支,需要开发团队对这种结构有相当的了解这样才会充分发挥Smart Client的强大功能。

注:以上的关于Smart Client的描述是引自MSDN上的相关文章。 

原创粉丝点击