软件开发框架的搭建及使用方法、计算设备和存储介质与流程

文档序号:20837518发布日期:2020-05-22 17:03阅读:201来源:国知局
软件开发框架的搭建及使用方法、计算设备和存储介质与流程

本发明涉及软件开发技术领域,具体来说涉及一种软件开发框架的搭建方法和使用方法,以及包括该软件开发框架的计算设备和计算机可读存储介质。



背景技术:

随着软件技术的发展,其应用领域越来越广,可实现的功能越来越多。不同软件之间可能存在相同的基础功能,尤其是在应用于相同或相似领域(诸如数字政府建设)的软件之间,可能存在诸多相同或相似的功能。在每个开发项目中针对这些相同或相似功能的开发会造成对人力资源、时间成本等的浪费,从而降低开发效率。并且,随着软件功能的复杂化,同一开发项目可能涉及多名开发人员,甚至多个开发团队,不同开发人员或团队可能选择使用不同的开发技术、接口或服务规范、项目构建和管理方式等,这会为项目交接、后续代码维护等带来诸多不便。



技术实现要素:

根据本发明的第一方面,提供了一种搭建软件开发框架的方法,包括:将多个程序组件封装成相应的程序模块,使得每个程序模块包括对应的程序组件、该程序组件所包含的依赖、以及针对该程序组件的开发配置;提供可供开发人员编辑的配置文件,其中所述配置文件为每个程序模块提供用于启用该程序模块的选项,使得该程序模块可根据软件项目实例的需要而被选择性地启用;并且提供代码生成工具,其中所述代码生成工具用于根据所述配置文件生成所述软件项目实例的框架代码。

在一些实施例中,将多个程序组件封装成相应的程序模块包括:将针对所述多个程序组件的相应示例代码封装到相应的程序模块中以供所述开发人员参考。

在一些实施例中,提供可供开发人员编辑的配置文件包括:利用预定的经验值初始化每个程序组件的性能参数。

在一些实施例中,所述多个程序组件包括以下各项中的至少一个:网关组件、会话管理组件、服务发现和配置中心组件、客户端调用组件、任务调度组件、数据库组件、消息队列组件、缓存组件、角色权限校验组件、服务熔断和连接池组件、服务链路跟踪组件、项目构建和部署组件、以及日志组件。

在一些实施例中,所述多个程序组件包括数据库组件,并且其中提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定是否构建读写分离配置、是否存在多个数据源和是否存在异构数据源的选项。

在一些实施例中,所述多个程序组件包括消息队列组件,并且其中提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定队列数目和队列类型的选项。

在一些实施例中,所述多个程序组件包括缓存组件,并且其中提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定是否需要缓存支持的选项。

在一些实施例中,所述多个程序组件包括服务熔断和连接池组件,并且其中提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定是否需要调用同一个注册中心的其他内部微服务的选项。

在一些实施例中,所述多个程序组件包括客户端调用组件,并且其中提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定是否需要调用外部第三方服务的选项。

在一些实施例中,所述多个程序组件包括会话管理组件,并且其中提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定是否需要会话管理的选项。

在一些实施例中,所述多个程序组件包括角色权限校验组件,并且其中提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定是否需要角色权限校验的选项。

在一些实施例中,所述多个程序组件包括日志组件,并且其中提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定日志文件名、日志最长历史和最大允许文件大小的选项。

根据本发明的第二方面,提供了一种使用根据第一方面描述的方法搭建的软件开发框架来实现软件项目实例的方法,包括:读取所述配置文件,其中该配置文件已根据所述软件项目实例的需要而被编辑;并且由所述代码生成工具根据所述配置文件生成所述软件项目实例的框架代码。

