根据应用于Web架构的MVC模式,您基本上可以拥有的是这样的:
> Web应用程序客户端,允许用户插入一些代码,
可能利用Javascript进行早期语法检查
>服务器端点,
从客户端接收插入的代码作为输入
操作顺序可以是:
>在服务器端,输入被转换成目标编程语言的适当结构,例如, Java类或C模块.
>可能地,定义了更多上下文(例如,类路径).
>然后,如果编译语言,则调用编译器(例如javac或gcc).这可以通过几种方式实现,例如exe中的C或Runtime.getRuntime().exec in Java.否则,代码可以部署在服务器上,或者可以运行某些模拟器并传递代码.
>随后,执行代码并截取输出(例如,通过将控制台输出定向到文件或仅利用目标语言基础结构,如this example).执行可以通过命令行(例如java)或通过其他工具(例如用于运行已部署的php代码的curl,因为它是访问它的客户端浏览器)来执行
>服务器的最后一步是以可读格式将截取的输出发送回客户端,例如, HTML.作为替代方案,如果您使用Java,则可以使用Applet,这不会更改基本体系结构.
但是,更一般地说,重点是编译器和解释器是基础软件.它们不适用于一般用户,只能轻松使用操作系统.因此,据我所知,“在线编译”与“发布代码,让它在服务器上执行,以及可视化答案”不同.在线编译意味着分配整个网络编译的责任,这是有道理的,但在我看来,它并不意味着用于示范目的(就像你提到的那样).