企业应用下的业务组件开发实践

28、SAP企业应用开发与业务工程:核心技术与高效实践 本文深入探讨了SAP企业应用开发与业务工程的核心技术与高效实践,重点介绍了ABAP/4开发工作台的组成与优势、R/3业务工程师的功能与应用场景,以及其在企业业务流程优化中的重要作用。通过模型驱动的按订单配置方法,企业可以快速响应市场变化,降低风险并提高效率。此外,还详细解析了业务工程师在不同场景下的具体应用、与其他系统的集成优势以及系统的持续优化策略,为企业数字化转型提供了全面的技术支持。 阅读详情

作者:  Anders小明


什么是企业应用下的业务组件

首先,这是一个组件,这意味着它需要在容器里运行,因此不包括任何中间件服务,同时以一定结构(文件结构或者压缩格式)组成,被容器识别;其次,这是一个业务组件,即提供的是应用服务,而非技术服务;第三,这是企业应用,在业务上包括功能和服务(Service,当前最时髦的说法,你可以理解为API),技术上(以J2EE来讲)包括:UI资源(JSF、JSP、JS和CSS等)、应用程序(Java)资源和配置文件、数据库表定义、初始化数据和存储过程。

 

为什么要企业应用下的业务组件

组件技术从提出到现在已经有20多年了,为什么要提企业应用业务组件?因为现有的组件技术不支持企业应用环境下的组件要求,J2EE的EJB不支持,.NET的DLL也不支持。

如前所述,一个企业应用通常包括了交互界面、应用代码以及数据库结构,而不论是EJB还是DLL只支持应用代码,都不包括交互界面和数据库结构。

如果说EJB不是,那么J2EE的EAR或者WAR是否算是一个组件?答案也不是,EAR或者WAR部署的是一个企业应用,请注意EJB规范中明确说:The Enterprise JavaBeans architecture is a architecture for the development and deployment of component-based (distributed) business applications(EJB 2.x和3.x唯一的区别是2.x有distributed),它们有自己的应用域,彼此相互隔离(简单的看,它们有各自独立的会话管理)。.NET也是有自己的应用域概念。

更进一步,基于应用的部署导致了三个隔离问题:交互(界面)隔离、程序访问隔离和数据隔离(请注意这三个问题分别对应了企业应用业务组件的三个技术内容)。交互隔离导致了企业用户必须访问不同界面,代码访问隔离导致了点对点的集成以及诸如性能、事务和异步处理等各种非功能性问题,而数据隔离导致了数据有效性、一致性等等问题。所有这些都进而导致了维护的问题。

为了解决这些问题,大厂商们都提出了各种解决方案:Portal来解决交互隔离问题,通过ESB来解决代码访问隔离问题,以及通过所谓的信息服务(Information Service)来解决数据隔离问题。

那么OSGi技术或者SCA技术能否满足要求?答案是目前不能,OSGi最初开发的目的就不是为了企业应用,只是这几年开始成熟,并向企业应用方向发展。09年推出的企业版(草案)刚刚提出针对程序访问问题的方案,如远程服务、事务管理等;交互隔离问题上规范并没有提出相应方案,只有Eclipse的Equinox提出了界面的扩展点机制,但这也不能解决B/S环境的问题;而数据隔离问题就没有任何方案。SCA从一开始就是面向企业应用,不过不解决交互隔离和数据隔离问题。

此外,对于行业ISV来说,除企业用户面临的这些种种问题,还面临着其它问题。企业用户毕竟只是面对自己的需求,行业ISV却面临着多个企业用户的需求,面临定制化带来的维护问题,特别是业务和技术的隔离问题(即如何保持构建业务组件的所使用技术的平稳升级)。

 

组件的容器

既然要企业应用下的业务组件,而现有的组件技术又无法支撑,那么就需要一个新的组件容器了(当然,作为一个普通开发人员,我们无法新建一个公开标准的组件体系,也独立维护一个私有的)。新的组件容器完全使用现有的中间件技术,并加上一些新的内容,包括如下:

  1. 组件框架,识别组件,以及组件(文件)结构和各个技术工件。
  2. 技术框架,提供业务无关的技术支持,以便于技术的平稳升级切换。
  3. 运行容器,采用现有中间件技术,包括Tomcat、应用服务器和数据库服务等;
  4. 工具,包括打包以及部署工具等。