根据本发明的第三方面,提供了一种计算机可读存储介质,其上存储软件开发框架,所述软件开发框架包括:由多个程序组件封装而成的多个程序模块,其中每个程序模块包括对应的程序组件、该程序组件所包含的依赖、以及针对该程序组件的开发配置;可供开发人员编辑的配置文件,其中所述配置文件为每个程序模块提供用于启用该程序模块的选项,使得该程序模块可根据软件项目实例的需要而被选择性地启用;以及代码生成工具,用于根据所述配置文件生成所述软件项目实例的框架代码。

根据本发明的第四方面,提供了一种计算设备,包括:存储器,其上存储软件开发框架;处理器,被配置成运行所述软件开发框架。其中,所述软件开发框架包括:由多个程序组件封装而成的多个程序模块,其中每个程序模块包括对应的程序组件、该程序组件所包含的依赖、以及针对该程序组件的开发配置;可供开发人员编辑的配置文件,其中所述配置文件为每个程序模块提供用于启用该程序模块的选项,使得该程序模块可根据软件项目实例的需要而被选择性地启用;以及代码生成工具,用于根据所述配置文件生成所述软件项目实例的框架代码。

根据本发明提供的方法搭建的软件开发框架通过封装程序模块,可以预先实现一些软件开发项目中的常用功能,并且通过提供可供开发人员编辑的配置文件以及代码生成工具,可以便于软件项目开发人员通过简单配置来直接启用具有相应功能的模块。这可以减少冗余开发,有助于提高软件开发效率。并且,该框架可以对开发过程中涉及的各种技术标准进行统一,从而有效避免由于不同开发团队或人员使用不同技术标准而导致的混乱,便于项目交接,并有效降低后续运维成本。

根据在下文中所描述的实施例,本发明的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。

附图说明

在下面结合附图对于示例性实施例的描述中,本发明的更多细节、特征和优点被公开,在附图中:

图1示意性示出了相关技术中的开发架构;

图2示意性示出了根据本发明实施例的开发框架的架构;

图3示意性示出了根据本发明实施例的搭建开发框架的方法的流程图;

图4示意性示出了根据本发明实施例的使用图3所示的方法搭建的软件开发框架的框图;

图5示意性示出了根据本发明实施例的使用图4所示的软件开发框架来实现软件项目实例的方法的流程图;

图6示意性示出了根据本发明实施例的通过代码生成工具生成软件项目实例的框架代码的流程图;并且

图7示意性示出了根据本发明实施例的计算设备的框图。

具体实施方式

在详细介绍本发明的实施例之前,首先对一些相关的概念进行解释:

1.springmvc:一种基于java语言的mvc开发框架;

2.springboot:一种基于springmvc的开发框架;

3.springcloud:一种基于java语言的微服务框架;

4.orm:一种为了解决面向对象与数据库存在的互不匹配的现象的技术

5.hibernate、mybatis和jpa:基于java语言的orm框架

6.docker:一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的linux或windows机器上,也可以实现虚拟化。

7.rabbitmq、activemq、kafka、rocketmq和zeromq:消息队列,用于解耦服务之间的关系或者日志收集。

8.redis:可持久化的缓存技术

9.memcached:只在内存中,不可持久化的缓存技术

10.zookeeper:一个分布式的、开放源码的分布式应用程序协调服务

11.eureka:springcloud家族中的用于服务注册和发现的技术

12.configserver:springcloud家族中的用在服务配置中心的技术

13.etcd:一种用于服务注册发现和支持kv存贮的技术

14.consul:一种用于服务注册发现和支持kv存贮的技术

15.maven:项目对象模型(pom),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件,其除了以程序构建能力为特色之外,还提供高级项目管理工具。

16.ant:maven技术出现之前的一种项目构建和管理工具,目前已经被maven替代

17.jwt:一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源。

18.依赖:在包括多个模块或组件的项目中,各模块或组件之间可能存在大量依赖关系,即一个模块或组件的执行需要另外一个或多个模块或组件的支持,一个模块或组件所包括的依赖可以包括例如其执行所依赖的模块或组件的标识。

