ejudge在ASP上的实现.净MVC

本文关键字:实现 MVC ASP ejudge | 更新日期: 2023-09-27 18:14:25

我知道这个问题可能不适合stackoverflow的提问规则,但是我不知道如何在ASP上实现e-judge系统。净MVC5。

让我们定义一下我所说的"e-judge系统":它是一个非常简化的类似于topcoder.com, codeforces.ru的代码检查系统。用户上传一些源文件,如a.cpp, b.cs, c.py或在某些形式中编写代码并提交。

在服务器端,我希望我的后端在一些沙箱中运行此代码(为了防止黑客攻击),将输出与存储的正确答案进行比较,并将结果报告给用户。

我对上面粗体定义的时刻有一个问题。我如何在一些沙箱中异步运行提交(源文件的代码字符串)?我应该如何收集输出并将其与正确的输出进行比较?我唯一的想法是通过消息代理将提交发送到另一个应用程序并等待答复。

ejudge在ASP上的实现.净MVC

我相信有人会给你一个更好的答案,但是因为目前这里没有任何东西我的2美分:

  • 你可以使用虚拟机运行你的代码。
  • 使用Windows Communication Foundation向机器发送消息,并运行软件并获得响应。这可能是一个Windows服务,所以它在启动时运行,或者可能只是把它放在启动文件夹中(我认为它在登录时运行)。
  • 以在机器上具有有限权限的用户运行代码,防止黑客攻击或至少限制黑客可以做的事情。
  • 将机器置于独立的工作组中。
  • 关闭除了WCF正在使用的所有端口。
  • 您可以对机器进行快照,并恢复到该点,如果它确实因任何原因而损坏。

这是很多工作,所以有人可能会想出一个更容易的答案,但我认为这是最安全的,因为你可以得到它。这个解决方案可能是用锤子来敲螺母,但将占用相当大的资源。