关于数据隔离问题,在EIP中提到了各种解决方案,这里采用的共享数据库方式,即各个组件都共用一个数据库,各个组件只提供数据库定义和初时数据(如同EJB/OSGi一样,运行时环境由容器提供)。

 

组件的关系

组件的关系分为两种:依赖和联动。依赖关系在已有的组件技术上已经广为认知,而联动则是新创造的(肯定不是第一个创建的,只不过不同人有不同的叫法)。

联动和依赖的区别是:如果有组件B和组件A联动,则组件B可以在没有组件A的情况下运行,并提供相应功能。

针对三种不同技术工件(即三个隔离问题)呈现不同特点,如下:

1. UI资源(交互隔离问题),依赖是指UI资源的嵌入、引用和替换,联动是指UI资源的新增。

2. 应用程序(程序访问隔离),依赖是指API/模型依赖,联动是指消息(传统消息和JMS消息)以及SPI实现。其中,无论是依赖或者联动都涉及到相应的非功能性需求,包括:异步、事务控制和服务时限等。

3. 数据库资源(数据隔离),依赖是指外键关联和级联操作,无明显的联动关系。

这里,需要关注应用程序的依赖和联动

1. SPI和API存在业务不匹配问题。

虽然组件A依赖组件B,但是不代表组件B提供的服务完全匹配组件A的要求。有时组件A所需要的数据需要组件B的多个API组成,为了开发方便或者组件A所需要的性能问题,可能会在组件B新写一个接口给组件A使用,注意该接口不是组件B的API,该接口仅适用于组件A。

2. 尽可能的使用SPI集成方式

SPI集成方式是相对于API集成方式,API集成方式就是,组件B直接调用其它组件的API及其模型。SPI集成方式(类似于依赖倒置),组件B定义其所需要的接口及其模型,由组件A或者胶水层代码来实现。

这个点对于行业ISV尤为明显。对于企业用户来说,依赖是明确的,组件A依赖/联动于组件B,但对于行业ISV,则面临着定制化问题,虽然组件A依赖/联动于组件B,但是在某个定制化项目中,由于客户已有系统C,而需要组件A依赖/联动于客户已有系统C。此时采用SPI方式。

在开源世界里采用SPI方式更是广泛。很多框架为了兼容(同一功能)不同实现的类库,都是先定义框架所需接口,并同时提供不同类库的胶水代码。

不论是EJB/OSGi/SCA都没有对SPI集成方式的支持。

3. 依赖和联动的非功能性需求。

事实上,非功能性需求都是在集成时才存在的。以事务管理为例,除了及其少数的例子外,大部分事务只能在处理流程才被决定(注意,EJB在这方面着是定义在API上的,这样的设计是不适应需求的),而组件A的API在用例1中需要被异步调用,而在用例2中需要被同步调用是常见的。即便是OSGi规范,也在这方面没有任何处理。

 

组件的定制化

定制化问题只针对于行业ISV有效,对于企业用户来说,除非是那种跨国企业在面临不同国度的业务模式、法律监管和会计制度等差异,存在定制化需要,即使如此,ISV和企业用户对于同一问题的解决方式也是不同的。

既然我们已经将原有的应用采用组件化方式开发,那么应用的定制化问题就转化为组件的定制化问题。同样,应用的定制化手段也就转化为组件的定制化手段。

 

组件框架

       罗罗嗦嗦的说了半天,有人就说了:这不就是把UI、Java和数据库三个东东一打包,然后说这就是一个企业应用下的业务组件,有啥新意呢,不就是模块化开发嘛,一直一来大家都是就是这么搞的嘛,何必搞个怪名词来忽悠。

       是的,就是把UI、Java和数据库三个东东整合在一起,组件容器说提到的技术框架很多的开发队伍都有一套,运行容器更是有无数开源商业的,打包部署工具更是写了无数。

这确确实实就是我们常说的模块化开发。但是模块化开发不同于组件开发,模块化开发只是在逻辑上做了切分,物理上(开发出的系统代码)通常并没有真正意义上的隔离,一切都只是在文档中。

