基于MVC模式的音乐平台设计与实现
作者:闵娴有 郑皓月 黄健舟 冉瑞生
来源:《电脑知识与技术》2018年第26期
作者:闵娴有 郑皓月 黄健舟 冉瑞生
来源:《电脑知识与技术》2018年第26期
摘要:为了满足人们对音乐软件日益提高的需求,设计并开发了一套基于MVC模式的在线音乐平台系统。该系统以UML出发进行面向对象分析与设计,采用C/S(mvc三层架构如何实现Client/Server)架构、MySQL数据库、Live555流媒体服务器、json数据传输等技术,以及C++、QMl编程语言,对系统的功能模块、UI界面和数据管理进行了设计与实现。系统主要包括6个功能模块:在线听歌、下载音乐、发布音乐、音乐笔记、以歌交友、音乐管理。该音乐平台系统是一套功能齐全、操作方便、可适用于不同体的在线音乐软件。
关键词: MVC;C/S;UML;live555;音乐平台系统
中图分类号:TP311.52 文献标识码:A 文章编号:1009-3044(2018)26-0059-04
Abstract: In order to meet people's increasing demand for music software, Based on the MVC software architecture, a set of online music platform system is designed and devel
oped. Started from UML, an object-oriented analysis and design is carried out. Some technologies, such as the C/S (Client/Server) structure, MySQL database, Live555 streaming media server, as well as C++, QMl programming language, are adopted, and then the function module, UI interface and database of the system are completed. There are six modules: online listening, downloading music, publishing music, music notes, making friends through music and music management. The music platform system provides an online music software with complete functions and convenient operation for different groups.
Key words: MVC; C/S; UML; live555; music platform system
1 背景
现今社会互联网发展迅速,随着人们生活水平的提高,单纯的本地音乐播放器已经无法满足人们的需求,人们已经不仅仅希望使用音乐软件听歌,还希望通过音乐软件进行交友,到一些具有共同音乐爱好的朋友。甚至是直接通过音乐软件发布作品,通过强大的互联网快速的传播自己的作品。逐渐地在线音乐软件成为人们生活中不可缺少的一部分。
该音乐平台系统以MVC模式为基础,采用分层C/S(Client/Server)架构进行设计。在实现时采用了MySQL数据库存储系统的歌曲、歌单等信息,采用Live555流媒体服务器实现在线音乐的播放解析,采用QMl语言搭建系统操作界面,开发完成了音乐平台系统。不同于一般的音乐播放器,该在线音乐软件提供发布音乐、以歌交友、音乐管理等功能,从而形成一个在线音乐平台。
系统的用户分为6个类别:喜好者、音乐痴迷者、著名歌手、创作者、系统管理员、系统维护员。其中将直接使用系统听歌的普通用户分为喜好者、音乐痴迷者、著名歌手三类。在该系统中,有一类特殊的用户,叫做创作者,除了拥有普通用户的操作外,还拥有上传音乐资源到系统中的权限。另外负责管理系统数据,包括广告、音乐资源、账户数据等的整理、备份以及审核的人属于系统管理员类别,对于不同的系统数据,分别对应不同的管理人员。最后一类便是系统维护者,主要负责系统的运营、维护、测试等支持系统正常工作职责。
2 MVC模式
MVC是基于模型-视图-控制器(Model-View-Controller)的软件体系结构模式,适合构
建复杂的应用程序。MVC软件体系结构由模型(model)、视图(View)和控制器(Controller)三个组件构成。MVC的核心是实现三层甚至多层的松散耦合,它将应用程序抽象为三个部分,三者既分工又合作地完成用户提交的每项任务。MVC的三个组件的功能分别为:
模型(Model):提供应用的核心功能,知晓每个依赖它的视图和控制器组件。
视图(View):向用户提供某个特定风格或样式的信息展示。该视图从模型中获得数据,并在某个其他视图中的数据发生变化时更新它的表示。视图创建了它所关联的控制器。
控制器(Controller):接受事件形式的用户输入,这些事件会触发模型中的操作的执行。这些操作可能引起信息的变化,反过来触发所有视图的更新以确保他们都是更新的状态。
MVC组件的功能以及各个组件的相互关系如图1所示:
MVC模式使应用程序的输入、输出分开,使应用程序的核心功能(model)与接口分离,并引入一个传播机制(Propagation mechanism)使得模型能够通知每个视图:模型的
数据发生变化后,通知视图自动更新,这也经常被称为依赖机制(dependency mechanism)。
3 技术简介
该系统采用Qt Creator跨平台集成开发环境进行软件开发。在实现过程中,主要采用了如下几个技术:
3.1 C/S模式
C/S模式(Client/Server),即客户端/服务器模式,Client和Server一般是相距很远的两台计算机,Client程序将用户的请求提交给Server程序,再将Server程序处理的结果返回给用户。C/S模式可以将任务合理的分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件资源的优势。
3.2 MySQL数据库技术
MySQL是一个高性能的且相对简单的关系数据库系统,相对于其他数据库来说,其复
杂性相对较低。在该系统中,MySQL数据库主要用于存储系统大部分数据,包括所有歌曲、歌单、账户的信息,以及记录不同对象之间的关系的关联表。
3.3 live555流媒体服务器
Live555是一个实现了RTSP协议的开源流媒体框架,live555包含RTSP服务器端的实现以及RTSP客户端的实现。Live555可以将若干格式的视频文件或者音频文件转换为视频或者音频流,然后在网络中通过RTSP协议分发传播,这也是流媒体服务器的核心功能。该服务器主要用于在线音乐的播放解析,同时在线的音乐资源文件也存放在该服务器上。
3.4 Json数据传输技术
Json全称JavaScript Object Notation,是一种轻量级的数据交换格式,由名字可知,json就是Javascript中的对象和数组,通过对象和数组这两种结构可以表示各种复杂的结构,这也是选择使用Json传输格式的主要原因之一。
对于音乐平台系统来说,尤其是在用户打开软件的时候,客户端要从服务器上拉取大量的数据,以便生成系统的推荐歌单页面,另外这些数据同时还要根据来自不同的对象而分成
不同类别的数据进行传输,因此,使用Json数据格式,将数据组织成对象和数组的形式进行传输,极大的增加了传输的性能和数据的阅读性。同样的,也极大的节省了客户端解析服务器返回的数据的速度,提了整个系统的性能。
4 系统设计
4.1 系统总体架构
该系统以C/S为总体架构,以MVC模式为思想,设计了具有四层架构的一套在线音乐平台系统。四层架构主要实现为:表示层、应用逻辑层、域层、数据层。View主要实现为表示层,即客户端界面;Model主要实现为系统的逻辑层、域层和数据层;Controller主要负责对系统实体的控制和消息的传递控制,在系统中设计为三个类:FanController、SonglistController、SongController。系统总体架构的包图如图2所示:
4.2 域层和数据层设计
域层主要包含了系统所有的实体对象,而数据层则负责域层实体对象的存储、查询和管理。系统中数据层实现为数据代管者Broker,针对于不同的实体对象,主要的分别有三类Br
oker:SongBroker、SongListBroker、AccountBroker。域层的设计主要针对Account、Song、SongList四个实体进行,每个实体对象存储了对象相关的数据结构和行为。系统实体类模型如图3所示。
图3中的各个实体的描述如下:
Account:通过系统注册的账户,分为两类:Fan和Creator;
Fan:系统主要的用户。简单来说,即使用系统听歌的普通用户;
Creator:系统的特殊用户,拥有上传音乐作品到系统的特权;
Song:系统中的歌曲,该实体记录了单首歌曲的基本信息,如歌名、专辑、路径等等;
SongList:系统中的歌单,该实体记录了单个歌单单的基本信息,如歌单名、创建者、创建时间、简介等等;
UploadSystemList:记录创作者上传音乐的列表,继承于SongList实体。该实体与Crea
tor限定关联,即只有创作者才可拥有该实体对象;
Commit:记录了系统中某条评论的基本信息,如时间、评论者等等。对于歌曲、歌单和用户来说,都和评论有一对多的关联关系;
Log:代表了系统中用户相关的所有日志,如播放日志、下载日志等等。其属性记录了日志的时间、主人以及相关日志内容;
LogLine:系统日志中的某一行,与Log存在一对多的关联关系;
AccountLog:从账户Account和Log的关联关系中提取出的关联类,主要用于体现其关联,并记录相关关联数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论