基于Web的在线编译环境设计
2015-05-30梅刚林龄潘峰
梅刚 林龄 潘峰
摘 要: 为了提供一种即上网即使用的编译环境,提出了一种基于Web应用模式的在线式编译环境的设计方法。该方法设计一种中间件来无缝集成编译器等实用软件工具,将用户提交的程序在服务器端编译并运行,将运行结果返回客户端;运行时所需要的数据采用I/O重定向技术传给执行程序。实验表明,该设计方法是可行的,在线式编译环境为编程人员提供了一种便捷的开发与测试环境。
关键词: 在线编译环境; 中间件; I/O重定向; Web应用
中图分类号:TP311 文献标志码:A 文章编号:1006-8228(2015)05-29-03
Abstract: In order to provide a conveniently used compilation environment, this paper proposes a design of Web-based online compilation environment. The design integrates a set of practical software tools such as a compiler by using middleware, to compile the program submitted by the user and run it on the server, and return the results back to the user, the run-time data is transferrd to the program via the I/O redirection technology. Experiments show that the design is feasible, the on-line compilation environment provides the programmer with a convenient test and development environment.
Key words: online compile environment; middleware; I/O redirection; Web application
0 引言
以集成开发环境IDE(Integrated Development Environment)为主流平台的软件开发工具集成了编辑、编译和调试等实用且强大的功能,但也显现出它的一些不足。在Windows系统中使用Visual Studio,Mac OS系统中使用XCode,以及可以在多种系统中使用的Netbeans等为典型的IDE,适合于桌面系统上使用,但不能通过浏览器使用,这样就使得它们难以在线共享使用。IDE尽管功能强大,但也相当复杂,对于仅仅需要编译功能的编程者而言,IDE的大部分功能是闲置的。将复杂而庞大的IDE裁剪,提炼出最基本功能,使这些功能能够共享使用,提供一个容易使用的接口是本文设计的目标。
从软件使用者角度而言,简单、方便、功能完善且成本低廉是选择软件系统的重要条件。Internet的迅速发展和深入应用正逐渐改变软件的设计模式和应用模式,其中基于Web的软件系统已成为一种最为成功的设计标准。基于Web的软件系统具有面向大众和良好的跨平台应用特性,它以Web浏览器作为用户与系统的标准接口。
基于Web的软件工程逐渐成为众多学者研究的热点,基于Web的系统已成为未来软件发展的一个重要方向,文献[1-7]中实现了基于Web的软件系统,提供了一种基于Web的应用环境。本文通过对网络中间组件的有效集成,提供了一个简单易用的基于Web的在线式编译环境,以下详细描述它的应用实例及关键实现技术。
1 系统设计
1.1 系统基本设计思想
系统客户端采用Web界面,用户通过Web表单提交程序;服务器端由Web服务器、中间组件和编译工具组成。中间组件主要功能分为四个功能模块:读程序和保存模块,调用编译器编译程序并捕捉编译信息模块,加载运行程序并捕捉运行结果模块,分析编译或运行结果文件并给出评判模块。
1.2 系统工作原理
如图1所示,用户的HTTP请求提交给Web服务器,Web服务器调用中间组件处理提交数据,中间组件首先将相关数据写入文件,然后调用编译器或解释器等工具处理写入文件,处理产生的信息使用重定向技术写入文件。中间组件集是一些运行在Ch环境[8]的Ch脚本,使用C语言编写。文件集在这里主要是指文本文件,它包括两类,一类是高级语言的源程序代码和数据文件,它们由Web表单提交,并由中间组件读取生成;另一类是结果文件,它们由编译器或其他命令行工具执行时产生,是通过重定向技术写入的标准输出(STDOUT)或标准错误(STDERR),由Web服务器向客户端返回。
1.3 功能模块设计
1.3.1 用户界面设计
用户界面是编程者与系统交互的接口,源程序通过Web中表单进行提交,系统对程序的处理结果也采用Web文件形式在客户端浏览器中显示。这里我们采用Web框架集形式,即把浏览器客户区分割为若干个矩形区域,使得输入输出都在同一个界面中,类似一个集成开发环境。简单地把用户界面划分为以下三个部分。
⑴ 功能选择界面。该界面主要供用户选择相关功能和服务。主要采用超链接标题实现导航功能。
⑵ 编辑与提交界面。该界面既作为功能选题界面的输出区域,又是用户提交任务的输入区域,它采用嵌入式Web框架实现。
⑶ 输出界面。该界面与提交界面一样,采用嵌入式Web框架实现,主要作为服务器端的返回结果显示。
如图2所示,功能选择界面作为导航界面,用户选择链接页面在提交界面中显示,提交界面提交的请求结果在结果页面中显示。
[功能选择界面\&编辑与提交界面\&处理结果界面\&]
图2 基于Web框架的用户界面
1.3.2 中间件设计
网络中间组件是系统业务中心,接受Web服务器的调用,扩展了Web服务器功能。它读取HTTP请求数据,将读取的程序源代码写入文件,同时调用服务器端编译器编译程序,通过编译的程序装载于Shell外壳运行。编译结果或运行结果采用重定向到文件,向客户端返回结果文件的URL,以便用户查看。
1.4 关键应用技术
实现用户与远程软件工具的交互主要是使用重定向技术实现。操作系统Shell环境中支持输入输出重定向,用符号"<"和">"来表示。0、1和2分别表示标准输入STDIN、标准输出STDOUT和标准错误STDERR信息输出,可以用来指定需要重定向的标准输入或输出,比如2>error.txt表示将错误信息输出到文件error.txt中。又比如用ls命令时,本来是查看目录内容,而用了重定向">"后可以直接把屏幕输出写入一个文件中,再到文件里去看结果。输入也是一样,可以把输入重定向到一个文件里,重定向操作符可以用来将命令输入和输出数据流从默认位置重定向到其他位置,其输入或输出数据流的位置称为句柄;常见的句柄有三种,即:标准输入、标准输出和标准错误。如表1所示。
2 系统实现
2.1 用户界面实现
用户界面主要包括页面功能导航区域、编辑与提交区域和处理结果显示区域。在三个区域所在的Web页中,使用页内框架标签标注区域名。导航区域使用超链接标签…链接Java程序的编辑页面javaPro.html和显示位置EditFrame。
在上面HTML代码片段中,标注编辑代码的文本区域,