《敏捷制造——敏捷集成基础结构设计》——2.3 集成基础结构数据访问模型

简介:

本节书摘来异步社区《敏捷制造——敏捷集成基础结构设计》一书中的第2章,第2.3节,作者:苏金泷,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.3 集成基础结构数据访问模型

2.3.1 集成基础结构数据存储结构建模分析

敏捷企业的集成基础结构中计算机系统的主要用途之一便是从数据存储检索数据并将信息显示给用户;在用户更改数据之后系统再将更新内容存入数据库。由于数据存储和用户界面之间的数据流是关键的信息流,因此以往更倾向于将这两部分功能程序捆绑在一起。这样虽然可以减少编码量,但用户界面需要频繁地更改,数据与界面的捆绑使用户界面的更改往往伴随着许多逻辑指令的更改,为此程序工作者平添了诸多不便。

Model-View-Controller(MVC)模式SM01SMI99[J05]实现功能模块和显示模块的分离,使得应用程序更加可维护,可扩展,可移植和可复用。Trygve Reenskaug在20世纪70年代末为Smalltalk平台开发了MVC框架,而发展到今天已经形成了一个非常成熟的模式,如图2-8所示。由于当数据和用户界面这两部分耦合在一起时,业务应用程序除数据传输功能外的大量逻辑指令,MVC模型让Web应用程序的用户界面功能实现模块化,以便可以单独修改各个部分。

Model-View-Controller的核心就是做到三层甚至多层的松散耦合,模式基于用户输入,将域的建模、显示和操作分为如图2-8所示的三个独立类:

1.模型:模型用于管理应用程序域的行为和数据,并响应视图为获取其状态信息而发出的请求,还会响应通常来自控制器的更改状态指令。

2.视图:视图用于管理信息的显示。

3.控制器:控制器用于解释用户的鼠标和键盘输入,以通知模型和/或视图进行相应的更改。

0c10f4d1a6a5c22e57e9841aa26b32eca2925cf3

Web设计中的MVC模式在浏览器和JSP或SERVLET之间插入一个控制组件。这个控制组件集中了处理浏览器发过来的HTTP请求的分发逻辑,根据HTTP请求的URL输入参数和目前应用的内部状态,把请求分发给相应的Web层的JSP或SERVLET。该控制组件同时也负责选择下一个视图,J2EE中通常由JSP生成返回的HTML从而形成视图给浏览器。集中的控制组件也有利于安全验证和日志纪录。

2.3.2 MVC Model 1结构

JSP改良了Servlet输出网页时,需要把HTML程序代码写在Java程序代码中,并且需要采用复杂的方式修改输出的网页。JSP提供在原始的HTML网页中插入Java程序代码的方式,大幅改善设计使用者接口的难度。

因而,可以完全舍弃Servlet而仅采用JSP,但是程序员必须要配合用户界面美工人员的HTML 程序代码,在适当的地方加上特殊的标记,这让网页画面嵌入了后端程序的逻辑。纯JSP的方法不但增加了配合要花的时间和难度,也增加了程序员熟悉JSP Custom Tag的难度,这种设计方式就是所谓的MVC Model 1[SM01] [SM99] [SMI99] [JNDI99] [J05]。

如图2-9所示,MVC Model 1其实不是一个稳定架构,模型1的基础是JSP文件。它从HTTP的请求中提取参数,调用相应的业务逻辑,处理HTTP会话,最后生成HTTP文档。一系列这样的JSP文件加上其他辅助类或文件形成一个完整的模型1应用。早期的ASP和PHP技术就属于这个情况。

f274d28b9364e03b5e6f1651283e23a8f9a39f8f

2.3.3 MVC Model 2结构

我们在集成基础结构建设中引入MVC Model 2体系结构[SM01] [SM99] [SMI99] [JNDI99] [J05]作为标准数据访问模型,程序设计中该结构采用了Servlet作为控制器,视图采用JSP(包括处理数据表现的Custom Tag)实现,而模型则由代表商业数据和逻辑的JavaBeans担任。当用户提出请求时,请求首先被控制器接收,控制器根据用户的请求选择适当的模型,由模型执行用户的请求处理。当处理完毕,控制器再选择适当的视图。然后视图执行模型数据的查询和显示,最后以HTML的形式作为请求的响应发送给客户[WSH02]。

如图2-10所示,Model2体系结构虽然借助了纯MVC体系结构的设计思想,但它们之间却存在一些区别[SM01] [SM99] [SMI99],这些区别来源于Web应用本身。首先,在Model 1体系结构中视图没有自动同步的功能,传统的MVC模型中model可以通知view,然后view就可以被更新,但是在Web中作为model的JavaBeans更新后,无法调用JSP。其次,由于Model 1中观察者/通知模式不能在Web环境内很好的工作,HTTP是一个“GET”的协议,即因客户请求而服务器响应,没有请求就没有响应。而观察者使用“POST”协议通知,这样服务器才能在模型变更瞬间及时将信息推送到客户端。虽然存在某些方法能模拟将数据推送到客户端,但这仅是权宜的修补。我们可以通过在JSP页面中嵌入脚本语言执行模型数据,来实现Model2体系结构中本不应该处理的模型数据的查询行为。这样虽然也能模拟将数据推送到客户端,不过这样的做法与JSP组件的角色不符,于是有了MVC Model 2 WSH02SY01BLX02[J05]。

