首页 理论教育 架构的在线投稿审稿系统的设计与实现

架构的在线投稿审稿系统的设计与实现

时间:2022-04-22 理论教育 版权反馈
【摘要】:本文对投稿、审稿以及管理流程给出一个整体解决方案,通过使用.NET技术架构对现代远程教育研究在线投稿审稿系统进行了设计与实现。2.业务逻辑层业务逻辑层即系统功能的核心层,依照投稿、审稿整个业务逻辑流程,体现整个数据流向以及状态。3.数据访问层数据访问层又被称为数据接入层,根据业务逻辑层的请求提供相应的数据库访问接口,并且依照具体任务对数据库实施数据写入或者提供访问程序数据的返回。

基于MVC模式和.NET架构的在线投稿审稿系统的设计与实现

四川广播电视大学 许 珩 崔 翠 余朔望

【摘 要】 针对当前杂志期刊的投稿审稿方式,基于MVC模式开发了在线投稿审稿系统,并对业务流程提供了整套的解决方案,针对许多同类系统存在系统结构不合理、扩展性和维护性较差的特点进行了改善,并对系统的结构实现、系统实现的重要设计以及关键技术进行了讨论。

【关键词】 MVC模式;.Net架构;在线投稿审稿

一、引言

随着学术交流和科研活动的日益频繁,以E-mail电子邮箱为主的投稿审稿方式和以Excel表进行稿件信息的管理方式已经逐渐显现出诸多问题,稿件处理效率不高,邮箱容量有限,投稿审稿信息不透明都对学报学术水平的提高产生了影响,制约了学术期刊的发展。当前有许多学术期刊开始使用在线投稿审稿系统,但是许多系统在具备作者投稿、编辑审稿等基本功能之外,并没有对整个业务流程给出一个整体的解决方案。并且许多系统通过ASP,JSP等脚本开发,页面代码和功能代码混杂,代码复用性差,开发人员维护困难。

本文对投稿、审稿以及管理流程给出一个整体解决方案,通过使用.NET技术架构对现代远程教育研究在线投稿审稿系统进行了设计与实现。该系统基于B/S结构(浏览器/服务器模式)开发,方便用户通过浏览器登录系统进行在线稿件投递,跟踪了解稿件被审进度和编辑审稿意见,方便编辑进行在线审稿以及对审稿进度和业务流程进行控制处理,方便管理员对稿件、投稿栏目、系统人员进行管理和权限分配;该系统依照模型(model)-视图(view)-控制器(controller)模式[1]对功能代码中的业务层和数据模型层进行封装复用,在业务逻辑有变化的情况下便于开发人员对程序代码的维护和修改,降低了不同层次之间的代码耦合度,提高了代码可重用性。

本文设计选用Visual Studio 2005作为集成开发工具,采用完全面向对象的C#开发语言,使用ADO.NET数据库连接技术、SQL SERVER 2005后台数据库和Web控件,设计并实现了该系统。系统的核心模块包括用户投稿模块,编辑、专家、主编审稿模块,管理员管理模块,实现了整个投稿、审稿、稿件管理、审稿专家分配、系统人员权限分配以及系统管理的整个流程控制。该系统采用B/S(浏览器/服务器)架构,使得整个投稿、审稿、系统管理业务流程完全在线化,网络化。

二、系统需求与设计目标

(一)系统设计目标

本系统设计的总体目标是为了紧跟业界发展,方便读者投稿。提高刊物信息化程度,规范、透明化期刊的审稿流程,节约编辑审稿时间,提升刊物编辑效率,并且对整个刊物的管理进行规范化。通过依托Internet互联网和浏览器,为作者、编辑、主编、专家等参与整个投稿审稿流程的人员创造一个更加快捷、安全的环境和整体的解决方案。该系统设计所需要达到的主要功能目标有:(1)用户投稿功能;(2)作者、编辑、主编、专家和管理员全程在线协作式跟踪处理稿件;(3)严格的权限管理和权限分配,对不同类型的系统人员所访问的页面和资源进行严格的权限分配和限制管理;(4)按需查询、统计投稿用户和稿件的情况;(5)根据稿件所处流程的不同状态提供不同的业务功能;(6)系统具备较高可维护性和可扩展性,严格按照MVC模式进行设计开发,层次分明,层间代码耦合度低,并且为业务逻辑改变预留接口

(二)系统层次划分

根据模型(model)-视图(view)-控制器(controller) MVC模式可以对该系统划分为三个层次:(1)用户界面层(User ViewLayer):为作者、编辑等用户提供交互式的页面和系统访问的接口层;(2)业务逻辑层(Service Logic Layer):实现系统具体的业务功能;(3)数据访问层(Data Access Layer):提供对于数据库的访问接口,包括增、删、查、改的功能,使用存储过程和接口优化等方式优化数据访问,并同时具备数据库权限安全性。

1.用户界面层

用户界面层又被称为视图层或表示层,是由将业务数据呈现给用户的Web窗体或程序界面组成,以不同页面为单位划分为不同的类。其主要的功能是为投稿、审稿、管理等不同页面提供不同的数据呈现和行为,为用户提供输入输出交互性,页面流程控制,错误信息提示以及用户数据验证等。

