企业管理软件是计算机软件应用的一个重要领域,在今天计算机软件除面向科学计算之外应用最广阔的也是企业管理应用,可以说计算机技术的发展推动着企业应用发展,企业管理需要也一方面影响着计算机技术的发展,今天,在我们的周末,企业管理应用软件开发人员占了总开发人员中的极大的比例。
今天我们就来通过回顾计算技术在企业应用中的发展历程来看看软件架构的发展。
主机-字符终端
在PC机没现世之前,极小数的企业使用大型业务处理主机处理企业计算机任务,在那个时候,计算机计算机价格非常昂贵,体积庞大,都是采用多个终端机连接上服务器的形式进行软件操作。
上图即所谓的主机--->终端结构,而一个终端,其实仅仅只是一台显示器和键盘而已,没有CPU和内存,只能接受操作输入和输出结果,没有任务的处理能力,我们可以理解终端为主机的延伸,那么他的逻辑结构呢,就是一个多用户多任务的处理程序。
客户机-服务器结构
PC机的问世,加速了企业应用软件的发展,一方面个人PC机的成本较低,功能也比较强大,企业有能力为员工配备更多的计算机提高工作效率。同时由于企业应用软件的功能逐渐丰富,应用范围越来越宽广和深入,所以对计算机性能的要求也越来越高。在高速的发展的企业应用需求下,传统的大型机的性能已经显现其不足,而与此同时,企业内部却有着大量空闲计算能力的PC电脑。因此,在经济利益的驱动下,企业应用软件开始向分布式的结构发展,将一部分的计算任务放到客户端PC来执行,而服务器仅仅只用来运行一些数据库软件,最大的程度的利用到所有计算机的计算能力,以提高性价比。这种企业软件的应用架构模式被称之为客户端(Client)/服务器(Server)模式,也就是通常所说的C/S模式。
随便PC机性能的飞速发展,大量的服务器采用PC技术生产,即大家常见的PC服务器【(X86-X64)服务器】,其价格相对大型主机、小型机非常的低廉,而其计算机能力也越来越接近小型机。
在这种分布式结构之中,可以充分利用两端硬件环境的优势,将任务合理分配到 Client端和Server端来实现,降低了系统的通讯开销,服务器存储业务数据并势力有限的业务计算机,PC客户处理人机交互及绝大部分业务计算职能。目前大多数应用系统都是Client/Server形式的两层结构, 由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
严格的来说,客户机-服务器结构(C/S)是分布式的一种经典结构,也是所有分布式结构衍生体系的基础,如果没有CS结构,就不可能存在BS结构、CAS结构、以及SAAS、云结构等。
浏览器-服务器结构
因为C/S模式所带来的一些固有的缺陷,比如直接连接数据库服务器引发潜在的安全性问题以及客户端程序的大规模部署和更新比较麻烦,C/S应用程序比较复杂等等问题都导致了C/S模式的企业应用软件开发和维护成本一直居高不下。
基于以上C/S结构的这些问题,出现了一种新的结构,即将企业应用的绝大总分业务计算机能力都放到服务器之上,客户端PC仅仅只运行一个WEB浏览器用于接受用户的输入和呈现。降低了软件的维护成本。这就是浏览器(Browser)/服务器(Server)架构模式,也就是我们很熟悉的B/S模式。
在这种结构之中,数据库服务器同C/S结构之中的服务器职能一样,存储数据并处理一部分业务,同C/S不同的是,承载绝大数据业务处理能力由PC客户端转移到Web服务器,而PC客户端弱化到类似于一个终端,只是这个终端不是字符终端,而是一个图像终端。
如果去追究这处结构的本质,我们可以理解为B/S结构为以C/S结构为基础的新型网络终端结构,即如下解释:
1.数据库服务和Web服务器组成了一个简单的C/S结构。
2.Pc机上的浏览器即一个图形终端,相对于服务端(Web服务器及其外端数据库)来说,其几乎没有任务的计算能力,仅为一个输入和输出设备。
B/S结构最大的好处是使用方便和部署简单,使用者可以在装有浏览器并能能联网手PC机上访问应用程序,而不需要同C/S程序一样运行前必须安装与配置,这极大的方便了使用者,也极大的降低了应用的部署和维护成本,但其缺点也是显著的,用户感觉不好。
C/S与B/S结构有对比
B/S结构同C/S结构一样,也是一种非常经典的分布式计算结构,在目前企业应用结构之中,都采用这种结构或者这两种结构的衍生结构,这两种结构各有优缺点,CS结构优点是客户操作体验好,而B/S结构部署和维护成本更低。
B/S结构的优点
(1)、具有分布性特点,可以随时随地进行查询、浏览等业务处理。
(2)、业务扩展简单方便,通过增加网页即可增加服务器功能。
(3)、维护简单方便,只需要改变网页,即可实现所有用户的同步更新。
(4)、开发简单,共享性强
B/S 模式的缺点
(1)、个性化特点明显降低,无法实现具有个性化的功能要求。
(2)、操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。
(3)、页面动态刷新,响应速度明显降低。
(4)、功能弱化,难以实现传统模式下的特殊功能要求。
C/S 模式的优点
1.由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。
2.操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。
3.C/S结构的系统具有较强的事务处理能力,能实现复杂的业务流程。
C/S 模式的缺点
1.需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。
2.兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。
胖客户端与瘦客户端
不管是C/S还是B/S,其都需要客户端技术,对于C/S模式和B/S模式这两种结构,也有两种不同的客户端技术对应,瘦客户端(B/S模式)技术和胖客户端(C/S模式)技术。
对于瘦客户端技术,典型的应用就是使用浏览器,通过输入URL远程访问服务端,并向服务端发送命令,获取服务端的资源,然后在客户端的浏览器上显示出来。由于这种技术数据库存放在服务端,客户端应用界面的也是由服务端的文件生成,因此在客户端上占用资源少,对客户端的设备要求不高,只需一个浏览器软件和可用的网络便能开始工作,另外,如果系统需要升级修改,只需要在服务端更新文件,当客户再次访问时,就可以使用新的应用系统了,因而部署和升级重点都放在了服务端,实现起来比较简单。但是,这种B/S模式依赖网络,当网络不可用时或出现性能不稳定的情况时就会导致客户端变成“死界面”――既不能将数据发送回服务端进行保存,又不能从服务端获取数据拿到客户端操作,一切的工作将要在网络恢复后才能得以继续。
对于胖客户端技术,用户在使用这种软件时获得的最大的感官体验就是――它首先有自己独特的应用程序界面,而非通过浏览器,用户甚至还可以根据自己的喜好调整软件的布局,进行丰富的界面元素的设置,这些都是B/S模式的瘦客户端技术所不能媲美的。另外,用户还能获得较快的反应速度,程序可以充分利用本地机器的资源,在不使用网络访问远程资源时,本地资源的访问在正常情况下都能得到很快的处理。同样的,胖客户端技术也有着不尽人意的地方――在客户端进行部署时,由于客户端可能出现各种各样的情况,所以需要进行必要的设置,部署起来比较困难,如果对软件的版本进行升级,使用传统的DLL技术的那将更是一个大的挑战,因为在.NET之前,标准Windows DLL或COM组件可能出现“DLL Hell”――注册和更新软件中的DLL时,发现共享的DLL被最新版本改写了,并使该机器上的其他软件也因此不能运行。胖客户端有可能需要在客户端实现数据库支持,数据库放在本地有可能导致一些安全问题,因为相对于更重视安全的服务端,客户端相对而言还是比较脆弱的。
C/A/S结构
C/S结构及B/S结构都有其优秀的一面,但也有其不足的一方,那有没有办法吸引这两者的优点呢,比如我们即需要C/S程序优秀用户体验但降低维护和部署成本呢,那么就出现了C/S结构的一种衍生结构,客户端/应用服务器/数据库服务器结构。
在C/A/S结构之中,数据库服务器同C/S结构之中的服务器职能一样,存储数据并处理一部分业务,应用服务器承载绝大多数业务处理,PC客户端需要安装应用程序客户端,但其只处理用户UI及UI逻辑,同简单的C/S结构相比,因为其业务运行于应用服务器之上,那么业务运行相对于来说比较集成,针对业务的运维成本就会降低,C/A/S结构通常结合客户端自动升级技术,也大大的减少了部署和维护成本,相对于单纯的B/S结构相比,因为有独立客户端的存在,带给用户更好的用户体验。
通常在这种C/A/S的分布式计算结构之中,在PC客户端和应用服务器之间,大量采用WebService、Remoting、Corba、DCOM、WCF等分布式通信技术或者融合SOA架构。
.NET智能客户端
.Net智能客户端是微软提出来的C/A/S结构的一种技术,其结合了瘦客户端(B/S模式)和胖客户端(C/S模式)的长处,能够充分的利用胖客户端模型带来的好处,提供给用户出色的操作体验,同时,也能够让我们享受集中部署和更新带来的好处。简而言之,这种新一代的客户端应用程序,就是被称之为“智能”客户端,它能很好的提供原本两种客户端的特性,并且增加了数据和连接的管理,产生了一种更好的用户体验。
有关于.NET知道客户端更多的介绍请参考: http://www.microsoft.com/china/MSDN/library/architecture/Smart.mspx?mfr=true。
不管是普通的C/A/S结构的应用还是.NET知道客户端的应用,其道理都是一样的,即采用C/S结构为其基础结构融合B/S结构中的某些优秀的特性,在目前,应用这种技术的商业应用很广。
富互联网应用
在基于C/S为基础架构的商业应该之中,采用了C/A/S、智能客户端技术来弥补简单的C/S应用的某些不足,在流行的B/S开发领域,也出现了一种以B/S技术为承载的改善客户使用体验的技术,即 富互联网应用技术。
富互联网应用(Rich Internet Applications),即RIA,具有高度互动性、丰富用户体验以及功能强大的互联网客户端应用程序,传统网络程序的开发是基于页面的、服务器端数据传递的模式,把网络程序的表示层建立于HTML页面之上,而HTML是适合于文本的,传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求了,这就是被Macromedia公司称之为的“体验问题”("Experience Matters"),而富因特网应用程序(Rich Internet Applications,缩写为RIA)的出现也就是为了解决这个问题。
RIA技术的好处是很显而易见的,其秉承了B/S的的优秀基因,所以其部署和维护相比C/A/S和智能客户端结构更加的方面,只是在应用主中需要优秀的客户体验的使用RIA技术开发,其和传统的B/S应用能很好的融合在一起。
下面简单介绍几种RIA应用技术:
Adobe Flash/Flex
Flash 从6.0开始Flash就逐步具备建立窗体风格的应用程序的功能。据Adobe称已经有98%以上的桌面系统的浏览器都安装了 Adobe Flash Player。这使得以Adobe Flash Player为客户端的RIA可以支持种类广泛的平台和设备。
Flex是为满足希望开发 RIA的企业级程序员的需求而推出的表示服务器和应用程序框架,它可以运行于J2EE和.NET平台。Flex表示服务器提供基于标准的、声明性的编程方法和流程,并提供运行时服务,用于开发和部署丰富客户端应用程序的表示层。Flex开发者使用直观的基于XML的MXML来定义丰富的用户界面。该语言由 Flex服务器翻译成SWF格式的客户端应用程序,在Flash Player中运行。
SilverLight
微软在Mix07上发布一些重大通告,其中最值得关注的就是SilverLight的发布,SilverLight的前身就是WPF/E技术。
这是一种新的Web 呈现技术的名称,创建该技术的目的是使其能够在各种平台上运行。该技术支持创建丰富的、具有绚丽视觉效果的交互式体验,并且可以随处实现:无论是在浏览器内、在多个设备上还是在桌面操作系统(如 Apple Macintosh)中。
Java SWT
Java 已经出现几年了,并且完全支持创建基于窗体的用户界面。除了Java基础类(JFC/Swing)中的用户界面组件之外,开发人员还可以使用来自于 Eclipse Project的SWT工具箱和许多第三方工具箱进行开发。对于图形来说,可以采用Java 2D API:一个非常完整且非常复杂的图形API。你可以通过一个Web浏览器使用Java插件软件,或使用Java运行时环境中较新的Java Web Start技术来部署应用程序。使用Java建立Rich Client的主要缺陷是它的复杂性(即使对简单的窗体和图形也要求编写非常烦琐的代码)和Java浏览器插件的低市场占有率。
作为微软技术的铁杆粉丝,我在这里当然是力挺SilverLight,其直接可以使用C#、VB等开发语言,也和WPF共用其界面呈现技术,学习和开发成本较低,也更快构建RIA应用。
本文就到此为止,接下来将和大家共同学习SAAS、SOA、网络计算、云计算相关。
相关链接
DotNET企业架构应用实践-系列目录
AgileEAS.NET平台开发Step By Step系列-药店系统-索引
AgileEAS.NET应用开发平台介绍-文章索引
QQ群:125643764,120661978