我们需要一点干货,只有实实在在的组件框架才能组件化开发真正落地的(如同OSGi框架那样):我们需要一个类似于Equinox的界面扩展框架来支持UI资源的依赖和联动;我们需要一个集成框架来支持应用程序的依赖和联动,解决所面临的种种问题(业务不匹配、SPI集成以及各种非功能性需求);我们需要一个打包部署工具(类似Spring DM)提供部署UI资源、应用程序和数据库定义资源(Spring DM提供了基于Web资源的部署能力)。

 

其它问题

对于采用J2EE下B/S环境的组件应用还面临一个问题,即现有Servlet规范只允许一个web.xml,不支持组件各自定义私有的Filter和Servlet,不过这个问题不是很严重,在现有技术框架已经支持一份简单的web.xml,而新的Servlet规范已经允许多个web.xml。

分布式部署以及集群部署问题,这其实不是个问题。基于应用的我们有很多手段和技术,那么基于组件的也一样有办法。

18、企业应用开发:从业务层到持久化层的技术实践 本文探讨了企业应用开发中从业务层到持久化层的技术实践,详细介绍了消息驱动Bean(MDB)的构建、Java消息服务(JMS)的应用,以及持久化层的设计与实现。内容涵盖使用JDBC API、实体Bean和对象-关系框架等多种持久化方式,分析了它们的优缺点和适用场景,并提供了选择流程和最佳实践建议,旨在帮助企业开发者构建高效、稳定的应用系统。 阅读详情

相关推荐

15、掌握Angular企业应用开发的关键要素

本文深入探讨了Angular在企业应用开发中的关键要素,涵盖技术领导的角色、项目成功要素、Angular的优势、性能优化策略、安全性设计以及用户体验提升方法。同时介绍了路由器优先架构、认证与授权机制,并结合实际案例分享开发经验,帮助开发者更好地掌握Angular企业应用开发的核心技能。

weixin_42430341的博客 455

业务组件的概念和特点,如何划分业务组件

业务组件封装了一系列业务是可以独立编译、部署

sunhuiliang85的专栏 5684

8、Java EE 企业应用开发核心组件与依赖管理

本文深入探讨了Java EE企业应用开发中的核心组件,包括消息驱动Bean(MDB)和Servlet,以及依赖管理机制。通过异步消息处理、Web请求响应和会话状态维护等场景,展示了如何利用Java EE技术构建高效、可维护的企业级应用。同时,还介绍了依赖查找和依赖注入的最佳实践,帮助开发者提高开发效率和代码质量。

carrot的博客 118

模块化(业务)和组件的概念区分

组件:构成业务模块最基本的组成单元。        例如:生活中的手机,是由一个个的小元件组成的,处理器,喇叭,触摸屏等等,一个个的组件组成;同理,开发中的组件概念,相当于一个不可再分拆的一个功能,如工具类,选择图库,网络请求,评论等等 业务(模块):由一个个的独立功能的组件组合构成,完成一个业务模块,如美食,电影,读书等等 =================

WinterRunner的博客 4609

CloudCompare点云变换保姆级教程:从平移、旋转到绕任意点旋转,一次搞定

本文提供CloudCompare点云变换的全面教程,涵盖从基础平移、旋转到绕任意点旋转的高级技巧。通过详细的操作步骤和实战案例,帮助用户掌握点云数据处理的核心技能,提升三维模型对齐和变换的效率与精度。

weixin_28717969的博客 291

echarts实现3D地图——map3D

【代码】echarts实现3D地图——map3D。

xiaoququ的博客 7323

组件(基本组件、业务组件...)

简介组件(Component)是对数据和方法的简单封装。C++ Builder中,一个组件就是一个从TComponent派生出来的特定对象。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组件的一些简单而可见的功能。使用组件可以实现拖放式编程、快速的属性处理以及真正的面向对象的设计。VCL和CLX组件是C++ Builder系统的核心。

王者之峰 1万+

海康工业相机LabVIEW二次开发实战——参数配置优化与图像高效存储

本文详细介绍了海康工业相机在LabVIEW平台上的二次开发实战,重点解析了相机参数配置的优化方法与图像高效存储策略。通过剖析曝光、增益、触发模式等核心参数的设置逻辑,并结合生产者-消费者设计模式,指导开发者构建稳定、高效的图像采集与异步存储流程,有效提升工业视觉项目的开发效率与系统稳定性。

