高校调频发射台点播系统的研究与实现

时间:2022-02-21 05:30:53

高校调频发射台点播系统的研究与实现

【摘要】针对目前校园调频发射台使用中存在的需要专人值守操作问题,提出一种由听众在线点播,发射台按时自动播放,实现无需专人值守的解决方案,在应用Flex和JavaEE中的Spring、Hibernate框架等技术基础上,详细阐述了方案中的关键技术,实现了基于Flex的调频发射台点播系统。系统已在某高校外语听力教学中正常运行,效果较好。

【关键词】调频发射台;点播系统;解决方案;校园应用

【中图分类号】G40-057 【文献标识码】A 【论文编号】1009―8097(2013)04―0068―04

引言

校园调频发射台由小功率无线调频广播发射机、馈电系统、发射天线构成。具有音响效果好、覆盖面积大,成本低、使用便捷等特点,在学校教学、管理和校园文化生活中发挥了重要的作用。为便于管理、提高效率,针对调频发射台在实际使用中存在的需要专人管理节目播放等问题,根据学校实际情况,设计开发了调频发射台点播系统,系统结构模型如图1所示。

调频发射台点播系统采用Flex和Java技术实现。Flex是RIA领域的佼佼者,具备强大的UI渲染能力。Flex技术在表现力、交互性、跨平台性以及与应用服务器的通信方面均超越了其他RIA(如Ajax等)技术。基于S2SH(Struts2-Spring-Hibernate)框架的JavaEE应用已经得到广泛应用。参考JavaEE的S2SH架构,考虑到Flex与Struts2在功能上重合,采用Flex代替Struts2,本文采用Flex和Java组合应用的整合架构方案,即由Flex框架承担展现层逻辑的工作,Spring框架用来构建业务逻辑层,Hibernate框架用来建立持久层完成数据存取的工作。将三者进行整合,保证了应用系统的运行效率与可维护性。

一 相关技术原理

1 Flex技术

Flex能轻松快速地构建界面友好直观,用户方便易用,而且可以脱机使用和强大高效的应用程序。

Flex是高效率的开放源码框架。它提供了更加简洁的组件开发机制,能快速构建新的组件。

Flex及其框架使用了一套产生、广播、处理事件的机制,被传递的信息都是以事件流的方式处理。Flex中的事件触发机制基于观察者模式来实现的。

Flex使用数据绑定技术,当数据源对象的数据发生变化时,目标对象的数据会自动更新,不需要再编写代码去强制更新。

Flex使用共享对象在客户端或服务器端保存一些特定的数据,然后在多个客户端swf文件和对象之间实现数据共享。

2 JavaEE的Spdng与Hibernate框架

轻量级JavaEE中的Spring和Hibernate两种框架技术在当今各自的领域中都是应用广泛而且成熟的技术,它们针对特定领域开发都提供了很好的解决方案。

在Hibernate与spring的整合框架中,Spring充当了一个JavaBean容器的作用,Spring使用IOC和AOP技术接管了Hibernate的DAO、事务和Service业务层,从而能充分地管理事务和Request请求。经过IOC容器的处理后,针对面向接口的编程使软件项目的分层更明确。

由Spring统一管理Hibernate,Spring提供注入Hibernate所需要的基础资源。此时,Spring接管如下内容:Hibernate创建SessionFactory必需的DataSource,执行持久化必需的Session和访问持久层必需的事务控制等,而不需通过代码进行控制:SessionFactory和TransactionManager作为Spring容器中的bean,这些bean放在applicationContext.xml配置文件中管理,而把数据库连接的内容放在hibemate.cfg.xml配置文件中来管理。这样可为系统提供很好的解耦。

Spring对Hibernate的DAO进行了非常好的封装,使开发者完全不必关注于事务,可以把精力更多地集中在业务处理方面。继承HibemateDaoSupport的DAO类具有Spring封装Hibernate操作数据库的完全功能,

继承HibemateDaoSupport的目的是让Spring管理事务,DAO具有面向编程接口的特点,多态性使DAO类的实现多样化。在Spring管理下,数据库操作、事务处理也都变成自动化了。

二 系统设计

1系统总体架构设计

在Flex和Java的应用中,“展现层”逻辑完全运行在客户端的Flash虚拟机中,而“业务逻辑层”和“数据持久层”逻辑则运行在服务器端的Java虚拟机中。客户端系统和服务器端系统完全分离,各自运行在不同的CPU和虚拟机中。因此,Flex和Java组合开发的应用系统为异构的分布式系统。

