CN103309674A - 一种软件架构系统 - Google Patents
一种软件架构系统 Download PDFInfo
- Publication number
- CN103309674A CN103309674A CN2013102559561A CN201310255956A CN103309674A CN 103309674 A CN103309674 A CN 103309674A CN 2013102559561 A CN2013102559561 A CN 2013102559561A CN 201310255956 A CN201310255956 A CN 201310255956A CN 103309674 A CN103309674 A CN 103309674A
- Authority
- CN
- China
- Prior art keywords
- plug
- unit
- service
- request
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000009826 distribution Methods 0.000 claims abstract description 34
- 238000012544 monitoring process Methods 0.000 claims abstract description 12
- 238000000034 method Methods 0.000 claims description 36
- 238000013507 mapping Methods 0.000 claims description 15
- 230000007246 mechanism Effects 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 7
- 230000003068 static effect Effects 0.000 claims description 5
- 230000001419 dependent effect Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 9
- 238000011161 development Methods 0.000 abstract description 8
- 238000012546 transfer Methods 0.000 abstract description 4
- 238000003672 processing method Methods 0.000 abstract 2
- 238000007726 management method Methods 0.000 description 30
- 238000010586 diagram Methods 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013499 data model Methods 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 2
- 208000032170 Congenital Abnormalities Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007698 birth defect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000005194 fractionation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 239000000344 soap Substances 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种软件架构系统,所述软件架构系统基于OSGI规范和REST原则实现,包括:监听管理模块,用于监听OSGI容器内的所有业务插件和/或服务,业务插件用于根据外部的数据请求执行相应的业务逻辑;依赖管理模块,用于提供和管理多个业务插件之间的OSGI服务依赖;服务管理模块,用于控制业务插件执行业务逻辑,控制OSGI容器内的服务的发布和停止;路由分发模块,用于接收来自浏览器的数据请求,根据数据请求的扩展属性的数值确定其对应的处理方法,并将数据请求分发至对应于所述处理方法的业务插件,由该业务插件进行处理,或按照REST原则的默认规则处理。通过本发明的技术方案,可以实现对web应用的模块化开发管理、动态化配置和扩展。
Description
技术领域
本发明涉及业务数据处理技术领域,具体而言,涉及一种软件架构系统。
背景技术
在传统的web应用开发中,由于架构上的先天缺陷,实现组件式开发很难,且没有标准的规范去约束,导致软件复杂度越来越高,且组件复用困难、难以解耦,造成开发效率低。同时,对于现有的web应用的软件开发架构,系统不稳定因素难以控制,热插拔难度非常大,当某一模块出现异常或不能使用,往往会导致其他模块不能正常使用甚至宕机。
因此,需要一种新的技术方案,可以实现对web应用的模块化开发管理、动态化配置和扩展。
发明内容
本发明正是基于上述问题,提出了一种新的技术方案,可以实现对web应用的模块化开发管理、动态化配置和扩展。
有鉴于此,本发明提出了一种软件架构系统,所述软件架构系统基于OSGI规范和REST原则实现,所述系统包括:监听管理模块,用于监听OSGI容器内的所有业务插件和/或服务,所述业务插件用于根据外部的数据请求执行相应的业务逻辑;依赖管理模块,用于提供和管理多个所述业务插件之间的OSGI服务依赖;服务管理模块,用于控制所述业务插件执行业务逻辑,控制所述OSGI容器内的服务的发布和停止,以及实现对所述OSGI容器内的资源插件的静态资源管理;路由分发模块,用于接收来自浏览器的数据请求,若所述数据请求存在扩展属性,则根据所述数据请求的扩展属性的数值确定其对应的处理方法,并将所述数据请求分发至对应于所述处理方法的业务插件,由该业务插件进行处理,若不存在扩展属性,则按照REST原则的默认规则进行分发至对应的业务插件。在该技术方案中,使用OSGI规范和REST原则搭建起用于web应用的软件开发的OSGI框架。通过对框架内的插件和/或服务的监听,能够了解到框架内的插件运行和依赖情况,从而实现对插件的热插拔;通过对框架内的插件的依赖控制,从而避免插件之间的过度依赖,有利于生成的web应用的模块化设计和动态化调整;通过对数据请求的路由分发,从而有利于对来自浏览器(客户端)的请求的及时、有效地处理。
在上述技术方案中,优选地,还包括中间件模块,所述中间件模块具体包括:格式管理子模块,用于将所述数据请求统一映射到PageJSON对象中,并将返回值所述浏览器的返回数据统一封装为ResultData对象、且所述返回数据的数据格式为JSON字符串;请求转发子模块,用于将接收到的所述数据请求转换为REST请求,以由所述路由分发模块根据所述REST请求的PageJSON扩展属性的数值确定其对应的处理方法,并将所述REST请求分发至对应于所述处理方法的业务插件,由该业务插件进行处理。在该技术方案中,通过对数据请求的格式的转换和统一管理,从而能够对采用传统的、非OSGI架构的web应用进行更好地兼容。
在上述技术方案中,优选地,所述系统中设置有核心插件,所述监听管理模块通过所述核心插件实现对所述业务插件和/或服务的监听。在该技术方案中,在OSGI框架内存在核心(core)插件,则可以直接利用该核心插件对系统内的业务插件和/或服务进行监听。
在上述技术方案中,优选地,所述依赖管理模块还为每个所述业务插件内部的对象之间提供依赖,具体包括:所述系统启动时为指定的业务插件创建一个IocContext类,并根据所述IocContext类的配置注解对应的实例化对象,并管理所述实例化对象的生命周期,实现自定义的扩展点,然后利用所述自定义的扩展点为所述指定的业务插件内部的对象之间提供依赖。在该技术方案中,还对业务插件内部的对象进行依赖管理,有利于实现对业务插件的动态管理和热插拔。
在上述技术方案中,优选地,所述路由分发模块还用于:在当前节点上的业务插件不可用或抛出特定异常时,将所述数据请求分发至另一可用节点的业务插件。在该技术方案中,路由分发模块既能够实现节点内的分发,还能够实现节点之间的分发操作,从而有利于提高对数据请求进行处理的成功率。
在上述技术方案中,优选地,所述服务管理模块通过钩子机制统一管理发布的服务。在该技术方案中,利用钩子机制有利于提升框架的稳定性。
在上述技术方案中,优选地,所述服务管理模块发布的服务为REST服务,指定的业务插件利用所述服务管理模块发布REST服务的过程包括:与所述指定的业务插件相关联的类继承基础服务资源(Base ServerResource),并由所述指定的业务插件按照默认配置项或按照通过实时注解而标注的配置项,发布对应的REST服务。在该技术方案中,采用本发明的框架的服务器或后台发布的服务均为REST服务,从而统一的服务类型,有利于框架的稳定性和可扩展性。
在上述技术方案中,优选地,所述配置项包括以下至少之一或其组合:服务名、端口、连接数。
在上述技术方案中,优选地,还包括:依赖状态判断模块,用于判断所述指定的业务插件是否依赖于restful插件,若依赖,则按照所述restful插件对应的配置项进行发布REST服务,否则按照默认配置项进行发布。
在上述技术方案中,优选地,还包括:资源插件扩展模块,用于在默认映射规则不符合当前业务需求时,按照所述资源插件提供的定制接口中的方法,扩展URL地址和实际资源路径之间的映射。在该技术方案中,还能够对框架内的资源插件进行扩展,从而适应于实时的业务需求。
通过以上技术方案,可以实现对web应用的模块化开发管理、动态化配置和扩展。
附图说明
图1示出了根据本发明的实施例的软件架构系统的框图;
图2示出了根据本发明的实施例的软件构架的部署结构的示意图;
图3示出了根据本发明的实施例的OSGI系统框架的示意图;
图4A示出了PageJSON数据结构的示意图;
图4B示出了ResultData数据结构的示意图;
图5示出了根据本发明的实施例的HTTP服务请求的流向示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的实施例的软件架构系统的框图。
如图1所示,根据本发明的实施例的软件架构系统100,所述软件架构系统100基于OSGI规范和REST原则实现,所述系统100包括:监听管理模块102,用于监听OSGI容器内的所有业务插件和/或服务,所述业务插件用于根据外部的数据请求执行相应的业务逻辑;依赖管理模块104,用于提供和管理多个所述业务插件之间的OSGI服务依赖;服务管理模块106,用于控制所述业务插件执行业务逻辑,控制所述OSGI容器内的服务的发布和停止,以及实现对所述OSGI容器内的资源插件的静态资源管理;路由分发模块108,用于接收来自浏览器的数据请求,若所述数据请求存在扩展属性,则根据所述数据请求的扩展属性的数值确定其对应的处理方法,并将所述数据请求分发至对应于所述处理方法的业务插件,由该业务插件进行处理,若不存在扩展属性,则按照REST原则的默认规则进行分发至对应的业务插件。在该技术方案中,使用OSGI规范和REST原则搭建起用于web应用的软件开发的OSGI框架。通过对框架内的插件和/或服务的监听,能够了解到框架内的插件运行和依赖情况,从而实现对插件的热插拔;通过对框架内的插件的依赖控制,从而避免插件之间的过度依赖,有利于生成的web应用的模块化设计和动态化调整;通过对数据请求的路由分发,从而有利于对来自浏览器(客户端)的请求的及时、有效地处理。
在上述技术方案中,优选地,还包括中间件模块110,所述中间件模块110具体包括:格式管理子模块1102,用于将所述数据请求统一映射到PageJSON对象中,并将返回值所述浏览器的返回数据统一封装为ResultData对象、且所述返回数据的数据格式为JSON字符串;请求转发子模块1104,用于将接收到的所述数据请求转换为REST请求,以由所述路由分发模块根据所述REST请求的PageJSON扩展属性的数值确定其对应的处理方法,并将所述REST请求分发至对应于所述处理方法的业务插件,由该业务插件进行处理。在该技术方案中,通过对数据请求的格式的转换和统一管理,从而能够对采用传统的、非OSGI架构的web应用进行更好地兼容。
在上述技术方案中,优选地,所述系统中设置有核心插件,所述监听管理模块102通过所述核心插件实现对所述业务插件和/或服务的监听。在该技术方案中,在OSGI框架内存在核心(core)插件,则可以直接利用该核心插件对系统内的业务插件和/或服务进行监听。
在上述技术方案中,优选地,所述依赖管理模块104还为每个所述业务插件内部的对象之间提供依赖,具体包括:所述系统启动时为指定的业务插件创建一个IocContext类,并根据所述IocContext类的配置注解对应的实例化对象,并管理所述实例化对象的生命周期,实现自定义的扩展点,然后利用所述自定义的扩展点为所述指定的业务插件内部的对象之间提供依赖。在该技术方案中,还对业务插件内部的对象进行依赖管理,有利于实现对业务插件的动态管理和热插拔。
在上述技术方案中,优选地,所述路由分发模块108还用于:在当前节点上的业务插件不可用或抛出特定异常时,将所述数据请求分发至另一可用节点的业务插件。在该技术方案中,路由分发模块既能够实现节点内的分发,还能够实现节点之间的分发操作,从而有利于提高对数据请求进行处理的成功率。
在上述技术方案中,优选地,所述服务管理模块106通过钩子机制统一管理发布的服务。在该技术方案中,利用钩子机制有利于提升框架的稳定性。
在上述技术方案中,优选地,所述服务管理模块106发布的服务为REST服务,指定的业务插件利用所述服务管理模块106发布REST服务的过程包括:与所述指定的业务插件相关联的类继承基础服务资源(BaseServer Resource),并由所述指定的业务插件按照默认配置项或按照通过实时注解而标注的配置项,发布对应的REST服务。在该技术方案中,采用本发明的框架的服务器或后台发布的服务均为REST服务,从而统一的服务类型,有利于框架的稳定性和可扩展性。
在上述技术方案中,优选地,所述配置项包括以下至少之一或其组合:服务名、端口、连接数。
在上述技术方案中,优选地,还包括:依赖状态判断模块112,用于判断所述指定的业务插件是否依赖于restful插件,若依赖,则按照所述restful插件对应的配置项进行发布REST服务,否则按照默认配置项进行发布。
在上述技术方案中,优选地,还包括:资源插件扩展模块114,用于在默认映射规则不符合当前业务需求时,按照所述资源插件提供的定制接口中的方法,扩展URL地址和实际资源路径之间的映射。在该技术方案中,还能够对框架内的资源插件进行扩展,从而适应于实时的业务需求。
本发明希望利用OSGI规范和REST原则的优势,实现对传统的软件架构系统的突破,设计出稳定、高效、动态化、模块化、可扩展性、实用性强的基于的OSGI软件架构。
其中,OSGI(Open Service Gateway Initiative)开放服务网关实际是一个由OSGI联盟发起、以Java为技术平台的动态模块化规范。目前业界实现OSGI规范的平台主要有Apache Felix、Eclipse Equinox、Knopflerfish等。其实,OSGI不仅仅是一种技术或规范,更是一种软件架构设计的理念、方法。构建基于OSGI的软件架构至少有以下几个优势:在规范的架构、组件标准统一约束下,去实现组件复用并加强软件架构的自我约束能力;更加适用于团队敏捷协作开发;提升框架的稳定性、扩展性,从而达到有效提升产品质量的目的。
而REST(Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出的一种软件架构风格。REST将web服务视为资源,可以由其唯一的URI唯一标识。REST的主要规范包括了客户/服务器、无状态、缓存、统一接口、分层系统以及按需代码等。REST服务相对SOAP、XML-RPC来讲,更加轻量、简单,同时还能满足异构平台的互访,具备高度的可重用特性。
因此,通过对OSGI规范和REST原则的利用,能够很容易在标准的架构模块化规范约束下引导程序员实现模块化的拆分、重用,从而有效地控制软件复杂度增长、加强架构的约束力。
下面将结合图2至图5,对基于本发明的技术方案的软件架构系统进行详细说明。具体地,在以下实施例中,将采用遵循OSGI标准规范的Apache Felix作为OSGI平台,并基于此平台整合Restlet构建软件架构。
图2示出了根据本发明的实施例的软件构架的部署结构的示意图。
如图2所示,根据本发明的实施例的软件构架的部署结构包括:
OSGI容器204,用于接收浏览器202发送的HTTP请求。OSGI容器204是基于Apache Felix平台、依照REST规范要求而建立的,其中包含有如业务插件206等,用于实现具体的业务逻辑等。对于OSGI容器204的具体构成和功能,下文将结合图3进行详细说明。
该软件构件中还包含有J2EE容器208,其中包含有若干个war包。对于本领域的技术人员应该了解的是:对于J2EE容器208,通常是在做好一个web应用之后,可以将其打包后部署到J2EE容器208中;而在图2所示的技术方案中,J2EE208实际上是用于对采用传统平台(具体是指区别与本申请的软件架构的平台)开发的web应用进行兼容的中间件,具体比如用于对浏览器202发出的HTTP请求的格式进行统一转换等。
图3示出了根据本发明的实施例的OSGI系统框架的示意图。
如图3所示,示出了图2中的OSGI容器204的具体结构示意图,其中包括:
路由分发器302,用于对来自浏览器的数据请求(比如HTTP请求)进行路由和分发。具体地,通过查看数据请求所要求的执行方法,从而将其分发至对应的业务插件304,以进行具体的业务逻辑处理。
业务插件304,接收路由分发器302分发的数据请求,并执行具体的业务逻辑处理工作。
服务管理器306,提供扩展机制,需要各个业务插件304实现具体的业务逻辑,支持服务的动态发布和停止等。
资源插件(即Resource Bundle)308,用于为服务的发布、业务逻辑的处理过程等,提供所需要的资源。其中,可以基于开源HTTP Service310进行扩展扩展点主要是扩展资源映射规则即URL地址和实际资源路径之间的映射,若默认映射规则符合业务需求,则业务bundle不需要扩展,直接按照默认规则将资源存放于相关目录;若需要定制,则需要实现资源bundle提供的定制接口中的方法。
管理控制台314,或称为模块仓库,用于通过利用框架提供的核心插件(core bundle)312监听OSGI容器中各插件、服务的整个生命周期,具体由Context Manager类实现。监听操作的具体实现原理是Bundle Context通过注册自定义Service Listener(服务监听)、Bundle Listener(插件监听)等实现;二是通过Apache Fleix平台内置的命令由程序执行对插件的操作。
通过本发明的技术方案,其核心需要实现的实际上包括“六统一”,即:统一数据模型,由框架提供统一的数据交互模型,包括请求、返回数据对象;统一请求交互模式;统一服务风格,由框架提供统一的REST服务发布机制;统一组件依赖,由框架提供统一的服务依赖机制、IOC机制;统一静态资源处理机制,框架提供统一的资源注册、管理机制;统一模块仓库,支持动态禁用、增加、更新、卸载模块。
统一数据模型:对于页面数据,传统的Spring MVC、Struts往往为不同的页面请求创建多个view或form,其实页面过来的请求数据无非就是一个表单或请求参数,因此可以将页面请求数据统一映射到PageJSON对象中,其中PageJSON数据结构如图4A所示。服务端或后台返回给页面的数据全部封装为ResultData对象,最终返回给页面的数据格式同样也为JSON字符串,其中ResultData数据结构如图4B所示。对于一般业务功能处理模块而言,只需要向上述2类对象set相关业务数据,其它均由框架统一处理。
统一请求交互模式:基于统一的数据模型,因此前后交互的数据格式均为JSON字符串,页面的请求统一为post请求(当然框架自身也支持get请求等)。
统一服务风格,即服务端或后台发布的服务均为REST服务,其发布的细节如下:若一个业务插件需要发布REST服务,只需相关类继承BaseServerResource(基础服务资源)并根据实际需要通过注解的方式标注服务名、端口、连接数等配置项(若没有标注注解,则框架采用默认配置项)。至于restful bundle(restful插件,用于对服务的风格进行统一)统一发布rest服务的实现原理:业务插件启动时,restful bundle会动态判断业务插件是否依赖restful bundle,若依赖则优先按照其配置发布,否则就按默认配置发布。基于业务特性,大概90%的请求都是post或put请求,因此对此两种方法做了资源映射扩展支持,如果请求的PageJSON扩展属性extra的值不为null,则框架restful bundle对自动将请求转发到extra指定的方法去执行;否则由直接请求的方法执行逻辑处理。通常情况下,某一节点上restful bundle在容器内分发路由REST请求即可。不过,也存在单一节点上业务bundle的服务可用,但执行方法的逻辑运行过程中抛出特定异常(RestUnusedException)或突然不可用,此时路由分发器会将该请求分发到另一可用节点上。即路由分发器存在两重路由功能:容器内路由(即同一节点内部的路由和分发)、容器间路由(即不同节点之间的路由和分发)。
统一组件依赖:基于开源组件框架iPOJO进行扩展,框架约定各业务插件之间的依赖均为OSGI服务依赖(业务逻辑上存在层次关系的业务插件禁止包依赖或完全的插件依赖),而OSGI服务依赖由原生的iPOJO管理,业务插件的内部对象之间的依赖由自定义的扩展点进行处理。自定义扩展点利用Spring Ioc原理,框架启动时为每个业务插件创建一个IocContext,然后根据每个类的配置注解实例化相关对象,并管理对象的生命周期。
统一静态资源处理:资源插件(即Resource Bundle)基于开源HTTPService进行扩展。扩展点主要是扩展资源映射规则即URL地址和实际资源路径之间的映射,若默认映射规则符合业务需求,则业务插件不需要扩展,直接按照默认规则将资源存放于相关目录;若需要定制,则需要实现资源插件提供的定制接口中的方法。
统一模块仓库:模块仓库就是框架的管理控制台,利用框架提供的核心bundle(core bundle)监听OSGI容器中各bundle、服务的整个生命周期,具体由ContextManager类实现。具体实现原理是BundleContext通过注册自定义ServiceListener、BundleListener等实现;二是通过Fleix内置的命令由程序执行对bundle的操作。
图5示出了根据本发明的实施例的HTTP服务请求的流向示意图。
如图5所示,基于本发明的技术方案建立的软件架构系统(或称OSGI框架),对于HTTP服务请求进行处理的过程如下:
假定由浏览器501发出某个HTTP服务请求,则存在两种情况,一种情况下,由完全基于本发明的技术方案生成的web应用进行处理,则直接传输至路由分发器504;另一种情况下,若由传统的web应用进行处理,则传输至中间件502,由中间件502进行处理后,再转发给路由分发器504。
中间件502主要是对来自浏览器501的HTTP服务请求进行统一封装数据格式,然后根据映射规则发送REST请求到OSGI容器。映射规则支持动态配置。因此,通过中间件502对HTTP服务请求的格式进行统一封装,使得本发明能够对传统web应用进行兼容,具有很好的兼容性。
路由分发器504提供扩展、钩子机制。支持业务插件采用默认的路由分发,也可由业务插件去扩展,框架通过钩子机制统一管理对外发布的服务。具体地,路由分发器504根据HTTP服务请求所需要的处理方法进行路由分发。
基础服务资源506,匹配HTTP服务请求到业务插件对应的方法,以进行具体的业务逻辑处理。
比如将HTTP服务请求分配至业务插件508A,则由业务插件508A执行业务逻辑处理;而当业务插件508A返回如特定异常或突然不可用时,则路由分发器504可以将HTTP服务请求分发至另一节点上的业务插件,比如业务插件508B,以提升整个框架的可靠性。
以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,能够实现以下有益效果:
1)模块化,特别是对于复杂的系统集成,能有效控制软件复杂度增长、避免或延缓架构腐化。
2)动态化,解决发版停机问题。
3)扩展性、稳定性更好。
4)采用此方案的老项目,迁移到OSGI非常平滑,对其应用架构冲击非常小。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种软件架构系统,所述软件架构系统基于OSGI规范和REST原则实现,其特征在于,所述系统包括:
监听管理模块,用于监听OSGI容器内的所有业务插件和/或服务,所述业务插件用于根据外部的数据请求执行相应的业务逻辑;
依赖管理模块,用于提供和管理多个所述业务插件之间的OSGI服务依赖;
服务管理模块,用于控制所述业务插件执行业务逻辑,控制所述OSGI容器内的服务的发布和停止,以及实现对所述OSGI容器内的资源插件的静态资源管理;
路由分发模块,用于接收来自浏览器的数据请求,若所述数据请求存在扩展属性,则根据所述数据请求的扩展属性的数值确定其对应的处理方法,并将所述数据请求分发至对应于所述处理方法的业务插件,由该业务插件进行处理,若不存在扩展属性,则按照REST原则的默认规则进行分发至对应的业务插件。
2.根据权利要求1所述的系统,其特征在于,还包括中间件模块,所述中间件模块具体包括:
格式管理子模块,用于将所述数据请求统一映射到PageJSON对象中,并将返回值所述浏览器的返回数据统一封装为ResultData对象、且所述返回数据的数据格式为JSON字符串;
请求转发子模块,用于将接收到的所述数据请求转换为REST请求,以由所述路由分发模块根据所述REST请求的PageJSON扩展属性的数值确定其对应的处理方法,并将所述REST请求分发至对应于所述处理方法的业务插件,由该业务插件进行处理。
3.根据权利要求1所述的系统,其特征在于,所述系统中设置有核心插件,所述监听管理模块通过所述核心插件实现对所述业务插件和/或服务的监听。
4.根据权利要求1所述的系统,其特征在于,所述依赖管理模块还为每个所述业务插件内部的对象之间提供依赖,具体包括:所述系统启动时为指定的业务插件创建一个IocContext类,并根据所述IocContext类的配置注解对应的实例化对象,并管理所述实例化对象的生命周期,实现自定义的扩展点,然后利用所述自定义的扩展点为所述指定的业务插件内部的对象之间提供依赖。
5.根据权利要求1所述的系统,其特征在于,所述路由分发模块还用于:在当前节点上的业务插件不可用或抛出特定异常时,将所述数据请求分发至另一可用节点的业务插件。
6.根据权利要求1至5中任一项所述的系统,其特征在于,所述服务管理模块通过钩子机制统一管理发布的服务。
7.根据权利要求1至5中任一项所述的系统,其特征在于,所述服务管理模块发布的服务为REST服务,指定的业务插件利用所述服务管理模块发布REST服务的过程包括:
与所述指定的业务插件相关联的类继承基础服务资源,并由所述指定的业务插件按照默认配置项或按照通过实时注解而标注的配置项,发布对应的REST服务。
8.根据权利要求7所述的系统,其特征在于,所述配置项包括以下至少之一或其组合:服务名、端口、连接数。
9.根据权利要求7所述的系统,其特征在于,还包括:
依赖状态判断模块,用于判断所述指定的业务插件是否依赖于restful插件,若依赖,则按照所述restful插件对应的配置项进行发布REST服务,否则按照默认配置项进行发布。
10.根据权利要求1至5中任一项所述的系统,其特征在于,还包括:
资源插件扩展模块,用于在默认映射规则不符合当前业务需求时,按照所述资源插件提供的定制接口中的方法,扩展URL地址和实际资源路径之间的映射。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310255956.1A CN103309674B (zh) | 2013-06-25 | 2013-06-25 | 一种软件架构系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310255956.1A CN103309674B (zh) | 2013-06-25 | 2013-06-25 | 一种软件架构系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103309674A true CN103309674A (zh) | 2013-09-18 |
CN103309674B CN103309674B (zh) | 2016-08-10 |
Family
ID=49134935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310255956.1A Expired - Fee Related CN103309674B (zh) | 2013-06-25 | 2013-06-25 | 一种软件架构系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103309674B (zh) |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500380A (zh) * | 2013-10-16 | 2014-01-08 | 重庆邮电大学 | 一种基于rest架构的综合资源管理平台系统 |
CN103677854A (zh) * | 2013-12-31 | 2014-03-26 | 曙光云计算技术有限公司 | 适用于云计算环境下的osgi-web框架的设计方法和系统 |
CN103812873A (zh) * | 2014-03-03 | 2014-05-21 | 华为软件技术有限公司 | 业务服务请求处理方法和装置 |
CN104980488A (zh) * | 2015-03-20 | 2015-10-14 | 深圳市腾讯计算机系统有限公司 | 报文传输方法及相关装置和通信系统 |
CN105430030A (zh) * | 2014-09-16 | 2016-03-23 | 钛马信息网络技术有限公司 | 基于osgi技术的可平行扩展的应用服务器 |
CN105893013A (zh) * | 2015-12-07 | 2016-08-24 | 乐视云计算有限公司 | 工程构建系统及其构建方法 |
CN106487912A (zh) * | 2016-10-26 | 2017-03-08 | 北京荣之联科技股份有限公司 | 多服务应用的管理与发布方法及装置 |
WO2016169530A3 (zh) * | 2016-06-22 | 2017-05-11 | 白杨 | 面向服务的模块化系统体系架构 |
CN106992903A (zh) * | 2017-03-30 | 2017-07-28 | 国网福建省电力有限公司 | 一种基于网络设备的数据采集系统及方法 |
CN107645557A (zh) * | 2017-09-29 | 2018-01-30 | 厦门大宛科技有限公司 | 一种基于业务组件的集成应用系统 |
CN105391784B (zh) * | 2015-11-24 | 2018-06-26 | 无锡江南计算技术研究所 | 基于Eclipse的对等通信方法 |
CN108279983A (zh) * | 2016-12-30 | 2018-07-13 | 北京国双科技有限公司 | 一种接口返回结果的处理方法及装置 |
CN108319827A (zh) * | 2018-01-25 | 2018-07-24 | 烽火通信科技股份有限公司 | 一种基于osgi框架的api权限管理插件及方法 |
CN108475220A (zh) * | 2016-03-31 | 2018-08-31 | 甲骨文国际公司 | 用于集成事务中间件平台与集中式审计框架的系统和方法 |
CN108804089A (zh) * | 2018-05-03 | 2018-11-13 | 福建天泉教育科技有限公司 | 可拼装模块的应用业务能力插件化方法及其系统 |
CN109088911A (zh) * | 2018-06-26 | 2018-12-25 | 四川驹马科技有限公司 | 一种基于SaaS服务的定制分发方法及其系统 |
CN109597604A (zh) * | 2018-10-22 | 2019-04-09 | 国网新疆电力有限公司电力科学研究院 | 基于iOS平台的APP模块化开发方法、装置和设备 |
CN110187983A (zh) * | 2019-05-24 | 2019-08-30 | 北京奇艺世纪科技有限公司 | 一种远程调用方法、装置及电子设备 |
CN110764836A (zh) * | 2019-09-18 | 2020-02-07 | 华为技术有限公司 | 插件实现的方法和插件实现的系统 |
CN110908726A (zh) * | 2018-09-14 | 2020-03-24 | 广州神马移动信息科技有限公司 | 数据管理方法、装置、设备及计算机可读存储介质 |
CN111596969A (zh) * | 2020-05-09 | 2020-08-28 | 中国电子科技集团公司第二十八研究所 | 一种基于微内核加插件式的软件架构方法 |
CN112000386A (zh) * | 2019-05-08 | 2020-11-27 | 北京奇虎科技有限公司 | 一种应用的实现方法和装置 |
CN112559074A (zh) * | 2020-12-18 | 2021-03-26 | 昂纳工业技术(深圳)有限公司 | 一种机器视觉软件的动态配置方法及计算机 |
CN112667304A (zh) * | 2019-09-29 | 2021-04-16 | 北京奇虎科技有限公司 | 一种流式数据处理方法和装置 |
CN114489862A (zh) * | 2022-02-16 | 2022-05-13 | 深圳市明泰智能技术有限公司 | 一种idev系统的插件实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102073506A (zh) * | 2011-02-24 | 2011-05-25 | 北京中电普华信息技术有限公司 | 一种基于J2EE的Web应用请求处理方法及系统 |
CN102143523A (zh) * | 2010-11-18 | 2011-08-03 | 华为技术有限公司 | 基于业务递送平台的应用测试方法和业务递送平台 |
CN102377796A (zh) * | 2010-08-05 | 2012-03-14 | 中国人民解放军国防科学技术大学 | 基于OSGi的异构服务集成系统及方法 |
US20120233591A1 (en) * | 2011-03-11 | 2012-09-13 | Sivakumar Melapannai Thyagarajan | Type-safe Dependency Injection of Services into Enterprise Components |
-
2013
- 2013-06-25 CN CN201310255956.1A patent/CN103309674B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102377796A (zh) * | 2010-08-05 | 2012-03-14 | 中国人民解放军国防科学技术大学 | 基于OSGi的异构服务集成系统及方法 |
CN102143523A (zh) * | 2010-11-18 | 2011-08-03 | 华为技术有限公司 | 基于业务递送平台的应用测试方法和业务递送平台 |
CN102073506A (zh) * | 2011-02-24 | 2011-05-25 | 北京中电普华信息技术有限公司 | 一种基于J2EE的Web应用请求处理方法及系统 |
US20120233591A1 (en) * | 2011-03-11 | 2012-09-13 | Sivakumar Melapannai Thyagarajan | Type-safe Dependency Injection of Services into Enterprise Components |
Non-Patent Citations (1)
Title |
---|
鲜国建等: "《基于OSGi的知识服务应用示范系统》", 《数字图书馆论坛》, no. 12, 31 December 2012 (2012-12-31) * |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103500380A (zh) * | 2013-10-16 | 2014-01-08 | 重庆邮电大学 | 一种基于rest架构的综合资源管理平台系统 |
CN103677854A (zh) * | 2013-12-31 | 2014-03-26 | 曙光云计算技术有限公司 | 适用于云计算环境下的osgi-web框架的设计方法和系统 |
CN103812873A (zh) * | 2014-03-03 | 2014-05-21 | 华为软件技术有限公司 | 业务服务请求处理方法和装置 |
CN103812873B (zh) * | 2014-03-03 | 2017-02-01 | 华为软件技术有限公司 | 业务服务请求处理方法和装置 |
CN105430030A (zh) * | 2014-09-16 | 2016-03-23 | 钛马信息网络技术有限公司 | 基于osgi技术的可平行扩展的应用服务器 |
CN105430030B (zh) * | 2014-09-16 | 2018-12-07 | 钛马信息网络技术有限公司 | 基于osgi技术的可平行扩展的应用服务器 |
CN104980488A (zh) * | 2015-03-20 | 2015-10-14 | 深圳市腾讯计算机系统有限公司 | 报文传输方法及相关装置和通信系统 |
CN104980488B (zh) * | 2015-03-20 | 2019-01-29 | 深圳市腾讯计算机系统有限公司 | 报文传输方法及相关装置和通信系统 |
CN105391784B (zh) * | 2015-11-24 | 2018-06-26 | 无锡江南计算技术研究所 | 基于Eclipse的对等通信方法 |
CN105893013A (zh) * | 2015-12-07 | 2016-08-24 | 乐视云计算有限公司 | 工程构建系统及其构建方法 |
CN108475220A (zh) * | 2016-03-31 | 2018-08-31 | 甲骨文国际公司 | 用于集成事务中间件平台与集中式审计框架的系统和方法 |
CN108475220B (zh) * | 2016-03-31 | 2021-11-02 | 甲骨文国际公司 | 用于集成事务中间件平台与集中式审计框架的系统和方法 |
WO2016169530A3 (zh) * | 2016-06-22 | 2017-05-11 | 白杨 | 面向服务的模块化系统体系架构 |
US10700948B2 (en) | 2016-06-22 | 2020-06-30 | Yang Bai | Service-oriented modular system architecture |
CN106487912B (zh) * | 2016-10-26 | 2019-10-11 | 北京荣之联科技股份有限公司 | 多服务应用的管理与发布方法及装置 |
CN106487912A (zh) * | 2016-10-26 | 2017-03-08 | 北京荣之联科技股份有限公司 | 多服务应用的管理与发布方法及装置 |
CN108279983A (zh) * | 2016-12-30 | 2018-07-13 | 北京国双科技有限公司 | 一种接口返回结果的处理方法及装置 |
CN106992903A (zh) * | 2017-03-30 | 2017-07-28 | 国网福建省电力有限公司 | 一种基于网络设备的数据采集系统及方法 |
CN106992903B (zh) * | 2017-03-30 | 2020-07-10 | 国网福建省电力有限公司 | 一种基于网络设备的数据采集系统及方法 |
CN107645557B (zh) * | 2017-09-29 | 2020-08-14 | 厦门大宛科技有限公司 | 一种基于业务组件的集成应用系统 |
CN107645557A (zh) * | 2017-09-29 | 2018-01-30 | 厦门大宛科技有限公司 | 一种基于业务组件的集成应用系统 |
CN108319827A (zh) * | 2018-01-25 | 2018-07-24 | 烽火通信科技股份有限公司 | 一种基于osgi框架的api权限管理插件及方法 |
CN108804089A (zh) * | 2018-05-03 | 2018-11-13 | 福建天泉教育科技有限公司 | 可拼装模块的应用业务能力插件化方法及其系统 |
CN109088911B (zh) * | 2018-06-26 | 2021-01-22 | 四川驹马科技有限公司 | 一种基于SaaS服务的定制分发方法及其系统 |
CN109088911A (zh) * | 2018-06-26 | 2018-12-25 | 四川驹马科技有限公司 | 一种基于SaaS服务的定制分发方法及其系统 |
CN110908726A (zh) * | 2018-09-14 | 2020-03-24 | 广州神马移动信息科技有限公司 | 数据管理方法、装置、设备及计算机可读存储介质 |
CN109597604A (zh) * | 2018-10-22 | 2019-04-09 | 国网新疆电力有限公司电力科学研究院 | 基于iOS平台的APP模块化开发方法、装置和设备 |
CN112000386A (zh) * | 2019-05-08 | 2020-11-27 | 北京奇虎科技有限公司 | 一种应用的实现方法和装置 |
CN110187983A (zh) * | 2019-05-24 | 2019-08-30 | 北京奇艺世纪科技有限公司 | 一种远程调用方法、装置及电子设备 |
CN110764836A (zh) * | 2019-09-18 | 2020-02-07 | 华为技术有限公司 | 插件实现的方法和插件实现的系统 |
US11880695B2 (en) | 2019-09-18 | 2024-01-23 | Huawei Technologies Co., Ltd. | Plug-in implementation method and plug-in implementation system |
CN110764836B (zh) * | 2019-09-18 | 2024-02-09 | 华为技术有限公司 | 插件实现的方法和插件实现的系统 |
CN112667304A (zh) * | 2019-09-29 | 2021-04-16 | 北京奇虎科技有限公司 | 一种流式数据处理方法和装置 |
CN111596969A (zh) * | 2020-05-09 | 2020-08-28 | 中国电子科技集团公司第二十八研究所 | 一种基于微内核加插件式的软件架构方法 |
CN111596969B (zh) * | 2020-05-09 | 2022-11-25 | 中国电子科技集团公司第二十八研究所 | 一种基于微内核加插件式的软件架构方法 |
CN112559074A (zh) * | 2020-12-18 | 2021-03-26 | 昂纳工业技术(深圳)有限公司 | 一种机器视觉软件的动态配置方法及计算机 |
CN114489862A (zh) * | 2022-02-16 | 2022-05-13 | 深圳市明泰智能技术有限公司 | 一种idev系统的插件实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103309674B (zh) | 2016-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103309674A (zh) | 一种软件架构系统 | |
CN106790660B (zh) | 一种实现分布式存储系统的部署方法及装置 | |
Medved et al. | Opendaylight: Towards a model-driven sdn controller architecture | |
EP3722944A1 (en) | Intent-based, network-aware network device software-upgrade scheduling | |
JP4851595B2 (ja) | 目標ipネットワークの論理的配備、配備解除、及び監視のための方法 | |
CN107947961A (zh) | 基于SDN的Kubernetes网络管理系统与方法 | |
CN107579931A (zh) | 一种基于Kubernetes的区块链即服务资源适配方法 | |
JP2015056182A (ja) | ネットワーク仮想化のための方法及び装置 | |
CN103220285B (zh) | 泛在业务环境下基于RESTful接口的接入系统 | |
US8468228B2 (en) | System architecture method and computer program product for managing telecommunication networks | |
CN105262837A (zh) | 一种基于云计算的三网融合应用终端接入装置及实现方法 | |
CN206164554U (zh) | 业务信息处理系统 | |
US10498854B2 (en) | Method and controller for clustering applications in a software-defined network | |
CN103118142A (zh) | 负载均衡方法和负载均衡系统 | |
CN109901817A (zh) | 一种软件架构系统 | |
Li et al. | Research on distributed architecture based on SOA | |
CN103268230A (zh) | 用于构建可拓展服务的云计算信息管理平台的方法 | |
CN102843432B (zh) | 适用于多客户端数据共享和同步更新的网络通信系统 | |
CN114500523A (zh) | 一种基于容器云平台的固定ip应用发布方法 | |
CN109995875A (zh) | 虚拟化数据分发弹性网络系统 | |
CN110011984B (zh) | 一种基于rest和rpc的分布式集群系统及方法 | |
CN111193610A (zh) | 一种基于物联网的智慧监控数据系统和方法 | |
CN107302849B (zh) | 一种光路径的分配方法及装置 | |
CN100466554C (zh) | 通信适配层系统及获取网元信息的方法 | |
US8434096B2 (en) | Method, system and device for managing customer premises equipment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160810 |
|
CF01 | Termination of patent right due to non-payment of annual fee |