区块链毕业_基于.NET Core的在线音乐系统的设计与实现

摘要
市场调研发现,移动互联网的高速发展和4G网络的全面普及,高速移动网络下提供单一功能的在线音乐服务已经无法满足用户日益增长的需求,侧重互动社交服务的音乐类平台的市场占有率、用户访问量和用户粘度等均明显高于同类竞品,“音乐社交化”已经成为在线音乐服务的未来发展发展趋势,但目前大量平台的互动模式略显单调,针对这一现象,引入新的思考,旨在设计一款音乐评论和分享模式丰富,强调即时性互动社交的在线音乐系统。
在线音乐系统采用MVC框架,Rest full API 接口风格,服务器应用基于使用开源协议的.NET Core,服务端应用程序部署在阿里云的轻量级应用服务器LAMP 6.1.0上,选定LayUI的Web前端框架作为后台管理界面技术方案,ORM采用Entity Framework Core 连接MySQL数据库,移动App采用市场占有率较高的Android系统进行开发。系统经过单元测试、接口测试、集成测试等严格测试,界面设计简洁美观、使用简单方便,用户体验较为良好。
在线音乐系统是一款面向所有喜欢音乐且乐于分享音乐群体的开放性音乐共享系统。用户使用移动端Android APP作为系统入口,可以浏览本地或在线音乐,欣赏推荐音乐,收藏音乐,搜索歌曲,下载歌曲,查看各种音乐榜单;后台管理平台使用浏览器登陆,可以管理与维护音乐信息,如编辑、删除和上传歌曲信息,艺人信息,专辑信息及其相关文件等。

关键词:.NET Core,在线音乐系统,安卓 APP,音乐社交

Abstract
Market research and development found that the rapid development of mobile Internet and the full popularization of 4G have made it impossible to provide single-function online music services to meet the growing needs of users. The market share, user visits and user viscosities of music platforms focusing on interactive social services are significantly higher than those of similar competitors. Music socialization has become the future development of online music services. In view of this phenomenon, new thinking is introduced to design an online music system with abundant music commentary and sharing modes, emphasizing instant interactive social interaction.
Online music system adopts MVC framework and Rest full API interface style. Server application is based on. NET Core using open source protocol. Server application is deployed in the lightweight application server LAMP 6.1.0 in Aliyun. Web front-end framework of LayUI is selected as backstage management interface technical solution. ORM uses Entity Framework Core to connect MySQL database and mobile App uses market share. High Android systems are being developed. After unit testing, interface testing, integration testing and other rigorous tests, the system has simple and beautiful interface design, simple and convenient use, and good user experience.
Online music system is an open music sharing system for all music-loving and music-sharing groups. Users can browse local or online music, enjoy recommended music, collect music, search songs, download songs and view music lists by using Android APP as the system entrance. Background management platform can manage and maintain music information, such as editing, deleting and uploading song information, artist information, album information and related documents by using browser landing. And so on.

Keywords: .NET Core, Online Music System, Android APP, Music Social

目录
第1章 引言 1
1.1 研究背景和意义 1
1.2 国内外研究现状 2
1.2.1 国外研究现状 2
1.2.2 国内研究现状 2
1.3 主要内容和工作安排 3
第2章 系统相关技术简介 5
2.1 后端技术及设计模式 5
2.2 LayUI前端框架 7
2.2 Android技术简介 7
2.3 MySQL数据库技术简介 8
2.4 开发与运行环境介绍 8
2.4.1 开发环境 8
2.4.2 运行环境 9
2.4 本章小结 9
第3章 系统需求分析 11
3.1 系统设计目标 11
3.2 系统需求分析 11
3.2.1 可行性分析 11
3.2.2 性能分析 12
3.3 系统功能概述 12
3.4 用例模型 13
3.5 本章小结 15
第4章 系统总体设计 17
4.1 系统结构设计 17
4.1.1 设计思想 17
4.1.2 功能模块 18
4.2 数据库设计 19
4.3.1 系统E-R模型设计 19
4.3.2 系统数据库表设计 21
4.3 系统通信方式 22
4.4 本章小结 24
第5章 系统详细设计与实现 25
5.1 注册登陆模块 25
5.2 权限中心模块 27
5.3 音乐播放模块 28
5.4 在线音乐模块的设计与实现 29
5.5 后台管理模块 31
5.6 本章小结 32
第6章 系统测试 33
6.1 系统测试概述 33
6.2 测试方法与用例 33
6.2.1 单元测试阶段 33
6.2.2 接口测试阶段 34
6.2.3 集成测试阶段 37
6.3 本章小结 38
第7章 总结与展望 39
7.1 主要工作与创新点 39
7.2 后续研究工作展望 39
参考文献 41
致谢 43
附录 英文翻译 45

