一种软件项目分层装置的制作方法

专利查询1月前  18



1.本技术涉及计算机技术领域,尤其涉及一种软件项目分层装置。


背景技术:

2.现有技术中,软件项目分层包括控制层(controller)、服务层(service)和数据访问对象层(data access object,dao)。然而采用这种分层生成的软件项目,无法满足多个业务场景下用户的需求。这是因为,当不同业务场景下的客户对软件项目中的同一功能需求存在不一致时,由于在上述分层方式中,与业务逻辑相关的代码都放在服务层,所以研发人员通常会通过开设代码分支的方式生成新的软件项目分支以实现用户的需求,其中,该软件项目分支同样适于上述分层方式,这种做法会导致软件项目分支越来越多,从而使得开发和测试工作量增加。


技术实现要素:

3.本技术实施例的目的在于提供一种软件项目分层装置,以解决研发人员通过开设代码分支的方式生成新的软件项目分支导致的开发和测试工作量增加的问题。具体技术方案如下:
4.一种软件项目分层装置,包括:
5.服务层和多个业务层;
6.所述服务层,用于承载基础服务和通用服务的封装;
7.所述业务层,用于根据所述软件项目应用的业务场景编排所述基础服务和所述通用服务,其中,所述业务场景与所述业务层一一对应。
8.优选地,所述服务层包括:
9.数据传输对象实体层和服务接口层;
10.所述数据传输对象实体层,用于定义所述基础服务和所述通用服务的数据结构;
11.所述服务接口层,用于访问所述基础服务和所述通用服务。
12.优选地,所述业务层包括:
13.域对象实体层和业务接口层;
14.所述域对象实体层,用于定义业务层数据的数据结构,所述业务层数据包括业务域数据,所述业务域数据为编排所述基础服务和所述通用服务得到;
15.所述业务接口层,用于访问所述业务层数据。
16.优选地,还包括:
17.持久层,用于承载业务数据访问的抽象,所述业务数据包括数据库数据和缓存数据。
18.优选地,所述持久层包括:
19.数据访问对象层、缓存层和聚合层;
20.所述数据访问对象层,用于承载所述数据库数据访问的抽象;
21.所述缓存层,用于承载所述缓存数据访问的抽象;
22.所述聚合层,用于承载所述数据库数据与所述缓存数据一致性的封装。
23.优选地,
24.所述数据访问对象层包含数据对象实体和第一访问接口层,其中,所述数据对象实体与所述数据库中的数据表格一一对应,所述第一访问接口层用于访问所述数据库数据;
25.所述缓存层包含缓存实体层和第二访问接口层,其中,所述缓存实体层用于定义所述缓存数据的数据结构,所述第二访问接口层用于访问所述缓存数据;
26.所述聚合层包含聚合实体层和第三访问接口层,其中,所述聚合实体层用于定义同时写入数据库和所述缓存的数据的数据结构,所述第三访问接口层用于访问所述数据库和所述缓存。
27.优选地,还包括:
28.对外层,用于实现不同的所述业务层之间的实体转换。
29.优选地,所述对外层包括:
30.提供给前端页面访问的应用层,用于承载表象性状态转变接口,所述表象性状态转变接口用于根据从预定页面上接收的触发指令实现所述实体转换;
31.和/或
32.应用程序接口层,用于定义远程过程调用接口,所述远程过程调用接口用于实现所述实体转换。
33.优选地,
34.所述应用层包括值对象实体层和控制接口层,所述值对象实体层用于封装所述预定页面的数据,所述控制接口层用于调用所述不同的所述业务层的域对象实体,并将所述域对象实体转换为所述对象实体;
35.所述应用程序接口层包括数据传输对象实体层和应用程序接口层,所述数据传输对象实体层承载所述不同的所述业务层的域对象实体到所述对象实体的实体转换的抽象,所述应用程序接口层用于实现与所述业务层之间的数据传输。
36.优选地:
37.公共层,用于接收所述持久层、所述服务层和所述业务层的调用以实现预设的通用逻辑处理。
38.本技术实施例提供的上述技术方案与现有技术相比具有如下优点:
39.本技术实施例提供的方案,与业务逻辑相关的代码放置于服务层和业务层,其中服务层用于承载基础服务和通用服务的封装,业务层用于根据业务场景的需求编排服务层,当不同业务场景下的客户对软件项目中的同一功能需求存在不一致时,可以通过不同的业务层编排服务层中的基础服务和通用服务实现。本技术的方案不会导致项目分支增多,也就不会引起开发和测试工作量的增加。
附图说明
40.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而
言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
41.图1为本技术实施例提供的一种软件分层装置的一种结构示意图;
42.图2为本技术实施例提供的一种软件分层装置的另一种结构示意图;
43.图3为本技术实施例提供的一种软件分层装置的另一种结构示意图;
44.图4为本技术实施例提供的一种软件分层装置的另一种结构示意图。
具体实施方式
45.下面将结合本发明实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
46.本技术实施例提供了一种软件项目分层装置,如图1所示,该装置包括:
47.服务层100和业务层110。
48.服务层100,用于承载基础服务和通用服务的封装。
49.优选地,服务层100包括:
50.数据传输对象实体(data transfer object,dto)层和服务接口层。
51.数据传输对象实体层,用于定义基础服务和通用服务的数据结构。
52.服务接口层,用于访问基础服务和通用服务。
53.其中,基础服务包括对业务数据访问的持久层再封装的服务和远程过程调用(remote procedure call,rpc)接口再封装的服务等。
54.通用服务包括对于依赖三方中间件做封装的服务,例如:通过分布式协调技术(zookeeper)获取自增标识(id)服务等。
55.实际应用中,基础服务和通用服务的实现形式包括以下一种或多种:
56.调额服务;账号处置服务;日志服务;限流服务;鉴权服务;
57.相应地,基础服务和通用服务的数据结构可以为:
58.在一个例子中,对于调额服务,调额服务的调额方法的需传入对象的数据结构可以为身份证号码,调额额度等。
59.具体地,当将软件项目应用于银行的业务场景中时,调额额度可以为对应身份证号码的信用额度。
60.在一个例子中,对于账号处置服务,账号处置服务的处置方法的需传入对象的数据结构可以为身份证号码,账号状态等。
61.在一个例子中,对于日志服务,日志服务的记录日志方法的需传入对象的数据结构可以为日志产生时间,日志内容等。
62.在一个例子中,对于限流服务,限流服务的限流方法的需传入对象的数据结构可以为限流键(key),限流大小等。
63.在一个例子中,对于鉴权服务,鉴权服务的鉴权方法的需传入对象的数据结构可以为令牌(token),密钥等。
64.作为一个实施例,服务接口层包括服务接口抽象的定义层和服务接口具体实现层。
65.其中,服务接口抽象的定义层,定义了服务层所用到的抽象接口,;服务接口具体实现层,封装了服务层的接口的具体实现。
66.实际应用中,服务接口抽象的定义层在具体实现时包括以下一种或多种:
67.调额服务的调额方法的抽象定义;
68.账号处置服务的处置方法的抽象定义;
69.日志服务的记录日志方法的抽象定义;
70.限流服务的限流方法的抽象定义;
71.鉴权服务的鉴权方法的抽象定义。
72.实际应用中,服务接口具体实现层在具体实现时包括以下一种或多种:
73.调额服务的调额方法的具体实现;
74.账号处置服务的处置方法的具体实现;
75.日志服务的记录日志方法的具体实现,其是调用日志数据持久层接口,来完成日志数据的持久化;
76.限流服务的限流方法的具体实现,其是通过限流算法实现限流、和通过限流数据持久层的接口来完成限流数据的持久化;
77.鉴权服务的鉴权方法的具体实现,其是通过鉴权数据持久层的接口来完成鉴权数据的持久化。
78.业务层110,用于根据软件项目应用的业务场景编排基础服务和通用服务。
79.其中,业务层为多个,业务场景与业务层一一对应。
80.本实施例中的软件项目可以应用于不同的业务场景,例如银行的业务场景、保险的业务场景等,不同的业务场景所对应的业务层不同,当不同业务场景下的客户对软件项目中的同一功能需求存在不一致时,可以通过不同的业务层编排服务层中的基础服务和通用服务实现。
81.软件项目对外输出时,往往会出现同一功能模块,因不同业务场景需求的不同,导致该模块的代码逻辑因客户而不同,为了兼容这种不同逻辑,开发人员通常的做法是开设一个新的分支,随着这样需求增多,会导致软件项目分支越来越多,软件项目一旦出现某个需求:需给每个业务场景添加一个新功能时,此时开发和测试人员会变得十分崩溃,需要把所有的分支都拉下来进行修改,然后对每个分支进行测试,上线,工作量十分巨大。
82.为每个业务场景下的客户开设一个业务层,可以很好解决上述问题,不会导致项目分支增多,开发和测试工作量就会明显减少。
83.实际应用时,通过maven profile来控制向不同业务场景的客户输出不同的业务层的模块,如下所示:
[0084][0085]
优选地,业务层110包括:
[0086]
域(domain)对象实体层和业务接口层;
[0087]
所述域对象实体层用于定义业务层数据的数据结构,业务层数据包括业务域数据,业务域数据为编排基础服务和通用服务得到;
[0088]
业务接口层,用于访问所述业务层数据。
[0089]
实际应用中,业务层数据可以包括调额业务的数据(quota)、账户处置业务(account)的数据和对外接口业务的数据。
[0090]
实际业务中,业务接口层包括业务接口定义层和业务接口实现层。
[0091]
当业务层数据为调额业务的数据时,域对象实体层定义了访问调额业务接口需传入对象的数据结构;
[0092]
业务接口定义层,定义了调额业务所用到的抽象接口;
[0093]
业务接口实现层,封装了调额业务接口的具体实现。
[0094]
作为一个例子,访问调额业务接口需传入对象的数据结构可以为:身份证号码、调额的额度等;
[0095]
业务接口定义为调额接口的调额方法;
[0096]
调额接口的调额方法的具体实现,如:将服务层的“限流服务”、“调额服务”,“日志服务”这3个服务编排在一起形成一个调额接口的具体实现。
[0097]
当业务层数据为账户处置业务(account)的数据时,域对象实体层定义了访问账号处置业务接口需传入对象的数据结构;
[0098]
业务接口定义层,定义了账号处置业务所用到的抽象接口;
[0099]
业务接口实现层,封装了账号处置业务接口的具体实现。
[0100]
作为一个例子,访问账号处置业务接口需传入对象的数据结构可以为身份证号码、账号状态、调整状态等。
[0101]
业务接口定义为账号处置接口的处置方法;
[0102]
账号处置接口的处置方法的具体实现,如:将服务层的“限流服务”、“账号处置服务”,“日志服务”这3个服务编排在一起形成一个账号处置接口的具体实现。当业务层数据为对外接口业务的数据时,业务接口层包括业务接口实现层,其中,业务接口实现封装了对外业务接口的具体实现,例如,“外部系统调用当前系统接口”的调用方法的具体实现,如:将服务层的“鉴权服务”、“限流服务”、“账号处置服务”,“日志服务”这4个服务编排在一起
形成一个“外部系统调用当前系统接口”的具体实现。
[0103]
实际应用中,每个业务层会定义业务接口和其实现类,每个业务层通过编码的方式,按照业务逻辑编排服务层的基础服务和通用服务。
[0104]
在本技术的其它实施例中,当软件项目所应用的业务场景比较简单时,如该软件项目仅应用一个业务场景,此时可以将业务层与服务层进行合并,仅保留业务层,此时业务层只有一层,基础服务和通用服务封装于业务层,并由该业务层根据业务场景编排基础服务和通用服务。
[0105]
本技术实施例提供了另一种软件项目分层装置,如图2所示,该装置包括:
[0106]
服务层200、业务层210、持久层220、对外层230和公共层240。
[0107]
其中:
[0108]
服务层200,用于承载基础服务和通用服务的封装。
[0109]
优选地,服务层200包括:
[0110]
数据传输对象实体(data transfer object,dto)层和服务层接口层。
[0111]
数据传输对象实体层,用于定义基础服务和通用服务的数据结构。
[0112]
服务层接口层,用于访问基础服务和通用服务。
[0113]
其中,基础服务包括对业务数据访问的持久层再封装的服务和远程过程调用(remote procedure call,rpc)接口再封装的服务等。
[0114]
通用服务包括对于依赖三方中间件做封装的服务,例如:通过分布式协调技术(zookeeper)获取自增标识(id)服务等。
[0115]
实际应用中,基础服务和通用服务的实现形式包括以下一种或多种:
[0116]
调额服务;账号处置服务;日志服务;限流服务;鉴权服务;
[0117]
相应地,基础服务和通用服务的数据结构可以为:
[0118]
在一个例子中,对于调额服务,调额服务的调额方法的需传入对象的数据结构可以为身份证号码,调额额度等。
[0119]
具体地,当将软件项目应用于银行的业务场景中时,调额额度可以为对应身份证号码的信用额度。
[0120]
在一个例子中,对于账号处置服务,账号处置服务的处置方法的需传入对象的数据结构可以为身份证号码,账号状态等。
[0121]
在一个例子中,对于日志服务,日志服务的记录日志方法的需传入对象的数据结构可以为日志产生时间,日志内容等。
[0122]
在一个例子中,对于限流服务,限流服务的限流方法的需传入对象的数据结构可以为限流键(key),限流大小等。
[0123]
在一个例子中,对于鉴权服务,鉴权服务的鉴权方法的需传入对象的数据结构可以为令牌(token),密钥等。
[0124]
作为一个实施例,服务接口层包括服务接口抽象的定义层和服务接口具体实现层。
[0125]
其中,服务接口抽象的定义层,定义了服务层所用到的抽象接口,抽象接口用于访问基础服务和通用服务;服务接口具体实现层,封装了服务层的接口的具体实现,接口与抽象接口一一对应。
[0126]
实际应用中,服务接口抽象的定义层在具体实现时包括以下一种或多种:
[0127]
调额服务的调额方法的抽象定义;
[0128]
账号处置服务的处置方法的抽象定义;
[0129]
日志服务的记录日志方法的抽象定义;
[0130]
限流服务的限流方法的抽象定义;
[0131]
鉴权服务的鉴权方法的抽象定义。
[0132]
实际应用中,服务接口具体实现层在具体实现时包括以下一种或多种:
[0133]
调额服务的调额方法的具体实现;
[0134]
账号处置服务的处置方法的具体实现;
[0135]
日志服务的记录日志方法的具体实现,其是调用日志数据持久层接口,来完成日志数据的持久化;
[0136]
限流服务的限流方法的具体实现,其是通过限流算法实现限流、和通过限流数据持久层的接口来完成限流数据的持久化;
[0137]
鉴权服务的鉴权方法的具体实现,其是通过鉴权数据持久层的接口来完成鉴权数据的持久化。
[0138]
业务层210,用于根据软件项目应用的业务场景编排基础服务和通用服务,其中,业务场景与业务层一一对应。
[0139]
本实施例中的软件项目可以应用于不同的业务场景,例如银行的业务场景、保险的业务场景等,不同的业务场景所对应的业务层不同,当不同业务场景下的客户对软件项目中的同一功能需求存在不一致时,可以通过不同的业务层编排服务层中的基础服务和通用服务实现。
[0140]
软件项目对外输出时,往往会出现同一功能模块,因不同业务场景需求的不同,导致该模块的代码逻辑因客户而不同,为了兼容这种不同逻辑,开发人员通常的做法是开设一个新的分支,随着这样需求增多,会导致软件项目分支越来越多,软件项目一旦出现某个需求:需给每个业务场景添加一个新功能时,此时开发和测试人员会变得十分崩溃,需要把所有的分支都拉下来进行修改,然后对每个分支进行测试,上线,工作量十分巨大。
[0141]
为每个业务场景下的客户开设一个业务层,可以很好解决上述问题,不会导致项目分支增多,开发和测试工作量就会明显减少。
[0142]
实际应用时,通过maven profile来控制向不同业务场景的客户输出不同的业务层的模块,如下所示:
[0143][0144]
优选地,业务层110包括:
[0145]
域(domain)对象实体层和业务接口层;
[0146]
所述域对象实体层用于定义业务层数据的数据结构,业务层数据包括业务域数据,业务域数据为编排基础服务和通用服务得到;
[0147]
业务接口层,用于访问所述业务层数据。
[0148]
实际应用中,业务层数据可以包括调额业务的数据(quota)、账户处置业务(account)的数据和对外接口业务的数据。
[0149]
实际业务中,业务接口层包括业务接口定义层和业务接口实现层。
[0150]
当业务层数据为调额业务的数据时,域对象实体层定义了访问调额业务接口需传入对象的数据结构;
[0151]
业务接口定义层,定义了调额业务所用到的抽象接口;
[0152]
业务接口实现层,封装了调额业务接口的具体实现。
[0153]
作为一个例子,访问调额业务接口需传入对象的数据结构可以为:身份证号码、调额的额度等;
[0154]
业务接口定义为调额接口的调额方法;
[0155]
调额接口的调额方法的具体实现,如:将服务层的“限流服务”、“调额服务”,“日志服务”这3个服务编排在一起形成一个调额接口的具体实现。
[0156]
当业务层数据为账户处置业务(account)的数据时,域对象实体层定义了访问账号处置业务接口需传入对象的数据结构;
[0157]
业务接口定义层,定义了账号处置业务所用到的抽象接口;
[0158]
业务接口实现层,封装了账号处置业务接口的具体实现。
[0159]
作为一个例子,访问账号处置业务接口需传入对象的数据结构可以为身份证号码、账号状态、调整状态等。
[0160]
业务接口定义为账号处置接口的处置方法;
[0161]
账号处置接口的处置方法的具体实现,如:将服务层的“限流服务”、“账号处置服务”,“日志服务”这3个服务编排在一起形成一个账号处置接口的具体实现。当业务层数据为对外接口业务的数据时,业务接口层包括业务接口实现层,其中,业务接口实现封装了对外业务接口的具体实现,例如,“外部系统调用当前系统接口”的调用方法的具体实现,如:将服务层的“鉴权服务”、“限流服务”、“账号处置服务”,“日志服务”这4个服务编排在一起
形成一个“外部系统调用当前系统接口”的具体实现。
[0162]
实际应用中,每个业务层会定义业务接口和其实现类,每个业务层通过编码的方式,按照业务逻辑编排服务层的基础服务和通用服务。持久层220,用于承载业务数据访问的抽象,业务数据包括数据库数据和缓存数据。
[0163]
持久层封装了业务数据存取到存储介质的抽象,对外提供存取业务数据的接口。
[0164]
优选地,如图3所示,持久层220包括:
[0165]
数据访问对象层(data access object、dao)300、缓存层(cache)310和聚合层(aggr)320。
[0166]
数据访问对象层300,用于承载数据库数据访问的抽象。
[0167]
其中,数据访问对象层300包含数据对象(entity)实体层和第一访问接口层,其中,数据对象实体与数据库中的数据表格一一对应,第一访问接口层用于访问数据库数据。
[0168]
由于数据对象实体为数据库中数据表格的映射,所以数据表格的关系映射为数据对象实体的关系。
[0169]
其中,数据对象实体定义了访问持久层的接口需传入对象的数据结构,其中持久层需传入对象属于数据库数据。
[0170]
作为一个例子,数据对象实体可以为日志数据持久化接口的存储日志方法的需传入对象的数据结构,如:日志产生时间,日志内容等。
[0171]
第一访问接口层包括数据持久化接口的抽象定义层和数据持久化接口的具体实现层。
[0172]
其中,数据持久化接口的抽象定义层,定义了数据持久层所用到的抽象接口;数据持久化接口的具体实现层封装了数据持久层接口的具体实现。
[0173]
作为一个例子,数据持久化接口的抽象定义可以为日志数据持久化接口的存储日志方法的抽象定义;数据持久化接口的具体实现可以为日志数据持久化接口的存储日志方法的具体实现。
[0174]
缓存层310,用于承载缓存数据访问的抽象。
[0175]
缓存层310包含缓存实体层和第二访问接口层,其中,缓存实体层用于定义缓存数据的数据结构,第二访问接口层用于访问缓存数据。
[0176]
缓存实体层,定义了访问持久层的接口需传入对象的数据结构,访问持久层的接口需传入对象属于缓存数据。
[0177]
作为一个例子,该数据结构可以为限流数据持久化接口的存储方法的需传入对象的数据结构,如:限流键(key),限流大小等。
[0178]
第二访问接口层包括数据持久化接口的抽象定义和数据持久化接口的具体实现。
[0179]
其中,数据持久化接口的抽象定义,定义了数据持久层所用到的抽象接口;数据持久化接口的具体实现封装了数据持久层接口的具体实现。
[0180]
作为一个例子,数据持久化接口的抽象定义可以为限流数据持久化接口的存储方法的抽象定义;数据持久化接口的具体实现可以为限流数据持久化接口的存储方法的具体实现。
[0181]
聚合层320,用于承载数据库数据与缓存数据一致性的封装。
[0182]
聚合层320包含聚合实体层和第三访问接口层,其中,聚合实体层用于定义同时写
入数据库和缓存的数据的数据结构,第三访问接口层用于同时访问数据库和缓存。
[0183]
本实施例中,持久层的分层可以是动态抽象分层结构,随着业务场景的需求变化而变化。当软件项目应用的业务场景的业务简单时,即仅需要数据库这一种存储介质即可满足业务需求时,持久层由数据访问对象层实现;当软件项目应用的业务场景的业务复杂时,即需要数据库和缓存多种存储介质才能满足业务需求时,持久层由数据访问对象层、缓存层和聚合层实现。
[0184]
对外层230,用于实现不同的业务层之间的实体转换。
[0185]
对外层,又称为应用层,一个软件项目可以有多个对外层,也可以有一个对外层。对外层不做业务逻辑的处理,只负责业务层和服务层之间的实体转换。
[0186]
对外层230,如图4所示,包括:
[0187]
提供给前端页面访问的应用层400,用于承载表象性状态转变接口,表象性状态转变接口用于根据从预定页面上接收的触发指令实现实体转换。和/或
[0188]
应用程序接口层410,用于定义远程过程调用接口,远程过程调用接口用于实现实体转换。
[0189]
提供给前端页面访问的应用层400包括值对象实体层和控制接口层,值对象实体层用于封装预定页面的数据,控制接口层用于调用不同的业务层的域对象实体,并将域对象实体转换为对象实体。
[0190]
其中,值对象实体层定义了前端系统访问后端系统的各个控制接口需传入对象的数据结构,各个控制接口需传入对象属于封装预定页面的数据。
[0191]
作为一个例子,前端系统访问后端系统的各个控制接口需传入对象的数据结构可以包括:接口名称、接口出入参数等。
[0192]
控制接口层封装了前端子系统所依赖的后端接口具体实现,后端接口用于调用不同的业务层的域对象实体,并将域对象实体转换为对象实体。
[0193]
作为一个例子,控制接口的具体实现,可以包括,如何创建一个新“接口”的方法,更新已有“接口”的方法等。
[0194]
应用程序接口层410包括数据传输对象实体层和应用程序接口层,数据传输对象实体层承载不同的业务层的域对象实体到对象实体的实体转换的抽象,应用程序接口层用于实现对外层与业务层之间的数据传输。
[0195]
其中,数据传输对象实体层定义了访问对外接口需传入对象的数据结构,其中对外接口需传入对象属于不同的业务层的域对象实体到对象实体的实体转换的抽象。
[0196]
作为一个例子,对外接口需传入对象的数据结构,如其包含:接口键(key),令牌(token),密钥等。
[0197]
应用程序接口层,定义了定义了当前系统对外(外部)抽象接口。当前系统对外(外部)抽象接口属于对外层与业务层之间的数据,其中当前系统与软件项目的业务场景相对应。
[0198]
作为一个例子,定义了“外部系统调用当前系统接口”的方法,如:调用当前系统接口的方法。
[0199]
在本技术的其它实施例中,对外层还可以进行异常处理,对外输出持久层、服务层和业务层的异常。
[0200]
实际应用中,异常包括:调用业务层时传入了非法的参数或,写入数据太多时,导致业务层或服务层崩溃而引发的异常等等。
[0201]
异常处理流程:持久层抛出异常给服务层,服务层抛出异常给业务层,业务层抛出异常给对外层,对外层接收业务层抛出的异常,并记录异常日志,将异常转换成对外输出的错误码。
[0202]
公共层240,用于接收持久层、服务层和业务层的调用,以实现预设的通用逻辑处理。
[0203]
实际应用中,通用的逻辑处理至少包括字符串处理和日期转换。
[0204]
为了合理分层,优化软件项目的代码逻辑,本技术实施例中的软件项目在输出时,至少遵循以下规则:
[0205]
上层能够调用逻辑上与上层相邻的下层,不同的层之间不能调用,其中,从逻辑上,持久层为最下层,服务层与持久层相邻,业务层与服务层相邻,对外层与业务层相邻;
[0206]
下层不能调用上层;
[0207]
在满足预设条件时,平层之间能够相互调用。
[0208]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
[0209]
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0210]
以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

