• [设计篇]02.偶尔一阅-轻量级框架与重量级框架[转载]


    事实上“轻量级”与“重量级”并没有确切的定义。轻重量级之分应当考虑如下几个方面:

    加载的资源

    Spring相对于EJB是轻量级的,但这就好像说大象比鲸

    如果你想要运行一个Java EE应用程序,你不能够简单地创建一个应用并直接运行它本身。需要一个JavaEE服务器来运行应用,例如Glassfish,WebLogic或WebSphere。多数应用服务器都是非常巨大并且复杂的,并不容易安装和配置。

    EJB应用启动时要消耗大量的资源,内存、CPU等,把所有的服务都加载进来;Spring则是可定制服务,需要什么加载什么。

    侵入性(或框架依赖性,耦合性)

    重量级框架(如EJB2.0和Struts1.2)侵入性较高。它强制开发者写一些与框架绑定的类。这使得这些类很难被测试。

    Spring将侵入性降到最低,它允许使用POJO进行开发。Spring并不强制实现Spring API接口或扩展Spring API类。这使得这些类方便测试。这使得把类迁移到其他轻量级容器更加容易。

    开发的方便程度

    如上条所述,使用重量级框架要写一些框架绑定的类,部署、运行及测试过程都较为复杂,开发起来并不方便。而轻量级框架反之。

    解决问题的侧重点不同:

    轻量级框架侧重于减小开发的复杂度,相应它的处理能力较弱(事务功能弱,不具备分布式处理能力),适用于开发中小型企业应用。 重量级框架则强调高可伸缩性,适合于开发大型企业应用。

    轻量级框架的特点:

    一般是非侵入性的、依赖的东西非常少,占用资源非常少,部署简单,比较容易使用。

    为何说Spring是轻量级框架:[面试的时候可以忽悠一下考官啊,四海的娃]

    • Spring以集中的、自动化的方式进行应用程序对象创建和装配,管理对象生命周期,组合成复杂的应用程序。
    • Spring提供了不同的模块,基于需求可以灵活选择。Spring jar的大小通常在几MB。
    • 相比较EJB,Spring需要写更少的代码和更少的配置。使得开发人员能够更关注业务逻辑。
    • Spring容器是非侵入性的,完全采用POJO进行开发,方便测试。
    • Spring方便与其他框架与第三方类库无缝集成。

    Spring与其他基于POJO的容器相比,例如Guice和Plexus,仍然称得上是“重量级”。因为完整的Spring技术栈包含了POJO之上的层次,它的MVC框架需要Servlets基础设施。

    Spring相比EJB2.x确实是轻量级,最主要的卖点是POJO的使用。

    为何说EJB是重量级框架?

    首先这是Rod Johnson说的,Spring狂热者奉之为圭臬的论断。

    2004年以前EJB2.x确实是重量级,它需要EJB容器来运行,需要加载较多的资源,代码侵入性较高–需要实现特定的EJB接口,相对来说开发并不方便。

    总结

    轻重量级是相对的,主要从加载资源、代码侵入性和开发便捷性等方面去考虑和比较。类似地,使用volatile变量可以用来确保变量的更新操作被同步到其他线程,这种同步机制相对于同步容器就是轻量级的(当然更具可伸缩性和实用性的是并发容器而非上述二者);而jetty相对于tomcat而言,由于其加载资源更少,也可以称之为轻量级的。

    胖子一枚,这么多学生,为何我就无法下手,可能它们是轻量级,而我是重量级,我的自卑吧!

  • 相关阅读:
    tomcat配置http、https同时访问
    mycat 多库分表 单库分表(根据uuid)
    分页关联查询时 出现查出数据和条数不匹配 级联查询
    微信公众号转发网页
    maven导出jar包
    sqlserver分割字符
    mysql按字符分割字段排序
    对ajax中数据的得到以及绑定的认识
    对待事情应该有的态度!!!
    对Dom的认识
  • 原文地址:https://www.cnblogs.com/pangxiansheng/p/4723168.html
Copyright © 2020-2023  润新知