第1章 引言
1.1 研究背景和意义
在线音乐指的是通过互联网的方式获取音乐资源,传统的在线音乐平台多采用门户网站,音乐站点等方式,提供音乐下载服务,音乐的来源与音乐的播放设备之间的关系处于一种强烈的撕裂状态。而随着网速的提高,在线音乐播放成为了可能,市场上出现大量此类产品。移动互联网的诞生,让音乐无处不在。高速移动互联网让音乐社交成为可能。
移动音乐是指移动终端设备通过移动网络进行传输的音乐,其设备主要包括手机、平板电脑以及智能手表与VR眼镜这种可穿戴式设备,网络包括连接互联网的WIFI,移动通讯网络等,移动音乐涵盖基础的音乐播放服务、电台(网易云音乐的私人电台)、铃声、娱乐、学习(如唱吧与全民K歌)等层面并渗透进直播、游戏等领域。
移动互联网时代的在线音乐服务具有社交的无限潜力。音乐社交的根本动因在与相互关注和情感连带以及理性的“互动仪式市场”这一互动仪式链的核心机制。高速网络与资费降低的情况下,用户对音乐下载服务已经逐步丧失兴趣,而转向于流媒体音乐服务。对于移动音乐来说,早期的“播放器时代”意味着光靠音乐曲库留住用户已非上策,多元化发展、不断提升产品和服务的种类与质量才是出路。而在线音乐平台服务趋向与多元化,满足用户听(综合音乐服务)唱(移动K歌)看(视频MV)玩(粉丝互动)的多维需求。
本课题“基于.NET Core在线音乐系统”,将致力于为用户群体提供良好的使用体验,如多样化的音乐推荐,包括各种音乐榜单,乐友的推荐歌单,音乐专属推荐,以及改良的评论聊天功能。
1.2 国内外研究现状
1.2.1 国外研究现状
从全球来看,2015年全球数字音乐规模第一次超过了实体唱片,其中下载服务收入与流媒体服务收入的比值达到1.05,占总收入的88%,而总体规模则达到67.0亿美元,虽然下载服务比上一年下降了10.5%,但受到流媒体45.2%增速的影响,数字音乐整体规模保持了9.8%的增长。而随着智能手机的全面普及、高品质音乐服务增加及音乐订阅服务增加以及乐迷版权意识的增强等趋势,未来,流媒体收入将很快取代下载服务在在线音乐服务收入中的地位。
多亏了音乐流媒体的服务,全球唱片公司在去年获得突破性盈收,尤其是是三大(环球、华纳、索尼),据估计,他们去年每日从Spotify和Apple Music等流媒体获得的收益高达1420万美元,光是环球唱片一家,来自流媒体的每日收益就高达450万美元(引用)。
IMS(International Music Summit)近日发布2016全球电子音乐产业报告,显示去年电子音乐产业蓬勃发展,并对电子音乐行业的未来表示乐观。2015年行业产值增长了3.5%,虽然与前几年相比有所下降,但报告认为市场前景仍属乐观,并特别指出流媒体的迅速发展以及新兴市场(如南美洲、中国)的成长是支撑电子音乐产业发展的关键驱动因素。而美国市场的成熟显示出过去几年爆发式的增长正在转移到持续大规模的发展轨道。
1.2.2 国内研究现状
视线转到国内,音乐产业稳步朝着“十三五”规划中的音乐产业目标产值3000亿发展,2015年12月,国家新闻出版广电总局发布的关于促进中国音乐产业发展的若干条意见指出,计划在“十三五”期间,打通音乐相关横向纵向产业链,形成上下游交相呼应的格局,支撑起音乐产业综合体系,到“十三五”期末,整个音乐产业实现产值3000亿元。就移动音乐市场而言,数据显示,2015年中国移动音乐市场规模已达到63.7亿元,2017年上升至112.4亿元,今年预测将达到142亿元。
从未来发展情况看,受智能手机用户大规模增长、高品质音乐订阅服务增加及相关乐迷向正版音乐服务迁移等的影响,从图1.2可以查出,未来,流媒体收入将很快超过下载服务收入,成为数字音乐的主要收入来源。
1.3 主要内容和工作安排
本论文阐述的是基于.NET Core的在线音乐系统。系统总体上分为移动端Android APP和浏览器端后台管理,系统主要用户群体为音乐用户和管理用户。移动端Android APP作为入口,主要包含5个功能:本地音乐、歌曲搜索、在线歌单(榜单)、音乐播放、歌曲详情及编辑和歌手详情。浏览器端后台管理主要是信息管理功能,包括用户管理、歌曲管理、专辑及艺人管理、组织管理和授权管理。本课题研究的主要内容如下:
第1章 引言,主要引入系统的研究背景和意义,分析国内外研究状况。
第2章 系统相关技术简介,对系统开发中用到的主要技术进行了简要介绍。
第3章 系统需求分析,描述了系统设计目标,对系统进行需求分析,包括可行性分析和性能分析,简要介绍系统功能以及对系统用例模型进行描述。
第4章 总体设计,介绍系统结构设计,包括系统设计思想和系统功能模块的划分,详细描述了系统数据库设计中的需求分析与设计、概念结构设计和逻辑结构设计。
第5章 系统详细设计与实现,详细描述系统各个模块的设计与实现。
第6章 系统测试,介绍系统测试目标,将系统测试划分为三个阶段,以及每个阶段的测试方法和示例用例。
第7章 总结与展望,作为论文的结束语,总结在线音乐系统项目中做了哪些工作,对在线音乐系统目前存在的问题和未来的扩展方向做出概述。

第2章 系统相关技术简介
2.1 后端技术及设计模式

  1. .NET Core技术
    .NET基金会的.NET Core由Microsoft进行官方支持。使用最为宽松的MIT和Apache 2.0 开源协议,文档协议遵循CC-BY。这将允许任何人任何组织和企业对其做任意处理,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版权和许可提示,后者协议将会除了为用户提供版权许可之外,还有专利许可,并且授权是免费,无排他性的(任何个人和企业都能获得授权)并且永久不可撤销,相较于Oracle对Java和MySQL的开源协议,Microsoft做出了最大的诚意。其具备特性有:
    ① 上手简单,基于C#这种使用较为通用语法的编程语言,并且有大量的类库,覆盖面积广泛,.NET Core可以让系统开发人员快速上手。
    ② 功能强大,.NET Core有庞大的开源社区,成员以较为快速的频率向其增加新的能力。
    ③ 跨平台,Microsoft意识到开源与跨平台的思想,.NET Core支持多种应用平台。
  2. MVC设计模式
    MVC的全称是Model View Controller,最初是20世纪80年代为一种编程语言发明的一种软件设计模式,其结构如图2.1所示,其中M代表模型层Model,V代表视图层View,C代表控制器层Controller,其衍生出MVP和MVVM设计模式,MVVM设计模式多用于前端架构,通常采用适配器来连接模型与视图。MVC设计模式利用控制器来分离模型和视图,从而达到一种层间松散耦合的效果,大大减弱了业务逻辑与数据接口的耦合性,提高了系统的灵活性、复用性以及可扩展性,这在web系统的功能平面展开是极其有利的,所以现代Web系统多采用MVC设计模式。