在软件开发过程中,不同开发人员或者不同开发团队可能选择不同的开发技术,从而形成不同的开发架构。图1示意性示出了相关技术中的一种典型的开发架构。如图1所示,在开发架构的各个方面存在许多不同的技术选型。例如,后台开发框架以springmvc、springboot为主,但其他方面往往存在多种选择。示例性地,网关可以选择springcloud的zuul、apigateway等,也可以直接使用nginx作为网关;协议解析可以选择jackson或者jdk自带的jsonlib、fastjson、gson等;任务调度可以选择quartz、springtask、elastic-job等;队列可以选择rabbitmq、activemq、kafka、rocketmq、zeromq等;持久化层可以选择hibernate、mybatis、jpa等orm(对象关系映射)框架;事务可以使用aop声明或注解(anotation)式等;数据库连接池可以选择dbcp、c3p0、hikaricp等;缓存可以选择redis、memcached等;服务注册发现配置中心可以选择zookeeper、redis、eureka、configserver、etcd、consul等,有些项目可能没有服务注册发现配置中心;角色权限可以选择springsecurity、shrio或开发商自己的框架等;项目构建方式可以选择maven、ant或手动构建等;项目部署方式可以选择jar、war、docker等;文档规范可以选择word、swagger、tapd等。除了图中示出的,控制层也有些会使用比较旧的struts;服务链路跟踪有些项目有,有些没有;日志收集有些使用elk,也有些不进行日志收集;接口或服务规范更加多样。以上所述的各种方面相互组合会产生大量不同的开发框架,甚至还存在更多变型。

在一些开发项目中,通常会涉及多个开发人员或开发团队。如果没有一个统一的开发框架,那么后续项目交接或运维中可能存在诸多不便,诸如所使用的接口、标准等可能存在差异导致不利于对接、涉及技术种类繁杂导致不易维护、代码风格差异大导致可读性差等。并且,对于相同或相似领域的软件开发,往往需要实现许多相同或相似的基础功能以及可能的可选功能。如果在每个开发项目中针对这些相同或相似功能进行重复开发,会产生许多不必要的任务量,降低开发效率,造成对时间成本、人力资源等的不必要的消耗。因此,在软件开发领域中,存在对妥善搭建开发框架的需要。

本申请提出了一种搭建软件开发框架的方法,所搭建的开发框架提供了可编辑的配置文件,使得开发人员可以通过编辑配置文件来选择启用所需的功能,从而有助于实现快速开发。在一些实施例中,开发框架可以提供示例代码。一方面,开发人员可以参考这些示例代码或者直接在示例代码上进行修改,从而便利于开发过程;另一方面,这有助于统一不同开发人员的代码风格,有利于后续代码维护。而且,通过搭建软件开发框架,有助于统一开发架构中的各种技术选型,可以为合作开发提供方便。

图2示意性示出了根据本发明实施例的一种示例开发架构。在该实施例中,对各种技术选型进行了统一。如图所示,在springboot框架下,网关使用apigateway,协议解析使用jackson,会话认证管理使用jwt,任务调度使用quartz,队列使用rabbitmq,持久化层使用mybatis,事务使用注解式,数据库连接池使用hikaricp,缓存使用redis,服务注册发现与配置中心使用consul,角色权限管理使用springsecurity,文档规范使用swagger,项目构建方式为maven,项目部署方式为jar或docker,并且在架构中添加了统一异常处理、日志、服务熔断和连接池(使用hystrix)、客户端调用(使用httpclient)等。

图3示意性示出了根据本发明实施例的搭建开发框架的方法300的流程图,图4示意性示出了根据本发明实施例的使用方法300搭建的软件开发框架400的框图。以下将结合图3和4对本申请提出的搭建软件开发框架的方法进行详细描述。