2.业务逻辑层

业务逻辑层即系统功能的核心层,依照投稿、审稿整个业务逻辑流程,体现整个数据流向以及状态。该层通过用户界面层获取的用户请求或数据,利用数据访问层所提供的接口对数据库进行数据访问或者将数据库的数据返回给用户界面层。针对不同的业务实体,通常划分出不同的类。

3.数据访问层

数据访问层又被称为数据接入层,根据业务逻辑层的请求提供相应的数据库访问接口,并且依照具体任务对数据库实施数据写入或者提供访问程序数据的返回。本层主要是以数据库访问类为呈现方式,通过使用DataSet、DataRow等数据集在业务逻辑层和数据库之间进行数据交换。另外,本层还需要对数据库访问的安全性进行保障,并且对数据访问的效率进行优化。

4.层间协作

整个系统采用MVC三层结构进行分层划分之后,层次结构清晰,各层间功能独立,各司其职,完成各自功能(如图1所示)。同时,数据访问层通过提供接口被业务逻辑层访问,业务逻辑层也通过相同方式被用户界面层访问。用户通过和视图层进行交互对系统发出请求,该请求由视图层通过调用业务逻辑层所提供的接口形成业务数据流,然后通过再调用数据访问层所提供的接口进行数据库连接后通过获得或者改变数据库。

图1 三层结构以及各层之间关系

三、系统具体实现

根据系统业务流程和各不同角色用户需求,确定系统“用户投稿”、“编辑审稿”、“主编审稿”、“专家审稿”、“系统管理”五大子系统以及子系统功能。系统基本功能图结构如图2所示。

(一)用户界面层设计与实现

用户界面层作为MVC三层结构中的表示层,根据用户需求,定制开发出用户验证登录、用户密码找回、用户投稿、编辑审稿、主编审稿、外审专家审稿,管理员管理几大主要界面,并且按照整个业务流程以及不同用户对稿件的处理。

系统登录后的交互页面通过使用.Net的母版技术控制整体显示并统一风格,在页面间的不同的ContentPlaceHolder中设计不同的显示内容。依据.Net页面技术,每个页面以独立封装的类组成整个用户界面,并且被分为前端交互页面以及后台业务数据页面,前者主要负责与用户进行交互,后者则负责调用业务逻辑层提供的函数接口并且以数据集的方式实现页面和业务数据流的转换,实现了页面与业务逻辑层的分离,方便后期代码 维护。

图2 体统功能结构图

(二)业务逻辑层设计与实现

业务逻辑层的设计包含整个业务流程的实现与控制,是本系统最为重要的部分。本层采用了UML面向对象的设计思想和方法[2],按照用户需求和业务流程中所需的业务对象不同的实体进行了重新整合,划分出了稿件、用户、审稿意见、栏目、消息以及权限等实体类,这些实体类所提供的接口均通过用户界面层的后台页面进行调用。

稿件实体类主要负责提供添加稿件,根据不同的投稿栏目和不同角色用户更新、加载稿件信息与状态等接口,这些接口函数均在适当的用户页面被调用,由此实现各不同权限的系统用户对于投稿审稿业务流程的控制以及通过用户界面调用并实现页面间的跳转,最终实现对业务流程和页面的控制;用户实体类作为系统内所有用户所使用的类,提供用户登录、用户验证、用户信息加载、用户权限修改等函数接口,通过用户界面层调用,在不同的页面类的后台页面传入用户类型值进行对不同权限页面和数据进行加载;审稿意见类主要负责提供添加对应审稿人的审稿意见、加载不同审稿阶段的审稿意见等接口,作为投稿人与审稿人之间重要的信息传递类而存在,并被用户界面层调用;消息类作为本系统的短消息机制能够提供加载、删除消息,用户消息的状态改变显示以及消息传递等接口,便于各用户之间进行消息传递并显示于用户界面层,加强了投稿用户与审稿编辑、专家的信息传递和非实时沟通;权限实体类主要负责各不同类型的用户对于该用户对应权限页面的管理和使用,并提供权限设置等接口,方便后台进行对应权限设置与更改。

各种业务实体类分工不同,但是经过代码封装以后均由用户界面层进行统一调用并控制业务逻辑走向,其中比较重要的稿件实体类和用户实体类的UML类图设计如图3所示。

图3 UML类图设计

(三)数据访问层设计与实现

数据访问层作为整个系统中精心设计和封装的层部分,对于上层业务逻辑层提供对于数据库数据的访问接口,对于访问效率和安全性要求较高。在本系统中,数据访问层包含以二进制、文本文档和XML文档为数据集的数据库对象实体类以及由.Net框架提供的ADO.Net[3]中的数据库操作类。

数据库对象实体类和数据库表中的数据类型相对应,作为一组没有行为函数的数据集而存在,由二进制、文本、XML等形式对数据元素进行数据类型以及数据元素本身的备份存储。数据库对象实体类的作用是将数据操作方案和数据存储的细节方案进行分离,对于系统的数据安全起到了独立存储备份,提高了系统安全性。

