張小銀 陳國勝 時刻



【摘要】針對目前校園調頻發射臺使用中存在的需要專人值守操作問題,提出一種由聽眾在線點播,發射臺按時自動播放,實現無需專人值守的解決方案,在應用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文件有如下配置:
這樣,通過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之間的米波波段。這個波段的接收機使用很短的天線就可以獲得滿意的接收效果,很適合英語聽力耳機附加的調頻收音機功能來收聽高保真的英語聽力練習或文藝類節目。另外,還可以作為鄉鎮小型廣播電臺,用來自辦節目或轉播省市廣播電臺的節目。該系統在企業應用開發中也會有很好的借鑒和示范作用。目前,該校園調頻發射臺點播系統運行正常。