如图3所示,在步骤301处,将多个程序组件封装成相应的程序模块,使得每个程序模块包括对应的程序组件、该程序组件所包含的依赖、以及针对该程序组件的开发配置。在一些实施例中,步骤301还包括将针对多个程序组件的相应示例代码封装到相应的程序模块中以供开发人员参考。

示例性地,如图4所示,将多个程序组件411封装成相应的多个程序模块410,使得所搭建的开发框架包括多个程序模块410,每个程序模块410包括相应的程序组件411、程序组件411的依赖412、程序组件411的开发配置413以及针对程序组件411的示例代码414。

每个程序模块410包括的程序组件411可用来实现相应的功能。开发人员可以通过启用相应的程序模块410来实现所需的功能。示例性地,多个程序组件411可以包括以下各项中的至少一个:网关组件411a、会话管理组件411b、服务发现和配置中心组件411c、客户端调用组件411d、任务调度组件411e、数据库组件411f、消息队列组件411g、缓存组件411h、角色权限校验组件411i、服务熔断和连接池组件411j、服务链路跟踪组件411k、项目构建和部署组件411l、以及日志组件411m。程序组件411的依赖412是运行相应程序组件411所必需的其他已存在的可用包等。程序组件411的开发配置413可以配置程序组件411中的参数,一些开发配置可以是可修改的,以便实现期望的功能。示例代码414可以供开发人员参考,或者开发人员也可以直接修改示例代码414来写服务并运行服务。如此,可以为开发人员省略大量重复的基础性的代码的编写任务,提高其开发效率,同时也有助于保持整体项目的代码风格的一致性,方便后续维护。

在步骤302处,提供可供开发人员编辑的配置文件,其中配置文件为每个程序模块提供用于启用该程序模块的选项,使得该程序模块可根据软件项目实例的需要而被选择性地启用。示例性地,可以在配置文件中针对每个程序模块设置“enable”参数,当将其值设置为“true”时,则表示启用相应的程序模块。

在一些实施例中,步骤302还包括利用预定的经验值初始化每个程序组件的性能参数。示例性地,各个程序组件410的关键性能参数可以是根据经验预定的,在步骤302中可以通过在配置文件420中为关键性能参数赋予预定的经验值来初始化相应程序组件的性能参数,比如数据库连接池及超时参数、重连试探、缓存连接池及超时参数、hystrix连接池及超时参数、httpclient连接池及读写超时参数等。然而,为了不使配置文件过于冗长,可以简化常用的配置参数。利用预定的经验值初始化程序组件的性能参数提供了若干优点。在现有的开发框架中,通常在性能测试阶段才会去关注这些关键性能参数。在这种情况下,当性能出现瓶颈时,可能难以得知问题所在。相比之下,本申请提供的开发框架可以在开始构建时就引导开发人员关注到每一个程序组件的性能参数,从而有助于优化所开发软件的性能。

以下提供了配置文件420的示例代码:

