`
neora
  • 浏览: 184171 次
  • 性别: Icon_minigender_1
  • 来自: 墨尔本
文章分类
社区版块
存档分类
最新评论

Web层开发放弃的一些东西

阅读更多
这是我们的开发团队在最近1年的开发中放弃的一些东西。

放弃Apache:

我希望我们的软件不经过任何修改就能运行在不同OS的服务器上。这样对部署和维护成本都有利。纯Java和像PHP这样的脚本语言可以适应。但JVM的安装要比脚本执行引擎的安装方便得多。

任何基于Web的app都必须依赖Web Server。apache的代码非常成熟,可以在任何的类Unix平台上顺利的make install,Linux、FreeBSD、Aix、MacOSX甚至Irix。但如果采用PHP,你就不得不在编译apache的时候,加入一堆参数 以引入各种模块,包括最起码要包括php和mysql。(mysql需要编进php里)。非常麻烦。mysql如果升级了,很可能会引起mod_php也 需要重新编译。经验丰富的系统工程师可以通过各种手工的link来伪装libmysql、libphp以及其它lib之间的版本差异,但依然要费很多的功 夫。如果把mysql再换成Oracle或者DB将是更加痛苦的过程。

更困难的是,除了Linux和FreeBSD外,在其它的类UNIX的编译安装都需要点儿不同的参数调整。如果那台服务器已经由于其它应用软件的安装而更改了/usr/lib/下的一些东西,那很可能会給部署带来不小的麻烦。

于是在综合考虑后,决定放弃apache选择tomcat——纯Java的跨平台的Web Server,PHP也被随之放弃(放弃PHP有很多理由,这也是其中之一)。好在v5.5以后,tomcat的效率已经可以令人接受了。我甚至把任何静 态的页面都放在tomcat中,而不是另外安装一个apache用来处理静态页面的请求。测试下来,tomcat处理静态页面的效率也没什么问题。

最终我们把整个JSDK、tomcat、jsp、jar、class、servlet class都tar成一个包,传到服务器上一解包就安装完毕了,立刻可以运行。

放弃struts:
用struts开发项目的前3天,struts强迫性的分离mvc的方式很令人愉快。但之后的3个月,我逐渐失望,3个月后我盯着臃肿庞大的XML开始抓狂!
这时我意识到一套良好的文件目录组织结构 + 清晰的文件命名规则 + 简要的文档 要比struts更有效。
于是,我们按照RoR的目录组织格式来区分负责MVC的程序。

放弃Servlet:
按“道理”,处理action的都应该是一些extends HttpServlet的Class。几乎所有教科书的例子都是这样。但我特别讨厌在web.xml里写进一堆mapping、name、pattern 和server-class标签(其实我讨厌手工修改任何XML文件)。
所有该创建的class XXX extends HttpServlet都由xxx.jsp来实现了。这种jsp不print任何HTML,只是getParamenter和get/set Session,然后调用service层的方法,最后redirect到其它action或者view。
Jsp会被tomcat编HttpServlet class,但这个class不能加进任何方法。这样可以“强迫”你将尽量多的逻辑代码都写入service层。
只有在很特殊的一些地方,才不得不写少量的Servlet,比如download 或者write动态图像。

添加、删除或者rename一个action的时候,我们再也不用去反复维护web.xml了。


放弃frameSet:
HTML里的frameSet标签经常被用来分割页面上的不同功能区域,这有利于用户在不同的功能模块之间切换。但从UI的角度来看,使用者又总是希望屏幕应该用尽力大的区域来显示他正在关注的版面。
如果你只用一个Page frame,那么每个用户的view page都必须包含一些固定内容,比如Head或者left bar。有各种各样的jsp标签顺应这个需求被发明出来。但这无疑会增加用户浏览器对无用数据的下载量。
现在有了ajax。我们把整个app都放在了一个page里。需要更新的区域用ajax做局部更新。小型表单的提交直接用get method放在url后面,大型表单的提交用hidden的iframe来完成。
一切都很完美,但浏览器的后退键在我们的app中从此失效 。 Sad
分享到:
评论

相关推荐

    C# web 三层架构设计

    在C# Web开发中,表示层通常由ASP.NET页面、MVC控制器或Web API组成。表示层的主要任务是提供良好的用户体验,确保用户界面的美观和易用性。 ##### 业务逻辑层(Business Logic Layer) 业务逻辑层位于表示层和...

    阿里web前端开发手册.pdf

    "阿里web前端开发手册" 阿里web前端开发手册是一份详细的前端开发规范,涵盖了项目命名、目录命名、JS、CSS、SCSS、HTML、PNG 文件命名等多个方面的命名规范。下面是本手册中的一些重要知识点: 1. 命名规范: 在...

    海康威视WEB3开发包.zip

    6. **安全机制**:考虑到监控系统的敏感性,海康威视Web3.0开发包可能会包含一些安全措施,如身份验证、数据加密等,以保护视频数据不被非法访问。 7. **实时性与性能**:海康威视Web3.0开发包在设计时考虑到了实时...

    FlaskWeb开发:基于Python的Web应用开发实战

    FlaskWeb开发:基于Python的Web应用开发实战

    Web前端开发职业技能等级标准.pdf

    标准的核心内容,来源于社会对Web前端开发职业活动质量的要求,是衡量从业者(包括正在接受教育与培训的准从业者)胜任Web前端开发工作的基本尺度和规范,能够反映当下时期内Web前端开发职业教育的人才培养质量规格。

    web开发设计00005

    web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计...

    web开发设计00001

    web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计web开发设计...

    web开发文档PDF

    - **第八章 利用Struts进行WEB层开发**:介绍Struts框架的工作原理及其在Web层开发中的优势,涵盖Struts框架的基本概念、配置方法和应用场景。 #### 三、总结 本文档通过对Java Web应用开发的技术介绍,不仅涵盖...

    web前端开发技术储久良第三版答案

    《Web前端开发技术储久良第三版答案》涵盖了前端开发领域的关键知识点,主要针对储久良教授编著的教材第三版中的习题和实验提供了详尽的解答。这本书旨在帮助学习者深入理解Web前端开发的核心概念和技术,通过解决...

    PowerBuilder 9.0 Web开发篇

    《PowerBuilder 9.0 Web开发篇》是“PowerBuilder 9.0应用开发丛书”中的一部分,由张涛编著。本系列丛书旨在全面介绍PowerBuilder 9.0在商业应用开发中的使用方法,特别是Web开发方面的技术。PowerBuilder自1991年...

    java web接口开发demo

    【Java Web接口开发】是Web应用程序开发中的一个重要环节,它允许不同的系统或客户端通过网络进行数据交互。在Java世界中,实现Web接口通常涉及到Servlet、JSP、Spring MVC或者RESTful API等技术。本示例"java web...

    海康威视web3.0开发包

    海康威视作为全球领先的安防产品及解决方案提供商,其web3.0开发包是一个专为开发者设计的工具,旨在帮助用户构建基于Web的监控系统,实现远程访问、控制和管理海康威视的设备。这个开发包是海康威视在Web技术上的...

    大华摄像头web3.0二次开发webplugin

    【大华摄像头Web3.0二次开发WebPlugin详解】 大华摄像头Web3.0二次开发WebPlugin是一款专为开发者设计的工具,旨在帮助用户利用Web技术进行摄像头的高级功能定制和扩展。它允许开发者通过浏览器插件的方式,接入...

    详解:Intenret web应用开发,N层结构技术讲义(PPT)

    **互联网Web应用开发详解——N层结构技术** 在互联网Web应用开发中,N层结构(N-Tier Architecture)是一种常用的设计模式,它将应用程序分解为多个独立的逻辑层,每个层都有特定的功能,以实现更好的模块化、可...

    Web 前端开发中级理论考试(试卷 ).rar Web 前端开发中级理论考试(试卷 ).rar Web 前端开发中级理论考试(

    Web 前端开发中级理论考试(试卷 ).rar Web 前端开发中级理论考试(试卷 ).rar Web 前端开发中级理论考试(试卷 ).rar Web 前端开发中级理论考试(试卷 ).rar Web 前端开发中级理论考试(试卷 ).rar Web 前端开发...

    python web开发实录源代码

    "Python Web开发实录源代码"这个压缩包可能包含了以上提到的一些或所有知识点的实例代码。通过阅读和运行这些代码,你可以深入理解每个概念是如何在实际项目中应用的,从而提升自己的Web开发技能。在实践中,记得要...

    Java Web三层架构的配置详解

    Java Web三层架构是一种常见的软件设计模式,用于构建可扩展、可维护且易于测试的Web应用程序。这个模式将应用逻辑划分为三个主要层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据...

    常用web开发工具 金山打字通

    常用web开发工具 金山打字通常用web开发工具 金山打字通常用web开发工具 金山打字通常用web开发工具 金山打字通常用web开发工具 金山打字通常用web开发工具 金山打字通常用web开发工具 金山打字通常用web开发工具 ...

Global site tag (gtag.js) - Google Analytics