精华内容
下载资源
问答
  • MVC多层架构模式

    2014-07-22 01:32:29
    帮助初学者理解MVC多层架构模式开发流程图及说明.
  • title: MVC、MVP、MVVM架构模式多层架构 date: 2019-07-21 22:52:35 tags: MVC MVP MVVM 三层架构(3-tier application) 多层架构(n-tier application) 一、架构模式 1.1 概要: MVC、MVP、MVVM是目前较为主流的...

    MVC、MVP、MVVM架构模式与多层架构

    个人博客地址:http://radarsoftware.cn/
    date: 2019-07-21 22:52:35
    tags:

    • MVC
    • MVP
    • MVVM
    • 三层架构(3-tier application)
    • 多层架构(n-tier application)

    一、架构模式

    1.1 概要:

    MVC、MVP、MVVM是目前较为主流的三种架构模式,使用架构模式的目的是为了解决界面呈现和逻辑代码分离问题,其中MVP和MVVM都是在MVC的基础上发展而来的,引发发展的主要原因在于各个模块间的耦合度、模块测试引发的问题。

    1.2 MVC :

    MVC(全名:Model View Controller),正如名字一样MVC是使用Model、View、Controller三个模块设计创建 Web 应用程序的模式。
    三个模块介绍及功能:
    模型(Model):提供可视化元素的呈现、处理部分逻辑,包含数据和行为,可以认为是领域模型(domain)或JavaBean组件。通俗的讲就是用于网络请求、数据库、业务逻辑处理等操作并对应应用状态和业务功能的封装以及提供View模块显示的数据。如果对java熟悉的话Model模块最直观的部分就是JavaBean中的实体类和DAO类方法了。
    视图(View):数据的展示、提供用户数据显示及操作的可视化界面。(比如jsp页面)
    控制器(Controller):接受用户的输入指令并调用模型模块和视图模块去完成用户的需求。可以将控制器理解为模型模块和视图模块之间的桥梁,通过控制器管理两个模块的交互,是设计这类构架模式的基础分层目的的模块,一定程度上降低了耦合度、提高了代码重复利用率。
    MVC架构模式

    1.3 MVP :

    MVP(全名:Model-view-presenter),是MVC演变而来的一种软件设计模式。与MVC有一定的相似性:Presenter负责逻辑的处理,Model提供数据,View负责显示。但MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter(MVC中的Controller)来进行的,所有的交互都发生在Presenter内部, 从理论上去除了View和Model的耦合。
    模块介绍及功能:
    Model:负责存储、检索、操纵数据,但与MVC的Model不同的是MVP的Model与可视化元素的呈现无关,与UI(view)处理逻辑也无关。
    View:数据的展示、提供用户数据显示及操作的可视化界面,同时含有一个Presenter成员变量及逻辑接口
    Presenter:处理与用户交互的负责逻辑。相比于MVC的controller,除了相同的事件触发控制功能,由于去除了View和Model的交互,所有的交互功能都发生在了Presenter(从Model传递需要呈现的可视化元素、View逻辑执行后发送响应等等)。由于解除了View与Model的耦合性,开发者可模拟测试View和Model中的任意一个模块,但明显的是Presenter接口与实现类的增加导致代码冗余度、复杂度会有明显增加。
    MVP架构模式

    1.4MVVM :

    MVVM(全名:Model View ViewModel)MVVM是MVP的进一步发展与规范,实现了View和Model的自动同步。MVVM模式中,一个ViewModel和一个View匹配绑定,所有View中的修改变化,都会自动更新到ViewModel中,同时ViewModel的任何变化也会自动同步到View上显示(ViewModel中的属性都实现了observable这样的接口,当使用属性 的set的方法,都会同时触发属性修改的事件,使绑定的View自动刷新,一般由不同的前端框架平台封装例如VUE。),ViewModel和View之间的交互通过Data Binding完成, 而Data Binding可以实现双向的交互,这就使得视图和控制层之间的耦合程度进一步降低。
    三个模块介绍及功能:
    Model:负责存储、检索、操纵数据。
    View:数据的展示、提供用户数据显示及操作的可视化界面,通过通过模板语法来声明在ViewModel模块完成数据绑定。
    ViewModel:处理与用户交互的负责逻辑,核心是双向数据绑定,去除了View与Model的耦合关联,View可以独立于Model变化和修改方便测试,同时降低了代码的冗余度增加了重用度。
    MVVM架构模式

    二、多层架构

    多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策略,具体显示为将业务划分为多个层。

    2.1 3层架构(3-tier architecture)

    三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer)、业务逻辑层(Business Logic Layer)、 数据访问层(Data access layer)。
    各层功能:
    UI(界面层): 数据的展示、提供用户数据显示及操作的可视化界面。用于接收用户输入的数据和显示处理后用户需要的数据。
    BLL:(业务逻辑层): UI层和DAL层之间的交互通道。对数据层的操作,对数据业务逻辑处理。
    DAL:(数据访问层): 实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。
    三层架构
    大多数人三层架构易与架构模式混淆(尤其是MVC模式),从表示图可以直观看出它们间区别。架构模式(MVC)设计初衷是降低View与Model间的耦合度、降低代码冗余度、提高数据访问安全性。而三层架构是从整个业务应用出发,架构模式例如MVC只是三层架构中的UI(界面层)和BLL(业务逻辑层)展示。(很多博客文章表示MVC严格意义上 只是三层架构的UI界面层,MVC的Model模块实现了业务逻辑的处理和对数据层的操作)用图表示之间关系如下(下图表示基于B/S系统的三层架构,橙线表示对B/S系统的划分)。
    在这里插入图片描述

    2.2 多层架构(n-tier architecture)

    简单的说多层架构是对三层架构的进一步划分,实际中有时“标准”的划分为三层架构会对维护调试带来很多麻烦,多层架构便是对三层架构中的UI(界面层)与BLL(业务逻辑层)进行进一步细分。

    学期末学习了MVC架构模式有感,也算完成了自己的第一篇博客,当作知识积累日志。
    参考学习文章:https://www.runoob.com/w3cnote/three-tier-architecture.html
    参考学习文章:https://www.jianshu.com/p/ebd2c5914d20

    展开全文
  • MVC设计模式多层架构

    千次阅读 2016-05-03 17:04:05
    MVC设计模式多层架构多层架构就拿B/S开发说起。最初的ASP直接把数据库访问代码写在页面上。整个网站就是几个页面。数据访问、业务控制、界面显示全都在一个文件里。这种设计可以理解为一层架构。因为它没有分层的...

    MVC设计模式与多层架构


    多层架构


    就拿B/S开发说起。最初的ASP直接把数据库访问代码写在页面上。整个网站就是几个页面。数据访问、业务控制、界面显示全都在一个文件里。这种设计可以理解为一层架构。因为它没有分层的概念。在这样的开发模式下,同样的逻辑代码经常出现在多个地方。当有相似的功能需要实现时,直接拷贝代码到另一个地方,然后修改。如果遇到系统升级或业务规则发生变化,必须找遍整个系统并作调整。这样的设计不仅工作量大,而且不利于维护。往往一个程序员必须熟悉数据访问和业务规则,同时还得精通页面的编写,因为要写完一个功能就必须把这些内容全部写在页面上。JSP程序员在开发一个功能时会写两样东西jsp和JavaBean。JaveBean封装了数据访问和业务逻辑,jsp页面调然JavaBean的接口,然后将数据显示在页面上。这样如果有多个页面需要用到相同的业务规则只需调用同一个JavaBean封装好的接口即可。如果修改了业务规则直接修改JavaBean而不用到每个页面上去寻找相同的代码。同时也使得业务逻辑实现人员可以和界面开发人员分工合作。这种设计可以理解为两层架构(表现层、数据访问+业务逻辑)。随着编程技术的发展,人们发现不同的业务规则里可能会用到相同的数据。如果按照原来的设计方式同样存在许多重复的代码在JavaBean里。所以后来就将数据访问和业务逻辑再次细分。形成了表现层+业务逻辑层+数据访问层这种架构。当然,随着技术的发展和系统复杂程序的增加,一个系统还可能存在其它的“层”,如:权限验证层、对象缓存层等。

    三层(多层)架构的出现,使得程序编写的代码得以重用,程序员之间可以更好地分工合作,程序架构更加清晰并易于维护。但三层(多层)架构并非适合于所有的项目开发。原先获取一个数据只需直接从数据库查询出来即可。用到了三层(多层)架构后还得先通过业务逻辑层,然后数据访问层才可以得到。原来一个类或一段代码就可以完成的操作变成了好几个类协作才能完成。如果项目规模并不大,采用这样的多层架构就像杀鸡用牛刀一样反而不顺手了。所以,多层架构适用于需要协同开发且具有一定规模或业务较复杂的系统。同时由于分了多层,一个接口的变化可能会引起多层接口的修改。


    MVC设计模式


    MVC是一种非常经典的设计模式。它广泛应用于各种语言和各种类型的应用中。MVC的思想是将“显示”(View)、“数据”(Model)和“控制”(Control)分开。MVC (Model_view_controller)” 模型-视图-控制器”。View部分负责向用户展示数据和接收用户输入Control负责接收View传来的输入并执行相应的业务逻辑获得执行结果,然后再调用View将结果向用户呈现。Model是输入和输出的数据载体。MVC将显示和控制分开,使得View的变化不会影响到Control的修改,同时同样的数据可能会提交到不同的View进行显示。


    MVC多层架构


    对于大多数朋友会认为三层架构就是MVC的原因,我想可能是因为MVC和三层架构都是分三个部分吧。多层架构的思想是低层为上层服务,上层调用低层时根本不用关心具体实现(所以在多层架构中通常是通过接口进行调用,而非具体的实现对象)。MVC则是分工合作,相互协调。另外还有点需要说明一下:

    MVC中的Model和三层架构中用到的Model在概念上并非同一对象(虽然在大多数情况下是同样的类在担当这个职责)。MVC中的Model是值对象(Value Object 简称VO),其职责是封装需要传递到View进行显示的数据。三层架构中的Model是业务对象(Business Object简称BO),其职责是在处理业务逻辑时进行数据传递。在有些复杂的系统中还有持久对象(Persistant Object简称PO)。


    后记


    不能将三层架构和MVC混为一谈,多层架构和MVC都是前人的经验总结。好好利用多层架构和MVC可以开发出健壮、易于扩展的系统。而软件开发人员必须深入理解这些设计模式的精髓方能灵活应用,否则将会深受其害,在开发中处处受制。

    文章引用来自http://www.cnblogs.com/leo_gu/archive/2010/04/28/1723397.html

    展开全文
  • 基于接口的工厂模式多层架构程序
  • 多层架构 分布式架构 介绍 如果您曾经在IT项目中工作过,您可能会知道分解源代码的必要性,以避免熵随着项目变得越来越大而被您所拥有……如果您曾经遇到过其中一种情况: 我从一个小项目开始,该项目一切都很好...

    多层架构 分布式架构

    介绍

    如果您曾经在IT项目中工作过,您可能会知道分解源代码的必要性,以避免熵随着项目变得越来越大而被您所拥有……如果您曾经遇到过其中一种情况:

    1. 我从一个小项目开始,该项目一切都很好,但是随着它的发展如此之快,以至于很难在代码中正确地找到我的逻辑!
    2. 我有一个庞大的系统要设计,我需要考虑一个可扩展,灵活,可扩展和可扩展的体系结构!

    好吧,可能您需要的是多层体系结构 (MLA)。 MLA是一种体系结构模型 ,建议将软件组件组织到不同的层中。 这些层中的每一层都实现为物理上分离的软件组件容器。

    MLA背后的主要设计原理是关注点分离 (SoC)。 可以根据项目的类型来考虑问题,唯一的限制是必须清楚并明确定义不同问题之间的界限。

    在本文中,我们将介绍可用于创建MLA的最常见SoC。 我个人在大型项目的重构过程中经历了这种模型,该项目从模块化体系结构开始,然后在必须将质量和安全规范应用于项目开发过程,要求更高的可测试性 (单元测试,集成测试)后,需要对其进行重构。 ,非回归测试,功能测试), 可追溯性 (对源代码的要求和对软件设计组件的要求)和代码质量(我们在谈论SIL…)。

    设计MLA需要什么

    要构建MLA,您不需要特定的技术或供应商平台,但是最好使用允许实现松耦合组件的技术,例如:

    • 服务合同/实施物理隔离(如SOA,Web服务的WSDL和Rest服务的HTTP)
    • 依赖注入
    • 依赖查找

    层由松散耦合的组件组成,但是每一层都可以看作是一个组件,因此可以将设计原理应用于该层。 例如,我们可以使用此原理实现体系结构可组合性。 这将在基础结构层部分中更好地描述。

    就我而言,该应用程序是使用NetBeans胖客户端平台构建的 ,该平台支持通过Lookup API( Java 6 ServiceLoader的扩展)进行松散耦合。

    4层

    整个系统可分为4个主要层:

    • 应用
    • 基础设施
    • 介绍

    看下面的依赖关系图,我们可以修复一些主要概念:


    • 域层是体系结构的基础,它包含从项目范围派生的业务域构建的所有实体。
    • 应用程序层使用所有领域实体和逻辑来构建基本的应用程序逻辑,可以对其进行组装和组合以创建更大的流程。
    • 基础结构层定义了与所用技术的链接,例如数据库持久性,文件系统,旧系统,XML持久性等。该层的主要重要性在于,它提供了域和应用程序层中定义的服务的实现。 正如您在依赖关系图中看到的那样,由于它是服务提供者组件的简单组成,因此可以通过其他实现轻松更改它。
    • 表示层包含所有用户界面和流程定义。 它可以是带有动作的Java Swing层,用作在单个事务中构成不同应用程序逻辑的流程入口点,也可以是集成到Web应用程序中的面向Web的用户界面层。 同样,可以更改此层,作为基础结构层。

    企业注意事项

    从企业的角度来看,拥有MLA可能会非常有趣,因为它自然会支持IT资源的可重用性以及整个企业的敏捷性。 考虑到这种架构模型,我们可以想象域层可以创建一个联合的IT资源 ,该资源可以在企业的不同项目之间轻松共享。 这就是为什么在设计域层时自治是要考虑的重要设计原则。

    应用程序层仍然有机会被重用,但是在大多数情况下,它与特定需求相关联,因此与本质上不是可重用的流程相关。

    最终, 基础结构和表示层的存在只是为了支持一个项目,因此除了可重用性之外,其他原则也更重要,例如可伸缩性性能简单性

    建立MLA

    放置MLA后,构建策略可能会非常简单。 您必须考虑到每一层都是物理上分离的代码源,因此,它很容易允许创建仅包含必要层的应用程序构建,并且仅从每一层中构建要构建的应用程序的必要模块。 如果使用的平台支持模块化体系结构模式 (例如NetBeans平台Eclipse平台) ,则任务将变得更加容易。 可以仅使用功能的一个子集,或使用处于开发中的新层的实验模块 ,使用不同的基础结构提供程序来构建应用程序。

    测试MLA

    一旦将松散耦合完全应用到我们的MLA中, 可测试性就会获得动力。 您将看到在自动化测试环境中为每一层独立地创建测试作为JUnit是多么容易。 使用诸如Jenkins之类的持续集成工具和诸如Sonar之类的质量工具 ,我们可以轻松地在每一层的源代码上使用质量指标,从而有机会轻松区分潜在问题或代码中需要改进的地方。

    最终,各层分离允许轻松地将功能需求与系统模块对应起来,从而有助于评估变更的影响,从而确定在发行之前需要再次通过哪些测试。

    结论

    自然,提出的模型不是唯一可能的模型,也不是最佳模型。 MLA的设计可能会有所不同,并且取决于项目的范围,需求,技术和应用领域。 到目前为止,我们刚刚讨论的是应用几种设计原则的真实案例,这些原则允许创建MLA来管理项目开发过程的 高质量和安全规范规范。

    顺便说一句,这是最常见的模型,我相信它可以完美地适合独立或分布式应用程序,并且与SOA设计(考虑实体,实用程序,应用程序和流程服务类别)具有很大的并行性。

    参考: 多层体系结构(1)–我们的JCG合作伙伴 Marco Di Stefano在“ 重构思想”博客上的介绍。

    翻译自: https://www.javacodegeeks.com/2013/05/multilayered-architecture-1-introduction.html

    多层架构 分布式架构

    展开全文
  • 软件分层的概念一直很模糊,也没有一个统一的标准,即使有些人明白三层架构的理念但却不会使用,不是...在网上发现了一个很不错的网站架构设计模式,分别介绍了单层架构,二层架构,三层架构,有例字,有演示,很详细。
  • 完整的后台管理系统,除了图片之外,还有文章管理,标签管理,页面管理,会员管理等9.100%原他的代码程序,基于多层架构模式,在展示层又使用MVC10.使用以来注入来解决层之间的以来问题11.完整的路由系统12............
  • 多层架构开发基础.ppt

    2020-08-13 16:41:41
    多层架构开发基础 内容 通讯录演示 1 创建通讯录数据库 2 创建多层结构 3 4 学习目标 了解多层结构之间的关系 会建立多项目的解决方案 会建立模型层数据访问层业务逻辑层用户表示层 了解并实现多层开发模式 会引用第...
  • 9.100%原他的代码程序,基于多层架构模式,在展示层又使用MVC 10.使用以来注入来解决层之间的以来问题 11.完整的路由系统 12..............   2014年由于工作重心的转向,个人开发转php的开发,为了更快上手...
  • 重构的体现。相当好的例子。用多层架构实现登录,实现抽象工厂模式
  • 多层架构简述

    2014-07-30 10:04:45
    多层架构 2007-06-20 14:47 2247人阅读 评论(1) 收藏 举报 数据库ioc架构设计存储session作业 (以下内容为转载,仅供参考,对多层架构感兴趣的朋友可以下载我写的FrameCountry架构看看,很实用的!) ...


    分类: 多层架构 2247人阅读 评论(1) 收藏 举报

    (以下内容为转载,仅供参考,对多层架构感兴趣的朋友可以下载我写的FrameCountry架构看看,很实用的!)

    下载最新的FrameCountry数据访问层架构:http://blog.csdn.net/lizheng82/archive/2007/06/18/1656140.aspx

     

    使用多层架构进行系统开发是现今系统设计的流行趋势。通过分解业务细节,将不同的功能代码分散开来,更利于系统的设计和开发,同时为可能的变更提供了更小的单元。

    以下就是一个典型的多层体系结构图。

    uploads/200607/24_142206_mt.png



    首先我们以“订单(Order)”为例,进行一个简单的业务分解。

    1. 订单自然包括订单的内容(OrderInfo),其中有诸如订单编号、商品名称、数量,以及金额等信息。
    2. 有了订单信息,我们还需要一个存储订单的场所,那么自然需要有个操作读写的对象(OrderAccess)。
    3. 为了外界能进行相关的订单操作,我们还需要有个业务逻辑对象(Order),它提供创建新订单,向订单插入/删除商品,保存订单等操作。

    通过上面的分析,我们基本上可以将一个业务逻辑完整地分割为:

    业务实体 ---> OrderInfo
    数据访问 ---> OrderAccess
    业务逻辑 ---> Order

    基于系统架构考虑,我们将这些对象分别放置在不同的逻辑单元中,这些逻辑单元就组成了“多层”。

    业务实体层(Model) ---> 业务实体 ---> OrderInfo
    数据访问层(DAL) ---> 数据访问 ---> OrderAccess
    业务逻辑层(BLL) ---> 业务逻辑 ---> Order

    同样以上面订单为例,我们进一步讲述各层对象的实现细节。

    1. 客户基本上只依赖于 Order 和 OrderInfo,通过他们就可以操作业务的全部,它并不关心业务存储等细节。

    2. 大多数时候我们会将 OrderAccess 设计成 Internal Protected 方式,OrderAccess 可以是一个抽象类或者接口。我更习惯于将其实现为抽象类,因为某些方法是调用其他方法来实现的,抽象类的设计可以减少实现类的代码数量。另外将该抽象类设计成工厂方法模式,通过 IoC 或者 "配置反射" 来获得具体的实现类,可以减少层之间的耦合,也便于数据系统的替换。

    3. Order 多数时候可以实现为 Singleton 或者静态类,它只是提供了一系列的方法来操作某些逻辑,通过接受 OrderInfo 参数来获取信息。其本身无需保存任何状态。如果需要实现购物车,只需将 OrderInfo 存储到 Session 之中即可。

    通过上面的例子,我们还可以发现多层的另外一个好处就是更利于团队协作开发。架构设计人员无需考虑具体的数据库实现代码,而将设计重点放在业务层面;数据库开发人员自然也可将重心放在数据库访问优化上。团队成员之间不再是一人负责一个业务模块,不再有了 n 个数据访问类,不再有 n 种不同的对象模式等等。从传统的 "瓦罐作坊" 演变为 "工业流水线",更利于根据技术能力和业务熟悉度的差别来划分不同的角色。

    推荐:多层 + IoC 绝对是个不错的选择

    展开全文
  • 本文首先考察企业级应用的一般概念和需求,然后简要阐述面向对象程序设计的基本原则,并结合软件工程的思想来讨论多层的J2EE应用架构,分析它们满足企业级应用的方式,,再通过讲述常用的几种Java设计模式和Java反射...
  • JSP多层架构

    千次阅读 2007-03-09 21:46:00
    JSP多层架构 BLL 业务逻辑层(做出判断,判断业务逻辑是否符合要求,并且进行相应的增、删、改处理),可使用Spring实现业务逻辑控制 DAO(DAL) 数据访问层(继承接口,实现接口中的方法,并且调用Tools中
  • 记得有次去一家挺知名的IT公司面试,考官问我你能说说三层架构和多层架构的区别吗?  我是这样回答的  三层就是数据访问层和业务逻辑层以及UI层   多层是在三层基础上延伸出来的,如果你学了一些设计模式,就...
  • c#网站生成静态页面的一个多层架构演示,工厂模式。。。
  • 基于J2EE多层架构的Web开发框架研究论文,非常详细的介绍了构架结构
  • 内容索引:C#源码,数据库应用,WinForm,DataAccess 在这个实例中, 2005 + Access环境来实现,考虑到数据库的可移槙性,数据访问层使用了工厂模式, 的反射在运行时根据配置文件来动态决定采用何种数据库。
  • 软件架构模式之分层架构

    万次阅读 多人点赞 2015-04-19 23:53:59
    对程序员来说很常见一种情况是在没有合理的程序架构时就开始编程,没有一个清晰的和定义好的架构的时候,大多数开发者和架构师通常会使用标准式的传统分层架构模式(也被称为多层架构)——通过将源码模块分割为几个...
  • 谈谈多层架构和MVC

    2019-06-24 03:06:39
    潜水多年,今天终于申请开通了博客。...话说今天在园子的首页看到一篇文章,讲的是关于三层架构和MVC设计模式。文章洋洋洒洒写了一大篇。其中不乏作者对三层架构和MVC的理解和对比。作者在大谈三层架构和MV...
  • 阐述了多层架构系统的形成结构和特点。作者结合JBuilder6.0中的CORBA/Web技术,介绍了多层架构在JBuilder6.0中的实现过程,并有效地解决了在Client/Server体系结构下负载平衡系统伸缩性等问题。解决了传统二层模式与...
  • VS2008+Sql 2005开发的一套企业内部OA系统,含公文流转,提交申请单,分配申请单,审核申请单,处理申请单等功能,实现真正意义上的无纸化办公!(数据库在web目录下的DB目录内)
  • 多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策略,关于多层架构的标准,我认为有一句话是比较有代表性的“每一层都可以单独部署”,最传统,最简单的就是从三层开始的。...
  • 文中以软件工程领域的新思想、新方法和面向对象思想为指导,以开源新技术为基础,以UML作为建模语言,并结合电子商务的体系结构和特点,分析研究了构建B2C电子商务系统的多层架构方案。此方案给出一种5层设计模式,使视...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 33,651
精华内容 13,460
关键字:

多层架构模式