Flex和Java应用的系统架构图如图2所示。

展现层利用Flex框架技术,可以实现显示与逻辑的分离,代码清晰易读性及可维护性高。

Spring负责业务逻辑层,通过Spring配置文件定义应用程序的业务逻辑,实现应用程序逻辑与代码的分离。

Hibernate数据持久层简化了数据库操作,节约了开发人员编写大量的SQL语句所花费的时间,缩短了软件开发周期。

2 数据库设计

根据业务需求和功能逻辑分析,确定调频发射台点播系统采用以下数据表:用户表(Users)、媒体节目表(Mediafile)、点播预约表(Playreservation)、固定节目表(Fixedschedule)、公告通知表(Announcement)、用户日志表(Userlog)。其中部分数据表之间包含相关关系。

用户表存放用户的详细信息,其中字段包括用户标识、用户名、用户口令、用户权限等级、用户实名、工号(学号)、身份证号、部门、邮件地址、用户类别、注册时间、注册IP地址、注册MAC地址、手机号、固定电话、是否锁定、性别、地址、登录次数等信息。用户权限等级设定如下:超级管理员为1,普通管理员为2,普通用户为3,广播发射用户为4。

媒体节目表存放媒体节目的详细信息,其中字段包括节目标识、节目名称、节目类别、节目简介、节目文件名、节日时长、上传用户标识、上传时间、文件大小、存放路径、是否审核、审核人标识、浏览次数、点播次数、播放次数等。

点播预约表存放节目被点播的有关信息,其中字段包括点播标识、点播用户标识、点播节目标识、操作时间、预约播放时间、节目时长、点播级别、点播结果等信息。

固定节目表存放管理员的固定或特殊播放节目的信息,其中字段包括固定()节目标识、人标识、节目标识、操作时间、播放时间、节目时长等信息。

用户日志表存放权限用户(包括普通用户及管理员)的登录、注销等信息,还存放管理员一些关键操作的日志信息。

公告通知表存放由管理员的一些通知公告信息。

3 系统功能模块设计

本系统分为五大功能模块,如图3所示。

(1)登录模块:普通用户和管理员可利用用户名或密码登录系统,通过验证方可进入系统;匿名用户直接点“匿名登录”即可,不用经过验证。

(2)节目上传模块:普通用户及管理员用户均可上传节目(只能上传mp3格式的声音文件)。节目上传以后,必须等待管理员经视听审核方可被点播。匿名用户不能上传节目。

(3)点播节目模块:所有进入系统的用户(包括匿名用户)可以根据已有节目列表来点播节目。点播策略为:正在广播的节目不能中断:管理员可以节目(一般为固定和特殊节目),权限最高,普通用户次之,匿名用户最低;点播时间冲突时,权限高的用户可以点播成功,权限低的用户点播的节目被取消。

(4)广播节目模块:单独设定广播发射用户,在发射机所在客户机上登录系统,此时客户机的声卡输出即作为调频发射机的音频源。根据服务器数据库中点播表的播放时间,采用定时器方式来定时播放节目。系统轮询点播节目表,轮询时间间隔可根据实际情况设定为2秒或5秒等。一般每个校区设置有一台发射机。由于采用定时器,发射机之间可实现同步。无点播节目(可定义为距下一个点播节目时间长度大于某个时间间隔,如10秒)时,可从节目表中随机选择节目来广播,直至点播节目播放时间点到来为止。

(5)管理模块:包含几个管理子模块,如:用户管理子模块、节目管理子模块、点播管理子模块、日志管理子模块、公告管理子模块等,为管理员提供对各种资源(或对象)进行增删改查等管理功能。

三系统相关问题研究及实现

1 Flex客户端和Java服务器端之间的通信

本系统中,客户端和服务器端的通信(远程过程调用,即RPC)采用HTFP协议。大量数据通信时是采用RemoteObject组件完成的,使用AMF(Action Message Format)格式交换数据,同时需要采用第三方框架配合。AMF是Adobe公司定义的一种二进制数据格式,其数据转换和传输效率更高,第三方框架用于解释AMF格式数据。

在Java平台下,本系统第三方框架采用Adobe官方开源软件BlazeDS,安装配置在服务器端。

2 Flex客户端和Java服务器端的整合

由图2可知,Flex客户端与Java服务器端整合的关键就是Flex与Spring的整合。