图2.1-传统的MVC设计模式示意图

MVC模式的弊端在于数据库模型到视图层的直接映射,在Web系统中,视图层的展示是在浏览器上的,这会导致敏感数据的泄露,采取的解决方案是利用DTO(Data Transfer Object)进行数据传输,这个概念的来源是J2EE的设计模式,目标是为应用提供粗粒度的数据实体,从减少分布式调用次数,这里泛指展示层与服务层之间的数据传输对象,可用来做数据过滤。

图2.2-现代Web系统常用MVC设计模式示意图

现代Web系统常用MVC设计模式如图2.2所示,后端多采用IOC框架,层与层之间的访问都面向接口,具体的实现逻辑依赖于依赖注入框架注入,这在最大程度上解耦了层与层之间的依赖。
2.2 LayUI前端框架
LayUI,是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。其外在风格简约,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代码到 API 的每一处细节都经过精心雕琢,非常适合界面的快速开发。LayUI 首个版本发布于2016年秋,她区别于那些基于 MVVM 底层的 UI 框架,却并非逆道而行,而是信奉返璞归真之道。其特性为:

  1. 使用简单,不需要通过webpack等工具进行打包操作,没有复杂的配置。
  2. 响应快速,没有编译处理过程,如JQuery等前端框架一般可以直接拿来便用,即时更改与响应。
  3. 元素与交互逻辑清晰,没有服务器的干扰,只需要面对浏览器本身,处理起来得心应手。
    2.2 Android技术简介
    Android是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由Google(谷歌)公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机、智能手表等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。 [1] 2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。Android具有以下几个重要特性:
    1)基于Linux的开源操作系统,所以使用它进行应用开发不需要为此付费。
    2)全球市场占有率高达80%,因此开发出的APP可以在大量设备上运行。
    3)有完善的官方支持,和第三方社区,所以可以在项目中使用大量的第三方库来缩短开发周期。
    2.3 MySQL数据库技术简介
    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。MySQL具有以下重要特性:
    1)MySQL 是开源的,所以你不需要支付额外的费用。
    2)支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
    3)支持多线程,充分利用 CPU 资源。
    4)优化的 SQL查询算法,有效地提高查询速度。
    5)使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
    6)提供用于管理、检查、优化数据库操作的管理工具。
    2.4 开发与运行环境介绍
    2.4.1 开发环境
    1)硬件环境
    表2.1 开发时的硬件环境
    类型 规格与尺寸
    处理器 i5-7400 3.00GHz
    内存 8.00 GB
    硬盘 126GB 固态硬盘 + 1TB 机械硬盘

2)软件环境
表2.2 开发时的软件环境
名称 说明 版本
Microsoft Windows 系统环境 10.0.17134
Microsoft Visual Studio 服务端应用集成开发环境 Community 2017 15.9.11
Visual Studio Code Web前端页面编写工具
Android Studio 移动端应用集成开发环境 3.4
Oracle MySQL 开源数据库 5.7
Google Chrome 浏览器 74.0.3729.131 64位
Navicat 数据库连接工具 11.2.7 64-bit
Git 版本控制工具 2.17.0.windows.1
Postman 接口测试工具 6.5.2
2.4.2 运行环境
1)硬件环境
表2.3 部署时的硬件环境
类型 规格与尺寸
处理器 虚拟1核
内存 2.00 GB
硬盘 40GB SSD云盘

2)软件环境
表2.4 部署时的软件环境
名称 说明 版本
CentOS 服务器操作系统 7.3 64位
Jexus 服务器应用平台
Very Secure FTP FTP服务器搭建工具
Android 移动应用部署环境 8.1+
Google Chrome 浏览器系统 74.0.3729.131 64 位
Oracle MySQL 开源数据库 5.7

2.4 本章小结
本章主要介绍了该系统开发用到的主要技术,前台开发的安卓APP技术简介,后台管理界面开发LayUI框架技术基本原理介绍,后端开发的.NET Core,MVC设计模式,以及关系型数据库MySQL相关介绍。

