前两天,我们经理总是问软件分层有什么好啊,使用那些struts、hibernate、spring又有什么好啊。这里我作为一个日志说说我自己的看法。
当然,即使不分层,也能做出软件来,但我们应该思考怎么做才能最好?如果说分层不好,那么不分层的优势又在哪里呢??如果说分层有性能的损耗,那么性能损耗在哪里呢??如果不分层,软件工程思想中的“分而治之”的原则启不受到了质疑?
有人说,分层是为了减少代码量,如果分层是为了减少代码量,那怎么能减少,代码的重用也许会减少一些,但是程序更多的是业务,我们关心的也只是业务,试问分层的意义就是为了减少代码量?
以下是我的观点:我的一般分层思想是:action、service、dao。如果将来业务有什么变动,只需要关心service就可以了,有人问为什么。如果你说dao经常需要变动,那意味着你数据库经常需要变动,很显然,是你设计有问题;如果你说数据库连接之类的异常,那是你应该怀疑你自己的编程能力,因此dao是不会有变化的。在看action,action就是一个控制器,调用service和将service处理的结果返回前台,会改变吗?显然也不会。最后就是service,如果出问题,基本上可以直接定位到这里。如果不分层,那将会是灾难性的后果。<o:p></o:p>
我们经理的观点做web开发很简单,提交标单-〉响应-〉后台处理-〉返回。难道真的就这么简单吗?还认为使用一个框架之前必须知道他好在哪里。以下是我的看法:
如果web开发真的那么简单,要这些框架做什么?如果你能在不使用这些框架的情况下开发出自己的好框架而且项目能按时完成,如果你能说你能做到,那恭喜你,你可以不用。如果你在使用每一个框架之前都要说他好在哪里,那你还是不要用好了。早期CGI出来的时候,人们觉得他好;后来servlet出来的时候,觉得编程简单,否定了CGI;再后来JSP出来了,可以在页面写代码,避免了很多重复性的工作,于是否定了servlet;再后来自定义标签出台,觉得在JSP写太多java代码,不太好;后来看到ASP.NET的组件化技术很好,于是JSF出来了,人们说他好;再后来Spring MVC框架设计的完美,说他也很好;再后来webwork和servlet API相分离,又说他好;最近struts2流行起来,又说他好。如果当你能说出他到底好在哪里,也许这个技术已经不再是他的核心优点。
我认为实践是检验真理的唯一标准,既然有很多人有成功的案例,我们为什么不去使用这个东西。不要忘记,生产率是我们一直追求的目标。但是不排除市场上有炒作的成分,比如说dojo。这个东西你要是说他的优点,你最少可以说出50个,但是谁在实际项目中使用?也许有,但至少我没有看到是怎么用的,我尝试过dojo的0.4版本,性能的问题实在叫人无法忍受。我觉得dojo就有市场炒作的成分。比如说hibernate,也许有很多人知道他的优点,即使你不知道,你完全可以使用,因为成功的案例太多了,性能更是没得说。如果你认为hibernate不应该使用,那EJB3.0你是不是也觉得不应该使用了呢?
总之我的观点就是:软件分层是必须做的。至于框架,不应该问用不用,而应该问用什么?要选用实践检验过的框架,毕竟实践是检验真理的唯一标准。
分享到:
相关推荐
3、 分层结构设计:框架严格按照MVC模式设计开发。 a) 能帮助企业迅速发挥团队开发优势,合理分工协作(能迅速将Web表现层开发,业务逻辑组件开发,系统设计合理分离)。 b) 标准的三层结构模型,为系统的稳定、高效...
本文档主要探讨了Python的Web开发框架,包括当前流行的Django、TurboGears、Zope以及CherryPy和web.py等。 首先,Django是一个高级的Python Web框架,它鼓励快速开发和干净、实用的设计。Django的MTV(Model-...
Spring是一个主流的轻量级Java Web开发框架,也是分层的Java SE/EE full-stack轻量级开源框架。它旨在通过简化开发流程来降低企业级应用程序开发的复杂度。Spring框架不仅为Java Web应用提供了一个坚实的基础,还...
基于.NetCore3.1搭建webapi框架。涉及知识有: 1.swagger API接口文档生成 2.多层(包含接口调用方式)高性能数据处理结构 3.数据仓储模式的实现 4.JWT token身份授权验证 5.appsetting.json文件集成读取配置
内容概要: 通过带着读者手写WebApi框架,了解 WebApi核心原理。...此资源以开发WebApi框架,最基本的DDD领域分层,让初学者对DDD的一个切面有所了解,同时内置了详细的运行说明,只需本地部署数据库即可运行。
总结而言,SSH框架和jQuery技术在Java-Web开发中的应用能够提升项目的开发效率,增强系统的稳定性和可维护性,同时提供优秀的用户体验。随着技术的不断发展,SSH和jQuery的结合将继续在Java-Web开发领域发挥重要作用...
**PHPec:一个简明PHP Web开发框架** PHPec,全称"PHP easy",是一个专为初学者和有经验的开发者设计的轻量级MVC(Model-View-Controller)框架。它以其易用性、易学性和易扩展性为特点,旨在简化Web应用程序的开发...
现代Web开发框架的特点,如分层开发、自动化逻辑处理、代码库封装和脚手架功能,虽然提高了开发效率,但也引入了安全风险。比如,MVC模型中的路由分发过程可能导致攻击者通过构造特定URL执行未授权的代码。Struts 2...
本书内容循序渐进,通俗易懂,覆盖了java web开发的最流行框架技术。无论对于java软件设计还是软件开发,本书都是精通开发java web应用的必备的实用手册。 本书适合作为java相关培训机构的教材,也可作为java自学...
伴随Web开发技术的不断发展,前后端分离开发逐渐成为主流的开发模式,前端开发在整个开发流程中越来越重要,前端开发工作早已不是编写几个简单的静态页面就可以完成的,前端除了需要展示美观的页面,还需要实现...
### Portal-Basic Web应用开发框架知识点详解 #### 一、框架概述 **Portal-Basic Web应用开发框架**(简称PB)是一款专为Web应用开发设计的超轻量级框架。该框架内置了MVC(Model-View-Controller)架构,支持多种...
可以作为一套JQuery开发组件或者是嵌入式开发框架,与其他任何的web开发框架、解决方案相结合. 前台公共插件库,包含一套JQuery应用开发插件(类似JQuery UI,JQuery EasyUI)和各种JS公共支持库. 插件基于ms的tmpl模板...
### 自己动手写Struts:构建基于MVC的Web开发框架 #### 1. 框架的理解与自我开发的重要性 在IT行业中,“框架”是一个高频词汇,它指的是为了解决某一类问题而预先设计的一套结构化解决方案。对于Java程序员而言,...
1. SSH框架简介:SSH框架是由Struts、Spring、Hibernate三个框架组合而成的Java Web开发框架,用于解决企业级应用开发中涉及的MVC(模型-视图-控制器)模式、业务逻辑层处理、数据持久化等关键问题。 2. SSH框架的...
2. **PHP语言**:PHP是一种广泛使用的服务器端脚本语言,尤其在Web开发领域中非常流行。它提供了丰富的函数库和强大的社区支持,使得开发过程更加便捷。在这个框架中,PHP被用于实现各个层的功能,提供灵活的数据...
NFine快速开发框架是一款以C#语言编写的,完全开源的软件开发框架,适用于ASP.NET MVC平台。这个框架集成了Entity Framework 6(EF6)作为数据访问层,利用Bootstrap进行前端界面设计,旨在提高开发效率,降低项目...
【标题】"精通Eclipse,Web 开发-Java体系结构工具,框架及整合应用光盘"揭示了本书或光盘内容的核心,主要聚焦于使用Eclipse进行Web开发,以及Java在构建体系结构、工具和框架方面的应用。这涉及到Java开发中的多个...