目前,程序设计竞赛自动阅卷系统主要有两种实现方式—采用 C/S 架构和采用 B/S 架构。C/S 架构设计需要客户机和服务器都提前安排安装好测评软件,以 CENA 测 评软件为代表。B/S 架构设计直接在浏览器端即可访问,以 Codeforces、LeetCode 为 代表。 80372
最初的程序设计竞赛自动阅卷系统多采用 C/S 架构,C/S 架构是一种两层架构, 即客户端-服务器架构。其中客户端包括一个或多个用户主机上运行的程序,服务器 端则有两种选择,可以让客户端通过数据库连接访问,也可以让服务器通过 Socket 与客户端通信。
目前,有很多采用 C/S 架构的自动判题机,其中最为知名的是 CENA。CENA 是一 款开源的程序设计竞赛自动阅卷系统,理论上能够满足大多数程序设计竞赛的需求。 它在同类产品中的主要优势在于体积小,其安装包大小不到 10MB。
随着互联网的发展,采用 B/S 架构的自动阅卷系统成为一种可能,相对于 C/S 架 构而言它具有以下优势:
(1) 使用方便
虽然 CENA 的安装包已经做到足够小,但是要想判题必须先要安装软件仍然是个 麻烦的事情。采用 B/S 架构的阅卷系统只需要用户有浏览器即可使用,极大地降低了 客户机的要求。
(2) 测评准确 论文网
在客户机上,每台电脑的配置都不相同,对于不同的 CPU 而言,相同的时间下运 算量大相径庭。很多 B/S 架构的自动阅卷系统生硬地规定了运行时间,对使用较差配 置计算机的用户显然不公平。而 C/S 架构的系统在服务器端进行判题操作,每位用户 每道题的运行环境都相同,保证了公平性和测评的准确度。
(3) 扩展性强
采用 C/S 架构的测评系统每次系统升级或变更都关系到每一台客户机。而在 B/S 架构上,可以方便地进行扩展。例如系统升级,在用户较少的时刻进行即可。更为重 要的是,稍加改变就可以适应多种场合。例如编程考试,做一个考试页面,并在后台记录下每位考生的成绩即可。再比如企业面试,将面试题上传至系统,即可轻松测试 面试者。
采用 C/S 架构的测评系统主要有 Codeforces 和 LeetCode。Codeforces 是一个俄 罗斯的程序设计竞赛自动阅卷网站。它由一群来自萨拉托夫州立大学的优秀程序员创 建,是目前用户活跃度最高的在线测评系统。LeetCode 也是一个在线测评网站,但是 与 Codeforces 不同的是,Codeforces 上的题目多是为 ACM 竞赛准备的,而 LeetCode 多采用谷歌、微软、领英等互联网公司的笔试题。
与目前已有的这些测评系统相比,本次毕业设计采用了 C/S 架构,并且所使用的 前后端技术都是目前较为前沿的。具体的技术及实现会在之后的章节介绍,它们与早 期的网站开发技术有许多不同。