用于大型复杂Windows原生桌面开发的方法及系统技术方案

技术编号:35359437 阅读:16 留言:0更新日期:2022-10-26 12:42
本发明专利技术属于软件开发技术领域,具体涉及用于大型复杂Windows原生桌面开发的方法及系统。方法包括:S1,创建开发项目,引入底层基础库和功能库;S2,注册模块管理容器;S3,将业务模块进行拆分和抽象,对每个业务模块形成抽象层,并通过动态模块组装方式,完成业务模块的选择和加载;S4,对开发项目中的任务进行分配,并通过热插拔方式对外提供接口;S5,配置业务模块信息,将设备型号与业务模块的对应关系进行存储;S6,通过当前设备型号,检索业务模块文件清单,并进行业务模块文件下载,下载后读取业务模块文件并加载到程序内,最终使程序开始运行。本发明专利技术具有灵活性强,能实现一站式面向所有windows桌面开发环节的特点。所有windows桌面开发环节的特点。所有windows桌面开发环节的特点。

【技术实现步骤摘要】
用于大型复杂Windows原生桌面开发的方法及系统


[0001]本专利技术属于软件开发
,具体涉及用于大型复杂Windows原生桌面开发的方法及系统。

技术介绍

[0002]在目前的软件开发领域,大部分的软件产品都是以B/S(浏览器/服务端)的形式提供,这些网页形式的软件产品整占据着当今软件开发领域的绝对主流地位。但早些年前,在浏览器技术尚未成熟之时,大部分软件产品都是以C/S(客户端/服务端)的形式提供。C/S这种开发方式从Windows操作系统诞生之初就一直存在。发展至今,基于C/S的软件开发技术也是种类繁多,其中大部分都是原生技术(直接访问操作系统的Windows桌面开发技术),不过近些年一些非原生技术(使用内嵌浏览器的桌面软件开发技术)也开始流行起来,甚至凭借其开发效率,移植性好等优势大有一统C/S软件开发领域之势。
[0003]但是,无论是B/S架构的网页产品还是非原生技术开发的Windows桌面软件在性能和GUI(图形用户接口)表现力上面,都无法和原生的Windows桌面软件相比。所以时至今日,原生的Windows桌面软件开产品仍然活跃于一些特定领域:工业控制、金融、医疗设备、软件开发工具、图形设计工具(比如:Photoshop)、RPA(机器人流程自动化)等。这些领域的产品相同特征是:业务稳定但体量较大,用户交互复杂但共性较多,对运行效率要求高,和操作系统、硬件设备的交互较多。而企业面对这些软件产品的开发需要投入大量时间、人力成本,而且一旦产品开发成型,面对后续的需求变更,场景切换时,会给开发人带来抽丝剥茧类的工作,大大增加了软件的维护成本。
[0004]目前在原生桌面开发领域有许多框架产品。这些框架产品的特点是专注于窗口、控件、UI效果、解决复杂的用户交互。面对如今原生桌面技术应用场景逐渐集中这一情况,并没有做出更深入的挖掘和演变。最重要的是,这种解决局部开发环节、场景的框架并不能达到降本增效的目的,反而会因为多种类别的框架混合使用导致软件结构复杂,可维护性更差。所以真正对原生桌面软件开发有实际意义的是一款能一站式解决所有场景的开发框架。
[0005]目前的开发框架主要存在以下缺点:1.目前的开发框架只解决了有限的开发场景比如有些开发框架解决了窗口绘制和渲染,有些开发框封装了很多用户控件,有些开发框架实现了MVVM模式和解耦。开发实践中,开发人员就需要旁征博引,最终交付的软件产品是一个缝合了多方框架的结合体。这样一来软件结构的复杂性增加,不同框架间的衔接和适配又需要开发成本,尤其在面对后来的产品迭代,需求变更,版本兼容等场景时,格外乏力。
[0006]2.目前的开发框架忽略了目前原生桌面软件产品的共性当前使用原生技术的桌面软件开发场景越发集中,企业都是在特定需求背景下才会考虑使用原生技术开发桌面软件。而对于这些场景的挖掘和抽象,目前鲜有开发框架去
关注。框架本身就是要去为某一相同特征的软件开发场景提供通用的技术支撑。如今面对原生桌面软件开发的共性,正是一个优秀的软件框架所应该珍惜的契机。首先,如今需要原生技术开发的软件一定是大型且复杂的,大型复杂就对解耦和模块化有着相当高的要求。其次大型桌面软件在UI布局上有着高度的相似。比如菜单栏、工具栏、状态栏这三个UI部分基本在每一款大型桌面软件上都可以看到(例如office系列产品、Adobe系列产品)。
[0007]3.目前的开发框架在解耦和开放性上面还具备相当大的提升空间跳出桌面软件开发领域,放眼整个软件开发领域,代码解耦一直是一个讨论热度极高的问题。多少年来一些优秀流行的框架 其核心无非是解决了代码的高耦合,比如大名鼎鼎的Spring。还有一些老生常谈的面向对象的设计模式都是围绕解耦来的。如今微服务架构在后端开发中流行起来,其效果也是得到了主流的认同。但是微服务思想在桌面软件开发中还是很难实践,因为服务本身是一个无窗口的后台程序,微服务之间强调的是独立。而桌面软件强调的高度协同。如果一个桌面软件拆分成多个进程,通过进程间通信的方式完成软件的运行,那其实大大增加了桌面软件的复杂度,降低了可维护性。所以要尽可能保持一个进程的前提下提升桌面软件的解耦度和开放性。
[0008]因此,设计一种灵活性强,能实现一站式面向所有windows桌面开发环节的用于大型复杂Windows原生桌面开发的方法及系统,就显得十分重要。
[0009]例如,申请号为CN202110474257.0的中国专利文献描述的一种Windows桌面程序开发框架、方法及相关组件,包括:前台平台库、后台基础包和脚手架,前台平台库用于储存应用前台开发过程中所需程序集的集合,基于表征引用程序集的指令提供与不同业务需求对应的目标程序集;目标程序集用于生成业务插件;后台基础包用于利用微服务架构生成应用后台开发过程中与不同业务需求对应的应用程序编程接口;脚手架用于为应用前台开发过程及应用后台开发过程提供解决方案源代码。虽然通过储存应用前台开发过程中所需程序集的前台平台库、利用微服务架构生成应用后台开发过程中的应用程序编程接口的后台基础包及提供解决方案源代码的脚手架之间的交互,实现基于微服务架构的前后台分离的桌面程序开发,但是其缺点在于,上述Windows桌面程序开发框架仍然是传统的割裂式,并不能一站式解决所有场景的开发问题。

