需求分析
服务功能设计
根据用户需求描述,有考虑到该课题涉及新知识点较多,对于第一版本不宜做出过于复杂的设计,而应当一步一步的进行完善和功能扩展。故如图 3-2-1-1所示,暂时设计为该项目应当有如下一些功能,基本满足了大部分用户需求:
序列图分析
针对用户需求描述中的用例图和用例描述,下面对几个典型的场景进行用户操作时系统的操作序列进行分析。
当用户请求每一个页面时,基本的序列都是,客户端先请求服务器端的WSDL文档,对其进行分析后在客户端创建一个Web服务的存根,再根据页面需求,向服务器端请求所需的数据,最后初始化页面并呈现给用户。如图3-4所示。
图3-4 用户请求页面序列图
游客登录时,先向客户端输入用命名、密码,通过客户端请求登录,客户端向服务器请求登录操作,服务器查询数据库验证通过后,将用户ID设置到会话变量,并将它返回给客户端。客户端立即用该用户ID来查询用户的权限和相关数据,最后初始化页面并呈现给用户。如图3-5所示。
图3-5 用户登录序列图
当用户输入关键字对网络电台进行搜索时,客户端先向服务器请求搜索,然后根据返回的结果,再次向服务查询所需的相关信息,最后初始化页面并呈现给用户。如图3-6所示。
图3-6 用户搜索网络电台序列图
类分析
通过以上的分析,建立起如图3-7所示的关键的相关类。每个类的作用如表3-1所示。
表3-1 主要类及其功能
类 作用
User 代表一个用户,根据其分组属性,可以是游客、普通用户、也可以是一般管理员或系统管理员
UserGroup 代表用户分组
Priviege 代表用户或用户分组的权限
UserSpecial 代表用户的自定义收藏夹
RadioInfo 代表一个网络电台的信息
图3-7 用户搜索网络电台序列图
系统设计
该项目开发环境可以是微软的Visual Studio,以C#为开发语言,但必须以只能在Windows上运行的Web服务器IIS上运行;也可是IBM主导的开源开发平台Eclipse,以Java或PHP为开发语言,而运行的服务器可以是在Windows上也可以是在Linux上的Tomat等JavaEE容器或Apache。这两种方式使用的数据库均是有多项选择,可以是只运行在Windows上的Sql Server,或跨平台的Oracle、MySql等。用C#或Java开发都有很多可用的框架,开发速度将非常快。但是由于该课题以学习新知识为主,所以设计为以PHP作为Web服务器端的脚本语言。
而客户端形式可以是一个用Java或C#开发的窗口程序,但是这中CS模式的客户端不能够随时更新;可以是只能在Windows平台上的浏览器里运行的Ajax和Windows Media Player ActiveX网页,但是java script为解释执行语言,又没有强大的软件库,单纯依靠java script解析SOAP协议将非常繁琐和低效;也可以是使用Flex开发Flash、java script与Activex控件组合使用的形式,这是最好的一种形式。
最终设计的开发环境为:装有Windows XP电脑一台,有Java运行环境,开发平台为Eclipse(有PDT和Flex Builder扩展),服务器为XAMPP(PHP、Apache、MySQL等的组合)。服务器运行环境为XAMPP,操作系统无关。客户端运行环境为Windows系统,浏览器支持ActiveX空间以及Flash插件。
整个系统的结构相对比较简单,如图3-8所示。Web服务端主要是将一个一个PHP函数通过NuSOAP映射为Web Service的Operation,并用NuSOAP产生Web服务描述。客户端则使用Flex程序通过SOAP协议与服务器端进行交互。
其中实现的主要难点在于每个PHP操作中对用户身份进行验证,并有合理权限的分配与检查。另外一个难点就是客户端Flex程序的设计。因为是图形程序,所以程序清晰的结构,良好的操作流程,程序的界面美观程度,画面的跳转,良好的用户体验等都是要考虑的因素,而这些恰恰是最不善长的。
图3-8 系统架构图
存在的风险及应对
该项目的实施预计主要有以下一些困难与风险:
(1)对于一些新标准,技术的不了解 这些是必然出现的,一个新事物从不了解到接纳采用,必将有一个学习的过程 对于这类问题,应当努力查找相关网络资源,官方文档。技术方面的问题都能很容易的解决。
(2)缺乏整体架构经验 由于这是本人自己选择的题目,需要自己来进行整体架构。而自己又缺乏设计经验,容易出现设计偏差,遗漏要点。对此,将请经验丰富的校外导师协助架构,并进行审查。
(3)缺乏项目管理经验 同样是由于缺乏经验,而且该课题主要由本人一人承担,虽然一个人容易管理,但是如果缺乏必要的进度保证,强有力的执行能力,极易造成项目延期而宣告失败。对于这种问题,制定项目进度表并执行就显得极为重要。让校外导师定期检查,指导也十分必要。
(4)计划与实习冲突 由于自己独力进行,可能会受到工作影响,造成进展缓慢。这个现象只能够自己多下力气,多挤挤时间了。
预期目标
该课题预期希望达到如下两个目标:
(1)技术目标 从该项目中深入学习SOA,RIA等技术及思想,增加项目设计经验,提高项目实施管理能力,为以后的工作提供借鉴,为公司预研一些技术。
(2)商业目标 首先建立起基础的Web服务及其简单应用,如有条件,可将其发布到互联网上,以充分发挥其作用。随着以后学习的深入,应当不断的完善该项目。该项目产品要在不断完善之后,尝试将其推向一些音乐网站,门户网站或搜索网站,以期待对它的采纳,使其得到更旺盛的生命力。
本章小结
本章主要阐明了用户需要要求,然后将其转换为开发人员所使用的功能设计,并在此基础上展开系统设计。最后对风险进行了评估,进行了计划安排,列出了所预期的目标。相信通过该过程,无论结果如何都是对自己能力的一种提高。
详细设计
数据库设计
设计数据库使用开源的MySQL数据库。为了保证中日韩等宽字符能正确存储,在创建Database、table时应当使用UTF-8作为默认字符集。在牵涉到字符的字段全部使用national varchar类型。在命令行下向数据库里插入数据时,应首先执行“set names gbk”,以防止PHP页面中乱码的出现。
数据库设计的ER图如图4-1所示。注意,这里并没有使用传统的ER图画法,而是使用了UML图[14]。
图4-1 数据库设计的ER图
数据库设计的表汇总如表4-1所示,更详细的数据定义请参见数据库设计.xls。
表4-1 数据库模块设计
模块名 包含的表名 作用描述
用户认证 用户账户信息表 存储账户最基本的信息,如账户名,密码,邮箱,昵称等,这些基本信息在用户注册时填写,且不可更改
用户详细信息表 存储用户的一些详细信息,如真实姓名、性别、国家、电话、QQ、个人主页等,注册时选填
国家地区、语言 语言代码表 存储ISO639标准的3字母的语言代码
国家地区表 存储ISO 3166-1-alpha-2 里规定的国家地区代码,同时扩充一些其他内容,如国家所在的洲,时区等信息
权限分配 用户组表 存储用户的分组,目前主要由游客组,系统管理员组,一般管理员组和普通用户组
组成员表 存储每个用户组里的用户成员
权限表 存储用户组、某个用户的权限
网络电台 电台种别表 存储网络电台种别的相关信息。如是音乐电台类别、新闻电台类别等
电台播放格式表 存储电台播放格式种别,如是rstp,还是mms格式
电台播放速率表 存储网络电台常用的播放速率种别
电台播放质量表 网友对网络电台评价级别
网络电台表 存储网络电台的各种信息
用户收藏夹 用户专集表 存储用户创建的专辑
用户专集成员表 存储用户专集中的条目
Web服务端设计
由于PHP中大量使用以字符串作为key的数组,例如:$arr = new Array ( “key1” = value1, “key2” = value2),而PHP又是弱类型的,所以数组中可以是混杂类型的,也即数组中的值得类型可以不一致。再加上PHP的面向对象的特性是在PHP4以后才出现的,大量原有的PHP库都使用的面向过程的方法。所以在该课题的Web服务的实现中也使用面向过程的方法,大量使用关系数组。
Web服务端共有5个文件组成,如表4-2所示。另外使用到的NuSOAP扩展文件的路径为 /lib/nusoap.php。
表4-2 Web服务端文件结构
序号 文件 内容及作用
1 /database.sql 创建数据库和表
2 /InitData.sql 向数据库中插入原始数据
新的服务架构模式——SOA(四)由毕业论文网(www.huoyuandh.com)会员上传。