软件架构之论文篇(三)

论SOA在企业集成架构设计中的应用

摘要

        2022年8月,我参与了胶凝砂砾石坝施工质量监控系统的开发工作,该系统旨在帮助水利工程建设法人单位、施工企业、监理机构及相关政府部门解决水利工程建设施工质量监控和工程项目管理等问题。我在该项目中担任系统分析师,主要负责该系统的系统分析及设计工作。本文以胶凝砂砾石坝施工质量监控系统为例,主要论述了SOA在企业集成架构设计中的具体应用。服务提供者主要完成服务的设计、描述、定义和发布等相关工作;服务注册中心保证该系统各个模块、服务的相互独立性与松耦合;服务请求者通过WebService技术调用服务。实践证明,通过以上技术的应用有效实现了资源共享和系统间的互操作性,提高了系统的灵活性,最终系统顺利上线,获得用户一致好评。

正文

        胶凝砂砾石坝是在面板坝和碾压混凝土重力坝基础上发展起来的一种新坝型,其特点是采用胶凝砂砾石材料筑坝,使用高效率的土石方运输机械和压实机械施工。与常规坝型相比,胶凝砂砾石坝在适用性和经济性方面具有独特的优势,可以就地、就近取材,不需设置集料筛分,施工进度快,施工工序简单高效,因而要求施工过程紧凑,高峰期筑坝效率要求高,这给施工质量控制带来了一定的困难和风险,需要综合考虑影响施工质量的各方面因素,尽量采用自动化监控手段,加强实时质量监控力度,这使胶凝砂砾石坝施工质量监控系统应运而生。

        2022年8月,我参与了胶凝砂砾石坝施工质量监控系统的开发工作,担任该系统的系统分析师,主要负责该系统的系统分析及设计工作。该系统的主要功能模块包括采料监控、运料监控、拌合监控、碾压监控和温湿度监控等。旨在帮助水利工程建设法人单位、施工企业、监理机构及相关政府部门,解决水利工程建设施工质量监控和工程项目管理等问题,通过信息技术和施工信息现场采集、实时传输、统一存储、科学分析和在线处理,及时生成质量监控报表和发布质量预警信息,提高水利工程建设管理和科学化、现代化和信息化,落实法人负责、监理控制、施工保证、政府监督等各项职能。因此,要满足该系统的需求,选择一种合适的架构技术至关重要。

        SOA是一种应用程序架构,在这种架构中,所有功能都定义为独立的服务,服务之间通过交互和协调完成业务的整体逻辑。SOA指定了一组实体,包括服务提供者、服务消费者、服务注册表、服务条款、服务代理和服务契约,这些实体详细说明了如何提供和消费服务。服务提供者提供符合契约的服务,并将他们发布到服务代理。这些服务是自我包含的、无状态的实体,可以由多个组件组成。服务代理者作为存储库、目录库或票据交换所,产生由服务提供者发布的事先定义的标准化接口,使得服务可以提供给在任何异构平台和任何用户接口使用。这种松散耦合和跨技术实现,使各服务在交互过程中无需考虑双方的内部实现细节、实现技术、以及部署在什么平台上,服务消费者只需要提出服务请求,就可以发现并调用其他的软件服务得到答案。SOA作为一种粗粒度、松耦合的架构,具有松散耦合、粗粒度服务、标准化的接口、位置和传输协议透明、服务的封装和重用、服务的互操作等几个特点。

        该系统要求开发周期短,系统灵活性高等,结合SOA的特点,我们最终采用了面向服务的、基于SOA的企业应用集成。下面具体论述其应用过程。

1、服务提供者
        服务提供者主要完成服务的设计、描述、定义和发布等相关工作。经过对水利行业施工工程及施工工艺的深入研究,通过查阅《胶凝砂砾石坝施工指南》等相关资料,根据企业应用集成的要求,对胶凝砂砾石坝施工质量监控系统的业务流程进行梳理;综合考虑服务粗粒度、松耦合、自包含和模块化等特点进行服务的设计。为了避免服务通信期间,信息量过大,服务之间交互过于频繁,尽量的减少了服务的数量。同时,为了保证服务自身功能的完整性,尽可能的减少服务与系统之间的通信,在胶凝砂砾石坝施工质量监控系统的分析与开发过程中,先行设计,提取出了两个必要,急需的服务便于日后集成使用,其中包括拌合监控中标准拌合比对比服务和碾压监控中的碾压轨迹生成服务。

        在标准拌合比对比服务中主要实现针对现有拌合配比与标准拌合比的对比,以判断现有拌合配比是否符合标准的工作。由于胶凝砂砾石坝就地、就近取材的特性,因此在不同的水利施工工地所使用的采料也不尽相同,标准拌合比对比服务预留了标准拌合比的输入接口,以适应不同的需求。在碾压轨迹生成服务中主要实现读取定位信息绘制碾压轨迹,以监控是否存在漏碾和欠碾的情况。由于受到胶凝砂砾石坝选址和机密程度的限制,定位信息可以选择GPS或者超宽带技术,但是两种定位的方式的数据格式并不相同,因此碾压轨迹生成服务的开发中预留了两种数据格式的接口来读取定位信息。待完成服务设计之后,服务提供者采用WSDL进行服务描述,而后再利用UDDI技术将这些服务信息发布至服务注册中心,公布查找和定位服务的方法。