技术特征:
1.一种软件项目分层装置,其特征在于,包括:服务层和多个业务层;所述服务层,用于承载基础服务和通用服务的封装;所述业务层,用于根据所述软件项目应用的业务场景编排所述基础服务和所述通用服务,其中,所述业务场景与所述业务层一一对应。2.根据权利要求1所述的装置,其特征在于,所述服务层包括:数据传输对象实体层和服务接口层;所述数据传输对象实体层,用于定义所述基础服务和所述通用服务的数据结构;所述服务接口层,用于访问所述基础服务和所述通用服务。3.根据权利要求1所述的装置,其特征在于,所述业务层包括:域对象实体层和业务接口层;所述域对象实体层,用于定义业务层数据的数据结构,所述业务层数据包括业务域数据,所述业务域数据为编排所述基础服务和所述通用服务得到;所述业务接口层,用于访问所述业务层数据。4.根据权利要求3所述的装置,其特征在于,还包括:持久层,用于承载业务数据访问的抽象,所述业务数据包括数据库数据和缓存数据。5.根据权利要求4所述的装置,其特征在于,所述持久层包括:数据访问对象层、缓存层和聚合层;所述数据访问对象层,用于承载所述数据库数据访问的抽象;所述缓存层,用于承载所述缓存数据访问的抽象;所述聚合层,用于承载所述数据库数据与所述缓存数据一致性的封装。6.根据权利要求5所述的装置,其特征在于,所述数据访问对象层包含数据对象实体和第一访问接口层,其中,所述数据对象实体与所述数据库中的数据表格一一对应,所述第一访问接口层用于访问所述数据库数据;所述缓存层包含缓存实体层和第二访问接口层,其中,所述缓存实体层用于定义所述缓存数据的数据结构,所述第二访问接口层用于访问所述缓存数据;所述聚合层包含聚合实体层和第三访问接口层,其中,所述聚合实体层用于定义同时写入数据库和所述缓存的数据的数据结构,所述第三访问接口层用于访问所述数据库和所述缓存。7.根据权利要求3-6任一项所述的装置,其特征在于,还包括:对外层,用于实现不同的所述业务层之间的实体转换。8.根据权利要求7所述的装置,其特征在于,所述对外层包括:提供给前端页面访问的应用层,用于承载表象性状态转变接口,所述表象性状态转变接口用于根据从预定页面上接收的触发指令实现所述实体转换;和/或应用程序接口层,用于定义远程过程调用接口,所述远程过程调用接口用于实现所述实体转换。9.根据权利要求8所述的装置,其特征在于,所述应用层包括值对象实体层和控制接口层,所述值对象实体层用于封装所述预定页
面的数据,所述控制接口层用于调用所述不同的所述业务层的域对象实体,并将所述域对象实体转换为所述对象实体;所述应用程序接口层包括数据传输对象实体层和应用程序接口层,所述数据传输对象实体层承载所述不同的所述业务层的域对象实体到所述对象实体的实体转换的抽象,所述应用程序接口层用于实现与所述业务层之间的数据传输。10.根据权利要求4所述的装置,其特征在于,还包括:公共层,用于接收所述持久层、所述服务层和所述业务层的调用以实现预设的通用逻辑处理。

技术总结
本申请涉及一种软件项目分层装置,包括:服务层和多个业务层;所述服务层,用于承载基础服务和通用服务的封装;所述业务层,用于根据所述软件项目应用的业务场景编排所述基础服务和所述通用服务,其中,所述业务场景与所述业务层一一对应。当不同业务场景下的客户对软件项目中的同一功能需求存在不一致时,可以通过不同的业务层编排服务层中的基础服务和通用服务实现。本申请的方案不会导致项目分支增多,也就不会引起开发和测试工作量的增加。也就不会引起开发和测试工作量的增加。也就不会引起开发和测试工作量的增加。


技术研发人员:王伟 朱海鹏
受保护的技术使用者:京东科技控股股份有限公司
技术研发日:2020.09.08
技术公布日:2022/3/7

最新回复(0)