第3章 系统需求分析
3.1 系统设计目标
在线音乐系统是一款面向所有喜欢音乐且乐于分享音乐群体的开放性音乐共享系统。用户使用移动端Android APP作为系统入口,可以浏览本地或在线音乐,欣赏推荐音乐,收藏音乐,搜索歌曲,下载歌曲,查看各种音乐榜单;后台管理平台使用浏览器登陆,可以管理与维护音乐信息,如编辑、删除和上传歌曲信息,艺人信息,专辑信息及其相关文件等。
3.2 系统需求分析
3.2.1 可行性分析
1)技术可行性
技术可行性分析主要评价总体方案所提出的技术条件,如目标设备的软件与硬件等,能否满足新系统目标的要求,以及开发人员的技术积累是否能满足新系统目标的技术要求,对于技术难点是否能在预期时间内得到的和解决方法进行可行性进行分析。
在线音乐系统采用开源的.NET Core作为服务器应用搭建。.NET Core拥有不错的社区,Microsoft对其做了大量封装,使得上手非常简单,各种框架的使用可以方便容易的构建起一个服务器应用项目。数据库采用MySQL进行开发,Microsoft的Entity Framework Core作为ORM框架可以使开发过程中不必写一行SQL代码,数据访问层遵循Code First准则可以大量减少技术学习成本。移动客户端采用Android APP进行开发。Android APP开发有大量的学习资源可以利用,在GitHub上可以搜索到大量可复用的第三方组件。因此整个系统的开发在技术层面上,是完全可行的。
2)经济可行性
在线音乐系统基于.NET Core实现,开发文档较为全面,且上手容易,开发效率高,后期维护成本低,系统开发中使用的开发工具和软件多为开源或免费版,所以技术版权费用低。系统需求简洁直观,不存在复杂的功能。系统规模小,技术难点少,对开发人力和财力需求不高,而且系统开发周期短,因此在经济上具有较高的可行性。
3)操作可行性
本系统是以Android APP作为入口,界面美观,功能简单易用,用户随身携带手机即可对系统进行访问和操作。而浏览器的后台管理,由于计算机所具备的屏幕尺寸可以很好的支持管理员进行精确细微的管理工作,两种操作需求都得到了妥善的解决。
3.2.2 性能分析
1)UI性能
本系统在运行时,要求界面加载流畅,画面自然连贯,保证手机操作过程中的连贯性,无明显卡顿。
2)时间特性
本系统在运行时,要求响应用户的操作时间在1s以内,更新处理的时间在1.5s以内,数据转换和传送处理的时间在3s以内,对于在线数据访问异常的问题,应该在短时间内获得提示,避免用户等待焦虑的出现。
3)数据库性能
本系统规模并不是很大,所以在数据库性能方面满足常用的增删查改操作即可,需要至少2GB的硬盘空间用来存储数据库数据信息,对数据库的表至少支持1000条数据库语句。
4)文件系统性能
由于需要存储用户上传的音乐文件,专辑歌手图片等,本系统需要1TB左右的硬盘空间来保存相关音乐文件,必要时可以采用独立的文件服务器,来处理大流量文件数据。
3.3 系统功能概述
1)用户功能
用户可使用安卓APP登录该系统。
用户可在本地音乐列表浏览所有扫描到的本地音乐,可以设置过滤长度和大小以排除一些干扰项,点击更多操作可将其分享,设置为手机铃声,查看歌曲信息以及删除歌曲,在歌曲详情页,可查看歌曲名称、艺术家、专辑、播放时长、文件名称、文件大小、文件路径,还可以修改本地歌曲封面。
用户使用系统连接网络之后,可以在在线音乐界面浏览在线音乐歌单列表,这些歌单包含用户喜欢或收藏的歌单,或者系统推荐给用户的歌单,以及各大榜单,单击歌单将进入歌单或榜单详情,在榜单详情界面,用户将看到榜单标题、最近更新时间、榜单描述以及该榜单包含的歌曲列表,每项包含歌曲的封面、标题、艺人以及专辑信息,单击歌曲条目将其添加进播放列表,并且处于正在播放,用户还可以将歌曲分享给朋友、下载歌曲以及查看歌手信息,查看歌手信息将进入歌手信息详情页面,该页面主要展示歌手图片以及其简要信息。
用户可以点击搜索按钮进入搜索界面,输入关键词,系统将会按照关键词在歌手名称、专辑名称以及歌曲名称中查询歌曲信息,展示在下方的搜索结果列表当中,用户可以对搜索到的音乐进行播放分享下载操作。
用户可利用主页下方的播放面板进行播放控制,如:播放或暂停、下一首以及进入播放详情页面和播放列表页面,在播放列表页面中,该页面包含需要被播放的歌曲,这些歌曲将按照播放顺序进行播放,用户可以将不想听的音乐从该列表中移除,在播放详情页面中,提供了播放面板没有的播放顺序切换、上一首、封面唱片效果、音量调节、歌词信息展示以及播放进度控制。
2)管理员功能
管理员使用浏览器通过后台界面登录该系统。
后台管理界面主要包含一些管理功能,有用户管理、歌曲管理、专辑管理、艺术家管理、组织管理、角色管理以及授权管理。
3.4 用例模型
该系统分为用户和管理员两类角色使用,下面是两类角色的用例模型。
1)用户
用户使用Android APP登录系统后,可浏览本地音乐,可播放本地音乐,设为铃声,查看歌曲详情,修改封面。联网后可以在在线音乐界面浏览在线榜单,进入榜单详情页,可以查看榜单刷新时间,榜单描述,以及音乐列表,可以播放音乐,分享音乐,查看歌手信息,以及下载在线音乐。用户可以点击搜索按钮进入搜索界面,输入关键词通过歌手名称、专辑名称以及艺人名称搜索歌曲,可以将搜索到的歌曲分享与下载。用户用例图如图3.1所示。

图3.1 用户用例图

2)管理员
管理员从后台登录系统后,可进行一系列管理操作。用户管理,可查看用户信息、添加用户、编辑用户信息、删除用户信息;歌曲管理,可查看歌曲信息、添加歌曲、编辑歌曲信息、删除歌曲信息;专辑管理,可查看专辑信息、添加专辑、编辑专辑信息、删除专辑信息;艺人管理,可查看艺人信息、添加艺人信息、编辑艺人信息、删除艺人信息;组织管理,可查看组织架构、添加子组织、编辑组织信息与结构、删除组织节点;角色管理,可查看角色信息、添加角色、编辑角色信息、删除角色信息,授权管理,查看权限,添加与移除权限。管理员用例图如图3.2所示。

