编译方法、装置、电子设备、存储介质及系统与流程

文档序号:30594792发布日期:2022-07-01 20:27阅读:66来源:国知局
编译方法、装置、电子设备、存储介质及系统与流程

1.本技术涉及计算机技术领域,具体涉及一种编译方法、装置、电子设备、存储介质及系统。


背景技术:

2.桌面版集成开发环境(ide,integrated development environment)的发展历史非常悠久,各种语言的集成开发环境曾经红极一时,如delphi、jbuilder、以及目前比较流行的visual studio、intellij idea、eclipse、vs code、xcode等。
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.运行环境单元,用于运行服务编码单元编译的工程文件。
42.进一步地,浏览器编译模块与服务编码单元通过rpc或rest进行通讯连接。
43.进一步地,系统还包括:
44.容器模块,与服务编码单元连接,用于挂载服务编码单元编译的工程文件。
45.进一步地,浏览器编译模块包括:
46.账号登陆单元,用于用户登录个人账号;
47.容器模块包括多个容器,每个容器对应一个个人账号,容器用于存储登陆对应个人账号的浏览器编译模块所编译的云端工程文件。
48.本技术的实施例提供的技术方案至少带来以下有益效果:
49.本技术实施例通过接收编译模块发送的编译指令;并根据编译指令对工程文件进行编译,得到目标文件,且该工程文件是存储在与编译模块对应云端服务模块容器中的文
件。实现了工程文件的云编辑和存储,防止了突发时间造成编译很久的文档丢失问题。
50.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限值本技术。
附图说明
51.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理,并不构成对本技术的不当限定。
52.图1是根据一示例性实施例示出的编译方法流程示意图;
53.图2是根据一示例性实施例示出的编译装置结构示意图;
54.图3是根据一示例性实施例示出的电子设备结构示意图;
55.图4是根据一示例性实施例示出的电子设备硬件结构示意图;
56.图5是根据一示例性实施例示出的编译系统结构示意图;
57.图6是根据一示例性实施例示出的编译系统交互方式结构示意图;
58.图7是根据一示例性实施例示出的本地编译模块和云端服务模块具体结构示意图。
具体实施方式
59.为了使本领域普通人员更好地理解本技术的技术方案,下面将结合附图,对本技术实施例中的技术方案进行清楚、完整地描述。
60.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
61.如图1所示,在本技术实施例的第一方面,提供一种编译方法,包括:
62.步骤100:接收编译模块发送的编译指令;
63.步骤200:根据编译指令对工程文件进行编译,得到目标文件,工程文件是存储在与编译模块对应云端服务模块的容器中的文件。
64.上述实施例通过接收编译模块发送的编译指令;并根据编译指令对工程文件进行编译,得到目标文件,且该工程文件是存储在与编译模块对应云端服务模块容器中的文件。实现了工程文件的云编辑和存储,防止了突发时间造成编译很久的文档丢失问题。
65.在本技术一些可选实施例中,在接收编译模块发送的编译指令之前,方法还包括:
66.创建与编译模块对应的容器,并在容器内部挂载工程文件。
67.在本技术一些可选实施例中,编译模块包括:浏览器编译模块和本地编译模块。
68.在本技术一些可选实施例中,在根据编译指令对工程文件进行编译,得到目标文件之后,方法还包括:
69.向本地编译模块发送目标文件,以使本地编译模块缓存和离线编辑目标文件。
70.在本技术一些可选实施例中,在向本地编译模块发送目标文件之后,方法还包括:
71.同步本地编译模块离线编辑的目标文件。
72.在本技术一些可选实施例中,方法还包括:
73.对目标文件进行压缩加密。
74.如图2所示,在本技术实施例的第二方面,提供一种编译装置,该装置可以包括:
75.接收模块,用于接收编译模块发送的编译指令;
76.编译模块,用于根据编译指令对工程文件进行编译,得到目标文件,工程文件是存储在与编译模块对应云端服务模块的容器中的文件。
77.可选的,如图3所示,本技术实施例还提供一种电子设备300,包括处理器301,存储器302,存储在存储器302上并可在所述处理器301上运行的程序或指令,该程序或指令被处理器301执行时实现上述编译方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
78.需要说明的是,本技术实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
79.图4为实现本技术实施例的一种电子设备的硬件结构示意图。
80.该电子设备400包括但不限于:射频单元401、网络模块402、音频输出单元403、输入单元404、传感器405、显示单元406、用户输入单元407、接口单元408、存储器409、以及处理器410等部件。
81.本领域技术人员可以理解,电子设备400还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器410逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图4中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
82.应理解的是,本技术实施例中,输入单元404可以包括图形处理器(graphics processing unit,gpu)4041和麦克风4042,图形处理器4041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元406可包括显示面板4061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板4061。用户输入单元407包括触控面板4071以及其他输入设备4072。触控面板4071,也称为触摸屏。触控面板4071可包括触摸检测装置和触摸控制器两个部分。其他输入设备4072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。存储器409可用于存储软件程序以及各种数据,包括但不限于应用程序和操作系统。处理器410可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器410中。
83.本技术实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述编译方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
84.其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等。
85.本技术实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述编译方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
86.应理解,本技术实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
87.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本技术实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
88.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例所述的方法。
89.如图5所示,在本技术实施例的第五方面,提供一种编译系统,该系统可以包括:
90.云端服务模块,用于编译和储存的工程文件;
91.本地编译模块,与所示云端服务模块连接,用于通过远程加载的方式调用存储在云端服务模块中的工程文件并对所述工程文件进行编译和储存;
92.浏览器编译模块,与所述云端服务模块连接,用于指示所述云端服务模块对所述工程文件进行编译和储存。
93.示例性的,在具体实施过程当中,首先,对集成开发环境(ide,integrated development environment)工具进行云化改造,使之能运行在远程服务器(或公有云)上,从而实现随时随地的移动办公与云开发工作。从架构上来看,浏览器编译模块由gui界面与服务端组件两部分所组成,其中服务端代码被打包为docker镜像,运行在云端服务模块上,ide的核心逻辑都在服务端组件内完成,比如读写源文件、语法和函数提示、编译代码、调试代码、运行代码。ide的这些核心功能都被封装为独立的“服务”,提供给客户端gui调用,服务端组件与gui组件之间的接口协议可以是tcp定制协议或者http rest协议。浏览器编译模块的gui界面包括有两种实现方式,一种是pc端的gui界面,一种是纯web端的gui界面,前者的用户体验更接近本地编译模块工具,而后者的优势是无需本地安装配置ide工具,打开浏览器即可立即使用。
94.其次,ide的工程文件和源码存储在远程服务器上,而不是位于开发者的本地电脑上。通过适当的远程通讯方式,可以让本地编译模块与浏览器编译模块都能访问远程服务器上的工程文件,从而实现两种ide的混合式开发环境。访问工程目录文件时,本地编译模
块通过专有的文件传输协议或远程文件共享的方式加载访问这些远程文件,浏览器编译模块的server端doctor容器则用docker volume方式绑定此工程文件目录,因此每个浏览器编译模块实例绑定一个工程,两者一一对应。
95.具体的,源码都位于服务器上,用户可以随时随地在任意一台电脑上访问项目工程代码;每个项目工程采用一个独立的文件目录,避免冲突;远程文件访问可以开发专有的文件传输协议或用通用的文件共享机制来实习,后者无需编程开发,采用sftp driver等类似的远程文件共享工具即实现;基于浏览器的浏览器编译模块可以采用长驻服务器的模式,用户直接访问web地址即可进入浏览器编译模块的开发环境,而基于pc客户端界面的浏览器编译模块则可以再增加动态启动远程server容器的机制,这种方式启动可能慢点,但更灵活,不用ide的时候,也不占远程服务器的资源。
96.基于开源ide——vs code、coder做了完整的方案验证,其中coder是兼容vs code的浏览器编译模块,可以运行在容器中,其前端界面是纯web界面并很好的模仿了vs code的界面,开发人员在浏览器中就能直接打开远程的工程代码并编译和运行,无需本地安装vs code ide。同时,位于远程的工程代码又可以用本地的vs code打开并编译运行,从而实现了两种ide的配合使用,无缝切换的能力。
97.浏览器编译模块由前端的gui界面程序与位于远程服务器(云主机)上的后端ide docker server两部分组成,两者之间通过rest或rpc协议的接口实现远程通讯。与桌面ide不同的是,浏览器编译模块的大部分逻辑是在后端ide docker server中实现的,比如打开项目工程、读写源文件、编程过程中的智能提示、编译和运行源码、调试源码这些功能都以api的方式在ide docker server中实现,并被前端gui调用。前端gui则有两种实现方式,即基于html的web gui和基于本地桌面的desktop gui,考虑到大部分浏览器编译模块都是基于本地桌面的ide改造而来,考虑到实现代价的问题,建议浏览器编译模块只实现web gui即可,这样就基本满足了浏览器编译模块的主要使用场景。为了访问开发项目的工程文件,ide docker server通过docker volume的方式绑定云主机本地上的工程目录,这样一来,读写源程序的问题就解决了,由于工程文件位于浏览器编译模块的外部,是一个标准的文件系统,所以也具备了被其他常规ide访问的可能性。
98.如图6所示,在本技术一些可选实施例中,本地编译模块可以与浏览器编译模块自由切换对云端服务模块的工程文件进行编译,浏览器编译模块与服务编码单元通过rpc或rest进行通讯连接,当需要切换到本地编译模块使用的时候,我们只需通过专有文件传输协议或某种远程文件共享的工具将位于云端服务模块(云主机)上的工程文件以“映射”的方式共享到本地,即可被云端服务模块所访问,从而实现浏览器编译模块与本地编译模块无缝切换。对于本地编译模块系统是windows的,我们可以考虑优先采用远程文件共享的方案,即采用sftp driver等类似的工具实现远程文件共享,这样一来,本地编译模块就无需改造即可配合浏览器编译模块一起使用,这样实施可以使代价会降为最低。
99.如图7所示,在本技术一些可选实施例中,系统还包括:
100.缓存模块,分别与本地编译模块和云端服务模块连接,用于缓存云端服务模块的云端工程文件,以使本地编译模块离线对云端工程文件进行编译。
101.在本技术一些可选实施例中,系统还包括:
102.同步模块,分别与本地编译模块和云端服务模块连接,用于在线同步本地编译模
块离线编译的工程文件。
103.在本技术一些可选实施例中,系统还包括:
104.加密模块,分别与本地编译模块和云端服务模块连接,用于对本地编译模块和云端服务模块之间传输的数据进行加密。
105.本地编译模块可以缓存编辑中的文件,从而在离网时仍能正常工作;通过引入压缩及多通道并行传输等算法,可以支持更快的传输速度;通过加密模块引入加密算法,避免重要的源码在传输过程中被第三方剽窃。整个协议的实现分为两个部分,位于云端服务模块的服务器的服务端以及位于本地编译模块的客户端部分,其中,服务端为一个独立的tcp server进程,负责将服务端的文件传输到客户端,并且从客户端获取文件更新的数据写入到本地文件中生效,服务端与客户端通过私有的tcp/udp协议高效传输。
106.加密模块与同步模块属于服务端与客户端共享的模块,其中同步模块结合客户端的本地缓存模块用来实现全自动的文件同步功能。
107.其运行的细节步骤如下:
108.1.客户端从服务端获取的文件首先会缓存到本地;
109.2.当文件在集成开发环境中被修改后并保存时,首先保存到本地缓存中;
110.3.同步模块检测到本地保存的文件发生变化后,会计算发生变化的部分内容,然后传输这部分变化到服务器端,服务器端的同步模块接受到以后会检查验证变化的内容并更新到本地文件中,同时文件的版本号递增;
111.4.当本地集成开发环境断网时,对文件的所有修改都会保持到本地缓存;
112.5.当网络恢复以后,同步模块会自动执行上述的同步逻辑,如果发现本地文件版本过低,会提示用户数据错误,并且在用户的授权下,获取最新的版本的文件,让用户自己纠正错误后再同步到的服务端。
113.在本技术一些可选实施例中,远程服务模块包括:
114.工程目录单元,与本地编译模块连接,用于将云端工程文件映射到本地编译模块形成镜像工程文件,镜像工程文件用于本地编译模块的编译;
115.服务编码单元,用于根据本地编译模块对镜像工程文件的编译进行对云端工程文件的编译;
116.运行环境单元,用于运行服务编码单元编译的工程文件。
117.在本技术一些可选实施例中,系统还包括:
118.容器模块,与服务编码单元连接,用于挂载服务编码单元编译的工程文件。
119.在本技术一些可选实施例中,浏览器编译模块包括:
120.账号登陆单元,用于用户登录个人账号;
121.容器模块包括多个容器,每个容器对应一个个人账号,容器用于存储登陆对应个人账号的浏览器编译模块所编译的云端工程文件。
122.在一具体的实施例中,找一台合适的服务器a作为实验中的云服务器用来存放项目工程文件以及部署云ide coder;用vs code创建一个标准的java工程文件,并将项目文件复制到服务器a上的指定存储目录;在服务器a上启动coder容器并挂载项目工程文件目录到容器内部;打开浏览器,访问coder的web gui界面;在浏览器中编写和编译java代码,验证云ide的功能;在开发者的windows电脑上安装sftp driver工具,并在在服务器a上配
置和开启ssh服务,最后设置sftp driver以实现远程文件共享;在开发者的windows电脑上启动vs code,打开共享到本机的java工程目录,可以看到修改过的源文件,并且完成本地编译全过程。
123.上述实施例设计的ide开发环境支持本地ide与云ide对一个工程项目进行操作,无缝切换;两种方式解决本地ide访问远程工程项目的问题;基于docker容器设计前后端分离的云ide,结合docker volume机制来访问外部的工程项目,使得云ide的开发难度降低,灵活性和扩展性增强,并且天然适合公有云上部署运行。将传统本地ide与新一代的云ide相结合,打造无缝切换的ide开发环境,既弥补了云ide目前的弱点和不足,又让那些更相信本地ide的开发者有机会接触和试水云ide这个新事物,从而加速云ide的成熟和推广。
124.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1