《敏捷制造——敏捷集成基础结构设计》——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
相关文章
|
4月前
|
JSON API 数据处理
Winform管理系统新飞跃:无缝集成SqlSugar与Web API,实现数据云端同步的革新之路!
【8月更文挑战第3天】在企业应用开发中,常需将Winform桌面应用扩展至支持Web API调用,实现数据云端同步。本文通过实例展示如何在已有SqlSugar为基础的Winform系统中集成HTTP客户端调用Web API。采用.NET的`HttpClient`处理请求,支持异步操作。示例包括创建HTTP辅助类封装请求逻辑及在Winform界面调用API更新UI。此外,还讨论了跨域与安全性的处理策略。这种方法提高了系统的灵活性与扩展性,便于未来的技术演进。
260 2
|
4月前
|
API 开发者
【API管理 APIM】APIM集成内部VNet后,自我访问出现(Unable to connect to the remote server)问题,而Remote Server正是APIM它自己
【API管理 APIM】APIM集成内部VNet后,自我访问出现(Unable to connect to the remote server)问题,而Remote Server正是APIM它自己
|
4月前
|
监控 数据安全/隐私保护 异构计算
借助PAI-EAS一键部署ChatGLM,并应用LangChain集成外部数据
【8月更文挑战第8天】借助PAI-EAS一键部署ChatGLM,并应用LangChain集成外部数据
99 1
|
4月前
|
JSON 数据管理 关系型数据库
【Dataphin V3.9】颠覆你的数据管理体验!API数据源接入与集成优化,如何让企业轻松驾驭海量异构数据,实现数据价值最大化?全面解析、实战案例、专业指导,带你解锁数据整合新技能!
【8月更文挑战第15天】随着大数据技术的发展,企业对数据处理的需求不断增长。Dataphin V3.9 版本提供更灵活的数据源接入和高效 API 集成能力,支持 MySQL、Oracle、Hive 等多种数据源,增强 RESTful 和 SOAP API 支持,简化外部数据服务集成。例如,可轻松从 RESTful API 获取销售数据并存储分析。此外,Dataphin V3.9 还提供数据同步工具和丰富的数据治理功能,确保数据质量和一致性,助力企业最大化数据价值。
190 1
|
4月前
|
开发框架 .NET 数据库连接
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子
|
4月前
|
Java 测试技术 容器
从零到英雄:Struts 2 最佳实践——你的Web应用开发超级变身指南!
【8月更文挑战第31天】《Struts 2 最佳实践:从设计到部署的全流程指南》深入介绍如何利用 Struts 2 框架从项目设计到部署的全流程。从初始化配置到采用 MVC 设计模式,再到性能优化与测试,本书详细讲解了如何构建高效、稳定的 Web 应用。通过最佳实践和代码示例,帮助读者掌握 Struts 2 的核心功能,并确保应用的安全性和可维护性。无论是在项目初期还是后期运维,本书都是不可或缺的参考指南。
51 0
|
4月前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
85 0
|
4月前
|
开发者 算法 虚拟化
惊爆!Uno Platform 调试与性能分析终极攻略,从工具运用到代码优化,带你攻克开发难题成就完美应用
【8月更文挑战第31天】在 Uno Platform 中,调试可通过 Visual Studio 设置断点和逐步执行代码实现,同时浏览器开发者工具有助于 Web 版本调试。性能分析则利用 Visual Studio 的性能分析器检查 CPU 和内存使用情况,还可通过记录时间戳进行简单分析。优化性能涉及代码逻辑优化、资源管理和用户界面简化,综合利用平台提供的工具和技术,确保应用高效稳定运行。
85 0
|
4月前
|
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 数据库的数据迁移。
239 0
|
4月前
|
域名解析 网络协议 API
【Azure 应用服务】App Service与APIM同时集成到同一个虚拟网络后,如何通过内网访问内部VNET的APIM呢?
【Azure 应用服务】App Service与APIM同时集成到同一个虚拟网络后,如何通过内网访问内部VNET的APIM呢?