基于J2EE架构的企业应用开发新思维:Web开发的困境2009-10-13 cnblogs liujunsong1前言在企业级的应用系统开发领域,J2EE架构现在已经被普遍接受了。虽然它并未完全兑现刚刚出现时的种种美好许诺,跨平台,分布式,易于开发维护等等,但J2EE的广泛普及,已经是一个不争的事实。虽然J2EE已经非常普及,但从技术上来讲,它本身还是存在很多缺陷的,比较突出的缺点,就是开发效率低,维护更加复杂,许多项目组都陷入其中不可自拔。本文将就造成这一现象的原因进行初步探讨,并在此基础上提出自己的解决思路。本文讨论的范围仅限于采用B/S开发企业的应用系统,不涉及网站类型的应用开发。讨论的技术方向,主要针对J2EE,其余技术方向不作为重点讨论,仅供参考。本文先从Web开发的现状困境开始,分析造成目前困境的原因,然后通过回顾B/S技术架构的演化,以及对比C/S和B/S的开发模式的差异,提出一套新的开发解决思路,最后介绍WebDW系列产品的设计目的和简单功能,再以此为基础来进行扩展讨论。2 Web开发的困境2.1概述

说明:Web应用系统的开发,像一座大山一样,把所有的人都压垮了。自互联网出现以来,企业应用系统的架构发生了很大的变化,C/S架构被废弃,B/S成为绝对的主流。但B/S架构本身,要比C/S复杂的多,加上新技术层出不穷,整个行业都处于巨大的困境之中。Web应用系统的开发,就像一座大山一样,把所有的人,无论是甲方还是乙方,无论是开发人员,维护人员还是系统用户,都被累垮了。2.2Web系统开发的复杂性B/S系统本身的架构设计,要比C/S系统复杂很多,在C/S架构中,一般是两层结构。如下图。

一般在这种架构中,服务器是一个数据库服务器,只负责数据的存储和读取访问支持;前台程序采用 VB,PB,Delphi 等图形开发工具来开发,通过网络直接连接到后台的数据库服务器,通过发送SQL 命令来实现数据库的访问。这种开发环境下可以使用图形化的控件来搭建用户界面,用户的交互性比较好。缺点在于应用程序发布在客户端,如果客户机数量很多的话,客户机程序的安装,升级都比较困难。而在B/S结构中,涉及到了多种服务器类型,Web服务器,App服务器,DB服务器。如下图。

在B/S系统中,用户通过客户机上的浏览器来访问后台的Web服务器,Web服务器再把相应的请求转发给应用服务器来处理,应用服务器再将其中的数据访问请求转发给数据库服务器进行处理。在C/S系统中,应用系统或者应用程序本身是一个完整的,独立的整体,一般采用一种开发语言来开发即可,这种开发语言不仅负责用户界面,也负责业务逻辑控制,以及数据访问请求的生成发送,主要的开发和执行工作是在客户机上完成的。而在B/S系统中,整个系统的架构要复杂的多。首先,客户机上只有一个通用的浏览器,用户操作界面是通过Web服务器返回的HTML语言来进行描述的,如果需要一些动态特征,则不得不通过在HTML页面中嵌入JavaScript来实现。在应用系统中,大量的页面是动态,而非静态页面,因此必须在应用服务器上完成动态页面到静态HTML的转换工作。如果动态页面中包含数据访问请求,则又必须访问后台的数据库服务器来协助完成此项工作。以J2EE标准流程为例,当用户在浏览器上输入一个地址,或者URL以后,这个URL首先传递给Web服务器,然后再转发给App服务器来解释执行。假如请求是一个jsp页面,应用服务器首先读取这个文件,然后把它翻译成一个java文件,再编译成一个class文件,再解释执行这个class文件,如果需要再访问后台数据库,最后产生一个HTML格式的输出文件流,返回给Web服务器,再返回给客户机浏览器解释成一个界面。与C/S开发的一种语言包打天下不同,B/S系统的开发需要在多个层次上进行编程开发:浏览器中,用HTML和JavaScript编程;应用服务器上,用Java或者.net之类编程,数据库服务器上用SQL语句编程。在C/S开发中,最终的产品是一个Exe文件;而B/S开发中,最终的产品是一个网站,里面包含成千上万个文件,而且是各种不同类型的文件:HTML,图片,JSP, Java, Class, XML等等。在Web开发中,人们为了简化开发过程,提高效率,陆续发明了很多新技术,在页面开发上,基于JavaScript本身,发明了如prototype, jQuery, Ajax等框架;基于java技术,发明了J2EE架构,基于J2EE架构,又发明了Struts, WebWork, Spring, Hibernate ,Itabtis等无数的框架产品。结果在试图解决问题的同时,这些产品本身又造成了新的问题。相对于C/S开发的单一开发工具开发,B/S开发要涉及到很多工具,语言和框架,这些工具,语言和框架,都是为了解决某一问题而设计的,而开发人员必须把这些目的不同的东西整合起来,才能搭建出一个整体的系统。B/S的复杂度,很大程度上是由于涉及的技术面太多,太多的产品,太多的技术,太多的框架,这样不仅增加了学习的难度,增加了学习技术的成本,而且也增加了系统运行维护的成本,最终提高了整个系统的开发,运营成本。这种高昂的成本让开发人员,维护人员,开发公司,和甲方都陷入了困境之中,大家在这一困境中挣扎,不能自拔。