敏捷企业的集成基础结构中,需要频繁地从数据库调用向用户显示,或从浏览器端(客户端)接收各种数据存储到数据库中,以便进行综合分析和处理。集成基础结构是一个面向多个行业的综合信息平台,几乎每一个行业甚至对于每一类用户都必须建立具有针对性的用户界面,但数据调用和存储逻辑却大体相同。倘若要对敏捷供应链中每一类用户都重新编写检索、运算……等程序逻辑的话,程序设计将会是一个浩大的工程,而且平台建设过程中往往会出现程序模块接口不一致的情况;再加上日常维护过程中用户界面的频繁改变,会使集成基础结构建设中程序编写的工作量翻几倍,系统建设与维护过程中所需熟练程序员的数量将会是令人无法承受的。因此,将用户界面与控制逻辑分离,对于敏捷企业的集成基础结构建设来说,具有极其重要的意义。

eb8e1f86c8f3a1eb1ad807223918e3c937f4dd7e
相关文章
|
3月前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
129 3
|
16天前
|
人工智能 数据可视化 开发者
FlowiseAI:34K Star!集成多种模型和100+组件的 LLM 应用低代码开发平台,拖拽组件轻松构建程序
FlowiseAI 是一款开源的低代码工具,通过拖拽可视化组件,用户可以快速构建自定义的 LLM 应用程序,支持多模型集成和记忆功能。
87 14
FlowiseAI:34K Star!集成多种模型和100+组件的 LLM 应用低代码开发平台,拖拽组件轻松构建程序
|
8天前
|
人工智能 JSON 数据可视化
集成500+多模态现实任务!全新MEGA-Bench评测套件:CoT对开源模型反而有害?
多模态模型在处理图像、文本、音频等数据方面能力不断提升,但其性能评估一直是个挑战。为此,研究团队推出了MEGA-Bench评测套件,集成505个现实任务,涵盖广泛领域和数据类型,由16位专家标注。它采用灵活输出格式,提供多维度评估指标,并配有交互式可视化工具,为模型优化提供了重要支持。然而,评估过程复杂且耗时,COT方法对开源模型性能的影响也值得探讨。论文链接:https://arxiv.org/abs/2410.10563
44 29
|
14天前
|
机器学习/深度学习 PyTorch 测试技术
LossVal:一种集成于损失函数的高效数据价值评估方法
LossVal是一种创新的机器学习方法,通过在损失函数中引入实例级权重,直接在训练过程中评估数据点的重要性,避免了传统方法中反复重训练模型的高计算成本。该方法适用于回归和分类任务,利用最优传输距离优化权重,确保模型更多地从高质量数据中学习。实验表明,LossVal在噪声样本检测和高价值数据点移除等任务上表现优异,具有更低的时间复杂度和更稳定的性能。论文及代码已开源,为数据价值评估提供了高效的新途径。
50 13
LossVal:一种集成于损失函数的高效数据价值评估方法
|
17天前
|
人工智能 安全 Dubbo
Spring AI 智能体通过 MCP 集成本地文件数据
MCP 作为一款开放协议,直接规范了应用程序如何向 LLM 提供上下文。MCP 就像是面向 AI 应用程序的 USB-C 端口,正如 USB-C 提供了一种将设备连接到各种外围设备和配件的标准化方式一样,MCP 提供了一个将 AI 模型连接到不同数据源和工具的标准化方法。
|
6月前
|
Java 测试技术 容器
从零到英雄:Struts 2 最佳实践——你的Web应用开发超级变身指南!
【8月更文挑战第31天】《Struts 2 最佳实践:从设计到部署的全流程指南》深入介绍如何利用 Struts 2 框架从项目设计到部署的全流程。从初始化配置到采用 MVC 设计模式,再到性能优化与测试,本书详细讲解了如何构建高效、稳定的 Web 应用。通过最佳实践和代码示例,帮助读者掌握 Struts 2 的核心功能,并确保应用的安全性和可维护性。无论是在项目初期还是后期运维,本书都是不可或缺的参考指南。
65 0
|
6月前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
105 0
|
6月前
|
开发者 算法 虚拟化
惊爆!Uno Platform 调试与性能分析终极攻略,从工具运用到代码优化,带你攻克开发难题成就完美应用
【8月更文挑战第31天】在 Uno Platform 中,调试可通过 Visual Studio 设置断点和逐步执行代码实现,同时浏览器开发者工具有助于 Web 版本调试。性能分析则利用 Visual Studio 的性能分析器检查 CPU 和内存使用情况,还可通过记录时间戳进行简单分析。优化性能涉及代码逻辑优化、资源管理和用户界面简化,综合利用平台提供的工具和技术,确保应用高效稳定运行。
123 0
|
6月前
|
SQL 存储 数据管理
掌握SQL Server Integration Services (SSIS)精髓:从零开始构建自动化数据提取、转换与加载(ETL)流程,实现高效数据迁移与集成——轻松上手SSIS打造企业级数据管理利器
【8月更文挑战第31天】SQL Server Integration Services (SSIS) 是 Microsoft 提供的企业级数据集成平台,用于高效完成数据提取、转换和加载(ETL)任务。本文通过简单示例介绍 SSIS 的基本使用方法,包括创建数据包、配置数据源与目标以及自动化执行流程。首先确保安装了 SQL Server Data Tools (SSDT),然后在 Visual Studio 中创建新的 SSIS 项目,通过添加控制流和数据流组件,实现从 CSV 文件到 SQL Server 数据库的数据迁移。
1330 0

热门文章

最新文章