精华内容
下载资源
问答
  • 架构优缺点

    千次阅读 2015-06-11 00:03:28
    说的三体系,不是指物理上的三,不是简单地放置三台机器就是三体系结构,也 不仅仅有B/S应用才是三体系结构,三是指逻辑上的三,即使这三个放置到一 台机器上。 三体系的应用程序将业务规则、数据...

          三层体系结构,就是在客户端与数据库之间加入了一个中间件层,也叫组件层。这里所 说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也 不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一 台机器上。 三层体系的应用程序层将业务规则、数据访问、合法性校验等工作放到了中 间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通 讯与中间层建立连接,再经由中间层与数据库进行交换。

    简单三层架构图


    用三层结构主要是使项目结构更清楚,分工更明确,有利于后期的维护和升级.
    三层结构包含:表示层(USL),业务逻辑层(BLL),数据访问层(DAL)
    1:数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不
    是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务。
    2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻
    辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
    3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,WEB方式也可以表现成
    :aspx,如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地
    提供服务。

    优点

    1、无需开发客户端软件,维护和升级方便。
    2、可跨平台操作。
    3、具有良好的开放性和可扩充性。
    4、便于数据库移植。
    5、安全性好
    6、资源重用性好。

    缺点

    有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
    相对于不分层的编程方法,使用三层或多层架构的应用于程序运行效率低,代码量大,难度增加。


    复杂三层架构


    展开全文
  • 架构及其优缺点

    2019-06-06 16:39:00
    三层架构: 1,数据访问层 dao:对数据的操作 ...缺点:降低了系统的性能,原先可以直接访问数据库,如今需要通过中间层完成。在一定程度上增加了开发成本,有时候会导致级联的修改 service.jav...

    三层架构:

    1,数据访问层 dao:对数据的操作

    2,业务逻辑层 service:主要对逻辑操作

    3,表示层 web:主要是web方式

    优点:开发人员只需关注架构中的某一层,降低后期维护成本和时间,降低了层与层之间的依赖,有利于标准化

    缺点:降低了系统的性能,原先可以直接访问数据库,如今需要通过中间层完成。在一定程度上增加了开发成本,有时候会导致级联的修改

     

    service.java是根据业务需求自己定的接口,serviceimpl.java是实现service.java接口的,在实现类里要引入mapper.java对象,利用它来实现(完成)service功能。

     

    在dao层,是与数据库进行操作的java类,mapper.java ,它是根据mapper.xml文件映射出接口的!

    转载于:https://www.cnblogs.com/wskb/p/10985811.html

    展开全文
  • 架构的优缺点

    万次阅读 2017-06-30 18:12:17
    架构三架构一般包含:控制,业务逻辑,数据访问。从历史角度考虑 单一应用结构 优势 结构简单 性能高 劣势 业务杂糅。代码杂糅的不同的业务,要求开发人员能理解所有的细节,维护费时间。 面临什么...

    三层架构

    三层架构一般包含:控制层,业务逻辑层,数据访问层。

    从历史角度考虑优缺点

    单一应用结构

    优势

        - 结构简单
        - 性能高
    

    劣势

        - 业务杂糅。代码杂糅的不同的业务,要求开发人员能理解所有的细节,维护费时间。
    

    面临什么问题?

        - 当处理的业务越来越多时?
            - 代码变得庞杂,需要重构。
            - 当需要有共同的业务处理的任务时,需要抽取公共类。
            - 如不重构,会出现很多重复的代码段。改动一个地方,很多地方相同的代码都需要改动,既提升了产生bug的风险,又让修改时间变长,对开发人员细心程度高。
        - 当代码中需要添加日志,事务,权限控制,数据监控,会增加诸多重复的、相似的代码块
        - 当参与的人员越来越多时,不同的风格代码结构会造成理解上的困难。
    

    改进

        - 提取公共类
            - 抽取公共的模型类
            - 抽取帮助类或者utils类
        - 大类变小类
            - 大的业务处理的类,根据业务聚焦的不同,划分成几个业务处理类
        - 使用组合和继承(设计模式)的方式,让结构具有可扩展性,可复用性
            - 使用责任链模式,策略模式,访问者模式等模式让的业务处理类得到有效的利用
    

    垂直应用架构(三层架构)

    优势

        - 层次清晰,每个层次都提供了接口定义
            - 很容易用新的实现替换原来的层次实现。例如对sql进行性能优化,并不会影响其他层的代码结构。有利于后期维护。
            - 有利于实现切面编程,减轻业务的复杂程度,加快编码效率。
            - 每个层次的定位明晰,业务处理的内容明确。依据层次,可以划分不同的分工。开发人员可以只关注整个结构的其中某一层。
            - 接口定义也提供了良好的可扩展性。例如数据库从mysql切换到oracle,只需要通过配置来切换。
        - 降低了代码之间,层与层的依赖关系
        - 复用性:利于各层代码逻辑的复用
        - 安全性:接口设计需要符合对扩展开发,对修改关闭的原则,增强了系统的安全性
    

    缺点

        - 降低了系统的性能。使用中间层访问数据库,对数据进行转换等等都需要计算时间。
        - 新增业务处理时,需要在各个层增加功能。
    - 面临的问题
        - 不同的层次对接口规范理解的层次不一样,对接口维护,调用,监控都会产生影响
        - 当用户访问量增大时,性能会遇到瓶颈。
        - 单点服务问题
            - 部署会造成服务中断
            - 服务挂了之后,需要人工及时的处理,给用户和公司带来损失
    

    改进

        - 明确良好的接口规范,团队内部统一接口规范
        - 使用缓存减轻服务的性能压力
        - 转向分布式架构:将服务改造成无状态的分布式服务,通过集群来增强计算能力。
    

    案例:Spring

        - 优点:为开发者实现了中间层次的共同的逻辑,让开发者更多的关注业务实现,而不是代码结构,提升开发效率。
    

    分布式服务架构

    优势

        - 通过集群(负载均衡,分布式调度服务,分布式应用,分布式存储),MQ,noSql,流处理等技术来提升计算、存储的性能
    

    劣势

        - 系统结构变得复杂
            - 新增一项业务,可能涉及到不同的分布式应用,造成调试成本的增加
            - 部署一套服务包含很多过程
    

    面临的问题

        - CAP只能同时满足其中两个
        - 业务拆分、数据拆分的问题
        - 集群的节点越多,意味着更高的成本
        - 集群治理问题凸显
            - 状态如何在多个服务器上共享
            - 不同的服务器处理性能不一,造成某些服务器压力大,某些服务器压力小
        - 越来越大的数据量吞没更多的存储
    

    改进

        - 使用持续集成技术,一键部署
        - 使用领域驱动设计划分不同的业务领域,为业务拆分、数据拆分奠定基础
        - 优化代码性能,减少计算服务器的数量;通过压缩技术,减少存储服务器的数据。
        - 使用dubbo,spring cloud的技术增加分布式服务治理功能
    
    展开全文
  • spring的优缺点

    千次阅读 2018-11-10 14:57:32
    1. 提供了一种管理对象的方法,可以把中间层对象有效地组织起来。一个完美的框架“黏合剂”。 2. 采用了分层结构,可以增量引入到项目中。 3. 有利于面向接口编程习惯的养成。 4. 目的之一是为了写出易于测试...

    大部分项目都少不了spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢

    我们看一个框架是否优秀,首先看这个框架是否是非侵入式的,其次是可扩展性,再次是解耦性和开发周期。

    Spring是什么?

    Spring是一个轻量级的DI和AOP容器框架。

    说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的(所谓非侵入式就是远程调试 而不植入,spring不再用new的方式来创建对象,而是使用依赖注入的方式),基于spring开发的应用一般不依赖于spring的类。

    DI:称作依赖注入(Dependency Injection),和控制反转一个概念,具体的讲,当一个角色需要另外一个角色协助的时候,在传统的程序设计中,通常有调用者来创建被调用者的实例。但是在spring中创建被调用者将不再有调用者完成,因此叫控制反转。创建被调用对象有Spring来完成,在容器实例化对象的时候主动的将被调用者(或者说它的依赖对象)注入给调用对象,因此又叫依赖注入。

    AOP:Spring对面向切面编程提供了强有力的支持,通过它让我们将业务逻辑从应用服务(如事务管理)中分离出来,实现了高内聚开发(所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。),应用对象只关注业务逻辑,不再负责其它系统问题(如日志、事务等)。Spring支持用户自定义切面。

    面向切面编程是面向对象编程的有力补充。面向对象编程将程序分成各个层次的对象,面向切面的程序将运行过程分解成各个切面。AOP是从运行程序的角度去考虑程序的结构,提取业务处理过程的切面,OOP是静态的抽象,AOP是动态的抽象,是对应用执行过程的步骤进行抽象,从而获得步骤之间的逻辑划分。

    容器:Spring是个容器,因为它包含并且管理应用对象的生命周期和配置。如对象的创建、销毁、回调等。

    框架:Spring作为一个框架,提供了一些基础功能,(如事务管理,持久层集成等),使开发人员更专注于开发应用逻辑。

    看完了Spring是什么,再来看看Spring有哪些优点

    1.使用Spring的IOC容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们更专注于应用逻辑

    2.可以提供众多服务,事务管理,WS等。

    3.AOP的很好支持,方便面向切面编程。

    4.对主流的框架提供了很好的集成支持,如hibernate,Struts2,JPA等

    5.Spring DI机制降低了业务对象替换的复杂性。

    6.Spring属于低侵入,代码污染极低。

    7.Spring的高度可开放性,并不强制依赖于Spring,开发者可以自由选择Spring部分或全部

    再来看看Spring有哪些缺点

    1.jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器

    2.Spring不支持分布式,这也是EJB仍然在用的原因之一。

    首先Spring 是一个框架,使用Spring并不代表代码质量的提高,就像盖房子选择用上海的地皮还是北京的地皮一样,房子质量与土地所在的城市无关,与房子的具体设计方案和选料有关。
    使用Spring 等框架可以简化很多基础性的工作,配置好后可以方便构建业务应用。

    框架使用多了会有局限的感觉,像小鸟被套在笼子里,无法飞出去,虽然在笼子里面吃喝不愁。目前编程的门槛越来越低,诸多开源框架广泛传播,几乎没有什么技术门槛,会配置就会编程,而一个好的DBA对软件性能会有很大提高,软件的核心逻辑最终会转移到对数据库的操作上,而且对目前从事的工作来讲,感觉技术的瓶颈越来越多的局限在对数据库的操作上,下一步要认真提高下了。

    Spring的优势不言而喻:

    1. 提供了一种管理对象的方法,可以把中间层对象有效地组织起来。一个完美的框架“黏合剂”。

    2. 采用了分层结构,可以增量引入到项目中。

    3. 有利于面向接口编程习惯的养成。

    4. 目的之一是为了写出易于测试的代码。

    5. 非侵入性,应用程序对Spring API的依赖可以减至最小限度。

    6. 一致的数据访问介面。

    6. 一个轻量级的架构解决方案。

    对Spring的理解

    Spring致力于使用POJOs来构建应用程序。由框架提供应用程序的基础设施,将只含有业务逻辑的POJOs作为组件来管理。从而在应用程序中形成两条相对独立发展的平行线,并且在各自的抽象层面上延长了各自的生命周期。

    Spring的工作基础是Ioc。Ioc将创建对象的职责从应用程序代码剥离到了框架中,通常2中注入方式:setter 和 ctor参数。

    每个Bean定义被当作一个POJO(通过类名和JavaBean的初始属性或构造方法参数两种方式定义的Bean)。

    Spring的核心在org.springframework.beans,更高抽象层面是BeanFactory. BeanFactory是一个非常轻量级的容器。

    关于可维护性的思考

    Spring之类的技术确实带来了应用系统的可维护性的提高吗?

    Ioc, AOP之类的技术,本质上都是将原本位于应用程序代码中"硬编码"逻辑,剥离出来放到了配置文件中(或者其他形式)。主流声音都是认为提高了应用程序的可维护性。

    但如果从以下方面观察,结合项目实际经验,个人感觉这些技术的应用大大降低了应用程序的可维护性,尤其是面对一个陌生的系统,或者项目人员变动频繁的时候。

    1. 中断了应用程序的逻辑,使代码变得不完整,不直观。此时单从Source无法完全把握应用的所有行为。

    2. 将原本应该代码化的逻辑配置化,增加了出错的机会以及额外的负担。

    3. 时光倒退,失去了IDE的支持。在目前IDE功能日益强大的时代,以往代码重构等让人头痛的举动越来越容易。而且IDE还提供了诸多强大的辅助功能,使得编程的门槛降低很多。通常来说,维护代码要比维护配置文件,或者配置文件+代码的混合体要容易的多。

    4. 调试阶段不直观,后期的bug对应阶段,不容易判断问题所在。

    首先Spring 是一个框架,使用Spring并不代表代码质量的提高,就像盖房子选择用上海的地皮还是北京的地皮一样,房子质量与土地所在的城市无关,与房子的具体设计方案和选料有关。
    使用Spring 等框架可以简化很多基础性的工作,配置好后可以方便构建业务应用。

    框架使用多了会有局限的感觉,像小鸟被套在笼子里,无法飞出去,虽然在笼子里面吃喝不愁。目前编程的门槛越来越低,诸多开源框架广泛传播,几乎没有什么技术门槛,会配置就会编程,而一个好的DBA对软件性能会有很大提高,软件的核心逻辑最终会转移到对数据库的操作上,而且对目前从事的工作来讲,感觉技术的瓶颈越来越多的局限在对数据库的操作上,下一步要认真提高下了。

    Spring的优势不言而喻:

    1. 提供了一种管理对象的方法,可以把中间层对象有效地组织起来。一个完美的框架“黏合剂”。

    2. 采用了分层结构,可以增量引入到项目中。

    3. 有利于面向接口编程习惯的养成。

    4. 目的之一是为了写出易于测试的代码。

    5. 非侵入性,应用程序对Spring API的依赖可以减至最小限度。

    6. 一致的数据访问介面。

    6. 一个轻量级的架构解决方案。

    对Spring的理解

    Spring致力于使用POJOs来构建应用程序。由框架提供应用程序的基础设施,将只含有业务逻辑的POJOs作为组件来管理。从而在应用程序中形成两条相对独立发展的平行线,并且在各自的抽象层面上延长了各自的生命周期。

    Spring的工作基础是Ioc。Ioc将创建对象的职责从应用程序代码剥离到了框架中,通常2中注入方式:setter 和 ctor参数。

    每个Bean定义被当作一个POJO(通过类名和JavaBean的初始属性或构造方法参数两种方式定义的Bean)。

    Spring的核心在org.springframework.beans,更高抽象层面是BeanFactory. BeanFactory是一个非常轻量级的容器。

    关于可维护性的思考

    Spring之类的技术确实带来了应用系统的可维护性的提高吗?

    Ioc, AOP之类的技术,本质上都是将原本位于应用程序代码中"硬编码"逻辑,剥离出来放到了配置文件中(或者其他形式)。主流声音都是认为提高了应用程序的可维护性。

    但如果从以下方面观察,结合项目实际经验,个人感觉这些技术的应用大大降低了应用程序的可维护性,尤其是面对一个陌生的系统,或者项目人员变动频繁的时候。

    1. 中断了应用程序的逻辑,使代码变得不完整,不直观。此时单从Source无法完全把握应用的所有行为。

    2. 将原本应该代码化的逻辑配置化,增加了出错的机会以及额外的负担。

    3. 时光倒退,失去了IDE的支持。在目前IDE功能日益强大的时代,以往代码重构等让人头痛的举动越来越容易。而且IDE还提供了诸多强大的辅助功能,使得编程的门槛降低很多。通常来说,维护代码要比维护配置文件,或者配置文件+代码的混合体要容易的多。

    4. 调试阶段不直观,后期的bug对应阶段,不容易判断问题所在。

    作者:痴情的稀饭
    来源:CSDN
    原文:https://blog.csdn.net/xingxiupaioxue/article/details/68943036
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • SSH框架各自优缺点总结

    千次阅读 2019-04-04 16:06:50
    Struts的优缺点 Struts优点: (1)实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现。 (2)具有丰富的Tag标签库,如能灵活运用,能大大提高开发效率。 (3)页面导航使系统的脉络更加清晰。通过一个配置文件,...
  • 架构及其优缺点(收藏)

    千次阅读 2013-12-05 10:11:35
    架构(3-tier application) 通常意义上的三架构就是将整个业务应用划分为:表现(UI)、业务逻辑(BLL)、数据访问(DAL)。区分层次的目的即为了“高内聚,低耦合"的思想。  1、表现(UI):通俗讲...
  • 一,存储过程 优点: 1,减少网络带宽,按理论存储过程会提高性能. ...缺点: 1,依赖于数据库厂商,难以移植(当一个小系统发展到大系统时,对数据库的要求也会发生改变) 2,业务逻辑大的时候,封装性不
  • java框架,优缺点

    千次阅读 2020-02-07 10:53:13
    java2e框架,优缺点。 Spring 框架 优点 1.提供了一种管理对象的方法,可以把中间层的对象有效地组织起来 2.采用了分层结构,可以增量引入到项目中。 3.代码测试较容易 4.非侵入性,应用程序对Spring API的依赖可以...
  • 系统架构优缺点分析

    千次阅读 2020-04-19 21:41:23
    这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面。 一、单体架构 单体架构比较初级,典型的三级架构,前端(Web/手机端)+中间业务逻辑+数据库。这是一种典型的Java ...
  • 关于学习C#的三结构的优缺点比较

    千次阅读 2014-06-10 22:35:06
     1、开发人员可以只关注整个结构中的其中某一;  2、可以很容易的用新的实现来替换原有层次的实现;  3、可以降低之间的依赖;  4、有利于标准化;  5、利于各逻辑的复用。  6、扩展性强。不同...
  • MVP优缺点

    千次阅读 2016-10-12 19:15:18
    【原文地址 ... 为什么需要MVP ...尽量简单 大部分的安卓应用只使用View-Model结构,程序员现在更多的是和复杂的View打交道而不是解决业务逻辑。当你在应用中只使用Model-View时,到最后,...在MVP模式下的View将会变
  • Andorid 换肤框架AndSkin源码解析及优缺点

    千次阅读 热门讨论 2017-10-19 15:50:00
    这部分逻辑体现在framework的LayoutInflater#createViewFromTag。感兴趣的可以查看我的另一篇博文 Android XML布局文件解析过程源码解析 。 SkinInflaterFactory中有个属性mSkinViewList,其中保存了所有需要...
  • SSH框架优缺点

    千次阅读 2009-12-16 16:05:00
    典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与...
  • MapReduce的优缺点

    千次阅读 2018-10-26 22:51:26
    优点 1,开发简单:用户不用考虑进程间的通信和套接字编程 2,可扩展性强:当集群资源不能满足计算需求时,可以增加节点的方式达到线性扩展集群的目的。 3,容错性强:对于节点故障导致...2,MapReduce过于低化...
  • Mybatis(1)-mybatis 优缺点和适用场合

    千次阅读 2019-02-21 11:27:51
    mybatis 优缺点和适用场合 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久框架, MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML...
  • mysql触发器之优缺点简介

    千次阅读 2018-07-12 17:24:49
    既然触发器都是一种特殊的存储过程了,那么我们在它们中间该如何取舍呢?在下只是建议下,如果我们无法使用存储过程完成工作时,可以考虑使用下SQL触发器。 好啦,本次记录就到这里了。 如果感觉不错的话,请多多...
  • koa express 优缺点

    千次阅读 2019-05-13 23:31:00
    关于 Express 优点。Express 的优点是线性逻辑:路由...再说缺点。Express 是基于 callback 来组合业务逻辑。Callback 有两大硬伤,一是不可组合,二是异常不可捕获。Express 的中间件模式虽然在一定程度上解决这两...
  • SSH框架的优缺点

    千次阅读 2011-12-07 13:49:13
    典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与...
  • Spring的优缺点

    千次阅读 2014-06-13 15:36:57
    ① Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB; ② Spring能消除在许多工程中常见的对Singleton的过多使用。(因为它降低了系统的可测试性和面向对象的程度); ③ 通过一种在不同应用程序和...
  • SSH框架优缺点分析

    千次阅读 2010-03-12 15:02:00
    典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与...
  • 缺点:不能拟合非线性数据;   KNN算法: KNN即最近邻算法,其主要过程为: 1. 计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等); 2. 对上面所有的距离值进行排序...
  • C#语言基础原理及优缺点

    万次阅读 2014-11-08 17:01:01
    C#是专门为.net程序框架而创造的语言。 .net框架有ms的.netFramework, Mono的.NetFramework。 net程序编译和执行过程中的流程图: 优点: 缺点: 总结:
  • 深度神经网络中常用的激活函数的优缺点分析 本文主要总结了深度神经网络中常用的激活函数,根据其数学特性分析它的优缺点。 在开始之前,我们先讨论一下什么是激活函数(激活函数的作用)? 如果将一个神经元的输出...
  • Keras的优缺点

    千次阅读 2017-09-10 18:08:00
    而且Keras本身是一个中间层,通过它调用Tensorflow或theano,会比单独使用Tensorflow或theano要慢。 2、程序占用GPU内存比较多。我以前从来没遇到过,模型加一层Dropout或者BatchNormalization就会导致GPU内存...
  • MVC框架优缺点

    千次阅读 2016-11-08 15:12:12
    MVC和三架构 首先、它们很相似; MVC 可分为:Model 模型、View 视图层、Controller 控制; 三架构为:视图层、控制、业务逻辑  首先,最重要的是应该有多个视图对应一个模型的能力。在目前...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,341
精华内容 16,936
关键字:

中间层的优缺点