什么是Web应用程序
什么是Web应用程序?
如果我们要谈论Web应用程序以及如何开发它们,那么我们就需要知道什么是Web应用程序,以及是什么东西使得它们与我们创建的其他应用程序不同。让我们看看一些Web应用程序的定义,以及这些定义的共同点。下面是从互联网上得到的三个定义:
定义一:一个Web应用程序是作为单一实体管理的、逻辑上链接的Web页面的集合。换句话说,一个网站,可以有多个来自不同客户的Web应用。
定义二:一个Web应用程序,是使用Internet技术开发的,符合下面一项或者多项的应用程序:
1)使用数据库(如Oracle或者SQL Server);
2)使用一种应用程序开发工具开发(如Oracle Internet Developer Suite或者Microsoft Visual Studio);
3)需要持续地运行服务器过程(如新闻组和聊天室);
4)从数据输入屏幕或者Web表单储存输入数据。
定义三:在软件工程中,一个Web应用程序是一种经由InternetIntranet、以Web方式访问的应用程序。它也是一个计算机软件应用程序,这个应用程序用基于浏览器的语言(如什么是bbsHTMLASPPHPPerlPython等等)编码,依赖于通用的Web浏览器来表现它的执行结果。
在我们看到这些定义时,有几点是比较突出的。首先,在Web应用程序中有某种形式的浏览器或者GUI。其次,所有定义中都隐含或者明确指出需要一台服务器。最后,Web应用程序不同于Internet应用程序,Internet应用程序增加了额外的技术和能力。
Web应用程序首先是“应用程序”,和用标准的程序语言,如CC++C#等编写出来的程序没有什么本质上的不同。然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。
浏览器/服务器架构(Browser/Server简称B/S)能够很好地应用在广域网上,成为越来越多的企业的选择。浏览器/服务器架构相对于其他几种应用程序体系结构,有如下3方面的优点:
1)这种架构采用Internet上标准的通信协议(通常是TCP/IP协议)作为客户机同服务器通信的协议。这样可以使位于Internet任意位置的人都能够正常访问服务器。对于服务器来说,通过相应的Web服务和数据库服务可以对数据进行处理。对外采用标准的通信协议,以便共享数据。
2)在服务器上对数据进行处理,并将处理的结果生成网页,以方便客户端直接下载。
3)在客户机上对数据的处理被进一步简化,将浏览器作为客户端的应用程序,以实现对数据的显示。不再需要为客户端单独编写和安装其他类型的应用程序。这样,在客户端只需要安装一套内置浏览器的操作系统,如Window XPWindows 2000或直接安装一套浏览器,就可以实现服务器上数据的访问。而浏览器是现在计算机的标准设备。
理解了什么是浏览器/服务器架构,就了解了什么是Web应用程序。常见的计数器、留言版、聊天室和论坛BBS等,都是Web应用程序,不过这些应用相对比较简单,而Web应用程序的真正核心主要是对数据库进行处理,管理信息系统(Management Information System简称MIS)就是这种架构最典型的应用。MIS可以应用于局域网,也可以应用于广域网。目前基于InternetMIS系统以其成本低廉、维护简便、覆盖范围广、功能易实现等诸
多特性,得到越来越多的应用。
应用程序有两种模式C/SB/SC/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式。
在本课程中,术语Web应用程序或者Webapp,是指那些用户界面驻留在Web浏览器中的任何应用程序。可以将其想像为一个连续统一体(如下图所示)。这个统一体的一端是呈现静态内容的Web应用程序。大多数Web网站都在此列(图中未画出)。而在另一端,则是行为类似常规桌面应用程序的Web应用程序。Struts就是用来构建位于这个统一体右半边的Web应用程序的框架。
在我们谈论Web应用程序时,很多人会想到网站。但是一个应用程序应该是活动的,并处理
数据以提供信息。一个建立在网站之上的能够帮助用户的软件才是Web应用程序。除非您在网站上面增加很多东西,否则一个网站本身并不是Web应用程序。有些ISP允许您通过脚本增加交互处理过程,而有些则不允许。
几种典型的应用程序模型
应用程序是什么,简单的来说,它是人类客观世界的问题领域在计算机世界的解决方案。我们生活的客观世界复杂多样,计算机世界也是博大精深,怎样从普遍的意义上来表述应用程序是一个非常有用的课题。应用程序的编程模型,也就是应用程序的拓扑结构,是一门关于应用程序的科学。从事软件设计、软件开发的人员,如果能够就应用程序的编程模型有足够的重视,将受益匪浅。
引言
简单介绍应用程序编程模型的发展过程,以及我们常用的几种应用程序编程模型。通过对多个模型的表述加深人们对编程模型的概念,为下面进一步描述Web应用模型打下基础。
1.应用程序的基本功能单元
组成应用程序的功能代码及其资源,按照其在应用程序中的功能,可以简单分解成为三个部分:用户界面(User Interface),事务逻辑(Business Logic)和数据存取(Data Access)。应用程序的基本功能单元如图1所示。
1 应用程序功能分解
2.几种典型的编程模型
随着计算机技术的发展和应用的深入,应用程序的编程模型在不断的演化,先后出现了:单层应用模型(monolithic);两层客户/服务器应用模型(two-tier client/server);多层应用模型(multitier client/server);分布式系统;基于Web的多层应用模型(web-based multitier client/server)。
单层应用模型
早期为大型机编写的应用程序,没有将应用程序三个组成部分分开,即没有将用户界面、事
务逻辑和数据存取分开。这种体系结构跟当时的计算机水平和应用状况有一定的联系,当时的用户通过哑终端来共享大型机资源,哑终端没有任何处理能力,所有的用户界面、事务逻辑和数据存取功能都是在大型机上实现,这样当时使用单层体系结构而没有出现多层体系结构是合理的。单层的应用程序结构见图2所示。
2 单层的应用程序模型
两层客户/服务器应用模型
PC机的出现对应用程序模型的发展带来了巨大的推动力,这时出现了客户服务器模式的应用程序,即应用程序的代码和资源被明确的划分为客户端和服务器端。因为PC机有了一定的处理能力,传统在大型机上实现的用户界面和部分事务逻辑被移到PC机上运行(我们将这种PC机端的代码称为应用程序客户端),而大型机则提供部分事务逻辑处理和数据存取的功能(我们将这种大型机端的代码称为应用程序服务器端)。随着PC机处理能力在逐渐加大,客户端执行的任务逐渐增多,这时对服务器端的硬件要求也在逐渐的降低。
根据事务逻辑在客户端和服务器端分配的不同,该种模型有图3所示几种形式。
3 两层客户/服务器应用模型的三种形式
值得注意的是,客户/服务器应用程序常常体现为客户端和服务器端运行在不同的计算机上,但这并不是必然的要求,在同一台计算机上同样可以实现客户/服务器应用程序。
多层客户服务器应用模型
两层应用程序模型的出现极大的增加了应用程序的灵活性,同时也带来应用程序可维护性的提高。但是,在两层应用程序中仍然存在着不便维护的缺点,客户端的逻辑或是客户端的嵌入SQL极有可能随着数据库的改变或是事务逻辑的变化而变化,不得不重新实现并发布一个新的客户端,也就是说,这样的应用程序模型仍然是比较脆弱的。三层或是更多层应用模型
的出现,解决了这样的问题。
在三层的应用程序模型中,事务逻辑与用户界面和数据存取明显的分离出来,将客户端的用户界面与服务器端数据存取隔离开来,极大的改善了应用程序的可维护性。注意,虽然最常用的多层客户/服务器模型是三层模型,但是,现在已经出现了将事务逻辑层和数据存取层增加的趋势。这种更多更细的分层不但提高了系统的维护性能,同时也增加了系统的重用性和与分布式系统概念融合的可能性。图4所示为一个典型的三层模型。
4 三层客户/服务器应用模型
分布式系统
在分层的客户/服务器应用模型中,下一层为上一层提供服务,上一层调用下一层提供的服务,这不利于功能的重用。为了最大限度的发挥系统的功能,分布式系统打破分层系统中对于客户和服务器的定义,将应用程序的代码实现分解为遵循某个标准规范的对象,这些对象中提供的功能被封装到接口中。在某个具体的服务逻辑中,一个对象可能充当客户端的功能,
它需要调用另一个对象提供服务;但是,在另一个服务逻辑中,同一个对象可能为另一个对象提供服务,充当服务器的功能。
常见的分布式对象规范有COM/DCOMCORBAJava RMI等。分布式系统模型如图5所示。
5 分布式系统模型
基于Web的多层应用模型
WWW的发展,使得Internet的应用不再局限于提供一些静态的内容、甚至也不满足于提供一
些简单的动态内容。传统以独立的软件包形式发布的一些应用程序,正逐渐被搬上Internet,以出租服务的方式提供给用户,这就是ASP(Application Service Provider)。由于Web的特点是Internet上的HTTP,是一种请求应答式的无连接的服务形式,所以这种基于Web的应用程序在体系结构上有其独特的特点。
6 基于Web的多层应用模型
3.下一种编程模型是什么?
SUNJini技术、微软的Microsoft技术可以看出,应用程序模型正在超越目前的水平。比如,目前的分布式应用系统不得不遵循某个接口规范和实现,如RMICORBADCOM等等,这在一定程度上限制了系统的扩展性。为了解决这个缺点,微软正在开发一种基于HTTPXML的构件自解析的网络服务构件标准。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。