weixin_29306317的博客 221

钉钉企业应用开发实战:从零构建组织级业务工具

钉钉企业应用开发指南详细介绍了从零构建企业应用的完整流程。内容包括开发前的准备工作(注册认证、权限配置、工具选择)、核心开发步骤(创建模板、审批流程实现)、权限与安全设计(角色控制、数据加密),以及调试发布环节。文章还提供了常见问题解决方案和进阶建议(集成机器人、数据可视化),并附有参考资源链接。该指南适用于需要开发定制化企业应用的技术人员,帮助实现审批自动化、考勤整合等数字化转型需求。(150字)

归梦工作室 1419

VS Code配置Java开发环境避坑指南:从JDK到Spring Boot插件全流程

本文详细介绍了在VS Code中配置Java开发环境的完整流程,涵盖JDK选择、环境变量配置、核心插件安装、构建工具优化及Spring Boot项目专项设置。特别针对常见问题提供避坑方案,帮助开发者快速搭建高效稳定的开发环境,提升Java和Spring Boot开发效率。

weixin_28839699的博客 980

java调用第三方api接口获取数据

弊端,但是并不是每个接口都适用于这套模板,之前写的接口不适用,都是在这个模板里做了定制处理(if 特殊表 -》处理),需要考虑兼容之前的代码,这种兼容代码,有风险会改掉之前的逻辑个人喜欢,有一个接口,写一段代码灵活自由些。2.还有一部分是对post请求的返回数据,做处理,因为json返回的格式如果双方没有约定好,里面数据是多层json嵌套,需要做处理。江同事交接的就是这个代码模板,可以看下源码调试一下,之前交接的视频,也可以看下,主要还是看代码理解快些,将 写好的代码达成jar包,上传到linux上去,

随风不随水的博客 2036

网易数帆陈谔:低代码平台,应对企业应用开发复杂性的一剂良方

通用的低代码平台,未来可能是企业内部软件生产的一种协作模式。

m0_46700908的博客 2751

YOLOv11 损失函数进阶:Varifocal Loss 让正负样本精度双升

创建self.alpha = alpha # 正样本权重系数self.gamma = gamma # 聚焦系数self.lambda_reg = lambda_reg # 回归损失权重# 分类损失:Varifocal Classification Loss# 正样本权重:基于预测置信度# 计算 BCE 损失并加权cls_loss = cls_loss.sum() / (cls_true.sum() + 1e-6) # 按正样本数归一化。

m0_71589036的博客 441

从零开始:用DevUI组件库和MateChat打造智能企业应用

在当今企业级应用开发中,如何快速构建既专业又智能的用户界面,是每个前端开发者面临的挑战。今天,我将分享如何结合**** 这一企业级前端解决方案和**** 智能对话组件,打造一个既有专业UI体验又具备AI能力的企业应用。这不仅是一次技术实践,更是对企业级应用智能化转型的深度思考。

2509_93962198的博客 799

《QGIS快速入门与应用基础》079:KML/KMZ格式:Google Earth兼容

KML/KMZ是专为地理可视化设计的空间数据格式,原生兼容Google Earth,支持点线面要素标注与多媒体集成。KML为XML文本格式,KMZ是其压缩版本。该格式优势在于可视化表现力强、跨平台共享便捷,适合地理标注、路线分享等场景,但存在属性支持弱、大数据量处理效率低等局限。QGIS中可便捷加载和导出KML/KMZ数据,需注意编码设为UTF-8、勾选"导出样式"以保留可视化效果。建议中小规模标注数据使用KMZ格式,确保关联资源完整,提升共享效率。

LuckyHanMo的博客 771

Spring-AI 第 17 章 - 飞书机器人接入详解

✅ Stream 长连接(官方 SDK)✅ AI 对话(支持工具调用)✅ 消息接收与回复✅ 天气查询✅ 数据库查询✅ 数学计算✅ 事件去重Stream 长连接模式:使用官方 SDK 建立 WebSocket 长连接,服务器主动连接飞书,无需公网 IP消息处理流程:接收消息 → 解析内容 → AI 处理 → 回复用户AI 工具调用:接入 FunctionTools,支持天气、计算、日期、数据库查询等多种工具。

AppBlog.CN全栈架构 211

Java企业应用开发框架Spring框架简介