图3.2 管理员用例图
3.5 本章小结
本章主要介绍了系统的需求分析,系统的设计目标,系统可行性分析,性能分析,系统功能概述,系统的用例模型。其中可行性分析从技术可行性、经济可行性、操作可行性三方面进行了分析,系统功能概述对系统的主要功能做了介绍,最后详细描述了系统的用例图。

第4章 系统总体设计
4.1 系统结构设计
4.1.1 设计思想
系统结构设计主要是进一步对系统功能模块进行模块化,并对系统的功能进行一个合理的划分,划分的主要依据是用户的总体需求及其业务功能,按照第三章的系统需求分析可以得知,系统主要参与者包含,用户和管理员,为了使模块独立,体现“高内聚、低耦合”的设计目标,本系统从什么角度划分为什么。
系统分为两个客户端,通过浏览器和Android APP,访问应用服务器,应用服务器处理主要逻辑,访问数据库和文件系统,系统的整体架构如如图4.1所示。而客户端和服务器交互的架构图如图4.2所示,

图4.1 客户端和服务器整合的系统架构图

图4.2 客户端和服务器交互架构图

4.1.2 功能模块
由第3章的需求分析结构可以知道,系统主要分为本地和在线音乐模块,音乐播放模块,后台管理模块以及授权中心模块。图4.3展示了系统功能结构设计。

图4.3 系统功能划分思维导图

各个功能模块具体描述如下:
1)注册登陆模块:该模块主要实现账号的注册登陆,注销登出系统。
2)本地音乐模块:客户端Android APP扫描本地音乐,可以播放本地音乐,分享、设为铃声以及删除本地音乐。
3)在线音乐模块:该模块主要实现用户查看在线榜单,查看在线音乐列表,查看歌手信息等。
4)音乐播放模块:该模块主要实现用户对音乐播放的控制,如播放顺序、下一首、播放列表,以及歌词的显示。
5)后台管理模块:该模块主要实现管理员对音乐相关信息的管理和维护,如:歌曲、艺人、专辑信息的增删查改。
6)音乐搜索模块:该模块主要是提供给用户音乐搜索服务。
7)授权中心模块:该模块主要提供与权限相关的角色管理,角色授权管理,角色绑定管理。
4.2 数据库设计
在系统总体设计阶段,系统数据库设计主要是通过概念建模得出整个系统的实体-关系(Entity-Relationship, E-R),这是独立于任何一种数据库管理系统(Database Management System, DBMS)信息结构的数据模型,然后再通过逻辑设计将概念模型E-R图转化成指定的逻辑模型。
4.3.1 系统E-R模型设计
在构建系统E-R模型时需要遵守以下标准:

  1. 实体是现实事物的抽象,有其独立的意义。
  2. 属性是用来描述特征。
  3. 要确定属性是属于实体还是属于关系。
    由第3章系统功能需求分析可以构建出系统的8个主要实体,包括“歌曲”、“专辑”、“艺人”、“歌单”、“用户”、“组织”、“权限”、“角色”这8个实体,其实体属性描述如下:
    (1) 艺人:ID、名称、简介、出道时间、生日。
    (2) 专辑:ID、名称、描述、发布时间。
    (3) 歌曲:ID、名称、介绍、时长、发布时间、URL、来源。
    (4) 歌单:ID、名称、来源、描述、创建时间、更新时间、删除时间、是否删除、更新类型、歌曲数量
    (5) 用户:ID、用户名、密码、头像、电子邮箱、地址、描述、生日、性别、唯一码。
    (6) 组织:ID、名称、描述。
    (7) 权限:ID、名称、描述。
    (8) 角色:ID、名称、描述。
    同时,可以得出各个实体间的关系如下:
  4. “歌曲”实体和“专辑”实体存在“合辑”关系。一张专辑里面有多首歌曲,但同一首歌曲不能存在于多张专辑中,故它们之间存在一对多(1:n)联系。
  5. “专辑”实体和“艺人”实体存在“著作”关系。一张专辑是由一个艺人发布的,一个艺人可以发布多张专辑,故它们之间存在一对多(1:n)联系。
  6. “歌曲”实体和“歌单”实体存在“包含”关系。一首歌曲可以存在于多个歌单中,一个歌单包含多首歌曲,故它们之间存在多对多(m:n)联系。
  7. “用户”实体和“歌曲”实体存在“搬运”关系。一个用户可以搬运多个歌曲,一首歌曲可以被多个歌单包含,故它们之间存在多对多(m:n)联系。
  8. “用户”实体和“组织”实体存在“所属”关系。一个属于一个组织,一个组织包含多个用户,它们是一对多(1:n)关系。
  9. “用户”实体和“角色”实体存在“绑定”关系。一个用户可以有多个角色,一个角色可以被多个用户拥有,故它们是多对多(m:n)关系。
  10. “角色”实体、“组织”实体和“权限”实体存在“授权”关系。这三者之间皆可以相互关联,故它们之间有(kⓂ️n)多对多对多联系
    由以上实体及其属性与实体之间的联系可得出系统概念模型如图4.4所示。

图4.4 系统E-R图
4.3.2 系统数据库表设计
由4.1.1 小节分析得到的系统概念模型E-R图可以进一步转化为数据库的关系模型,再由关系模型设计数据中的表结构,最终实现数据库设计,
下面将给出数据库表信息如表4.1所示,以及主要数据表的定义如表4.2所示。

表4.1 数据库信息表
数据库表名 对应关系模型名 中文说明
Artists 艺人 艺人信息表
Albums 专辑 专辑信息表
Songs 歌曲 歌曲信息表
Playlists 歌单 歌单信息表
Users 用户 用户信息表
Organizations 组织 组织信息表
Roles 角色 角色信息表
Permissions 权限 权限信息表
RelRoleOrgPers 授权 授权信息表

