Ⅰ Web应用程序为什么分层开发
分层不是为了代码的化简,实际上分层之后代码只会增加。
分层是为了整个应用的设计和维护。
如果你要开发一个简单且永久不变的应用,当然可以将一堆代码放在一起。但现在的技术发展和用户需求的变化如此之快,谁能保证开发一个系统之后可以一直用下去。当你想修改程序的一些功能的时候,发现自己编写的东西全部集中在一个文档里,太杂了,牵一发而动全身,消耗太大了。同样,设计的时候要考虑所有的逻辑还要考虑视图在内,不乱才怪。
分层之后,上一层只需要调用下一层提供的接口就能使用下一层提供的服务,而下一层对上一层不具有依赖性,增加代码的可测试性和可重用行。
web应用分层方式很多,一般分为表现层,业务逻辑层和数据访问层,如果要改变视图就直接在表现层操作,不用修改另外的两个层。而且不同层可以教给不同人员去开发,再整合一下就可以了,是不是清晰很多了呢
Ⅱ web应用包括什么
常见的计数器、留言版、聊天室和论坛BBS等,都是Web应用程序。但是,这些应用程序相对简单,Web应用程序的真正核心主要是处理数据库, 管理信息系统(MIS)是此体系结构的最典型应用。
Web应用程序由执行特定任务并通过Web向外界公开服务的各种Web组件组成。 在实际应用程序中,Web应用程序由多个Servlet,JSP页面,HTML文件和图像文件组成。 所有这些组件相互协调,以为用户提供一套完整的服务。
(2)典型web应用分层扩展阅读:
例如,在网上商店中,用户反复观察和选择商品,购买商品,浏览一系列网页,收集所需信息,支付相应费用,最后下订单,也可以是“软件升级向导”,指导用户完成下载和安装新软件的过程,也可以是基于Intranet的报价或销售报告生成工具。
所有这些均不同于“标准”的Web网站。 常规网站使用一系列菜单或导航栏在预定路径中漫游该网站。 但是,成为Web应用程序不仅仅是下级控制的导航器。 在网站上自由漫游时,可以进行无状态和匿名访问,但是通常不接受Web应用程序。
Ⅲ web应用有哪些
常见的计数器、留言版、聊天室和论坛BBS等,都是Web应用程序,不过这些应用相对比较简单,而Web应用程序的真正核心主要是对数据库进行处理,管理信息系统(Management Information System,简称MIS)就是这种架构最典型的应用。
MIS可以应用于局域网,也可以应用于广域网。基于Internet的MIS系统以其成本低廉、维护简便、覆盖范围广、功能易实现等诸多特性,得到越来越多的应用。
web开发就是我们说的做网站,它分为网页部分,和逻辑部分也就是我们说的前台与后台,前台负责与用户的交互,显示数据,用到HTML显示数据,CSS控制样式,JS编写复杂交互。后台编写处理这些逻辑的程序。可以用C#,java,vb.php等语言。
(3)典型web应用分层扩展阅读:
一、优点
1、网络应用程序不需要任何复杂的“展开”过程,你所需要的只是一个适用的浏览器;
2、网络应用程序通常耗费很少的用户硬盘空间,或者一点都不耗费;
3、它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;
4、网络应用程序和服务器端的网络产品都很容易结合,如email功能和搜索功能;
5、因为它们在网络浏览器窗口中运行,所以大多数情况下它们是通过跨平台使用的 (例如Windows,Mac,Linux等等)
二、应用扩展
信息化,互联网,移动化,云计算的不断发展,使得公司的业务需求越来越多。
因此很多公司的页面因为缺乏高度的可扩展性,因而流失了大量的用户。如果你不希望重蹈这些公司的覆辙,你就急需要找到一条可以扩展自己web应用的途径。
对Web应用来说,扩展能力很重要,随着用户群和工作量的增加,处理器在增加,它应该能够进行扩展。对于Java应用来说,扩展更复杂,不只是简单的购买和安装20个新的处理器就可以的。
然而,Java平台能够也确实支持应用扩展,通过外围设备语言,例如Scala、Clojure和Groovy。利用JAVA编程语言,开发者很难使JAVA应用进行线性扩展。
另外,按需的云计算本质使得可扩展的Web应用程序融入到了各种规模的业务中。进入到这个领域不能说没有障碍,即使是很小的公司得到这类计算能力也很难,而且数据存储一度曾经只适用于企业级用户。
这使你得到想要的服务器空间,不仅比以往更便宜,而且更容易。云计算可以订购更多的资源,而且就像行车路过订购快餐一样方便。
Ⅳ 在web应用的分层结构中,事务控制应该处于哪一层
Action层做控制器;Service层做业务逻辑处理;Dao层做数据库处理。
Service层处理方法中用到多个Dao实例是常见的,所以当然要把事务控制搁在这一层。
Ⅳ 前端页面有哪三层构成,分别是什么作用是什么
最准确的网页设计思路是把网页分成三个层次,即:结构层、样式层、行为层。
HTML:结构层
网页的结构或内容层是该页面的基础HTML代码。正如房屋的框架为房屋的其他部分构建了一个坚实
的基础,HTML的坚实基础创建了一个可以在其上创建网站的平台。
结构层用于存储客户想要阅读或查看的所有内容。HTML结构可以包含文本和图像,它包括访问者用
于浏览网站的超链接。这是在符合标准的HTML5中编码的,可以包括文本,图像和多媒体(视频,音频等)。
网站内容的每个方面都应该在结构层中表示。这允许关闭JavaScript的客户或无法查看整个网站的
CSS访问权限的客户(如果不是所有功能)。
CSS:样式层
该层指示结构化HTML文档如何看待网站的访问者,并由CSS(层叠样式表)定义。这些文件包含有
关如何在Web浏览器中显示文档的样式说明。样式层通常包括基于屏幕大小和设备更改站点显示的
媒体查询。
网站的所有视觉样式都应位于外部样式表中。您可以使用多个样式表,但请记住,每个CSS文件都需
要HTTP请求才能获取它,从而影响站点性能。
JavaScript:行为层
行为层使网站具有交互性,允许页面响应用户操作或基于一组条件进行更改。JavaScript是行为层最
常用的语言,但CGI和PHP也经常被使用。
当开发人员引用行为层时,大多数都是指在Web浏览器中直接激活的层。您可以使用此图层直接与
DOM(文档对象模型)进行交互。在内容层中编写有效的HTML对于行为层中的DOM交互非常重
要。在构建行为层时,应该像使用CSS一样使用外部脚本文件来优化速度和性能。
(5)典型web应用分层扩展阅读:
分层的一些好处是:
共享资源:当您编写外部CSS或JavaScript文件时,站点上的任何页面都可以使用该文件。如果
您需要对该文件进行更改,也许更新网站上的某些排版样式,则使用该样式表的每个页面都会得到
更改。没有必要单独编辑网站的每个页面,这对于大型网站来说可能是一项艰苦的任务。
下载速度更快:首次由客户下载脚本或样式表后,Web浏览器会对其进行缓存。由于这些共享
资源现在包含在浏览器的缓存中,因此浏览器中请求的其他页面加载速度更快,从而提高了整体页
面速度和性能。
多人团队:如果您有多个人同时在网站上工作,您可以使用允许文件签入和签出的系统,以确
保每个人都使用最新版本。如果样式和行为与结构文档交织在一起,那就更难了。
搜索引擎优化:一个明确分离风格和结构的网站可能会对搜索引擎有更好的表现,因为它们可以更有效地抓取内容并理解页面而不会陷入视觉风格和行为信息。
辅助功能:外部样式表和脚本文件更易于人们和浏览器访问。屏幕阅读器等软件可以更轻松地
处理结构层中的内容,而无需处理无论如何都无法使用的样式。
向后兼容性:使用单独的开发层设计的站点更可能向后兼容,因为无法使用某些CSS样式或禁
用了JavaScript的浏览器和设备仍然可以查看HTML。然后,您可以使用支持它们的浏览器的功能逐
步增强您的网站。
Ⅵ Web工程的分层开发中,每一层的含义和作用是什么
通俗的讲,web工程一般分为三层:视图,控制和持久层。视图层自然就是展示给用户的,一般是jsp或者html页面等。控制层是控制业务逻辑的,就是具体的实现,持久层当然就是数据库了。
Ⅶ Web数据库的层次体系
当前,Internet/Intranet技术发展异常迅速,越来越多的数据库应用软件运行在Internet/Intranet环境下。在此之前,数据库应用系统的发展经历了单机结构、集中式结构、客户机/服务器(C/S)结构之后,随着Internet的普及,又出现了浏览器/服务器(B/S)结构与多层结构。在构造一个应用系统时,首先考虑的是系统的体系结构,采用哪种结构取决于系统的网络环境、应用需求等因素。
客户机/服务器结构
1.二层C/S结构
二层C/S结构是当前非常流行的数据库系统结构,在这种结构中,客户机提出请求,服务器对客户机的服务请求做出回答。它把界面和数据处理操作分开在前端(客户端)和后端(服务器端),这个主要特点使得C/S系统的工作速度主要取决于进行大量数据操作的服务器,而不是前端的硬件设备;同时也大大降低了对网络传输速度的要求,因为只须客户端把服务请求发送给数据库服务器,数据库服务器只把服务结果传回前端。
在设计时,对数据可能有如下不同的处理形式。
(1)在处理时,客户机先向服务器索取数据,然后释放数据库,即客户机发出的是文件请求,在客户机端处理数据,最后将结果送回服务器。这种处理方式的缺点很明显:所有的应用处理都在客户端完成,这就要求客户端的计算机必须有足够的能力,以便执行需要的任何程序。更为糟糕的是,由于所有的处理均在客户端完成,每次运行时都要将文件整体传送到客户端,然后才能执行。如:Student表中有30 000条记录,客户端发出命令:
Select * From Student Where Sno='200101'
这条命令将要求服务器将Student表中的所有记录传送到客户端,然后在客户端执行查询,结果只用到一条记录;如果查询的记录不存在,网络传输的数据实际上是无 用的。如此大的数据传输量是不可想象的。因此,人们提出了在服务器中能够执行部分代码的客户机/服务器结构。
(2)在处理时,客户机接受用户要求,并发给服务器;在服务器端处理用户要求,最后将结果传回客户机显示或打印。这种处理方式网络通信量较小。客户机向服务器发出的是处理请求,而不是文件请求,处理请求中的代码在服务器端执行后向客户机传送处理后的结果。
这样,为了特定任务,客户机上的程序和服务器上的程序协同工作:客户机端的代码用于完成用户的输入输出及数据的检查,而服务器端的代码完成对数据库的操作。
客户机/服务器结构的另一个主要特点在于软件、硬件平台的无关性。数据库服务器上的数据库管理系统集中负责管理数据,它向客户端提供一个开放的使用环境,客户端通过数据库接口,如ODBC(开放数据库连接)和sql语言访问数据库,也就是说,不管客户端采用什么样的硬件和软件,它只要能够通过网络和数据库接口程序连接到服务器,就可对数据库进行访问。
在客户机/服务器结构中,常把客户机称为前台,而把服务器端称为后台。前台应用程序的功能包括用户界面、接收用户数据、处理应用逻辑、向后台发出请求、同时接收后台返回的结果,最后再将返回的结果按一定的格式或方式显示给用户。而后台服务器则负责共享外部设备、存取共享数据、响应前台客户端的请求并回送结果等工作。前台的应用程序和数据一般是用户专用的,而后台的数据和代码是所有用户可以共享的。
由于数据库服务器不仅要管理共享数据,保证数据的完整性,还要执行一部分代码,完成客户端的一些处理请求,所以对用于服务器的计算机提出较高的要求。最好要采用一台专用的服务器,有较快的处理速度,有大容量的硬盘和内存,支持磁带等大容量的存储设备。
上面讲的客户机/服务器结构将应用分在了客户机、服务器两级,称其为两层客户机/ 服务器结构。总之,两层C/S结构的基本工作方式是客户程序向数据库服务器发送SQL请求,服务器返回数据或结果。
这种C/S结构有两种实现方式,一种是客户来完成表示部分和应用逻辑部分,而服务器完成数据访问部分,这种情况是以客户为中心的,适用于应用相对简单、数据访问量不是很大的情况。另一种是以服务器为中心的,把一些重要的应用逻辑部分放到服务器上,这样可充分利用服务器的计算能力,减少网络上需要传送的数据。通常以存储过程和触发器的形式出现,但存储过程都依赖于特定数据库,不同数据库之间很难移植,而三层C/S结构可以很好地解决这个问题。
注意:触发器(trigger)是数据库系统中,一个在插入、删除、修改操作之后运行的记录级事件代码。不同的事件可以对应不同的动作。通常有3种类型的触发器:INSERT触发器、DELETE触发器和UPDATE触发器。
2.三层C/S结构
由于两层结构的客户机/服务器系统本身固有的缺陷,使得它不能应用于一些大型、结构较为复杂的系统中,故出现了3层结构的客户机/服务器系统,将两层结构中服务器部分和客户端部分的应用单独划分出来,即采用“客户机—应用服务器—数据库服务器”结构(如图1-8所示)。典型的数据库应用可分为三部分:表示部分、应用逻辑(商业逻辑)部分和数据访问部分,三层结构便是对应于这三部分。
其中,应用服务器和数据库服务器可位于同一主机,也可位于不同主机。客户机是应用的用户接口部分,负责用户与应用程序的交互,运行在客户机端的软件也称为表示层软件。应用服务器存放业务逻辑层(也称为功能层)软件,是应用逻辑处理的核心,实现具体业务。它能响应客户机请求,完成业务处理或复杂计算。若有数据库访问任务时,应用服务器层可根据客户机的要求向数据库服务器发送SQL指令。应用逻辑变得复杂或增加新的应用时,可增加新的应用服务器。数据库服务器便是用来执行功能层送来的SQL指令,完成数据的存储、访问和完整性约束等。操作完成后再通过应用服务器向客户机返回操作结果。
浏览器/服务器结构
随着Internet技术和Web技术的广泛应用,C/S结构已无法满足人们的需要。因为在典型C/S体系中,通常为客户安装前端应用程序的做法已不再现实,并且限制客户端工作环境只能基于Windows、Macintosh或UNIX等操作系统也不切实际。于是基于浏览器/服务器结构(Browser/Server)的系统应运而生。
采用B/S结构后,在客户端只需安装一个通用的浏览器即可,不再受具体操作系统和硬件的制约,实现了跨平台的应用。
基于B/S结构的典型应用通常采用三层结构:“浏览器—Web服务器—数据库服务器”,B/S模式的工作原理是:通过浏览器以超文本的形式向Web服务器提出访问数据库的请求,Web服务器接受客户请求后,激活对应的CGI程序将超文本HTML语言转化为SQL语法,将这个请求交给数据库,数据库服务器得到请求后,进行数据处理,然后将处理结果集返回给CGI程序。CGI再将结果转化为HTML,并由Web服务器转发给请求方的浏览器,如图1-9所示。
在B/S模式中,客户端的标准配置是浏览器,如IE;业务功能处理由独立的应用服务器处理,Web服务器成为应用处理的标准配置;数据处理仍然由数据库服务器处理。
从本质上讲,B/S结构与传统的C/S结构都是以同一种请求和应答方式来执行应用的,区别主要在于:C/S是一种两层或三层结构模式,其客户端集中了大量应用软件,而B/S是一种基于超链接(HyperLink)、HTML、Java的三级或多级C/S结构,客户端仅需单一的浏览器软件,是一种全新的体系结构,解决了跨平台问题。到目前,这两种结构在不同方面都有着广泛的应用。虽然C/S结构在Internet环境下明显不如B/S结构具有优势,但它在局域网环境下仍具有优势。
Internet/Intranet信息系统的多层体系结构
多层结构应用软件与传统的两层结构应用软件相比,有可伸缩性好、可管理性强、安全性高、软件重用性好等诸多优点,如何在Internet/Intranet环境下构建应用软件体系结构就成为一个非常重要的问题,也是现今软件体系研究的一个新热点。
目前各种技术层出不穷,如最初的静态HTML页面、简单的CGI网关程序、Java Applet程序,现在的ASP等Web数据库技术,还有动态的Java在线游戏及PHP技术等。
实际上,多层的概念是由Sun公司提出来的。Sun公司提出的多层应用体系包括4层:客户层、顶端Web服务层、应用服务层和数据库层。其中顶端Web服务层是Sun公司多层体系结构中非常重要的一层,它主要起代理和缓存的作用。顶端Web服务器的作用是缓存本地各客户机经常使用的Java Applet程序和静态数据,通常被放置在客户机所在的局域网内,起到一个Java Applet主机(向Web浏览器传送Java Applet程序的计算机)和访问其他服务的代理作用。与普通代理服务器的作用相同。构建多层结构应用软件时,选用Java平台是一个很好的选择,因为它跨越各应用平台。总之,在Java平台上构建多层应用软件体系代表着今后Internet/Intranet应用的趋势。
Ⅷ 为什么JavaWeb项目要分层
首先让我们坐着时光机回到n年前的web开发。
那个时候最早都是静态的html页面,后来有了数据库,有了所谓的动态页面,
然后程序猿在编码的时候,会把所有的代码都写在页面上,包括数据库连接,包括事务控制,接收参数,各种校验,各种逻辑,各种html/js/css代码等等
怎么样?够乱吧?像一坨那什么一样,这个页面可能有成千上万行?
那么好,问题来了,回头需要修改的时候,你怎么办?
你找个东西找半天,好不容易找到了,还不敢改,怕被其他地方用了,改出连带问题。
页面一出错,定位不准到底是哪里的问题,从头到尾的挨个排查。
等等等等。
这就是大家常说的什么叫可维护性,这也是为什么越来越多的公司的规范要求不能写复杂sql。
还记得之前在东软的时候,一哥们写了一个80多行的大sql来完成一个核心的查询。
试问这个大sql天天在数据库里run,还有性能可言?
再试问谁敢改?
后来项目要改需求还是出现bug了,那个sql要改动,写sql的哥们改了好久才改好,因为时间长他也忘了,
再后来他离职了。。。
有人问,那简单sql实现不了我的功能呀,怎么办?
从数据库设计层面开始下手,要允许适当的冗余,把表弄好,就迎刃而解了,这也是数据库层面的一种解耦吧。
后来。。。
进入第二阶段,大家痛定思痛,决定要把页面和逻辑拆开,页面只是负责显示,逻辑都在后台。
这就出现了短暂的,在jsp里使用标签调用bean的用法。bean里耦合了除了页面之外的所有东西。
再后来。。。
进入了第三阶段,大家又痛定思痛,决定要拆成三部分,就是大名鼎鼎的MVC。
再再后来。。。
衍生出来了类似于struts/springmvc等等的mvc框架
---------------
JavaWeb项目的层有2个维度。
第一个维度是MVC的三层:
M:model,模型层,包括了你的业务逻辑和数据库操作,封装好给视图层使用的。
V:view,视图层,仅仅做的是展示数据,不包含业务逻辑,主要是jsp/html等等
C:controller,控制层,负责接收请求,调用模型层处理业务逻辑并返回给视图层。
第二个维度是java代码里的三层:
controller:控制层,负责接收参数/解析参数/封装参数,调用serivce,将service方法的返回值进行封装(如果需要),返回数据/返回页面,路由。
service:负责业务逻辑,事务控制在这层里做,被controller调用,以及调用。
:持久层,负责数据库交互,被service调用。
这2个维度别弄混了哟。我今天主要说的是第二个维度的层哟。
我认为,第二个维度是第一个维度的延伸,其实第二个维度再加上一个表现层就完美了,这就为什么有人说是4层架构。
---------------
前戏结束,步入正题:
有些学生朋友可能会问为什么要分层呢?我本来可以在一个地方写完的东西,非要散落在各个层中,都在一起不是挺好的吗?
开发效率高呀~
跳来跳去的我脑子都晕啦。。。
这就是为什么有人会把所有的东西都扔在一个层里,比如controller层。。。
其实我们可以在jsp上把所有的逻辑以及数据库操作,数据展示全部写在一起,耦合在一起,这样开发起来貌似更快,
但是维护性非常差,有朝一日想改一个小地方,牵一发而动全一身,隐患很高,无法快速定位问题。
因此我们需要分层。
分层了之后,你理论上改了持久层的东西,逻辑层是不用变动的。
每个Dao类是跟每个表走,Dao的每个方法里就一个个的简单sql,不包含任何业务逻辑,可以被不同的service复用和调用。
经过抽象后基本上都是通用的,因而我们在定义DAO层的时候可以将相关的方法定义完毕,
这样的好处是在对Service进行扩展的时候不需要再对DAO层进行修改,提高了程序的可扩展性。
提高了程序的可扩展性。具体什么时候做这些操作,怎么做这些操作都由Service来处理。
(就像郭德纲的相声里的一句话:“行了,你甭管了”)
而Service则不是,一个Service里可以会调用多个不同的,完成特定的业务逻辑,事务控制,
封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性
同时,一个Service的方法也有可能被多个Controller的方法来调用。
逻辑出问题就在Service找问题,数据库,sql有问题就在Dao层找问题,
参数解析错误,跳转错误,就在Controller上找问题。
这样快速定位问题,互不干扰。
---------------
分层架构(这里会延伸到更广阔的架构):
回头项目玩大了,怎么办?拆!!!
具体可以搜一下:maven分模块开发,怎么玩代码依赖,怎么玩微服务,怎么玩SOA,怎么玩RPC,怎么玩bbo。
web项目发展有几个阶段啊
第一个阶段(单一应用架构):
所有代码都耦合在一个项目里,放在一台服务器上,这种all in one的方式是有好处的。
创业初期,不用什么架构,走敏捷开发,最快速的实现需求才是王道。
你甭管我有多烂,我至少能跑起来,我至少能在外网上让你访问,让你使用。
当然了,初期的访问量很少,节省部署和运维成本才是王道呀。
听阿里的讲座,说淘宝的前期的版本用的就是一台PC机作为服务器,所有的功能耦合在一个项目里,
每次往生产环境上发版本,要上传一个600mb的包,呵呵。
第二个阶段(垂直应用架构):
哎哟,不错哦。自己的儿子被越来越多的人访问,访问量激增,一台服务器扛不住了,
没事,我们可以玩负载均衡,玩集群。
但是!这种性能加速度其实会变得越来越小,因为你的项目是耦合在一起的。
这时,我们需要拆分项目,这里又有2个维度,按层拆,按模块拆。
将拆好的不同项目分别部署在不同的服务器上,并且再分不同的小集群。
第三个阶段(分布式服务架构):
唉呀妈呀,访问量陡增,到这步你创业应该算成功了,开始烧投资人的钱了吧。
经过上面拆成了越来越多的模块,模块与模块交互越来越多,怎么办?
这个时候我们需要把核心的业务抽出来,作为独立的服务,慢慢发展成稳定的服务中心,
用来提升业务复用和整合。
就像阿里的大牛说过,没有淘宝的积累,天猫能那么快的出来吗?
这个时候,你的缓存,数据库,消息队列等服务都应该是分布式的。
第四个阶段(流动计算架构)
哎呀妈呀,访问量又上了一个台阶,翻了好几百倍吖,肿么办?
这个时候服务越来越多,一些容量和资源的浪费问题凸显出来,
这时我们需要一个调度中心来基于访问压力动态的管理集群容量,
提高利用率。
第五个阶段(云计算架构)
抱歉,作者正在学习中,未完待续。