一种集成开发环境的构建方法、装置、设备及介质与流程

文档序号:26634953发布日期:2021-09-14 23:27阅读:89来源:国知局
一种集成开发环境的构建方法、装置、设备及介质与流程

1.本技术涉及计算机技术领域,尤其涉及一种集成开发环境的构建方法、装置、设备以及计算机可读存储介质。


背景技术:

2.随着计算机技术的发展,辅助开发者进行软件开发的工具也随之产生。其中,集成有代码编辑器、编译器、调试器和图形用户界面等工具中的至少一种,且用于提供程序开发环境的应用程序称之为集成开发环境(integrated development environment,ide)。
3.云化ide(cloud ide)是当前开发工具发展的趋势。云化ide允许开发者在任意地点、时间,通过一个联网终端(例如可以是一台主机、平板电脑或者手机)与云端的ide实例建立连接,在浏览器中进行编码和调试等开发活动。
4.然而,当前云化ide普遍存在占用较多网络资源、用户体验不佳的问题。基于此,业界亟需提供一种网络资源占用率低、用户体验较好的云化ide,以满足开发需求。


技术实现要素:

5.本技术提供了一种集成开发环境(integrated development environment,ide)的构建方法,基于该方法可以解决云化ide占用较多网络资源、用户体验不佳的问题。本技术还提供了对应的装置、设备、计算机可读存储介质以及计算机程序产品。
6.第一方面,本技术提供了一种ide的构建方法。该方法应用于ide的构建系统,该构建系统具体包括用户装置、管理装置和资源提供装置。具体地,管理装置接收用户装置发送的ide实例创建请求,然后管理装置在资源提供装置提供的资源上部署ide内核以形成ide实例,接着管理装置向用户装置发送连接信息,以使用户装置和ide实例之间建立连接,从而实现管理装置和资源提供装置的解耦。
7.由于用户装置和ide实例之间的网络流量可以通过基于用户网络的连接进行传递,无需通过管理装置进行转发,减少了管理装置占用的网络资源。在基于构建好的ide进行应用开发时,不同用户无需共享管理装置的网络资源,避免了一些用户的常规操作占用大量网络资源,导致另一些用户的用户体验受影响的问题,提高了用户体验。
8.而且,管理装置无需进行网络流量的转发,因此管理装置无需配置较大的网络带宽,如此可以降低运营成本。即使用户数不断增加,也无需增加管理装置的网络带宽,避免了运营成本线性增长。
9.此外,该方法支持在自带资源或云服务提供商提供的资源上实现云化ide。该云化ide可以在不同种类的资源如虚拟机、容器上实现,具有较高的灵活性。当新增资源种类时,由于管理装置和资源提供装置已经解耦,管理装置也无需对管理面(management panel)的参数进行修改,因而具有较好的兼容性。
10.在一种可能的实现方式中,用户装置和ide实例之间可以通过路由方式建立连接。具体地,连接信息包括路由地址,如此,用户装置和ide实例可以基于路由地址,从而以路由
方式建立连接。由于建立连接所产生的网络流量是通过路由转发的,不会直接到达ide实例,如此可以实现流量过滤,避免非法分子恶意攻击ide实例,影响用户访问ide实例,提高了访问安全性。
11.在一些可能的实现方式中,管理装置可以通过路由方式获取ide前端组件,然后通过ide前端组件建立与ide实例之间的连接。具体地,管理装置可以接收用户装置根据路由地址生成的访问请求,然后路由该访问请求至资源,接着将从资源处获取的ide前端组件路由至用户装置,从而使得用户装置可以通过ide前端组件与ide实例建立连接。
12.在一些可能的实现方式中,ide的构建系统还可以包括路由装置。如此,管理装置向用户装置发送的连接信息包括路由地址时,用户装置可以基于该路由地址访问路由装置,通过路由装置进行路由获得ide前端组件,并通过该ide前端组件与ide实例建立连接。
13.在一些可能的实现方式中,访问请求中包括所述ide实例的标识,管理装置还可以在路由访问请求至资源之前,确定ide实例的标识有效,如此可以减少无效访问,提高用户体验。
14.在一些可能的实现方式中,访问请求中还包括用户标识,管理装置还可以在路由访问请求至资源之前,确定访问请求携带的用户标识在ide实例的用户列表中。其中,该用户列表包括允许使用ide实例的用户对应的用户标识。上述实现方式通过在路由访问请求之前对用户权限进行验证,避免了不具有使用权限的用户访问ide实例,保障了安全性。
15.在一些可能的实现方式中,管理装置向用户装置发送的连接信息可以包括资源的地址。其中,资源的地址可以用于用户装置和ide实例直接建立连接,如此提高了连接建立效率,进而提高了ide的构建效率。
16.在一些可能的实现方式中,管理装置还可以向用户装置发送令牌。该令牌具体用于在所述用户装置和所述ide实例之间建立连接之前,由所述管理装置对所述用户装置鉴权,如此避免了不具有相应权限的用户装置与ide实例建立连接,保障了安全性。
17.第二方面,本技术提供了一种ide的构建方法。该方法应用于ide的构建系统,该构建系统具体包括用户装置、管理装置和资源提供装置。具体地,用户装置向管理装置发送ide实例创建请求,然后用户装置接收所述管理装置在所述资源提供装置提供的资源上部署ide内核以形成ide实例时发送的连接信息,接着用户装置根据所述连接信息建立与所述ide实例的连接。该方法实现了管理装置和资源提供装置的解耦,用户在基于构建好的ide进行应用开发时,用户装置和ide实例之间的网络流量均通过用户网络传递,无需管理装置进行转发,如此解决了管理装置占用较多网络资源,用户体验不佳的问题。
18.在一些可能的实现方式中,连接信息包括路由地址,如此,用户装置可以根据路由地址建立与ide实例的连接。
19.在一些可能的实现方式中,用户装置可以根据路由地址生成访问请求,然后向管理装置发送访问请求,接着用户装置可以接收管理装置通过路由所述访问请求至所述资源并从所述资源处获取的ide前端组件,再接着用户装置可以通过ide前端组件与ide实例建立连接。
20.在一些可能的实现方式中,ide的构建系统还包括路由装置,该路由装置独立于所述管理装置,用户装置可以根据路由地址生成访问请求,然后向路由装置发送访问请求,接着用户装置可以接收路由装置通过路由所述访问请求至所述资源并从所述资源处获取的
ide前端组件,再接着用户装置可以通过ide前端组件与ide实例建立连接。
21.在一些可能的实现方式中,连接信息包括资源的地址。用户装置可以基于资源的地址和ide实例直接建立连接。具体地,用户装置根据资源的地址生成访问请求,向资源发送所述访问请求,然后用户装置接收资源上形成的ide实例发送的ide前端组件,接着用户装置可以通过ide前端组件直接建立与ide实例的连接。
22.第三方面,本技术提供了一种管理装置。所述管理装置包括:通信模块和管理模块。其中,通信模块用于接收用户装置发送的集成开发环境ide实例创建请求,管理模块用于在资源提供装置提供的资源上部署ide内核以形成ide实例,所述通信模块还用于向所述用户装置发送连接信息,以使所述用户装置和所述ide实例之间建立连接。
23.在一些可能的实现方式中,所述连接信息包括路由地址,所述用户装置和所述ide实例通过所述路由地址建立连接。
24.在一些可能的实现方式中,所述装置还包括路由模块;
25.所述通信模块,还用于接收所述用户装置根据所述路由地址生成的访问请求;
26.所述路由模块,用于路由所述访问请求至所述资源,将从所述资源处获取的ide前端组件,路由至所述用户装置,以使所述用户装置通过所述ide前端组件与所述ide实例建立连接。
27.在一些可能的实现方式中,所述访问请求中包括所述ide实例的标识,所述路由模块还用于:
28.在路由所述访问请求至所述资源之前,确定所述ide实例的标识有效。
29.在一些可能的实现方式中,所述访问请求中还包括用户标识,所述路由模块还用于:
30.在路由所述访问请求至所述资源之前,确定所述访问请求携带的用户标识在所述ide实例对应的用户列表中,其中,所述用户列表包括允许使用所述ide实例的用户对应的用户标识。
31.在一些可能的实现方式中,所述连接信息包括所述资源的地址,所述资源的地址用于所述用户装置和所述ide实例直接建立连接。
32.在一些可能的实现方式中,所述通信模块还用于:
33.向所述用户装置发送令牌,所述令牌用于在所述用户装置和所述ide实例之间建立连接之前,对所述用户装置鉴权。
34.第四方面,本技术提供了一种用户装置。所述用户装置包括用于执行第二方面或第二方面任一种可能实现方式中的ide的构建方法的各个模块。
35.第五方面,本技术提供一种设备。所述设备可以是计算机。所述设备包括处理器和存储器。所述处理器、所述存储器进行相互的通信。所述处理器用于执行所述存储器中存储的指令,以使得所述设备执行如第一方面或第二方面的任一种实现方式中的ide的构建方法。
36.第六方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第二方面的任一种实现方式所述的ide的构建方法。
37.第七方面,本技术提供了一种包含指令的计算机程序产品,当其在计算机上运行
时,使得计算机执行上述第一方面或第二方面的任一种实现方式所述的ide的构建方法。
38.本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
39.为了更清楚地说明本技术实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍。
40.图1a为本技术实施例提供的一种系统架构图100;
41.图1b为本技术实施例提供的一种系统架构图200;
42.图2为本技术实施例提供的一种管理装置的结构示意图;
43.图3为本技术实施例提供的一种系统架构图300;
44.图4为本技术实施例提供的一种ide的构建方法的交互流程图;
45.图5为本技术实施例提供的一种ide实例创建配置页面的界面示意图;
46.图6为本技术实施例提供的一种生成令牌的流程示意图;
47.图7为本技术实施例提供的一种ide的构建方法的交互流程图;
48.图8为本技术实施例提供的一种设备的结构示意图。
具体实施方式
49.下面将结合本技术中的附图,对本技术提供的实施例中的方案进行描述。
50.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本技术的实施例中对相同属性的对象在描述时所采用的区分方式。
51.为了便于理解本技术的技术方案,下面对本技术实施例涉及的一些技术术语进行介绍。
52.本技术实施例中的集成开发环境(integrated development environment,ide)是用于提供程序开发环境的应用程序。该应用程序包括至少一个组件,所谓组件是指对数据和方法的简单封装,在一些编程语言体系中,组件也可以称为部件、控件等等。基于组件的作用,可以将ide包括的组件分为前端组件和后端组件两种类型。
53.前端组件是指实现和用户交互的组件,具体用于接收用户输入的数据,显示用户请求的数据等等。后端组件是指对数据进行处理的组件,具体用于按照设定的逻辑对接收到的数据进行处理,或者从数据库中获取数据进行处理等等。在本技术实施例中,ide可以集成代码编辑器、编译器、调试器和图形用户界面等工具中的至少一种。ide前端组件可以包括与图形用户界面相关的组件,ide后端组件可以包括与编译器、调试器等相关的组件。
54.基于部署方式不同,ide可以分为本地ide和云化ide(cloud ide)。其中,本地ide的前端组件和后端组件均部署在本地。其中,本地也称作本地设备。本地设备包括处于用于用户直接控制之下的用户设备(例如笔记本电脑等用户终端),或者与上述用户设备地理上接近的设备(例如连接至笔记本电脑等用户终端上的移动硬盘、闪存盘等设备)。云化ide则至少有一部分组件,例如后端组件,部署在云端。本技术实施例中的云端是与本地相对应的
一端,即本地用户通过网络远程访问的资源端。其中,资源可以是用户自带资源,也可以是云服务提供商提供的资源。云服务提供商提供有管理装置,管理装置可以响应于用户触发的ide实例创建操作,在用户自带资源或者云服务提供商提供的资源上创建ide。
55.资源还可以基于类型划分为物理资源或虚拟资源。其中,物理资源是指物理隔离的计算资源、存储资源、通信资源等,例如独立的服务器、存储设备、通信设备等。虚拟资源是指从操作系统或进程等层面进行隔离的计算资源、存储资源、通信资源等,例如,一台服务器上部署的多个虚拟机(virtual machine,vm)或者多个容器(content)等。
56.为了实现代码编辑、编译、调试等功能,需要执行上述ide。在资源的内存中处于运行状态的应用程序可以称之为实例(instance)。基于此,资源的内存中处于运行状态的ide也可以称之为ide instance。
57.考虑到云化ide具有部署灵活、易于使用等特性,其已逐渐成为当前开发者工具发展的趋势。目前,云化ide主要采用集中式管理架构,即ide前端组件和ide后端组件之间的所有网络流量均通过专有的管理装置进行转发。这种架构虽然给流量监控带来了便利,但是管理装置需要占用较多的网络资源。用户的一些常规操作,如克隆较大的代码仓,将导致大量网络资源被占用,进而造成其他用户的访问变慢,用户体验不佳。
58.为此,本技术提供了一种ide的构建方法。该方法通过将构建系统的管理装置和资源提供装置进行解耦,避免了云化ide的网络资源需求大、用户体验不佳的问题。具体地,管理装置接收来自于用户装置的ide实例创建请求,然后响应于该ide实例创建请求,在资源提供装置提供的资源上部署ide内核以形成ide实例,接着向用户装置发送连接信息,以使用户装置和ide实例之间建立连接。
59.如此,用户装置和ide实例之间的网络流量可以通过上述基于用户网络的连接进行传递,无需通过管理装置进行转发,减少管理装置占用的网络资源。在基于构建好的ide进行应用开发时,不同用户无需共享管理装置的网络资源,避免了一些用户的常规操作占用大量网络资源,导致另一些用户的用户体验受影响的问题,提高了用户体验。而且无需管理装置进行网络流量的转发,因此管理装置无需配置较大的网络带宽,如此可以降低运营成本。即使用户数不断增加,也无需增加管理装置的网络带宽,避免了运营成本线性增长。
60.此外,该方法支持在自带资源或云服务提供商提供的资源上实现云化ide。该云化ide可以在不同种类的资源如虚拟机、容器上实现,具有较高的灵活性。当新增资源种类时,也无需管理装置对管理面(management panel)的参数进行修改,具有较好的兼容性。
61.为了使得本技术的技术方案更加清楚、易于理解,接下来,结合附图对本技术的应用环境进行介绍。
62.如图1a所示,本技术实施例提供的ide的构建方法由ide的构建系统执行。该ide的构建系统包括用户装置102、管理装置104和资源提供装置106。其中,用户装置102可以运行在各种终端计算设备上,例如:手机、笔记本电脑、平板电脑或者个人台式电脑等等。管理装置104和资源提供装置106可以运行在云计算集群(包括至少一个云计算设备,例如:云服务器等)。在图1a所示的场景中,资源提供装置106提供的资源为云服务提供商提供的资源。当然,在本技术实施例的另一场景中,如图1b所示,资源提供装置106提供的资源为用户自带的资源,管理装置104和资源提供装置106分别运行在各自的云计算集群中。需要说明,图1b是以用户自带的资源运行于用户的计算集群中进行示例说明的,在其他场景下,用户自带
的资源也可以运行于物理机,如服务器中。
63.用户装置102具体可以是浏览器,或者是其他可以作为流量入口的应用程序。用户可以通过该用户装置102触发ide实例创建操作,用户装置102响应于该ide实例创建操作,生成ide实例创建请求,并向管理装置104发送ide实例创建请求。其中,ide实例创建请求中可以携带ide实例的配置参数,该配置参数可以包括计算性能参数、存储性能参数、网络性能参数等相关配置参数。在一个示例中,配置参数可以为64核虚拟处理器(virtual central processor unit,vcpu)、256g内存以及万兆网卡,具体可以记作64vcpus/256g/万兆。
64.然后,管理装置104根据上述ide实例创建请求,从资源提供装置106中确定与上述配置参数相匹配的资源,并在该资源上部署ide内核以形成ide实例。其中,ide内核具体是用于形成ide实例的代码文件。该代码文件包括ide前端组件和ide后端组件对应的代码片段。当然代码文件还包括ide前端组件和ide后端组件的脚本生成器对应的代码片段。部署ide内核具体包括将上述代码文件生成可执行文件,例如生成软件包(如npm包),然后将可执行文件放入目标环境,配置目标环境使得可执行文件能够执行。
65.接着,管理装置104向用户装置102发送连接信息,以使用户装置102和资源提供装置106提供的资源上形成的ide实例之间建立连接。在实际应用时,用户装置102可以根据连接信息先从资源提供装置106提供的所述资源处获取ide前端组件,然后通过ide前端组件建立与ide实例之间的连接。
66.考虑到安全性,管理装置104向用户装置发送的连接信息可以包括路由地址,如此,用户装置102和ide实例之间可以基于路由地址通过路由方式建立连接。图2示出了图1a或图1b场景中管理装置104的一个结构示意图。
67.如图2所示,管理装置104包括通信模块1042和管理模块1044。其中,通信模块1042用于接收用户装置102发送的ide示例创建请求,管理模块1044用于在资源提供装置106提供的资源上部署ide内核以形成ide实例,通信模块1042还用于向用户装置102发送连接信息,以使用户装置102和ide实例之间建立连接。
68.在一些可能的实现方式中,管理装置104还可以包括路由模块1046。管理装置104可以通过路由模块进行路由,从而在用户装置102和ide实例之间建立连接。具体地,通信模块1042接收用户装置根据路由地址生成的访问请求,路由模块1046路由所述访问请求至所述资源,将从所述资源处获取的ide前端组件路由至所述用户装置102,以使用户装置102通过所述ide前端组件与所述ide实例建立连接。
69.在一些可能的实现方式中,管理装置104还可以包括存储模块1048。该存储模块1048用于存储ide实例所在资源的地址。具体地,管理模块1044在资源提供装置106提供的资源上部署ide内核形成ide实例时,通信模块1042可以获取该资源的地址,存储模块1048存储该资源的地址。其中,存储模块1048在存储资源的地址时,可以存储ide实例的标识以及对应的资源的地址,以便后续基于ide实例的标识查找资源的地址,基于该资源的地址进行路由。
70.进一步地,存储模块1048还可以存储ide实例对应的用户列表。该用户列表包括允许使用所述ide实例的用户对应的用户标识。存储模块1048在存储上述用户列表时,可以存储ide实例的标识以及对应的用户列表,以便后续查找。
71.基于此,路由模块1046还可以在路由访问请求前,先对ide实例的标识和用户标识进行验证。具体地,访问请求中可以包括ide实例的标识和用户标识,路由模块1046可以查询访问请求中携带的ide实例的标识在存储模块1048中是否存在,若是,则表明该ide实例的标识有效,路由模块1046可以执行路由访问请求的操作。路由模块1046还可以确定访问请求中携带的用户标识是否在存储模块1048的用户列表中,若是,再执行向资源路由访问请求的操作,若否,则结束当前流程。当然,存储模块1048未存储用户列表时,路由模块1046对ide实例的标识进行验证即可,存储模块1048未存储ide实例的标识时,对用户标识进行验证即可。
72.需要说明的是,图2中的管理装置104也可以不包括路由模块1046和存储模块1048。路由模块1046和存储模块1048的功能可以通过单独的装置实现,例如可以通过单独的路由装置和存储装置实现。
73.参见图3所示的系统架构图,在图3的场景中,ide的构建系统还包括路由装置108和存储装置110。用户装置102向管理装置104发送ide实例创建请求,管理装置104在资源提供装置106提供的资源上部署ide内核形成ide实例,然后管理装置104获取资源的地址,存储在存储装置110中。管理装置104在进行存储时,还可以将ide实例的标识以及对应的用户列表一并存储在存储装置110中。
74.然后管理装置104可以向用户装置102发送连接信息。该连接信息具体包括路由地址,如此,用户装置102可以根据路由地址生成访问请求,并向路由装置108发送访问请求。,路由装置108接收到访问请求,先根据存储装置110中存储的ide实例的标识,确定访问请求中的ide实例的标识有效,然后根据存储装置110中存储的用户列表,确定访问请求中携带的用户标识在用户列表中,再路由所述访问请求至所述资源,然后从资源处获取ide前端组件,并将该ide前端组件路由至用户装置102。用户装置102通过ide前端组件与ide实例建立连接。
75.需要说明的是,图3中的用户装置102可以部署在终端计算设备中,管理装置104、资源提供装置106、路由装置108以及存储装置110可以以多种方式部署在云计算集群中。例如,管理装置104、资源提供装置106、路由装置108以及存储装置110可以部署于同一云计算集群,或者分别部署于不同的云计算集群。其中,部署于不同的云计算集群可以是管理装置104、资源提供装置106、路由装置108以及存储装置110中的每个装置分别部署于一个独立的云计算集群,也可以是以两两组合的形式部署于两个云计算集群,或者是任意三个部署于一个云计算集群,剩下的一个装置部署于另一个云计算集群。
76.在一些可能的实现方式中,管理装置104向用户装置102发送的连接信息可以包括资源的地址,如此,用户装置102还可以基于资源的地址直接建立与ide实例的连接。具体地,用户装置102可以基于资源的地址访问资源,从资源处获得ide前端组件,然后通过ide前端组件直接建立与ide实例的连接。
77.接下来,从用户装置102、管理装置104和资源提供装置106交互的角度对本技术实施例提供的ide的构建方法的各个步骤进行详细说明。
78.参见图4所示的ide的构建方法的流程图,该方法包括:
79.s402:用户装置102向管理装置104发送ide实例创建请求。
80.在具体实现时,用户装置102可以显示ide实例创建配置页面,该页面承载有ide实
例配置组件,该配置组件可以用于配置待创建的ide实例的性能参数。其中,性能参数包括计算性能参数、存储性能参数以及网络性能参数中的至少一种。
81.用户可以通过上述ide实例配置组件配置参数,用户装置响应于用户的配置操作,根据配置参数生成ide实例创建请求,向管理装置104发送ide实例创建请求。在一些实现方式中,用户装置102也可以自动生成ide实例创建请求,例如在设定条件满足时自动生成ide实例创建请求,并向管理装置104发送ide实例创建请求。
82.为了便于理解,本技术还提供了一具体示例进行说明。图5示出了ide实例创建配置页面的一个界面示意图,如图5所示,用户可以通过下拉选择框选择vcpu类型、内存大小以及网卡大小,如选择64vcpus、256g内存以及万兆网卡,此时ide实例创建配置页面还可以根据用户选择的上述配置参数生成预估价格,以供用户参考。当用户认为价格过高或过低时,可以调整配置参数。然后用户可以点击ide实例创建配置页面的确认控件,以触发ide实例创建操作,用户装置102响应于该操作生成ide实例创建请求,该ide实例创建请求中携带有上述配置参数。
83.在图5的示例中,用户也可以直接选中默认配置复选框,然后点击确认控件触发ide实例创建操作,如此,用户装置102响应于该操作生成ide实例创建请求,该ide实例创建请求中携带有默认配置参数。
84.s404:管理装置104在资源提供装置106提供的资源上部署ide内核以形成ide实例。
85.资源提供装置106提供的资源可以是用户自带资源,也可以是云服务提供商提供的资源。资源提供装置106可以对用户自带资源或者云服务提供商提供的资源进行管理,以便统一提供资源服务。
86.在具体实现时,管理装置104可以根据接收到的ide实例创建请求,确定与待创建的ide实例相匹配的资源。具体地,管理装置104可以将ide实例创建请求携带的配置参数与资源提供装置106提供的资源的参数进行比较,在参数与ide实例创建请求携带的配置参数相符的资源上部署ide内核,从而形成ide实例。
87.其中,ide内核具体是用于形成ide实例的代码文件。该代码文件包括在资源上形成ide实例所需要的所有组件对应的代码片段,包括ide前端组件和ide后端组件对应的代码片段。当然,代码文件还包括ide前端组件的脚本生成器和ide后端组件的脚本生成器对应的代码片段。
88.ide内核可以是云服务提供商提供的。在一些实现方式中,云服务提供商可以提供若干类别的ide内核,例如视觉工作室(visual studio,vs)、日食(eclipse)等若干类别的ide内核,用户在进行ide实例创建时还可以指定待创建的ide实例的类型,如此,管理装置104还可以根据ide实例创建请求携带的待创建的ide实例的类型选择对应的ide内核部署至资源提供装置106所提供的资源上。
89.管理装置104可以在资源上编译用于形成ide实例的代码文件,进而形成ide前端组件、ide后端组件以及ide前端组件的脚本生成器和ide后端组件的脚本生成器,上述组件和脚本生成器执行时形成ide实例。其中,ide前端组件的脚本生成器在ide实例启动时生成ide前端组件的脚本,也称作前端脚本(运行于用户装置102)。ide后端组件的脚本生成器在实例启动时生成ide后端组件的脚本,也称作后端脚本(运行于云端)。
90.在创建ide实例后,管理装置104还可以为该ide实例分配一个唯一性标识,以便后续基于该标识识别ide实例。在具体实现时,管理装置104可以通过随机方式生成ide实例的标识,或者是基于创建时间和创建顺序生成ide实例的标识,本技术实施例对此不作限定。
91.需要说明的是,在本技术实施例的云化ide中,ide前端组件在ide实例创建或者部署时也是在云端的。
92.s406:管理装置104从资源提供装置106获取资源的地址。
93.资源的地址用于实现和资源的通信,基于此,资源的地址可以是任意能够标识资源在网络中位置的地址。在一些实现方式中,资源的地址可以是网际协议地址(internet protocol address,ip address)。ip地址属于逻辑地址,互联网中的每一个网络和每一个设备均具有逻辑地址,该逻辑地址可以用于屏蔽物理地址的差异。在一些情况下,资源的地址也可以是物理地址(physical address),也即介质访问控制(medium access control,mac)地址。
94.资源提供装置106提供的资源为物理资源时,资源提供装置106可以记录各物理资源的实际地址,该实际地址具体为物理资源的ip地址或mac地址。资源提供装置106提供的资源为虚拟资源时,资源提供装置106不仅可以记录各资源的实际地址,还记录该资源的虚拟地址。该虚拟地址具体是资源提供装置106对资源进行虚拟化,从而进行统一管理所生成的虚拟地址。
95.s408:管理装置104存储ide实例的标识以及对应的资源的地址和用户列表。
96.管理装置104可以存储资源的地址,以便后续基于该资源的地址访问资源。考虑到不同用户创建ide实例的需求,管理装置104可以为每一个ide实例分配标识,如此,管理装置104在存储资源的地址时,还可以将ide实例的标识以及对应的资源的地址进行存储,从而实现区分不同ide实例。
97.在一些可能的实现方式中,考虑到使用安全性,管理装置104还可以设置使用上述ide实例的用户权限,具有相应用户权限的用户可以使用上述ide实例。基于此,管理装置104可以针对创建的ide实例生成对应的用户列表,用户列表包括允许使用该ide实例的用户对应的用户标识。对应地,管理装置104在存储资源的地址时,还可以存储部署于该资源上的ide实例对应的用户列表。
98.需要说明的是,管理装置104在存储ide实例的标识以及对应的资源的地址和用户列表时,可以将其存储在如图3所示的存储模块1048中,也可以将其存储在独立于管理装置104的存储装置110中。其中,存储模块1048、存储装置110可以采用集中式存储机制进行存储,也可以采用分布式存储机制进行存储。采用分布式存储机制如将ide实例的标识以及对应的资源的地址和用户列表存储在分布式缓存中,一方面可以提高安全性,另一方面可以提高后续查找时的效率,提高ide的构建效率。
99.应理解,在一些实施例中,执行ide的构建方法也可以不执行s408。例如,用户装置102根据资源的地址建立与ide实例之间的连接时,管理装置104可以不执行存储资源的地址的步骤。
100.s410:管理装置104根据ide实例的标识、用户列表等信息确定令牌。
101.令牌具体用于在所述用户装置和所述ide实例之间建立连接之前,所述管理装置104对所述用户装置102鉴权(authentication),即管理装置104验证用户装置102是否具有
访问ide实例的权限。
102.具体实现时,管理装置104可以根据ide实例相关信息如ide实例的标识instance id、用户相关信息如用户列表(包括允许使用上述ide实例的用户对应的用户标识user id)等信息进行计算,例如进行哈希计算,从而生成令牌(token)。
103.考虑到安全性,管理装置104还可以基于过期时间戳(expiration)在内的信息确定令牌。其中,过期时间戳是指为令牌设置的过期时间。当到达过期时间戳指示的时刻时,令牌会失效,如此可以避免非法分子窃取历史令牌进行鉴权,并在鉴权通过后访问ide实例,导致用户正常访问受到影响或者用户数据被篡改。
104.在具体实现时,如图6所示,管理装置104可以将ide实例的标识(instance id)、用户列表(包括允许使用上述ide实例的用户的user id)和过期时间戳(expiration)进行组装,得到组装结果,然后管理装置104可以利用自身持有的私钥对上述组装结果进行签名,根据上述签名结果可以获得令牌(token)。
105.其中,管理装置104可以采用拼接等方式对instance id、user id和expiration等在内的信息进行组装,组装结果具体可以采用js对象简谱(javascript object notation,json)格式进行表示。接着,管理装置104可以利用基于json的开发标准如js对象简谱网页令牌(json web token,jwt)生成令牌。
106.具体地,jwt包括三部分:头部(header)、载荷(payload)和签名(signature)。其中,头部承载两部分信息,具体为声明类型(本实施例中为jwt)和声明加密的算法。在本实施例中,声明类型可以是jwt,声明加密的算法可以是哈希算法,例如哈希消息认证码安全哈希算法(hash-based message authentication code secure hash algorithm 256,hmac sha256)。载荷存放有效信息,具体可以包括上述组装结果。签名具体可以由管理装置104针对加密后的头部以及加密后的载荷连接组成的字符串,采用自身持有的私钥,结合头部声明的加密算法进行加密,从而得到签名。
107.考虑到json具有较好的通用性,基于json的jwt能够实现跨语言支持,即c#、javascript、nodejs、php等许多语言均可以使用jwt。进一步地,jwt的构成比较简单,占用字节较少,非常便于传输。此外,基于token的鉴权机制是无状态的,无需在服务端保留用户的认证信息或者会话信息,如此,基于token认证机制的应用如本技术实施例中的云化ide无需考虑用户在哪一台服务器登录,为应用的扩展提供了便利。
108.还需要说明的是,管理装置104在基于用户相关信息确定令牌时,不仅可以基于用户标识进行计算确定令牌,还可以结合用户所在组织的组织标识(organization id,org id)进行计算以确定令牌,如此可以提高令牌复杂性,使得基于令牌的鉴权结果更加可信。
109.应理解,s410仅是为了提高安全性提出的一种可选实施方式。在一些实施例中,执行ide的构建方法也可以不执行s410。
110.s412:管理装置104向用户装置102发送连接信息。
111.具体地,管理装置104向用户装置102发送的连接信息,可以使得用户装置102根据该连接信息建立与ide实例之间的连接。考虑到用户在进行开发时需要频繁操作,例如,频繁编辑、频繁点击,用户装置102可以和ide实例之间建立长连接。其中,长连接是双向传输数据的持久连接,而非每进行一次数据交互即建立一次连接,交互结束即中断的连接。通过长连接进行交互可以提高交互效率,避免资源浪费。
112.在具体实现时,管理装置104可以在ide实例部署并启动时,向用户装置102发送上述连接信息。基于建立连接方式不同,连接信息可以分为以下几种情况。一种情况为,连接信息包括路由地址,用户装置102和ide实例根据路由地址通过路由的方式建立连接;另一种情况为连接信息包括资源的地址,用户装置102直接根据资源的地址与ide实例建立连接,无需经过路由。
113.考虑到安全性,在一些实现方式中,连接信息中还可以携带s410中确定的令牌,以便用户装置102在建立连接前先基于令牌发起鉴权请求,并在鉴权通过后再执行建立连接的操作。
114.通过上述实施例的描述,可知本技术将管理装置104与资源提供装置106进行解耦,管理装置104仅执行标准操作,如部署ide内核至资源提供装置106提供的资源上等,ide前端组件和ide实例间的网络流量均通过二者之间建立的基于用户网络如用户虚拟私有云(virtual private cloud,vpc)的连接传输,管理装置104不必关心网络流量如何在ide实例和ide前端组件之间传输,如此,大大减少了管理装置104占用的网络资源,避免了一些用户的常规操作占用较多网络资源,导致其他用户的访问受到影响,提高了用户体验。而且,管理装置104无需转发用户装置102和ide实例之间的网络流量,无需为管理装置104配置较大的网络带宽,降低了运营成本。
115.在图4所示实施例中,管理装置104向用户装置102发送连接信息后,用户装置102可以基于连接信息建立与ide实例之间的连接。为了便于理解,本技术实施例还提供了一种通过路由方式建立用户装置102与ide实例之间的连接的实现方式。
116.参见图7所示的ide的构建方法的交互流程图,在图4所示实施例的基础上,该方法还包括:
117.s414:用户装置102向管理装置104发送访问请求。
118.具体地,用户装置102可以在接收到上述连接信息时,自动根据连接信息中的路由地址生成访问请求,向管理装置104发送访问请求。其中,访问请求中包括ide实例的标识和用户标识,该访问请求具体用于访问部署上述ide实例的资源,从资源处获得ide前端组件。在另一些可能的实现方式中,用户装置102也可以响应于用户触发的访问操作,向管理装置104发送访问请求。
119.s416:管理装置104确定所述ide实例的标识有效。
120.管理装置104可以存储已创建的ide实例的标识,基于此,管理装置104还可以在接收到用户装置102的访问请求时,查询访问请求中携带的ide实例的标识是否存在,若是,则表明用户装置102访问的ide实例为已创建的ide实例,该ide实例的标识有效,管理装置104可以执行后续步骤,若否,则表明用户装置102访问的ide实例为尚未创建的ide实例,该ide实例的标识无效,管理装置104可以结束当前流程。
121.具体地,管理装置104包括存储模块1048,该存储模块1048存储ide实例的标识时,管理装置104可以查询该存储模块1048,从而确定访问请求中携带的ide实例的标识是否存在。管理装置104不包括上述存储模块1048或者是存储模块1048未存储ide实例的标识,而是由单独的存储装置110存储ide实例的标识时,管理装置104可以查询存储装置110,从而确定访问请求中携带的ide实例的标识是否存在。
122.s418:管理装置104确定所述访问请求携带的用户标识在所述用户列表中。
123.在一些实现方式中,管理装置104还可以对用户进行身份验证,确认请求访问的用户是否是允许访问ide实例的用户。具体地,管理装置104可以获取访问请求携带的用户标识,确定该用户标识是否存在于用户列表中。若是,则表明请求访问的用户是允许访问ide实例的用户,管理装置104可以执行后续操作;若否,则表明请求访问的用户不是允许访问ide实例的用户,管理装置104可以结束当前流程。
124.应理解,s416、s418仅是为了提高安全性提出的一种可选实施方式。在一些实施例中,执行ide的构建方法也可以不执行s416、s418。
125.s420:管理装置104路由所述访问请求至所述资源。
126.由于用户装置102所要访问的是部署于资源提供装置106提供的资源上的ide实例,管理装置104知晓资源的地址,因此,管理装置104可以根据所述资源的地址通过路由方式,将用户装置102发送的访问请求路由至资源。
127.s422:管理装置104从所述资源处获取ide前端组件。
128.ide前端组件具体是与用户交互相关的组件。在本实施例中,ide前端组件可以包括用户界面(user interface,ui)组件。例如,ide前端组件可以包括代码编辑器的ui组件、编译器的ui组件、调试器的ui组件中的任意一种或多种。
129.管理装置104将访问请求路由至资源时,部署于资源的ide实例可以响应于该访问请求,生成访问响应,该访问响应包括ide前端组件。管理装置104可以通过接收访问响应,实现从资源处获取ide前端组件。
130.s424:管理装置104将所述ide前端组件路由至所述用户装置102。
131.管理装置104将ide前端组件路由至用户装置102,如此,用户装置102可以部署上述ide前端组件,从而使得用户可以基于上述ide前端组件,触发代码编辑、编译、调试等操作。
132.在本技术实施例中,ide前端组件在ide实例创建或部署的时候也是在云端的,当用户装置102跳转到部署完成的ide实例时,用户装置102可以下载ide前端组件,并运行ide前端组件。需要说明的是,用户可以采用不同设备上的用户装置102访问资源,以下载ide前端组件,并通过不同设备上的上述ide前端组件和云端的ide实例交互,实现随时随地开发(coding anytime and anywhere)。
133.为了方便理解,本技术还提供了一具体示例,对用户装置102获取ide前端组件的过程进行示例说明。在该示例中,用户装置102所属的用户终端设备的ip地址为119.2.1.82,管理装置104所属的服务器的ip地址为121.3.13.148,部署ide实例的资源的ip地址为136.34.21.109。用户装置102先向管理装置104发送访问请求,管理装置104根据资源的ip地址136.34.21.109将访问请求路由至资源,管理装置104接收资源上ide实例返回的ide前端组件,然后将ide前端组件返回至ip地址为119.2.1.82的用户终端设备,该用户终端设备上的用户装置102即获得上述ide前端组件。
134.应理解,s414、s420、s422和s424仅仅是用户装置102获取ide前端组件的一种实现方式,在一些实施例中,用户装置102也可以不执行上述步骤,而是采用其他方式实现。
135.s426:用户装置102向管理装置104发送携带令牌的鉴权请求。
136.其中,鉴权请求中携带的令牌即为图4所示实施例中s410确定的令牌。
137.s428:管理装置104向用户装置102发送携带鉴权结果的鉴权响应。若鉴权结果表
征鉴权通过,则执行s430,若否,则结束流程。
138.考虑到安全性,用户装置102可以先向管理装置104发送鉴权请求,管理装置104可以对鉴权请求中的令牌进行解密,得到与用户相关信息、与ide实例相关信息以及过期时间戳。其中,与用户相关信息具体包括用户列表,与ide实例相关信息具体包括ide实例的标识。
139.管理装置104可以基于解密得到的上述信息进行鉴权。具体地,管理装置104可以查询是否存储有与解密得到的ide实例的标识相同的ide实例的标识,是否存储有与解密得到的用户列表相同的用户列表,以及判断当前时间是否到达过期时间戳,若管理装置104存储有上述ide实例的标识、用户列表,而且当前时间也并未到达过期时间戳,则鉴权通过,否则鉴权不通过。管理装置104根据以上鉴权结果生成鉴权响应,向用户装置102返回鉴权响应。当鉴权响应中鉴权结果表示鉴权通过,则可以执行后续步骤,当鉴权响应中鉴权结果表示鉴权不通过,则可以结束当前流程。
140.应理解,s426、s428仅是为了提高安全性提出的一种可选实施方式。在一些实施例中,执行ide的构建方法也可以不执行s426、s428。
141.s430:用户装置102通过ide前端组件和ide实例之间建立连接。
142.用户装置102通过ide前端组件和ide实例之间建立基于用户网络的连接,可以避免ide前端组件和ide实例之间网络流量,如用户更新代码产生的网络流量通过管理装置104转发,导致管理装置104占用较多网络资源,影响用户体验,以及增加运营成本的问题。
143.考虑到响应效率和网络资源利用率,用户装置102在建立ide前端组件和ide实例之间的连接时可以建立长连接。在一些实现方式中,用户装置102可以通过超文本传输协议(hyper text transfer protocol,http)建立ide前端组件和ide实例之间的长连接,基于该方式建立的长连接也称作http长连接。
144.在另一些实现方式中,用户装置102也可以通过网络套接字(web socket)建立ide前端组件和ide实例之间的长连接。web socket运行ide前端组件和ide实例之间进行全双工通信,任一方可以通过建立的连接将数据推送到另一端,web socket建立一次连接,即可一直保持连接状态,相较于通过轮询不断建立连接,大大提高了处理效率。
145.应理解,用户装置102通过ide前端组件与ide实例之间建立连接仅仅是用户装置102和ide实例之间建立连接的一种实现方式,在本技术实施例其他可能的实现方式中,用户装置102和ide实例可以通过其他方式建立连接。
146.需要说明的是,图7所示实施例是以管理装置104包括路由模块1046和存储模块1048进行示例说明的,在一些可能的实现方式中,路由模块1046和存储模块1048的功能可以由路由装置108和存储装置110实现,在此不再赘述。
147.图4和图7所示实施例中虚线或者虚线框标识的步骤为本技术实施例的可选步骤,在一些可能的实现方式中,上述步骤也可以不执行,或者采用其他方式执行,本技术实施例对此不作限定。
148.上文中结合图1至图7,详细描述了本技术所提供的ide的构建方法,下面将结合附图,描述根据本技术所提供的用于构建ide的管理装置以及相应的设备。
149.参见图4所示的管理装置104的结构示意图,该管理装置104包括:
150.通信模块1042,用于接收用户装置102发送的集成开发环境ide实例创建请求;
interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口503用于与外部通信。例如,用于接收用户装置102发送的ide实例创建请求,或者向用户装置102发送连接信息等等。
170.其中,处理器502可以为中央处理器(central processing unit,cpu)。存储器504可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,ram)。存储器504还可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,rom),快闪存储器,hdd或ssd。
171.存储器504中存储有可执行代码,处理器502执行该可执行代码以执行前述ide的构建方法。
172.具体地,在实现图2所示实施例的情况下,且图2实施例中所描述的管理装置104的各模块为通过软件实现的情况下,执行图2中的管理模块1044、路由模块1046功能所需的软件或程序代码存储在存储器504中。存储模块1048功能可以通过存储器504实现。通信模块1042功能可以通过通信接口503实现。通信接口503接收用户装置102发送的ide实例创建请求,将其通过总线501传输至处理器502,处理器502执行存储器504中存储的各模块对应的程序代码,执行ide的构建方法,以构建网络资源占用率低、用户体验较好的云化ide。
173.本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质包括指令,当其在计算机上运行时,使得计算机执行上述应用于管理装置104的ide的构建方法。
174.本技术实施例还提供了一种计算机程序产品,所述计算机程序产品被计算机执行时,所述计算机执行前述ide的构建方法的任一方法。该计算机程序产品可以为一个软件安装包,在需要使用前述ide的构建方法的任一方法的情况下,可以下载该计算机程序产品并在计算机上执行该计算机程序产品。
175.另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本技术提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
176.通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本技术可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本技术而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、rom、ram、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本技术各个实施例所述的方法。
177.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
178.所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1