2、服务注册中心和服务请求者
        在胶凝砂砾石坝施工质量监控系统采用了服务注册中心。服务注册中心比不是一个必选角色,但是为了保证该系统各个模块、服务的相互独立性与松耦合,在该系统中依然保留了服务注册中心。同时,服务注册中心的存在也使得服务请求者与服务提供者之间进一步解耦。在服务注册中心包含有已发布的标准拌合比对比服务与碾压监控中的碾压轨迹生成服务的描述信息,其描述信息主要包括服务功能描述、参数描述、接口定义、信息传递等相关信息。

        服务请求者通过WebService技术调用服务。当服务完成发布,在服务请求者要使用已发布的服务。利用Web Service技术在拌合监控阶段,通过服务注册中心获取拌合监控中标准拌合比对比服务的相关功能,接口,参数及其返回值等相关服务信息;之后使用Web Service技术传递服务所需的标准拌合比等相关参数,进而调用该服务相关的运算、处理和分析。利用Web Service技术在拌合监控阶段,通过服务注册中心获取实时施工数据采集处理服务的服务定义和功能,接口,参数及其返回值等相关服务信息;之后根据施工工地的具体情况选择不同的定位方式,传递服务所需相关参数,最后实时施工数据采集处理服务运行结束返回的绘制碾压轨迹坐标点同样是利用Web Service技术传递至服务请求者。服务请求者接收到碾压轨迹的坐标点后最终完成碾压轨迹的绘制工作并在界面中将其呈现出来。在这期间服务请求者无需了解服务是如何对数据进行处理和分析的。

        整个项目历时10个月开发,于2023年6月完成交付,到目前运行稳定。通过在水利施工工地等恶略环境下的一段时间的使用,用户普遍反馈良好。总体来讲,选用SOA有如下优势:

  • 1、系统更易维护。当需求发生变化时,不需要修改提供业务服务接口,只需要调整业务服务流程或者修改操作即可。
  • 2、更高的可用性。该特点是在于服务提供者和服务请求者的松散耦合关系上得以发挥与体现。这种没有绑定在特定实现上、具有中立的接口定义的特征称为服务之间的松耦合。松耦合有两个明显的优势,一是它的灵活性,其独立于实现服务的硬件平台、操作系统和编程语言;二是当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。
  • 3、更好的伸缩性,依靠业务服务设计、开发和部署等所采用的架构模型实现伸缩性。使得服务提供者可以互相彼此独立地进行调整,以满足新的服务需求。

        实践证明,SOA技术的使用大大提高了系统开发效率,节省了开发和维护成本,使得系统具有更好的开放性、易扩展性和可维护性,从项目完工后的使用效果来看,达到了预期目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462391.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yarn install 出现 error Error: certificate has expired

接手老项目,yarn install的时候出现error Error: certificate has expired,提示证书过期了,查看yarn.lock,因为存在yarn.lock的项目执行yarn install是它里面去执行下载固定版本的包。 查看后发现之前一直在使用的是https://regis…

WPF+MVVM案例实战(十九)- 自定义字体图标按钮的封装与实现(EF类)

文章目录 1、案例效果1、按钮分类2、E类按钮功能实现与封装1.文件创建与代码实现2、样式引用与封装 3、F类按钮功能实现与封装1、文件创建与代码实现2、样式引用与封装 3、按钮案例演示1、页面实现与文件创建2、运行效果如下 4、源代码获取 1、案例效果 1、按钮分类 在WPF开发…

pandas——DataFrame