{

"project":{

"groupid":"com.tencent",

"artifactid":"goff",

"version":"1.0.0",

"targetdir":"d:\\stonehan\\workspace",

"comment":"填写即将构建工程的组织标志,项目标志,版本号,工程保存目录"

},

"deploy":{

"type":"jar",

"comment":"项目部署方式,type=jarordocker"

},

"servicediscory":{

"enable":true,

"type":"consul",

"comment":"允许服务发现和注册到服务注册中心,type:consul,etcd"

},

"datasources":{

"enable":true,

"datasource":[{

"type":"mysql",

"config":{

"maximumpoolsize":400,

"initpoolsize":10

}

}],

"comment":"数据定义,enable表示项目是否需要数据库支持,数据源可以多个,type:数据库类型mysql,oracle;initpoolsize:初始连接池大小,maximumpoolsize:最大连接池大小"

},

"queue":{

"enable":true,

"queues":[{

"type":"rabbitmq",

"queues":["queue-1"]

}],

"comment":"enable表示项目是否需要mq支持,mq可以多个,queues自动创建队列名(可空)"

},

"sleuth":{

"enable":true,

"comment":"项目是否需要服务链路跟踪支持,需要依赖mq"

},

"cache":{

"enable":true,

"type":"redis",

"config":{

"minidle":0,

"maxidle":100,

"maxactive":1000,

"maxwait":5000

},

"comment":"enable表示项目是否需要缓存支持,type:缓存类型,maxactive:最大活跃连接数,maxwait:连接等待超时时间,单位毫秒"

},

"jwt":{

"enable":true,

"comment":"enable表示项目是否使用jwt认证支持,需要依赖缓存cache"

},

"hystrix":{

"enable":true,

"config":{

"timeout":5000,

"threadpoolcoresize":100,

"threadpoolmaximumsize":100

},

"comment":"enable表示项目是否需要调用内部其他微服务并支持熔断,threadpoolcoresize:线程池大小,timeout:超时时间5s"

},

"heepclient":{

"enable":true,

"config":{

"timeout":5000,

"maxtotalconnectins":2000,

"defaultmaxconnectionsperhost":400

},

"comment":"enable表示项目是否需要调用第三方服务,maxtotalconnecitons:总连接数,defaultmaxconnectionperhost:每个主机最大连接数,timeout:超时时间5s"

},

"security":{

"enable":true,

"comment":"enable表示项目是否需要角色权限控制"

},

"log":{

"maxhistory":30,

"maxfilesize":"64m",

"comment":"日志配置"

}

在步骤303处,提供代码生成工具,其中代码生成工具用于根据配置文件生成软件项目实例的框架代码。示例性地,图3中的代码生成工具330可以根据经开发人员修改的配置文件320来按开发需求生成软件项目实例的框架代码。

下面对各种程序组件进行进一步描述。

在多个程序组件411包括网关组件411a的实施例中,网关组件411a具备限流/过载保护、鉴权、负载均衡等功能。可选地,可以使用rio网关。

在多个程序组件411包括会话管理组件411b的实施例中,提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定是否需要会话管理的选项。示例性地,会话管理组件416b可能需要依赖缓存组件411h。会话管理组件416b可以提供默认配置,比如会话超时时间、会话刷新时间、密钥等。当在配置文件420中指定需要会话管理时,代码生成工具320可以生成会话管理,开发人员只需要实现登录时认证用户的业务逻辑,其他(会话认证、登出等)都可以由开发框架处理。

在多个程序组件411包括服务发现和配置中心组件411c的实施例中,所生成的框架代码支持服务发现和注册。在软件开发框架针对微服务的情况下,该组件可以不是可选项,而是自动存在的。

在多个程序组件411包括客户端调用组件411d的实施例中,提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定是否需要调用外部第三方服务的选项。示例性地,该组件可以提供适合于大多场景的性能参数、序列化和反序列函数。当在配置文件420中指定了需要调用外部第三方的服务,代码生成工具430可以生成调用第三方的httpclient工具类,开发人员可以直接使用该类。

在多个程序组件411包括任务调度组件411e的实施例中,示例性地,该组件可以以quartz实现分布式任务调度,可以被配置为在分布式环境中防止多节点同时执行相同的任务时数据被重复处理,并且利用集群的多节点分担大批量任务的处理,从而提高批量任务的处理效率。

在多个程序组件411包括数据库组件411f的实施例中,提供可供开发人员编辑的配置文件包括:在配置文件中提供用于指定是否构建读写分离配置、是否存在多个数据源和是否存在异构数据源的选项。示例性地,该组件默认为hikaricp实现,也可以选择支持分布式事务xa方案的druid。当在配置文件420中指定了是否构建读写分离配置、是否存在多个数据源和是否存在异构数据源时,代码生成工具430会自动生成相应代码和配置。开发人员可以通过修改配置来将该组件指向实际的数据源,即可直接使用代码。

在多个程序组件411包括消息队列组件411g的实施例中,提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定队列数目和队列类型的选项。可选地,该组件可以被配置用于异步的服务调用、通知、解耦模块之间的紧耦合关系以及分布式事务,日志等收集,且可以支持多队列源。示例性地,开发人员可以在配置文件420中选择队列数量和队列类型,即可通过代码生成工具430生成多个队列的代码和配置(支持单机或集群),并且代码会根据开发人员的配置自动注入单机还是集群实例。开发人员只需要修改配置(比如指向的mq地址、端口、安全认证(访问mq的用户名和密码)等)即可通过注入实例使用代码。

在多个程序组件411包括缓存组件411h的实施例中,提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定是否需要缓存支持的选项。可选地,缓存可以用来存贮热点数据和更新频率低的数据,提高应用的响应速度和减少磁盘读写。示例性地,开发人员可以在配置文件420中指定需要缓存支持。然后,代码生成工具430可以自动生成单机和集群代码及配置,并且代码会根据开发人员的配置自动注入单机还是集群实例。这样,开发人员只需要修改配置(比如指向的地址、端口、安全认证等)即可通过注入实例使用代码。

在多个程序组件411包括角色权限校验组件411i的实施例中,提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定是否需要角色权限校验的选项。示例性地,当在配置文件420中指定需要角色权限校验时,代码生成工具430可以生成基于springsecurity的权限验证框架代码。开发人员只需要编写根据用户身份加载对应的角色或角色对应的权限一个类即可,其他的都可以交给框架处理。

在多个程序组件411包括服务熔断和连接池组件411j的实施例中,提供可供开发人员编辑的配置文件包括:在所述配置文件中提供用于指定是否需要调用同一个注册中心的其他内部微服务的选项。服务熔断是指,当由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施。可选地,该组件可以被配置为防止应用程序直接调用那些很可能会调用失败的远程服务或共享资源。或者,可选地,该组件可以被配置为在服务器压力剧增时,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。示例性地,当在配置文件420中指定多个内部微服务需要调用同一个注册中心时,代码生成工具430可以自动生成对应的配置,使得开发人员不需要做任何设置即可使用。

在多个程序组件411包括服务链路跟踪组件411k的实施例中,示例性地,该组件可以跟踪整个项目中的服务调用关系、调用时间耗时、服务调用时参数查看、调用、顺序等,开发及测试人员可以利用服务链路跟踪来定位包括性能问题等的线上问题。

在多个程序组件411包括项目构建和部署组件411l的实施例中,示例性地,项目构建方式可以通过maven完成,而项目部署方式可以选择jar或docker,开发人员可以不需要修改任何配置,直接执行maven命令即可以jar方式或docker方式构建或部署项目,从而实现快速发布和构建。

在多个程序组件411包括日志组件411m的实施例中,提供可供开发人员编辑的配置文件包括:在配置文件中提供用于指定日志文件名、日志最长历史和最大允许文件大小的选项。示例性地,日志文件名可以默认为项目名,在项目构建完成后,日志文件可以按日和最大允许文件大小进行滚动。

此外,通过代码生成工具430生成的框架代码可以自动包括统一异常处理,其可以提供接口参数缺失、接口执行但未被捕获的异常、接口不存在、序列化和反序列化异常等全局错误处理,从而开发人员不需要考虑这些异常的捕获和处理,交给框架完成即可。

虽然本文明确提及了若干程序组件,但是,应理解,依照软件开发框架针对的具体应用类型,可以将未提及的其他程序组件封装成相应的程序模块并包括在软件开发框架中,或者可以省略本文提及的程序组件中的一个或多个。

图5示意性示出了根据本发明实施例的使用图4所示的软件开发框架400来实现软件项目实例的方法500的流程图。

在步骤501处,读取配置文件,其中该配置文件已根据软件项目实例的需要而被编辑。在步骤502处,由代码生成工具根据配置文件生成软件项目实例的框架代码。

在一些实施例中,开发人员可以根据需要修改配置文件420,例如启用所需的程序模块310、根据需要修改所使用的程序模块310的配置参数等。然后代码生成工具430可以根据所修改的配置文件420生成软件项目实例的框架代码。所生成的框架代码中包含了所启用的程序模块。随后,开发人员可以在所生成的框架代码的基础上进行修改,来完成开发任务。从而为开发人员省略了大量基础性、重复性的开发,使得他们可以更加专注于核心服务的开发。这既可以提高开发效率,也有助于增强所开发服务稳定和性能。

图6示意性示出了通过代码生成工具430生成软件项目实例的框架代码的流程600的流程图。

如图6所示,首先,依次读取配置文件、创建工程、构建部署方式。然后,根据所读取的配置文件,依次进行如下判断:是否支持服务发现,若支持,则构建服务发现依赖和配置,否则跳过;是否支持数据库,若支持,则构建1…n个数据源代码和配置,否则跳过;是否支持队列,若支持,则构建1…n个队列代码和配置,否则跳过;是否支持服务链路跟踪,若支持,则构建服务链路跟踪配置,否则跳过;是否支持缓存,若支持,则构建缓存代码和配置,否则跳过;是否支持认证会话管理,若支持,则构建jwt代码和配置,否则跳过;是否支持服务熔断,若支持,则构建服务熔断配置,否则跳过;是否支持调用第三方服务,若支持,则构建httpclient代码和配置,否则跳过;是否支持角色权限,若支持,则构建角色权限代码和配置,否则跳过。最后,进行日志配置,完成框架代码的生成。注意,图6中的一系列判断可以以不同于所示出的顺序执行。

应理解,虽然本文中的各种示例和实施例都是以java作为编程语言,但这仅仅是为了便于描述。实际上,本申请提出的各种方法也可以以c、c++、php、go、python等各种编程语言实现。

图7示意性示出了根据本发明实施例的计算系统700的框图,其包括代表可以实现本文描述的各种技术的一个或多个系统和/或设备的计算设备710。

计算设备710可以是诸如计算机、服务器、平板电脑等的任何合适的计算设备或计算系统,其范围从具有大量存储器和处理器资源的全资源设备到具有有限的存储器和/或处理资源的低资源设备。在一些实施例中,上面关于图4描述的软件开发框架400可以使用计算设备710构建和/或部署在一个或多个计算设备710上以供使用,也即上面关于图3描述的搭建软件开发框架的方法300和/或关于图5描述的使用软件开发框架实现软件项目实例的方法500可以在计算设备710上实施。

如图示的示例计算设备710包括彼此通信耦合的处理系统711、一个或多个计算机可读介质712以及一个或多个i/o接口713。尽管未示出,但是计算设备710还可以包括系统总线或其他数据和命令传送系统,其将各种组件彼此耦合。系统总线可以包括不同总线结构的任何一个或组合,所述总线结构诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或利用各种总线架构中的任何一种的处理器或局部总线。还构思了各种其他示例,诸如控制和数据线。

处理系统711代表使用硬件执行一个或多个操作的功能。因此,处理系统711被图示为包括可被配置为处理器、功能块等的硬件元件714。这可以包括在硬件中实现作为专用集成电路或使用一个或多个半导体形成的其它逻辑器件。硬件元件714不受其形成的材料或其中采用的处理机构的限制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(ic))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。