Spring是什么? Spring是一个开源的轻量级的Java企业应用开发框架,其初衷是为了替代当时非常笨重的Java EE(当时还称为J2EE)组件技术EJB(Enterprice Java Beans),让Java EE开发更加简单灵活。 Spring起源于Rod Jahnson 2002年出版的著作《Expert One-on-One J2EE Design and Develo

好运哥的博客 7136

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

构建稳健可靠的企业应用架构—模式与实践【文末送书】

我的职业生涯专注于企业应用,因此,这里所谈及的模式也都是关于企业应用的。(企业应用还有一些其他的说法,如“信息系统”或更早期的“数据处理”。)那么,这里的“企业应用”具体指的是什么呢?我无法给出一个精确的定义,但是我可以罗列一些个人的理解。先举几个例子。企业应用包括工资单、患者记录、发货跟踪、成本分析、信用评分、保险、供应链、会计、客户服务以及外汇交易等。企业应用不包括汽车燃油喷射、文字处理、电梯控制、化工厂控制器、电话交换机、操作系统、编译器以及电子游戏等。企业应用一般都涉及持久化数据。

一键难忘的博客 6728

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

业务过程驱动的ERP系统组件化研究

目前,国内外在实施企业资源计划(EntERPrise Resource Planning,ERP)系统中面临着实施费用高、周期长、成功率低等问题,原因不全在实施企业一方,也在ERP系统的构造方,因此应在这方面加以研究。     现有ERP系统的设计,实际上采用的是一种基于功能分解的系统构造方式,将经过实践检验的“最佳业务”解决方案固化在ERP软件模块中。但现有的绝大多数ERP软件刚性太强,不

wind_jia_123的专栏 1835

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

企业应用架构演化探讨:从微服务到Service Mesh

作者:李宁 来源:博云技术社区 / 博云研究院 当下微服务的实践方案中,Spring Cloud,Dubbo作为主流的落地方案,在企业应用架构中发挥越来越重要的作用。本文探讨企业应用架构如何从微服务架构向Service Mesh架构演化,并形成落地方案。需要特别说明:本文讨论的架构目前适用于普通的企业级应用,其他行业(例如互联网)需要进一步扩展。 在讨论之前,我们需要明确一个事实:企业应用一...

京东科技开发者 1900

基于SOA构建随需应变的企业应用

基于SOA构建随需应变的企业应用0.引  言大多数企业的信息化过程,可视为信息技术的松散堆垒过程。企业为解决业务需求,往往采用当时情况下最新的技术,导致企业内部存在着种类繁多的硬件、操作系统、中间件、编程语言、数据存储;无法重用的冗余代码、数据和应用;不同的应用系统之间不能直接通信,成为一个个“信息孤岛”。不同的应用系统分散在企业不同的部门之间,当有新的业务需求出现的时候,无法重用已有

Sguy's Tech Home 1523

让企业应用“会说话“:DevUI组件库与MateChat智能助手的实战融合

在企业级应用开发的征途上,DevUI与MateChat为我们提供了强大的技术支撑。但技术本身不是目的,如何让技术服务于人、赋能业务,才是我们真正需要思考的问题。正如DevUI的设计价值观所倡导的"高效、开放、可信、乐趣",技术的终极目标是让复杂变得简单,让工作充满乐趣。当我们用DevUI构建稳健的应用骨架,用MateChat注入智能的灵魂,企业级应用便真正"活"了起来,成为推动业务发展的强大引擎。这不仅是技术的胜利,更是对人性化设计的致敬。

2509_93967457的博客 927

低代码开发:企业应用搭建的新捷径

本文介绍了低代码开发的核心原理、应用场景和优势,强调其能像搭积木般简单搭建企业应用。详细阐述了低代码开发平台的选型关键指标,包括功能完整性、易用性、可扩展性、性能和稳定性、数据安全性等。以Gadmin企业级开发平台为例,展示了其在PHP低代码领域的标杆地位和实际应用效果。结尾呼吁企业尝试低代码开发,选择合适的平台,提升开发效率和应用质量,实现数字化转型。

LiuZhiYun_01的博客 1074
上一篇: 浅谈领域驱动设计
下一篇: 企业应用下的业务组件开发实践
林仪明
博客等级 码龄25年 313粉丝 61原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值