`

继续侃数据驱动和模型驱动 (转载)

阅读更多
前天那篇blog更多的是讲了下数据驱动、模型驱动的大致概念,今天更多的是讲数据驱动以及模型驱动在进行系统实现时的方法以及过程。
数据驱动
采用数据驱动进行系统实现时通常采用的是一个这样的过程,建立数据源(DataSource),同时根据业务对象模型进行数据库表设计,在数据库表设计完成后根据业务场景构成数据集(DataSet),通常这个时候DataSet本身就是一种业务场景所需的业务数据,在简单的情况下有可能就是对某张表的操作,复杂的情况下则是对于多张表的操作,在DataSet构成后将此DataSet绑定到页面即可进行数据的展现了,如需对数据进行增加、编辑、删除同样通过DataSet方式来进行,这个过程基本上就是一个基于数据驱动进行系统实现的过程了。
模型驱动
采用模型驱动进行系统实现时通常采用的是一个这样的过程,根据业务场景建立业务对象,在进行持久时持久业务对象中需要持久的属性,对于业务场景的实现通过Facade模式对外提供统一接口,此接口通过与持久层进行交互以及操作业务对象(或领域对象)来完成业务场景的实现,而页面则通过此领域对象或显示对象来进行数据的展现,如需对数据进行操作按照显示对象--->Service Facade来完成。

从上面关于实现的过程的描述上来说,会觉得好像模型驱动更为复杂,但模型驱动较之数据驱动的优点我想不用多少,这里更重要的是我觉得是对于数据驱动和模型驱动的一个理解,其实数据驱动同样是模型驱动,呵呵,数据驱动中的业务对象模型我们可以认为和模型驱动中的业务对象模型一致,其和模型驱动的不同点在于数据驱动采用DataSet的方式来实现业务场景,而模型驱动通常采用Service Facade调用各领域对象来实现业务场景,这里有一点非常明显,数据驱动只适合一种简单的业务场景,那就是通过数据关联或简单的数据逻辑处理可以来实现的业务场景,而Service Facade其实对于两者均通用,通过构建类似DataSet的数据关联或简单的数据逻辑处理通过和持久层交互即同样达到了如此的目的,^_^,而且这种方式对于复杂的业务场景同样可以实现,通过领域对象的交互即可完成,而在DataSet方式中这个步骤是比较棘手的,虽然也可以处理,但会带来的问题就是重复代码的增多以及可维护性的降低,其实关键的问题就是其没有形成对象,内聚性不够强。
我的观点仍然是数据驱动是一种退化的模型驱动或者说变相的模型驱动,数据驱动中根据业务对象模型进行数据库表设计的这个过程可以映射为在模型驱动中进行业务对象模型实现的过程,而建立数据集的过程则和模型驱动中的Service Facade颇为相似,只是其Service Facade中的方法比较简单,至于DataSet绑定到页面这个过程其实和模型驱动中将领域对象或显示对象和页面绑定是相同的概念。
模型驱动思想才是王道, ,需要的仅仅是架构体系中对于数据驱动这种变相的模型驱动也提供一个良好的支持,其实我觉得通过上面的描述已经可以看到要去做出这个支持是非常简单的一件事,抽象形成通用Service Facade以及考虑如何建立DataSet即完成了这个实现,而且这样的架构对于模型驱动同样支持,^_^,何乐而不为,鱼和熊掌均可得之(其实就只有熊掌,只是一个可能是肥壮一些的,一个是瘦弱一些的,^_^)。




数据驱动、模型驱动作为如今软件设计中两种不同的模型驱动方法,应该说各有各的优缺点以及适用的场合,不能就一概的去认为哪种必然就是更好的。
数据驱动采用的方式是根据对业务的分析建立数据模型来进行系统设计的一种方法,通过数据模型的建立来完成系统的实现,一般来说,在采取数据模型的系统中多采用的是前台直接和数据模型进行绑定的方式,这样在实现起来相对来讲会非常的快速。根据数据驱动的系统设计以及实现方式上来讲,数据驱动适合于数据型的应用系统的建设,而现在大部分的中小型应用系统很多就停留在这个层面上,在这类系统中数据驱动会显得特别的实用和好用,这类系统一个非常突出的共同点就是系统基本属于信息的录入、显示以及查询这样的一个过程,不存在复杂的数据业务逻辑处理。
模型驱动采用的方式根据对业务的分析建立业务对象模型来进行系统设计的一种方法,通过业务对象模型结合系统架构约束来进行系统的实现,一般来说,在采取模型驱动的系统中多采用N层的结构体系,前台显示一般和业务显示模型进行交互,而业务显示模型则通过业务对象模型进行交互来完成业务逻辑的处理,业务对象模型通过与持久对象模型进行业务持久的处理,在这样的情况下,势必增加了系统的复杂度,模型驱动适合与业务型应用系统的建设,这个在行业化的业务应用上显得比较突出,这类系统的共同点在于业务逻辑较为复杂而且多变,系统不仅仅是信息的录入、显示以及查询,更多的是对录入或显示的信息进行业务逻辑的处理。
经过上面的简单介绍后,我觉得对于数据驱动和模型驱动都会有个大概的概念,只能说数据驱动和模型驱动各有优势,要结合系统需求来选择相应的驱动方式。
对于模型驱动个人有些观点,其实从模型驱动我们可以看出如果采用模型驱动面对一个数据型的应用系统时,最后产生的业务对象模型即退化为了数据模型,只是由于模型驱动通常采用的N层架构此时反而约束了此模型的快速实现,是否应该在模型驱动的N层架构中去考虑一种退化的业务对象模型的支持呢?觉得这点是值得思考的,如果支持的话应该说对于模型驱动非常有利或者说是模型驱动的一个补充,相当于对于模型驱动进行分类处理,有些时候架构不能太S,还是要根据系统建设的需求做出适当的调整。
根据这样的观点,其实数据驱动也是模型驱动,只是它采用的是一种退化的业务对象模型的驱动,并同时进行架构层次的调整以适应系统的快速建设,但数据驱动对于复杂多变的业务逻辑系统来说毕竟难去满足了,主要是会在数据模型的建立以及业务逻辑的修改的方面。
综合这样的观点,还是更为倾向模型驱动,同时也认为,模型驱动的架构应该考虑对于退化的业务对象模型的支持。
分享到:
评论
1 楼 pdw2009 2009-04-13  
部份观点不敢认同

相关推荐

    数据与模型耦合驱动的供水管网.pdf

    数据与模型耦合驱动的供水管网是指通过数据驱动和模型耦合来驱动供水管网的管理和维护。该方法可以实现在供水管网中的爆管事件侦测和定位,提高供水管网的安全性和效率。 在供水管网中,爆管事件是最为严重的灾难之...

    基于数据驱动的故障预测模型

    为解决基于数据驱动的...融合单元的概念应用到故障预测领域,用以描述预测过程中设备状态的数据变化,建立了基于数据驱动的故障预测模型, 从而得到了一种统一的故障预测框架,为基于数据驱动的故障预测研究提供借鉴。

    数字孪生技术与工程实践模型+数据驱动的智能系统全套7章讲解PPT合集.zip

    5. 系统优化与决策支持:阐述如何利用数字孪生和数据驱动的智能系统进行决策优化。 6. 安全与隐私保护:讨论数字孪生与数据驱动系统中的安全问题及应对策略。 7. 未来趋势与发展挑战:展望数字孪生技术的未来发展,...

    Linux总线、设备和驱动模型

    Linux操作系统中的总线、设备和驱动模型是Linux内核中重要的组成部分,负责实现硬件设备的枚举、初始化、数据传输、中断处理以及电源管理等。以下是该领域的详细知识点: 1. Linux设备模型概念: Linux设备模型提供...

    2021年五一赛C题数据驱动的异常检测与预警_一等奖_矿业大学.pdf

    【摘要】中提到的这篇论文主要探讨了数据驱动的异常检测与预警问题,涉及的关键技术包括Kσ偏差、加权Topsis模型、指数平滑法和ARIMA模型。以下是这些技术的详细说明: 1. **Kσ偏差**:这是一种常用的统计方法,...

    领域驱动模型(DDD).zip_ddd_领域模型_领域驱动_领域驱动设计

    领域驱动设计(Domain-Driven Design,简称DDD)是一种软件开发方法,它强调通过深入理解和建模业务领域来驱动软件的设计和开发。DDD的核心思想是将复杂的业务逻辑转化为可操作的软件模型,以此来提高软件的可维护性...

    具有数据驱动控制模型的电动汽车充电的大规模场景

    "具有数据驱动控制模型的电动汽车充电的大规模场景"这一主题,深入探讨了如何利用数据分析和智能控制策略优化大规模电动汽车充电网络的运行。这种模型对于缓解电网压力、提升充电效率以及促进可再生能源的利用具有...

    数据驱动科学与工程:机器学习,动态系统与控制,第2版

    论文讨论了数据生命周期的不同阶段,如训练数据开发、推理数据开发和数据维护,并概述了代表性的方法、挑战和基准测试。 通过这两份资料,读者不仅可以了解到数据驱动的科学与工程的基本概念和实践,还能深入理解...

    基于嵌入式LINUX的异步事件驱动数据采集模型.pdf

    这种模型能够有效地提升系统的实时响应能力和数据处理能力,对于资源受限的嵌入式环境尤其有利。 总的来说,基于嵌入式Linux的异步事件驱动数据采集模型是一种优化嵌入式系统数据采集性能的有效方法。它利用了ACE...

    基于流接口驱动模型设计USB设备的驱动程序.pdf

    4. **设计驱动程序结构**:基于流接口驱动模型,设计驱动程序的内部结构和接口,确保能够正确解析和响应USB设备的事件和数据。 5. **实现驱动程序代码**:编写具体的驱动程序代码,实现与USB摄像头的数据交换和控制...

    基于数据驱动的锂电池寿命预测(Matlab完整程序和数据)

    这个项目提供了基于数据驱动的锂电池寿命预测的完整Matlab实现,结合了实际的数据集,帮助研究人员和工程师理解并应用此类预测模型。 首先,我们要了解锂电池寿命预测的重要性。锂电池广泛应用于电动汽车、储能系统...

    数据驱动控制理论及方法的回顾和展望.pdf

    数据驱动控制理论及方法是近年来控制领域内一个重要的研究方向,它主要关注如何利用大量现场收集的数据来设计和优化控制系统,而无需依赖于传统的物理或化学机理模型。这一理论和方法的兴起,是对现代控制理论及方法...

    Linux设备驱动模型框架的分类研究.pdf

    本文主要介绍了 Linux 设备驱动模型框架的分类研究,包括设备驱动程序的原理和分类、Layered 驱动模型、Platform 驱动模型和 Bus 驱动模型等。同时,本文还对 Linux 设备驱动程序的编写方法进行了总结,并从层次结构...

    行业-电子政务-用于锂电池中SOC确定的数据驱动物理混合模型.zip

    在“用于锂电池中SOC确定的数据驱动物理混合模型.pdf”文档中,可能会详细介绍如何构建这种混合模型,包括选择合适的物理模型,收集和预处理实验数据,以及训练和验证数据驱动算法的过程。可能还会讨论不同机器学习...

Global site tag (gtag.js) - Google Analytics