计算机可读介质712被图示为包括存储器/存储装置715。存储器/存储装置715表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储装置715可以包括易失性介质(诸如随机存取存储器(ram))和/或非易失性介质(诸如只读存储器(rom)、闪存、光盘、磁盘等)。存储器/存储装置715可以包括固定介质(例如,ram、rom、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。计算机可读介质712可以以下面进一步描述的各种其他方式进行配置。

一个或多个输入/输出接口713代表允许用户向计算设备710键入命令和信息并且还允许使用各种输入/输出设备将信息呈现给用户和/或发送给其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置为检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)、网卡、接收机等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、触觉响应设备、网卡、发射机等。

用户可以通过适当的输入/输出设备来在处理系统711的支持下根据本文所提供的搭建软件开发框架的方法实现软件开发框架的搭建,并将所搭建的软件开发框架存储在存储器/存储装置715中。或者,用户可以读取存储在存储器/存储装置715中软件开发框架,根据本文所提供的软件开发框架的使用方法通过适当的输入/输出设备利用该框架生成框架代码,以及在框架代码的基础上编写所需要的应用或服务。

本文可以在软件硬件元件或程序模块的一般上下文中描述各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文所使用的术语“模块”、“功能”和“组件”一般表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。

所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传输。计算机可读介质可以包括可由计算设备710访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。