表4.2 艺人信息表
字段名 字段类型 长度 允许空值 注释 主键
Id varchar 36 否 ID 是
Name varchar 63 是 名称 —
Description varchar 511 是 描述 —
DebutTime datetime 0 是 出道时间 —
CreateTime datetime 0 是 创建时间 —
BirthTime datetime 0 是 生日 —

图4.5 数据库关系模型

4.3 系统通信方式
由于本系统“.NET Core 在线音乐系统”涉及到两个端(浏览器(B/S)与安卓应用(C/S))与服务器之间的通信,为了减轻服务端应用API接口的冗余性,本系统决定编写一套完整的API接口规范来约束通信的复杂度。
目前网络数据传输格式的有XML、YAML、JSON、Protocol Buffer、二进制流,由于本系统包含有多个端,基于HTTP协议,所以决定采用应用范围广,解决方案多,具有较强表现力和效率的JSON作为数据交换格式。
JSON(JavaScript Object Notation)是一种轻量级数据交换格式,在JSON官方网站可以发现JSON在多达59种语言和平台中的第三方类库支持[15],是理想的跨平台数据传输解决方案。JSON主要有如图4.6-7两种数据结构创建语法格式。

图4.6 创建JSON对象的语法格式

图4.7 创建 JSON 数组的语法格式

本系统使用到的通信规范,
请求体:
分页:{ “pageIndex”: 0, “pageSize”: 10, “keyword”: “keyword”}
响应体:
分页:{“code”: “0”, “message”: “message”, “totalCount”: 100, “pageIndex”: 0, “pageSize”: 20, “data”: [{}]}
删除/编辑/添加:{“code”: “0”, “message”: “message”}
响应Code的值及其含义如表4.3所示:

表4.3 Code的值及其含义
Code的值 类型
0 成功(删除/添加/修改/查询)
100 模型无效
101 请求参数为空
102 添加的对象已经存在
400 请求数据错误
403 资源访问不被允许
404 找不到被访问的资源
500 服务器发生错误

4.4 本章小结
本章为目标系统总体设计部分,主要介绍了系统结构设计思想,系统的功能模块划分,系统E-R模型,并给出数据库中表的逻辑设计及其关系模型。
第5章 系统详细设计与实现
通过第四章的分析与设计,主要明确了系统的整体体系结构与相关功能模块的划分,在本章将针对各个功能模块进行详细设计与实现,详细介绍核心功能模块设计与实现,内容设计到浏览器用户界面设计、Android客户端用户界面设计、服务器端数据处理与存储过程实现。
5.1 注册登陆模块
后台管理平台必须要进行登陆验证身份,服务器端将会在Session中保存登陆信息,大量的后续操作需要使用身份验证其是否具有权限。

  1. 系统注册和登陆设计与实现
    图5.1 主要展示了系统用户注册信息流程图。

图5.1 系统注册流程图

客户端浏览器主要获取用户输入的用户名与密码,验证输入格式是否正确,发出注册请求,服务器接收到注册请求后,先在用户信息表中查询是否有同样的用户名存在,若存在相同的用户则将错误信息返回到浏览器,页面提示用户名重复。若不存在相同的用户名,则服务器将该条注册信息插入到用户信息表中。
系统用户注册使用.NET Core的Razor框架,携带表单数据请求控制器SignContrroler的Up方法。
登陆的流程与注册类似,当服务器验证通过之后会在Session中保存用户的登陆信息。当用户登出时,服务器将会清除掉用户在Session中保存的登陆信息。
注销操作客户端只需要点击注销按钮,服务器将会把用户信息从用户信息表中删除。
对功能的描述,流程图,泳道图,活动图或者时序图,类图??关键代码,效果图对功能实现细节的描述。
图5.2-3 为注册登陆模块相关实现效果图。

图5.2 注册/登陆效果图

图 5.3 修改密码效果图
5.2 权限中心模块
权限中心,主要用来维护系统的用户组织信息,以及角色权限信息,该系统的访问控制模式为基于资源的权限访问控制RBAC(resource-based access control),系统的每一个接口都可以算作一个资源,每一个资源都应该被权限所控制,同一种类的资源归属于不同的域(组织)中,即,用户访问一项资源,必须满足某项权限,而该权限可以由系统或者授权管理员进行分配。因为用户大多呈现出一种显要的群组状态,在系统中通过角色来进行分组操作,用户在进行资源访问的时候,系统只需要判断该用户所拥有的角色是否具有访问该资源的权限即可,如此便大量节省了数据库资源,并且大大提高了授权的操作便易性。
基于资源的访问控制可以精确的控制每一项资源的分配,管理员登陆系统后可在权限中心对权限相关的内容进行管理和维护。
下面是具有组织管理权限的管理员进行组织管理操作的活动图。

图5.4 组织管理活动图

由图5.4可以知道管理员进行管理操作时也需要具备组织管理权限,而当管理员没有用户管理权限时,便不能在组织下进行添加用户操作。
5.3 音乐播放模块
用户使用客户端APP,进入播放界面,按照播放顺序播放播放列表中的歌曲,歌曲文件的来源分别为本地和在线。音乐的播放路径分别为文件系统路径和URL,Android的MediaPlayer可以自动进行两种文件的播放。图5.5所示为歌曲播放状态图,它描述了通过点击歌曲播放界面的各个按钮,使歌曲在各个状态之间流转。

图5.5 歌曲播放状态图

图5.6为播放详情效果图和播放列表效果图。

图5.6 播放详情与播放列表效果图

