图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 向数据库中插入原始数据 首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5 相关论文
首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5