APP下载

高校内网门户软件平台的设计与实现

2018-12-22迟明秋

无线互联科技 2018年16期
关键词:门户服务器端代码

迟明秋

(徐州医科大学 现代教育技术中心,江苏 徐州 221004)

本文介绍的高校内网平台软件的主要服务对象为大学教师、学生以及校外有关单位人员。其提供的服务内容也主要围绕师生展开。现有的应用包括成绩查询教务系统、一卡通校园卡消费查询,以及更加复杂的办公自动化(Office Automation,OA)流程管理系统等。在本文中,我们将分别从系统软硬件架构两方面来阐述高校内网门户软件平台(基于东软产品),并对其设计的优劣提出评价。

1 软件分析

高校内网门户软件平台其主要目的是建立高校各个业务软件系统的汇聚中心,通过中央认证服务[1](Central Authentication Service,CAS)间接联入集成其他业务系统,并利用其灵活的模块化的界面管理功能,有选择地摘取其他业务系统的相关信息并显示在主界面上,例如公共通知、邮件信息、校内新闻、个人办公房产等等。高校内网门户软件平台同时还自带一些常用服务功能,例如:万年历、站内信等等。这些功能可能与某些业务系统有重叠,在该软件的部署实施过程中,软件开发团队将根据客户情况进行选择,然后针对特定需求对程序进行修改。这些需求就要求校园内网平台具备良好的可扩展性、灵活的界面特征。根据观察和分析,东软的产品基本上兼备了较好的可扩展性和一定的界面灵活性。

1.1 软件系统框架分析

东软研发的这款高校内网门户软件平台在系统整体架构方面是典型的多层Web应用,这种分层式架构有利于软件应用的更改和发布。在此Web应用程序中,有两个程序同时运行:(1)存在于服务器上并响应HTTP请求的代码。(2)存在于浏览器中并响应用户输入的代码。哪些代码应该在服务器上运行,哪些代码在浏览器端执行,是Web开发人员在开始编写应用程序时必须决定的许多问题之一。在东软公司制作的此款高校内网平台软件中,服务器端代码具备以下特征:服务器端的语言/框架如Java或C#,这些代码应该在服务器上运行并响应HTTP创建用户最终看到的页面,这一部分内容是由在网络服务器apache上运行的Java产生HTMLl发送到浏览器,产生的HTMLl与JavaScript配合后运行。服务器端的语言还生成XML或者Json等纯数文件,提供并配合JavaScript 使用,其他还包括存储持久性数据文件或户配置文件。以上是服务器端代码特征,而客户端代码则应具备以下特征,首先其所使用的语言包括:HTMLL,CSS和JavaScript,在此基础上,还有许多第三方开发的基于[CSS[HTMLLJS]语言的框架和类库可以使用,最后由用户浏览器解析成展示内容。

1.2 软件代码分析

高校内网平台软件服务器端的Java程序开发主要遵循SOLID原则,当设计类和模块时,遵守 SOLID原则[2]可以让软件更加健壮和稳定。

S—SRP单一职责原则,表明一个类有且只有一个职责。一个类就像容器一样,它能添加任意数量的属性、方法等。然而,如果你试图让一个类实现太多,很快这个类就会变得笨重。

O—OCP开放封闭原则指出,一个类应该对扩展开放,对修改关闭。

L—LSP里氏替换原则指出,派生的子类应该是可替换基类的,也就是说任何基类可以出现的地方,子类一定可以出现。

I—ISP接口隔离原则,表明类不应该被迫采用无法使用的方法,也就是说一个接口应该拥有尽可能少的行为。

D—DIP依赖倒置原则,表明高层模块不应该依赖低层模块;相反,他们应该依赖抽象类或者接口。

1.3 数据库和数据仓库

在数据库设计上高校内网的数据库设计重复考虑到国内省属高校的组织结构,人员管理,与其他系统的数据共享和交换,遵循国家以及教育委员会制定的数据库命名法则。该项目选用Oracle为数据库工具软件,并在数据中心建设过程中,从他业务系统中获取核心业务数据初步建立数据仓库,存储经过过滤的业务系统的历史数据,为学校决策系统和未来的大数据分析平台(常熟理工的校园情报分析软件与360网神软件)提供数据支持,分析并明确了各个业务系统集成必须使用的通用共享数据字典,以解决数据孤岛问题。

1.4 中心认证服务