通常,在数据库访问层封装开发中,数据库操作实体类是非常重要的一层。由ADO.Net提供的数据库操作类提供了包括连接数据库,打开、关闭数据库,数据集读写,SQL语句执行等一系列静态函数方法,这些方法在业务逻辑层是可以直接进行调用的。由于对于三层结构的层次区分,本系统对于数据库操作类进行了重新封装与实现。根据实际的需要,选取并封装以下静态函数作为本系统的数据操作实体类的组成部分:

其中以protected为关键字的保护函数Open()用于连接打开数据库,公有函数Close()用于关闭数据库连接,GetDataReader(),GetScalar(),GetDataSet()以及GetDataRow()函数分别用于按照不同的需求读取不同类型的数据集,ExecuteSQL()函数用于执行SQL语句,将被Insert(),Update()函数调用。

为了提高数据库访问层的安全性,本层还在数据库对象实体类和数据库操作实体类的基础上,增加了数据库读取帮助实体类以及数据库SQL语句,通过封装实现GetSafeData类,对于整形、浮点型、字符串型、布尔型、时间类型等不同的数据类型进行读取产生空异常,即当读取数据库中的数据为NULL时,返回异常便于调用类进行异常控制,而共有静态方法GetSafeSqlString() 和GetQuotedString()则是提供对于传递过来的字符串进行符号和引号的增加处理,提高了对于数据读取以及写入的安全控制。

四、系统重要设计及关键技术

(一)Session会话保留登录用户信息

本系统采用Session作为系统与用户的会话对象,当系统用户登录以后,用户信息和权限字段将被Session保存,在Session有效的时间段内,用户在不同页面间的跳转之后,跳转后的页面将会依照保存的字段信息进行该用户信息对应的稿件等对应业务的加载,并且方便页面对于用户功能权限进行判断,有利于提高系统安全性。

(二)对用户权限进行身份验证

为了防止恶意用户在了解系统文件结构之后对于系统后台关键权限页面进行非授权访问,本系统在业务逻辑层以及数据库层对用户权限访问进行了控制,通过重写页面Page的父类,增加了功能权限的判断接口和设置接口。判断接口的调用是在每一个需要进行权限判断的功能页面上进行(比如审稿、管理员后台管理)。当页面被访问时,首先通过Session会话获取用户权限类型,然后和数据库结合,提供的用户权限字段结合数据库判断用户权限分类,判断的过程将会调用页面的父类接口函数,如果用户权限验证通过,则允许该用户顺利访问该功能页面,否则用户权限验证失败,用户将无权对非授权功能页面进行访问。为了方便管理员对各种用户的访问功能进行授权设置,重写页面父类之后提供了设置接口,这样,管理员对于用户的访问权限可以进行出错控制或者调整。

(三)数据库读写优化

由于本系统采用B/S架构,对于Web服务和数据库服务的用户访问很多时候是同时进行的,为了提高系统访问服务,减少过程冗余,在数据库访问层采用不同的方法对数据库读与写进行了分离,提高了数据库提供系统驱动的能力,其中包括使用Hash表实现数据库写入、更新以及通过SQL存储过程进行数据读取。

在本系统的数据访问层中进行数据库写入和更新时,以用户信息和稿件信息为主的业务数据通过以Hash表为集合的方式作为数据集传递到数据访问层函数中,业务逻辑层在调用Insert()、Update()这样的函数时,通过用户界面搜集的用户信息和稿件信息以Hash表为单位形成键值数据集,并在函数中进行数据集的循环迭代,最终形成SQL语句并通过数据库操作类调用执行语句进行写入或更新。

数据库数据的读取则主要采用存储过程来提高和优化访问速度,采用SQL存储过程只需要实现SQL语句的一次编译和优化,这样避免了数据库操作类的多次打开数据库的耗时操作,提高了对于数据库数据读取的速度和能力。

(四)系统与杂志网站用户界面层融合,提升系统用户体验

由于杂志期刊投稿用户通常是通过登录现代远程教育网站,进入“在线投稿”栏目并使用E-mail电子邮箱进行在线投稿,为了提升用户使用体验,对本系统和杂志网站系统进行了用户界面层融合,对于期刊网站访问用户进行杂志投稿提供了无缝的用户界面层体验。

首先,杂志投稿用户的登录页面被设计在期刊网站“在线投稿”栏目页面下,通过页面间传值将用户信息传递到系统页面,经过逻辑判断以后如果用户登录成功,则用户登录投稿系统开始投稿;其次在前端页面设计上,用户系统界面采用DIV+CSS进行页面布局和样式设计,力求沿袭杂志网站页面样式并延续期刊网站用户对于网站系统的使用体验。

参考文献

[1] 任中方,张华,闫明松,陈世福. MVC模式研究的综述. 计算机应用研究,2004(10)

[2] 屈喜龙. UML及面向对象的分析与设计的研究.计算机应用研究,2005(9)

[3] 张建成,李春青. 基于.NET环境下ADO.Net访问数据库技术的研究. 电脑知识与技术,2009(12)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