一、dataframe (一)创建dataframe file.csv Name,Age,City Alice,30,New York Bob,25,Los Angeles Charlie,35,Chicagoimport pandas as pd 1.使用字典创建DataFrame: 其中字典的键是列名,值是数据列表。print(1.使用字典创建D…

Maven项目的基础配置:利用IDEA将SpringBoot的项目打包成war文件

文章目录 引言Maven项目的聚合与继承(依赖管理)把项目打包成war包其他打包配置引言 利用IDEA将SpringBoot的项目打包成war文件Maven项目的聚合与继承(依赖管理)Maven项目的聚合与继承(依赖管理) 把项目打包成war包 利用IDEA将SpringBoot的项目打包成war文件:要配置启动…

Vue3+TypeScript+Vite 后台管理项目_登录页面开发实战

一、前言 基于之前创建的基础工程,接下来我们完成登录页面的开发。 https://blog.csdn.net/qq_34709175/article/details/143426433?spm1001.2014.3001.5501 这里需要交代一下,项目里的文件命名规则,以及文件结构,views下存放…

【销帮帮-注册/登录安全分析报告-试用页面存在安全隐患】

联通支付注册/登录安全分析报告 前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨…

文件管理软件根据多个关键字将不同目录下的文件夹批量复制或移动到新的指定文件夹,完成大量文件夹和文件管理任务

在浩瀚的数字海洋中,文件夹如同散落的珍珠,等待着被有序地串连。首助编辑高手软件,携带着其独特的按多关键字分发功能,犹如一位智慧的渔夫,能够精准地捕捉那些含有特定关键字的文件夹,并将它们从各个角落批…

Selective Generation for Language Models 语言模型的选择性生成

生成式语言模型(Generative Language Models, GLMs)在文本生成任务中取得了显著进展。然而,生成内容的“幻觉”现象,即生成内容与事实或真实语义不符的问题,仍是GLMs在实际应用中的一个重大挑战。为了解决这一问题&…

SpringBoot接入星火认知大模型

文章目录 准备工作整体思路接入大模型服务端和大模型连接客户端和服务端的连接测试 准备工作 到讯飞星火大模型上根据官方的提示申请tokens 申请成功后可以获得对应的secret,key还有之前创建的应用的appId,这些就是我们要用到的信息 搭建项目 整体思…

新老项目不同node版本,使用nvm控制node版本切换(mac、window)

window系统电脑的链接:https://blog.csdn.net/qq_40269801/article/details/136450961 以下是mac版本的操作方式: 1、打开终端 克隆 NVM 仓库: git clone https://github.com/nvm-sh/nvm.git ~/.nvm 2、运行安装脚本: cd ~/.n…

kafka如何获取 topic 主题的列表?

大家好,我是锋哥。今天分享关于【kafka如何获取 topic 主题的列表?】面试题?希望对大家有帮助; kafka如何获取 topic 主题的列表? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中,可以…

半参数模型

4. 半参数模型 (Semi-parametric Model) 半参数模型结合了参数化和非参数化的方法。可以在整体上采用线性回归,但在局部允许非线性变化。这样做的目的是在保持模型的线性解释性的同时,捕捉细微的弧度趋势。 例如,可以定义: y …

spring 学习路线梳理(二)注解

1.通过注解的方式创建bean 1.1 定义dao层的接口和实现 public interface ILoginDao {public String login(); }Slf4j Repository public class LoginDaoImpl implements ILoginDao {public LoginDaoImpl(){System.out.println("spring create bean call");}Override…

【创建型】单例模式

单例模式使用的场景:需要频繁的进行创建和销毁的对象、创建对象时耗时过多或耗费资源过多(即:重量级对象),但又经常用到的对象、工具类对象、频繁访问数据库或文件的对象(比如数据源、session工厂等) 1. 饿汉式(静态常量&#xf…

怎么安装行星减速电机才是正确的

行星减速电机由于其高效、精密的传动能力,广泛应用于自动化设备、机器人、机床以及其他需要精准控制的领域。正确的安装行星减速电机对于确保设备的性能与延长使用寿命至关重要。 一、前期准备 在进行行星减速电机的安装之前,必须做好充分的前期准备工作…

代码随想录算法训练营第三十四天 | 01背包问题 416.分割等和子集

01背包问题—1(dp为二维数组): 文章链接 题目链接:卡码网 46 思路: 因为有物品和背包容量两个方面,因此我们使用二维数组保存递推的结果 ① dp数组及下标的含义: dp[i][j],其中 i 是第 i 个物品&#x…

什么品牌的护眼台灯比较好?五款护眼效果比较明显的护眼台灯

在当今信息爆炸的时代背景下,挑选一款真正符合个人需求的护眼台灯,确实是一项不小的挑战。市场上品牌众多、型号繁杂,功能特点各不相同,价格区间也相当广泛,许多消费者在选购时往往感到迷茫不已。当大家询问“什么品牌…

cv.dnn.blobFromImage参数详解

例如: image cv.imread(imgs/img.png) blob cv.dnn.blobFromImage(image, scalefactor1.0, size(224, 224), mean(0, 0, 0), swapRBTrue, cropFalse) print("原始图像形状:", image.shape) print("Blob数据形状:", blob.shape)1. image 含义…

消息队列-Rabbitmq(消息发送,消息接收)

将来我们开发业务功能的时候,肯定不会在控制台收发消息,而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与RabbitMQ交互。并且RabbitMQ官方也提供了各种不…

电脑没有下载声卡驱动怎么办?电脑声卡驱动安装方法

在日常使用电脑的过程中,我们可能会遇到电脑没有声音的问题,这往往与声卡驱动缺失或损坏有关。声卡驱动是连接电脑硬件(声卡)与操作系统之间的桥梁,确保音频信号能够正常输入输出。那么,当电脑没有声卡驱动…