单点登录,东软高校内网软件的一个核心组件是CAS,它执行Web的单点登录协议,其目的是允许用户访问多个应用程序,同时只提供一次证书(例如用户ID和密码),它还允许Web应用程序在不访问用户的安全凭据(如密码)的情况下对用户进行认证。从结构上看CAS包含两个部分:CAS Server和CAS Client。CAS Server需要独立部署,主要负责对用户的认证工作;CAS Client负责处理对客户端受保护资源的访问请求,当用户需要登录时,重定向到CAS Server,东软高校内网平台CAS 最基本的协议通信过程遵循以下流程。

(1)用户初次请求门户;(2)门户在服务器端没有找到用户Session让用户重新定向到统一认证服务器;(3)用户输入正确的用户名和密码;(4)统一认证服务器让用户重新定向回门户,请注意,重新定向的地址含有一个Ticket参数;(5)(在门户返回页面之前)门户拿着Ticket请求统一认证系统,换取用户信息(一个Ticket只能用一次);(6)统一认证系统返回用户信息.

CAS Client与受保护的客户端软件应用(例如办公自动化系统)部署在一起,以过滤的方式保护受限制的用户资源。对于访问受保护资源的每个Web请求,CAS Client会分析该请求的HTTP请求中是否包含Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的CAS Server登录地址,并传递Service也就是要访问的目的的资源地址,以便登录成功过后转回该地址。用户在第3步中输入认证信息,如果登录成功,CAS Server随机产生一个相当长度、唯一的、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到Service所在地址,并为客户端浏览器设置一个Ticket Granted Cookie,CAS Client在拿到Service和新产生的Ticket过后,在第5步中与 CAS Server进行身份核实,以确保Service Ticket的合法性。在该协议中,所有与CAS的交互均采用SSL协议,以确保ST和TGC的安全性。协议工作过程中会有两次重定向的过程,但是CAS Client与CAS Server之间进行Ticket验证的过程对于用户是透明的。另外,CAS 协议中还提供了Proxy(代理)模式,以适应更加高级、复杂的应用场景,具体介绍可以参考CAS 官方网站上的相关文档。

2 网络和硬件

2.1 网络架构分析

该软件系统部署的网络环境是比较复杂的,要兼顾考虑安全和设备性能两方面,在实际的运用中,某些主机需要对外提供服务,为了更好地提供服务,同时又要有效地保护内部网络的安全。在高校内网平台软件项目中,我们将这些需要对外开放的主机与内部的众多网络设备分隔开来,根据不同的需要,有针对性地采取相应的隔离措施,这样便能在对外提供友好的服务的同时最大限度地保护了内部网络。针对不同资源提供不同安全级别的保护,可以构建一个DMZ区域[3],DMZ可以为主机环境提供网络级的保护,能减少为不信任客户提供服务而引发的危险,是放置公共信息的最佳位置。DMZ是架设在服务器与客户端之间的一个中间媒介,出于网络安全因素的考虑,在Firewall控制下不是所有的端口都能够允许被外网自由访问。Corporate network中开放了https端口号443和http端口号80,而Automation network开放了端口102,它的作用是负责Semantic communication。Automation network与Corporate network之间无法通过端口直接互联,这正是防火墙所要起到的保证网络安全的作用。为了让两个网络之间能够安全互联,DMZ起到了一个中间服务器的作用。Corporate network和Automation network可以把无安全隐患的信息放置到DMZ数据库上提供给外网访问。

2.2 反向代理负载均衡

在东软公司负责的高校内外软件平台项目中,部署了基于反向代理的负载均衡,应用软件Nginx是一个Web服务器,它可以被用来作为反向代理服务器,负载平衡器和HTTP缓存。反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。Nginx使用异步事件驱动的方法来处理请求,Nginx的模块化事件驱动架构可以在高负载下提供更可预测的性能。HTTP代理与Web服务器特性,Nginx的编写性能明显优于Apache Web服务器。在为静态文件提供服务时,Nginx使用的内存比Apache要少得多,并且每秒可以处理大约4倍的请求。

2.3 硬件架构

东软的高校内网项目,采用流行的多层架构、Nginx网络服务器、Database服务器,此项目使用Ngnix软件进行负载平衡,没有考虑使用硬件进行负载平衡如NetGear load balancer[4]。

3 结语

总结,东软的高校内网软件平台在代码设计上采用了当下比较先进的设计思路,兼顾了稳定,安全的需求,并考虑了扩展性和模块化。在硬件配置上考虑了用户流量的扩展,在网络规划上平衡考虑到了网络安全和用户流量,可以认为其是一款优秀的软件和比较成功的项目。

猜你喜欢

门户服务器端代码
关隘:要道门户
西域门户——两关遗址
Linux环境下基于Socket的数据传输软件设计
创世代码
创世代码
创世代码
创世代码
基于内外网门户系统的研究
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计