技术实现思路

[0010]本专利技术是为了克服现有技术中,现有的Windows桌面开发框架存在只解决了有限的开发场景、忽略了目前原生桌面软件产品的共性以及解耦度和开放性较差的问题,提供了一种灵活性强,能实现一站式面向所有windows桌面开发环节的用于大型复杂Windows原生桌面开发的方法及系统。
[0011]为了达到上述专利技术目的,本专利技术采用以下技术方案:用于大型复杂Windows原生桌面开发的方法,包括如下步骤:S1,创建开发项目,引入底层基础库和功能库;S2,注册模块管理容器;S3,将业务模块进行拆分和抽象,对每个业务模块形成抽象层,并通过动态模块组装方式,完成业务模块的选择和加载;S4,对开发项目中的任务进行分配,并通过热插拔方式对外提供接口;
S5,配置业务模块信息,将设备型号与业务模块的对应关系进行存储;S6,通过当前设备型号,检索业务模块文件清单,并进行业务模块文件下载,下载后读取业务模块文件并加载到程序内,最终使程序开始运行。
[0012]作为优选,步骤S3包括如下步骤:S31,每个业务模块均包括新版模块和旧版模块;将每个业务模块的新旧两种场景的业务接口进行抽象,得到抽象层;S32,新版模块和旧版模块分别具有新代码和旧代码,通过新代码和旧代码分别将新版模块和旧版模块与抽象层连接;S33,将新旧两套代码进行单独打包,形成一新一旧两个程序集文件,并存储到指定位置数据库或者本地文件夹,获得新旧两个版本软件;S34,旧版软件通过旧版关键字获取到旧版模块对应的程序集文件相关信息,同时将旧版程序集文件加载到程序中,通过反射创建抽象层的实例,所述实例为旧版模块的实例;S35,新版软件通过新版关键字获取到新版模块对应的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.用于大型复杂Windows原生桌面开发的方法,其特征在于,包括如下步骤:S1,创建开发项目,引入底层基础库和功能库;S2,注册模块管理容器;S3,将业务模块进行拆分和抽象,对每个业务模块形成抽象层,并通过动态模块组装方式,完成业务模块的选择和加载;S4,对开发项目中的任务进行分配,并通过热插拔方式对外提供接口;S5,配置业务模块信息,将设备型号与业务模块的对应关系进行存储;S6,通过当前设备型号,检索业务模块文件清单,并进行业务模块文件下载,下载后读取业务模块文件并加载到程序内,最终使程序开始运行。2.根据权利要求1所述的用于大型复杂Windows原生桌面开发的方法,其特征在于,步骤S3包括如下步骤:S31,每个业务模块均包括新版模块和旧版模块;将每个业务模块的新旧两种场景的业务接口进行抽象,得到抽象层;S32,新版模块和旧版模块分别具有新代码和旧代码,通过新代码和旧代码分别将新版模块和旧版模块与抽象层连接;S33,将新旧两套代码进行单独打包,形成一新一旧两个程序集文件,并存储到指定位置数据库或者本地文件夹,获得新旧两个版本软件;S34,旧版软件通过旧版关键字获取到旧版模块对应的程序集文件相关信息,同时将旧版程序集文件加载到程序中,通过反射创建抽象层的实例,所述实例为旧版模块的实例;S35,新版软件通过新版关键字获取到新版模块对应的程序集文件相关信息,同时将新版程序集文件加载到程序中,通过反射创建抽象层的实例,所述实例为新版模块的实例。3.根据权利要求2所述的用于大型复杂Windows原生桌面开发的方法,其特征在于,步骤S4包括如下步骤:S41,指定需要更新的业务模块,并卸载所述业务模块所在的应用程序域;S42,下载所述业务模块中新版的程序集文件生成新版业务模块,并创建新的应用程序域承载新版业务模块;S43,将新版业务模块扩展至模块管理容器,并加载新版业务模块。4.根据权利要求3所述的用于大型复杂Windows原生桌面开发的方法,其特征在于,步骤S4中,对于托管模块使用应用程序域进行调用,对于非托管模块使用COM接口调用;所述托管模块为运行于CLR公共语言运行时环境的模块。5.根据权利要求4所述的用于大型复杂Windows原生桌面开发的方法,其特征在于,步骤S41中,设定卸载的应用程序域为旧版应用程序域;所述旧版应用程序域中承载旧版业务模块;所述旧...

【专利技术属性】
技术研发人员:王冬高扬张俊九
申请(专利权)人:杭州实在智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1