Flex与Spring的整合需要一个工厂类SpringFaetory,负责为Flex目的文件提供已经完成初始化(依赖注入)的Springbeans实例。

在BlazeDS的services-config.xml文件中添加factory元素,指向该工厂。

在应用中,services-config.xml文件有如下配置:

class="cn.edu.ahut,fmrs.flex_spring.Spring Factory"/>

此外需要配置BlazeDS的remoting-config.xml文件,该文件定义各个目的文件元素,指定Spring工厂以及对应的业务层服务组件bean的id。

如对媒体节目来说,remoting-config.xml文件有如下配置:

spring

mediafileAction

这样,通过BlazeDS,Flex客户端就可以实现通过远程方法调用的方式访问服务器端Spring提供的组件服务。

3异构系统之间远程数据的请求与调用

Flex客户端使用RomoteObjecct对象通过BlazeDS框架调用服务器端的Remote Facade对象中的方法,Remote Facade对象方法则调用“业务逻辑层”中“业务逻辑对象”或“业务逻辑服务对象”的方法完成客户端请求。此为远程外观(Remote Facade)模式,是客户端和服务器端的接口。

“DTO/VO模式用于远程方法调用过程中的传输数据,DTO(服务器传输对象)是服务器端普通Java对象,它不承担任何业务逻辑;VO(值对象)是客户端ActionScript对象,它只承担数据,不含任何业务界面逻辑;DTO与VO――对应,成对出现”。

在客户端与服务器端的通信过程中,VO和DTO两种对象通过远程方法调用,经过BlazeDS框架对两种对象进行相互转换,完成异构系统之间数据的请求与调用。

以删除媒体文件处理为例,客户端在进行有关配置后,采用MediafileAction.deletemediafile(mediafile)语句来调用服务器端的deletemediafile(Mediafile mediafile)方法来删除媒体文件;前者语句中的参数mediafile即为客户端VO对象,后者方法中的参数mediafile即为服务器端VTO对象。

4 系统权限管理的实现

(1)权限用户登录成功后,能获取到用户权限等级,等级为1至4级。匿名用户登录后,用户权限等级设为5。

(2)登录用户通过菜单导航条可以进入不同功能菜单。菜单导航条通过MenuBar、XMLList、State等组件实现。MenuBar是菜单组件;XMLList组件提供数据集,数据集表示菜单的具体项和子项;单击每个菜单项都跳转至相应的状态(或页面),不同的状态由State组件提供。

根据登录用户的用户权限等级进入到不同的状态,也即进入到不同的(子)菜单,即拥有了不同权限。

为提高程序的可重用性,采用对某个状态(或页面)移除或增加部分组件来实现。

(3)采用Flex共享对象在本地保存用户登录信息,用户注销时,清除本地共享对象。

5 发射客户端广播的实现

采用Flex 4系统Sound类的play方法播放服务器上的rap3格式文件,使发射客户端声卡发出声音,经过发射机后广播出去。采用Sound类的stop方法停止播放节目。

6 系统实现环境

调频发射台点播系统采用CentOS 5.5系统,Web服务器采用Tomcat 7.0,数据库采用MySQL 5.0,编程语言采用Java 6.0,开发框架采用Spring 3.0,Hibernate 3.3,Flex 4,BlazeDS 4.0。

Tomcat和MySQL部署在一台服务器上,发射客户端采用两台PC机,分别放置在两个校区,连接到各自的发射机上。

实际应用环境中,考虑到网络延迟产生的问题,两个发射机采用不同的频率发射广播。由于采用无人值守方式,发射客户端系统还考虑每天定时开机关机问题,以及在网络瞬间断开重连后播放模块的自动启动问题。

系统运行实际效果截图(局部)如图4所示。

四 结束语

根据国家关于校园调频广播的频率分配,我校调频广播发射机工作在67MHz至87MHz之间的米波波段。这个波段的接收机使用很短的天线就可以获得满意的接收效果,很适合英语听力耳机附加的调频收音机功能来收听高保真的英语听力练习或文艺类节目。另外,还可以作为乡镇小型广播电台,用来自办节目或转播省市广播电台的节目。该系统在企业应用开发中也会有很好的借鉴和示范作用。目前,该校园调频发射台点播系统运行正常。

上一篇:管窥格非《傻瓜的诗篇》的疯癫美学 下一篇:运用信息技术手段改进古诗词教学