与单纯的信号传输、载波或信号本身相反,“计算机可读存储介质”是指能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。计算机可读存储介质的示例可以包括但不限于ram、rom、eeprom、闪存或其它存储器技术、cd-rom、数字通用盘(dvd)或其他光学存储装置、硬盘、盒式磁带、磁带,磁盘存储装置或其他磁存储设备,或其他存储设备、有形介质或适于存储期望信息并可以由计算机访问的制品。

“计算机可读信号介质”是指被配置为诸如经由网络将指令发送到计算设备710的硬件的信号承载介质。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波、数据信号或其它传输机制的调制数据信号中。信号介质还包括任何信息传递介质。术语“调制数据信号”是指以这样的方式对信号中的信息进行编码来设置或改变其特征中的一个或多个的信号。作为示例而非限制,通信介质包括诸如有线网络或直接连线的有线介质以及诸如声、rf、红外和其它无线介质的无线介质。

如前所述,硬件元件714和计算机可读介质712代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本文描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统、专用集成电路(asic)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)以及硅中的其它实现或其他硬件设备的组件。在这种上下文中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读存储介质。

前述的组合也可以用于实现本文所述的各种技术和模块。因此,可以将软件、硬件或程序模块和其它程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件714体现的一个或多个指令和/或逻辑。计算设备710可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用处理系统的计算机可读存储介质和/或硬件元件714,可以至少部分地以硬件来实现将模块实现为可由计算设备710作为软件执行的模块。指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备710和/或处理系统711)可执行/可操作以实现本文所述的技术、模块和示例。

