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