一种在Web端运行的集成开发环境的制作方法

文档序号:9235275阅读:180来源:国知局
一种在Web端运行的集成开发环境的制作方法
【技术领域】
[0001] 本发明描述了在Web端运行的集成开发环境的实现方法。
【背景技术】
[0002] 当前软件行业正在高速发展,从业人员每天都在和各种集成开发环境(下面简称 I峭打交道,而传统的IDE存在比较多的缺陷,影响到了开发人员的工作效率,具体的缺陷 如下:
[000引 1)商业IDE的功能比较强大,但是价格昂贵;
[0004] 2)免费IDE的功能一般比较弱;
[0005] 3)大部分IDE的体积比较庞大,安装速度、运行速度都不太理想;
[0006] 4)大部分IDE只能在单一操作系统上面运行,对于有多种终端的开发人员来说很 不方便;
[0007] 5)与现有的项目管理工具,版本管理工具不能很好的配合;
[0008] 6)开发人员和测试人员使用不同的工具,导致交流成本比较高;
[0009] 7)对于公司来说,由于项目代码需要完整下载到开发人员的本地计算机上进行编 辑,所W代码安全性无法得到保证。

【发明内容】

[0010] 为了克服传统IDE的上述缺点,本发明使用当下流行的Web技术来构建IDE。
[0011] 由于整个IDE的后台运行在服务器上,所W客户端只要有浏览器就能使用,对客 户端操作系统没有任何要求。无需安装,运行速度也不受客户终端性能的影响。
[0012] 可W直接在服务端集成项目管理、版本管理、文档管理、测试等工具,降低不同开 发人员、不同部口之间的交流成本。
[0013] 由于代码直接在服务端进行编辑,无需下载到开发人员的本地计算机上,所W可 W很好的保证代码的安全性。
[0014] 技术方案
[0015] 要实现该样的一个系统,有几个难点需要克服:
[0016]1)代码的编译和调试如何实现;
[0017] 2)由于服务端直接运行用户的代码,需要保证服务端的安全性,即用户的恶意代 码要么执行不了,要么执行了也不会对整个系统造成影响,只能影响到他自己;
[001引扣性能如何保证;
[0019] 下面针对上述难点分别讨论:
[0020] 1.要实现代码的编译和调试,首先需要将所有语言的编译器和调试器的公共行为 抽象出来,提供一致的操作界面,然后针对不同的编译器和调试器实现相应的适配器。
[0021] a)对于编译器来说,编译器的主要功能就是将程序源代码编译为可执行文件或者 相应虚拟机可理解的格式,因此可W抽象出一个编译的行为;
[0022] b)对于调试器,调试器的功能更加复杂一些,可W抽象出W下几点:
[0023] i.启动调试;针对调试目标的不同,启动方式有所区别。例如可执行文件加上启 动参数后直接启动调试、动态库需要调试器附加到进程进行调试、服务端程序需要远程调 试;
[0024] ii.控制程序运行路径;断点、单步等的命令;
[00巧]iii.查看被调试程序的信息:被调试程序的变量的值、调用堆找、线程等信息;
[0026] 针对抽象出的功能制定详细的通信协议,通信数据可W化vaScript方便处理的 文本型数据交换格式,例如xml或者json。
[0027] Web前端与后台服务器交互使用支持长连接的通信方案,例如WebSocket,在较旧 的浏览器上自动降级为Comet技术
[0028] 2.为了保证服务器的安全性,用户提交的代码运行和调试应该使用沙盒技术与 服务器环境进行隔离,对于Linux操作系统可W使用Docker, BSD系列操作系统可W使用 Jailo
[0029] 3.系统的所有组件均采用分布式方案W支持横向扩充,保证系统的性能。
【附图说明】
[0030] 附图1是系统组件图
[0031] 附图2是系统实际部署的示例图
[0032] 附图3系统整体序列图
【具体实施方式】
[0033] 为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,W下结 合附图及实施例,对本发明的关键部分进行详细的说明。应当说明的是,此处所描述的具体 实施例仅用W解释本发明,并不用于限定本发明。
[0034] 系统的整体设计:
[00对 1.系统组件:
[0036] a) Web端:整个系统的前端,负责和用户的交互、其他服务产生的数据的可视化输 出,化及项目管理功能的实现。前端由反向代理服务器做负载均衡,W支持Web端的分布式 部署;
[0037] b)调度服务:负责协调Web端和其他服务之间的通信,由于所有服务均可分布式 部署,因此调度服务具有负载均衡的功能;
[0038] C)编译、调试服务;执行代码的编译、调试功能,运行在沙盒里面;
[0039]d)存储服务;负责版本管理工具和系统中其他组件的交互。
[0040] 各组件之间使用Socket通信。
[0041] 2.系统通信设计,系统序列图见附图2。
[0042]系统整体运行流程如下,该里通信数据采用Json格式,也可W使用xml等其他文 本类型数据交换格式:
[0043] l)Web前端请求建立会话,Web服务端返回一个字符串,表示会话ID;
[0044] 2) Web前端接收到会话ID之后,建立长连接;
[0045] 3)Web前端发送源代码和编译运行命令,参数为会话ID和一个Json对象,Web服 务端无返回值。参数中的Json对象格式为:
[0046]
[0048] 编译服务接收到此请求后,先将源代码保存到文件,然后编译源代码,Wgcc为 例:
[0049] gccfilelfile2…filen-g-〇a.out
[0050] 编译成功后启动调试器:
[0051] gdb-interpretermia.out
[0052] 编译错误则返回错误信息。
[0053] 然后编译服务通过管道或伪终端向运行的g化发送W下命令,设置断点:
[0054] bfilelname;linenol [00巧]bfile化ame;lineno2
[0056] …
[0057] bfilenname;linenon
[0058] 设置完成后发送运行命令,启动调试:
[0059] r
[0060] 4)如果编译服务接收到调试器的输出,则将其格式化后发送给Web服务端。Web 服务端通过建立的长连接返回数据到Web前端,返回数据是一个Json对象,格式为:
[0061]
[0062] 值,变量的值是base64编码后的字符串
[0063] 5)用户后续的操作转换为两种消息发送到Web服务器端,然后由编译服务转化为 调试器命令,发送给调试器:
[0064] 发送用户输入时,Json对象格式如下:
[0065]
[0067] 6)变量值的格式;
[0068] 调试器产生的变量值的格式的形式化定义如下:
[0069] a) const,即简单类型变量的值,数据为一个字符串;
[0070] b)list,即列表类型(数组、单链表)变量的值,每个单元的内容可W是const、 list、tuple ;
[00川c) Uiple,即复合类型(对象)变量的值,形式为{name=value, . . .},name是字 符串,value 可W是 const、list、tuple。
[0072] 转换为化vaScript方便处理的Json格式后的定义如下;
[0073] a) const;
[0074]
?
[0075] b) list 和化pie ;[0076]
)
[0078] 3.编译服务运行在Docker容器中,通过Socket和调度服务通信。挂载服务器上 已存在的目录到容器中作为数据目录,主要保存运行日志和用户提交的代码。
[0079] 通过W上的描述,开发人员可W很容易的开发出系统各个组件。
[0080] 本发明说明书中采用的术语和措辞仅仅为了举例说明,并不意味构成限定。开发 人员应当理解,在不脱离所公开的实施方式的基本原理的前提下,对上述实施方式中的各 细节可进行各种变化。因此,本发明的范围只由权利要求确定,在权利要求中,除非另有说 明,所有的术语应按最宽泛合理的意思进行理解。
【主权项】
1. 一种在Web端运行的集成开发环境,其特征在于包括代码编辑器,调试器。
【专利摘要】本发明公开了一种在Web端运行的IDE的实现方式,用以解决传统IDE的缺陷。该系统的优点有:整个IDE的后台运行在服务器上,所以客户端只要有浏览器就能使用,对客户端操作系统没有任何要求。无需安装,运行速度也不受客户终端性能的影响;可以直接在服务端集成项目管理、版本管理、文档管理、测试等工具,降低不同开发人员、不同部门之间的交流成本;由于代码直接在服务端进行编辑,无需下载到开发人员的本地计算机上,所以可以很好的保证代码的安全性。
【IPC分类】G06F9/44
【公开号】CN104951297
【申请号】CN201510110185
【发明人】朱起文
【申请人】朱起文
【公开日】2015年9月30日
【申请日】2015年3月13日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1