5.4 在线音乐模块的设计与实现
本部分用户浏览在线榜单,浏览榜单详情,搜索在线音乐。在线榜单列表包含系统推荐榜单,用户收藏歌单,以及其它音乐门户榜单等。榜单详情主要包括该榜单更新时间,榜单描述,榜单名称以及榜单所包含的歌曲列表。搜索音乐功能主要是通过关键字模糊歌曲名称、专辑名称以及艺人名称等。

图5.7 在线音乐榜单效果图

图5.8所示为歌曲搜索与歌手信息效果图,用户可以对搜索到的歌曲进行分享和下载操作。用户可以查看在线音乐的歌手信息。

图5.8 音乐搜索与歌手信息效果图

5.5 后台管理模块
该模块主要是对音乐信息的管理和维护,包含歌曲信息、专辑信息、艺人信息的增删查改操作。皆大同小异,遂将歌曲信息管理作为例子进行详细介绍。
管理登陆后台管理成功之后,点击歌曲管理,将查看到已有的歌曲列表,
图5.主要展示了管理员登陆系统后可以进行的操作的活动图。

图5.9 后台管理活动图

图5.10 后台管理-歌曲管理效果图

5.6 本章小结
在本章,首先介绍了目标系统的开发与部署环境;通过各种图例等方式对系统的部分重点功能进行详细说明,并给出了每一部分的关键步骤;最后对系统的部分功能展示的实现效果图。

第6章 系统测试
6.1 系统测试概述
在整个软件开发流程中,软件生命周期模型被认为是指导团队各个时期总体目标与任务的指导意见,该系统使用敏捷开发模型,要求测试人员在需求分析阶段就参与进来,对需求进行测试,只有测试通过才允许需求的添加和变更,此举有利于需求分析的完善,严格把控最后输出产品的质量,使用OKR(Objectives and Key Results)即目标与关键成果法作为管理方法论,可以利用的到工具有禅道、Teambition以及MS Project等,以明确“目标”以及明确每个目标达成的可衡量的“关键结果”。
软件测试与系统需求分析同步的意义在于,测试人员可以对需求完整性和合理性提出宝贵意见,这在敏捷开发中尤其重要,可以避免大量需求变更,进一步提高开发效率,也能让测试人员设计出更符合实际的测试方案。
对整个系统进行测试,将硬件、软件、使用人员看作是一个整体。发现系统分析和设计中的错误,判断功能是否完善,测试系统的稳定性。
6.2 测试方法与用例
本系统将测试分为几个阶段,依次为:单元测试(VS的xUnit测试框架),接口测试(Postman接口测试工具),集成测试。
6.2.1 单元测试阶段
单元测试(Unit Testing)指最小可测单元,单元测试主要由程序开发人员来完成,主要测试业务层的功能是否符合预期,以及是否健壮。
在VS中如何进行单元测试,解决方案右键添加一个项目,选择xUnit单元测试项目,创建一个类,用来做测试依赖初始化操作,再按照测试类的不同编写不同的测试类,每个测试类用Collection特性修饰(再执行测试单元阶段,同一个分组将会被集中在一起),为每个测试类编写各个测试方法,用Fact特性修饰,以下是一个分页搜索用户歌单的测试用例。
在单元测试中经常会被用到的就是断言(Assert),当执行单元测试用例时,断言将会判断预期的期望结果和实际结果是否符合规则,如不能满足将会在测试面板中显示提示信息,单元测试可以进行批量操作,有利于在功能模块修改之后测试之前的模块是否受到连带影响。
6.2.2 接口测试阶段
该系统前端与后端的交互是通过接口来实现的,接口测试就是通过输入和输出检查业务逻辑是否正常。
系统使用了两种方案来进行接口测试,Swagger和Postman,Swagger是一个接口文档自动生成框架,并且包含了接口测试功能。其优点在于,配置简单,只需要几行代码就可以引入框架;快速响应,只需要在接口编写阶段写好注释,程序执行时就会动态生成最新的接口文档;接口测试,Swagger生成的API文档可以直接进行接口测试,这在快速开发中尤为重要。Postman是一款易用性较为良好的接口测试工具。其优点在于,云备份,测试用例可以进行云备份,有利于多设备开发中的接口测试;使用简单,测试用例的编写较为简单。

  1. Swagger 测试
    ① 配置
    ② 访问
    运行服务端应用程序后,输入http://localhost:7001/api/swagger进行访问。效果图如下:

图6.1 Swagger API文档效果图

③ 测试
使用Swagger进行接口测试只需要在接口文档中找到该接口,双击从下方滑出接口详细信息,以及测试输入框,点击【Try it out】,输入请求参数,点击【Execute】,接口响应结果在下方可以看到。Swagger测试的优势在于反映了系统的最新状态,有利于在一个接口编写完成之后进行一个简要的快速测试。
2) Postman 测试
Postman是一款轻量级的接口测试工具,使用它可以快速编写出一个接口测试用例,支持多种请求响应格式,包括预处理脚本,可以支持较为复杂的接口测试用例编写。登陆Postman之后可以免费将测试用例保存在云端,以便在不同设备上进行测试工作,图6.2是一个歌曲收藏接口的测试用例效果。

图6.2 使用Postman测试歌曲收藏效果图
从HTTP响应码可以得知,该接口无法被找到,分析原因,是URL编写错误,修改后即可通过测试。
6.2.3 集成测试阶段
集成测试阶段,主要是用来测试整体的业务流程。下面是部分测试用例。
表6.1所示测试用例用来测试添加歌曲功能是否正常工作。
表6.1 添加音乐测试用例
测试编号 HT-SO-ADD-1 测试功能点描述 后台管理-添加歌曲
测试步骤

  1. 登陆后台点击“新增”按钮。
  2. 在弹出的表单中输入要添加的歌曲信息。
  3. 点击“立即提交”按钮。
  4. 在歌曲管理列表查看刚添加的歌曲信息
    测试数据 歌名:你好,艺人:你好,专辑:你好,MP3音乐文件(5MB)
    预期结果 在歌曲列表可以查看到刚添加的歌曲。
    实际结果 在歌曲列表可以查看到刚添加的歌曲。
    测试发现问题 无