本文描述的技术可以由计算设备710的这些各种配置来支持,并且不限于本文所描述的技术的具体示例。计算设备710的功能还可以通过使用分布式系统、诸如通过如下所述的平台730在“云”720上全部或部分地实现。

云720包括和/或代表用于资源732的平台730。平台730抽象云720的硬件(例如,服务器)和软件资源的底层功能。资源732可以包括在远离计算设备710的服务器上执行计算机处理时可以使用的应用和/或数据。资源732还可以包括通过因特网和/或通过诸如蜂窝或wi-fi网络的客户网络提供的服务。

平台730可以抽象资源和功能以将计算设备710与其他计算设备连接。平台730还可以用于抽象资源的分级以提供遇到的对于经由平台730实现的资源732的需求的相应水平的分级。因此,在互连设备实施例中,本文描述的功能的实现可以分布在整个系统700内。例如,用户可以通过计算设备710将搭建的软件开发框架部署到云上和/或从云读取软件开发框架,或者,用户可以直接在通过计算设备710直接在云上搭建软件开发框架,等等。

通过研究附图、公开内容和所附的权利要求书,本领域技术人员在实践所要求保护的主题时,能够理解和实现对于所公开的实施例的变型。在权利要求书中,词语“包括”不排除其他元件或步骤,并且不定冠词“一”或“一个”不排除多个。在相互不同的从属权利要求中记载了某些措施的仅有事实并不表明这些措施的组合不能用来获利。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1