权限中心模块的添加组织功能测试用例如表6.2所示。
表6.2 添加组织测试用例
测试编号 AU-ORG-ADD-1 测试功能点描述 权限中心-添加组织
测试步骤

  1. 登陆权限中心,打开组织树,选择组织,点击加号形状的按钮,鼠标浮动时有add node字样。
  2. 在组织添加页面中输入要添加的组织信息。
  3. 点击“Create”按钮。
    测试数据 Name:新空间成都分公司,Description:新空间成都分公司。
    预期结果 保存成功,可以在组织列表中查看到
    实际结果 保存成功,可以在组织列表中查看到
    测试发现问题 无

表6.3所示测试用例用来测试权限中心的权限访问限制是否正常工作。

表6.3 新用户登陆权限中心测试用例
测试编号 AU-VISIT-1 测试功能点描述 权限中心-访问限制-新用户
测试步骤

  1. 根权限用户登陆权限中心,打开组织树,选择组织,右键“添加用户”,进入用户添加界面。
  2. 在用户添加界面表单中输入用户信息,提交表单。
  3. 用刚创建的用户登陆权限中心,查看组织列表和用户列表等。
    测试数据 SignName:123456,PassWord:123456
    预期结果 新用户可以登陆权限中心,但是不能查看到除权限项的其它所有数据。
    实际结果 新用户可以登陆权限中心,且不能查看到除权限项的其它所有数据。
    测试发现问题 无

6.3 本章小结
本章主要阐述了系统的测试部分,包括测试概述。将测试分为单元测试,接口测试,集成测试三个阶段,以及每个阶段的测试方法及测试用例等。对测试方法中使用过的测试框架或工具做了一个简要描述。

第7章 总结与展望
7.1 主要工作与创新点
本课题首先主要分析了国内外在线音乐服务现状,针对目前中国在线音乐服务行业中存在的问题,结合当今在线音乐服务的发展趋势,以及移动互联网和4G技术的普及,分析并设计了基于.NET Core的客户端Android APP为入口的在线音乐系统,实现在新时期以音乐社交为驱动的在线音乐服务。
在本课题中主要做了以下几个方面的学术研究:

  1. 了解在线音乐服务的行业现状,分析其未来发展趋势,提供可能的解决方案,以及完成该方案下的系统需求分析与技术方案。
  2. 深入学习.NET Core技术,掌握在Visual Studio 2017环境下.NET Core服务端应用程序开发。结合本系统的实际需求,学习并掌握了Rest full API接口风格,学习使用Entity Framework作为ORM(Object Relational Mapping)对象关系映射框架。
  3. 深入学习Android应用开发技术,掌握Android Studio环境下的Android应用程序开发流程,结合本系统的实际需求,学习并掌握了Android应用程序客户端与服务器相关通信框架与JSON数据传输。
  4. 学习了组织划分资源范围,以权限树表示资源树的访问控制RBAC(resource-based access control),一个接口就是一个资源就要受到一个权限的控制在一个组织下进行访问,分析其优缺点,以及基于.NET Core的实现方案。
    7.2 后续研究工作展望
    本课题主要从用户角度分析并设计了系统需求,对于本系统,未来将主要从一下几个方面进行提高。
  5. 优化Android客户端界面
    使用第三方组件导致的页面风格问题会影响用户的使用,下个版本应该使其统一起来,以方便用户的使用。
  6. 将部分管理功能从浏览器转移到移动端
    大量的常用功能集中在浏览器端,导致用户不得不在两个端中切换,造成了使用上的不便,因此在后续版本中,将会将该部分功能转移到Android客户端。
  7. 提供更多样化的服务
    本系统目前实现的功能还较为单一,评论与聊天功能没有在用户界面体现出来。需要在下次更新过程中予以修复和加强。

参考文献
[1] 2010-10-10.https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/index.html
[2] 张剑桥.ASP.NET Core跨平台开发从入门到实战[M].北京:电子工业出版社,2017.5
[3] 2016全球电子音乐产业报告:流媒体为王.http://musicianguide.cn/2016-quan-qiu-dian-zi-yin-le-chan-ye-bao-gao-liu-mei-ti-wei-wang
[4] 【MG报7.6】美国上半年流媒体音乐播放次数增长一倍.http://musicianguide.cn/mg-bao-7-6-mei-guo-shang-ban-nian-liu-mei-ti-yin-le-bo-fang-ci-shu-zeng-chang-yi-bei
[5] 2014 美国在线音乐市场现状.http://www.ebrun.com/20140402/95356.shtml
[6] JSON官网.Json.rog
[7] 艾瑞咨询.2016中国在线音乐行业研究报告.http://www.199it.com/archives/496992.html
[8] 艺恩咨询.2016年在线音乐趋势洞察. http://www.199it.com/archives/494248.html
[9] 高子伦.在线音乐平台社交化研究[D].http://www.doc88.com/p-5435090516539.html
[10] 中国报告网.2018年中国在线音乐行业市场发展现状分析.http://news.chinabaogao.com/chuanmei/201811/1123M2302018.htmls

致谢
感谢指导老师的全情帮助。

附录 英文翻译
选取英文论文进行翻译

猜你喜欢

转载自blog.csdn.net/v_dnf767/article/details/106287016