Web单词记忆软件的开发_计算机及应用专业毕业论文 (3).docx

上传人:小小飞 文档编号:3903837 上传时间:2019-10-10 格式:DOCX 页数:70 大小:1.85MB
返回 下载 相关 举报
Web单词记忆软件的开发_计算机及应用专业毕业论文 (3).docx_第1页
第1页 / 共70页
Web单词记忆软件的开发_计算机及应用专业毕业论文 (3).docx_第2页
第2页 / 共70页
Web单词记忆软件的开发_计算机及应用专业毕业论文 (3).docx_第3页
第3页 / 共70页
Web单词记忆软件的开发_计算机及应用专业毕业论文 (3).docx_第4页
第4页 / 共70页
Web单词记忆软件的开发_计算机及应用专业毕业论文 (3).docx_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《Web单词记忆软件的开发_计算机及应用专业毕业论文 (3).docx》由会员分享,可在线阅读,更多相关《Web单词记忆软件的开发_计算机及应用专业毕业论文 (3).docx(70页珍藏版)》请在三一文库上搜索。

1、北京市高等教育自学考试毕业设计Web单词记忆软件的开发摘要 本文首先对现有的单词记忆软件进行了市场和技术上的分析;针对最新的Web技术现状、关键技术以及各种配套技术做了详细介绍;提出了基于最新Web技术构建单词记忆软件的需求分析和总体设计。软件总体实现是围绕着属于Web技术的HTML5技术,适应未来软件开发技术的方向;数据库的设计来源于NoSQL技术,可以实现更高的性能和开发效率;服务器端采用Node.js构架,使得单词记忆软件的客户端和服务器端保持了语言的一致性,提高了软件的代码复用能力。在完成了软件的各项设计后,最终实现了Web技术单词记忆软件,并对单词记忆软件与Web技术的未来进行了展望

2、。关键词:单词记忆软件,HTML5,Node.js,NoSQL目 录目 录3第一章绪论31.1 单词记忆软件的现状与发展趋势31.2 单词记忆软件的发展趋势31.3 本课题软件的特点31.4 文章的组织结构3第二章课题软件使用技术简介32.1 HTML5技术简介32.2 Node.js技术简介32.3 NoSQL技术简介32.4 MVP设计模式简介32.5 本章小结3第三章软件需求分析33.1 本地应用程序功能33.2 服务器功能需求33.3 平台需求33.4 本章小结3第四章软件概要设计34.1 课题软件结构34.2 下层模块介绍程序底层支持模块34.3 中层模块介绍主模块34.4 上层模块

3、介绍34.5 本章小结3第五章数据库设计35.1 数据库的需求分析35.2 数据库的概念设计35.3 数据库的逻辑设计35.4 数据库的物理设计35.5 本章小结3第六章软件详细设计36.1程序底层支持模块36.2主模块36.3 上层模块的详细设计36.4 本章小结3第七章界面设计与实现解析37.1 主模块界面37.2 初记模块界面37.3 复习模块界面37.4 单词书模块界面37.5 生词本模块界面37.6 记忆中模块界面37.7 选项设置模块界面37.8 游戏管理模块界面37.9 填字游戏模块界面3第八章总结及展望38.1 总结38.2 展望3参考文献3致 谢3第一章 绪论本章从单词记忆软

4、件的现状,单词记忆软件与最新Web技术结合的必要性两个方面介绍了毕设所涉及到的课题背景和研究方向。1.1 单词记忆软件的现状与发展趋势1.1.1 单词记忆软件的现状单词记忆软件在市场中已经趋近于成熟,但是其中很多软件有着单词记忆方法上的缺陷,还有基于传统应用程序开发手段的各种技术缺陷,所以已经无法在现有的新技术大潮下继续发展。新的单词记忆方法和新的Web技术代替现有的传统方法和技术,是适应社会发展的必然趋势。虽然市场上已经出现了部分基于Web技术的单词记忆软件,但是他们所使用的技术依然受传统Web技术能力的制约,不仅无法达到传统桌面开发技术软件的能力,甚至无法发挥Web本身的技术优势,同时在单

5、词记忆方法上的优势也不明显。近十年来,因为计算机技术的发展和中国英语学习人数的增加,再加之单词记忆对英语学习的重要意义,使得市场上各种单词书、单词记忆方法和互联网上的各种单词记忆软件有了空前的发展。仅仅在软件下载网站之一的天空软件站中的统计信息来看,排在前几名的单词记忆软件下载次数都达到了数十万到数百万级别的下载量,除此之外的成千上万个软件下载网站的数据已经无法计算,但从这一点上就可以看出单词记忆软件拥有庞大的用户群体。另外单词软件的商机也吸引了金山、新东方、、网易有道等传统英语教育企业和互联网企业。现有的单词记忆软件的缺陷在单词记忆方法上,有方法陈旧、效率不高等问题;在技术上有平台兼容性差、

6、上手困难、无法跨平台,数据不能随网络移动等等缺陷。正是因为这些缺陷,在互联网极大发展的现在,我们可以针对单词记忆手段和编程技术手段上有所创新。1.1.2 桌面单词记忆软件的对比在这一小节,我们首先先看表1.1的对比测试,分析此类软件当前的优缺点。表1.1 桌面单词记忆软件对比表软件名称版本图片联想界面定制发音特点设置备份词汇之沙4.2.8有无有不区分初记和复习设置较少在线备份为爱背单词2.11有有皮肤有设置较少本地备份疯狂单词6.1.2无无有无忧模式,自动判断用户词汇量设置较少本地备份明朗单词通4.11无无无无本地备份不得不背单词4.7无无无弹出窗口,强制背诵无本地备份金山迷你背单词2001无

7、无有滚动记忆无本地备份不知不觉背单词2.0无自定义背景有滚动记忆无本地备份单词风暴7.3有自定义背景有有详细的统计功能选项丰富本地备份可导出此类单词记忆软件的主要优点:(1) 此类软件出现较早,整体功能和稳定性比较成熟、完善。(2) 此类软件因为是本地程序,大部分使用C/C+与本地库编写,速度流畅。(3) 部分软件拥有音频导出功能,方便录入到手持播放器。此类单词记忆软件的主要缺点:(1) 因此类软件诞生时间很早,仍有部分软件为了保持软件的体积或者成本,并未选择更现代的合成语音库或者真人语音库,而是调用操作系统的合成语音库,甚至不使用语音库。(2) 此类软件大部分比较传统,无法使用在线备份功能,

8、甚至不能导出备份。(3) 而且平台单一,即便有部分软件有手机或者其他平台版本,也无法做到在不同平台上的词库、功能和背诵进度一致性,阻碍了用户在多终端的情况下记忆单词。正因为此类单词软件存在诸多缺点,课题软件采用了在线语音库系统,并配以语音库的本地缓存,使其适合绝大多数情况的单词学习。而又增加了在线备份功能,实现单词记忆进度的备份和还原。本软件可以在任意平台,任意浏览器上使用,使其支持最多的平台,方便用户在任何设备上记忆单词。1.1.3 在线式单词记忆软件对比在这一小节,我们首先看表1.2中对本类软件的对比测试,然后分析它们当前的优缺点。表1.2 在线式单词记忆软件对比表网站名称初记读音ajax

9、快捷键例句复习登陆扇贝网英汉选择有有有有有需要登陆大耳朵背单词拼写有无有有多种方式随机需要登陆开心词场选择有有有英汉选择需要登陆在线英语听力室列表选择不自动无无无无需要登陆海词列表选择拼写听写不自动有无无有需要登陆Wordmemo拼写有有有有有需要登陆可可地盘拼写有无有有有不需要登陆爱词霸生词本拼写列表不自动有有无有不需要登陆金太阳在线卡片式不自动有有无多种方式随机不需要登陆此类单词记忆软件的主要优点:(1) 此类网站大多数依靠强大的企业实力,这些企业以前一般是制作词典类软件,拥有较强的技术实力和内容资源。(2) 在线网站拥有与在线广告,在线社区等传统在线应用的自然结合能力。(3) 数据在线保

10、存,具有跨部分终端的能力。此类单词记忆软件的主要缺点:(1) 此类网站多使用较老的网页技术,并未使用最新的网页技术,在响应速度,读取速度和发音速度上不能满足现在用户的需要。(2) 此类网站多数未采用ajax技术,即使采用也并未在所有页面采用,整体使用并不流畅。(ajax技术即“Asynchronous JavaScript and XML”技术,是使用异步双向传输能力,使得网页可以在不跳转的前提下,平滑下载与上传数据)(3) 此类网站使用的单词记忆方式往往因老旧的Web技术所限,并不能发挥真正力量,使得单词背诵效率下降。(4) 此类网站大部分不能集成单词游戏功能,在单词游戏中用户往往能通过轻松

11、的方式,巩固学习的单词。(5) 此类网站虽然部分拥有键盘快捷键功能,但是受限于老旧的Web技术,此类功能会受到诸多限制且不流畅。正因为这些缺点,本软件使用量新的HTML5技术改善这些缺点。改进了执行速度,响应速度,提高了应用的用户体验,并且采用了多种学习方式,使Web应用更接近桌面应用的效果。1.2 单词记忆软件的发展趋势1.2.1 “早期合成语音-真人语音-新技术合成语音”的发展过程合成语音最早因为操作系统绑定而发展,各种软件可以直接调用操作系统的合成语音库,编程简单。早期的合成语音有其鲜明的特点,其主要缺点有:(1) 语音质量差。早期的合成语音虽然可以勉强听懂,但是语调、语速、语境掌握的非

12、常不好,听起来极其生硬,对英语学习是不理的。(2) 平台支持少。操作系统中,只有Windows和Mac系统携带合成语音,而且在部分特殊的,精简的系统中可能并没有语音。这就给软件使用合成语音造成了困难。综上所述,在早期的单词记忆软件中,合成语音的使用还是非常多的。即使现在,按照压缩过的,一个单词语音10KB 20KB的尺寸算,假设某单词库携带5万个单词的语音,也需要大约700MB的空间,在当前中国的互联网网络速度下,这样的大小也太过庞大,是影响用户体验的一个重要因素。真人语音因为其自然的亲和力,在一段时期内也受到各种单词软件的广泛选择,其主要的优点有:(1) 发音自然,利于英语的学习。(2) 由

13、软件直接控制,不经过系统,可以规避系统合成语音可能产生的各种问题。而真人语音库的缺点也是十分显著的,主要有:(1) 真人语音数据库过于庞大。(2) 潜在的版权问题。真人语音虽然在互联网上也能找到一些,不过一般都具有潜在的版权问题,这是一些大公司不能容忍的。若为了规避版权问题而录音,投资太大。(3) 部分单词没有读音,不能朗读句子。真人语音发音固定,不能随意连成句子,而部分冷门单词也可能失效。正是因为真人语音库的这些问题,所以在电脑技术极大发展的现在,更多的软件,尤其是大公司,反而选择了新技术的合成语音,而不是真人语音去解决问题,例如中国的金山词霸等软件。在现阶段,基于新技术的合成语音的主要优点

14、有:(1) 发音接近自然语音。合成语音已经不是早期的非自然声音,现在已经非常的流畅和自然,尤其在单个单词的情况,已经几乎可以和真人语音媲美了。(2) 合成语音的费用低廉。相对比投资而录制真人语音,合成语音的总体费用更低廉。(3) 可扩展性大,合成语音更换方便,朗读句子和冷僻的单词也不在话下。(4) 减小软件体积和容量。(5) 没有潜在的版权问题。真人语音库可能有复杂的不同版权的问题,而合成语音库一般版权简单。1.2.2 从传统本地应用程序到在线式应用的发展传统的本地应用程序,尤其是桌面应用程序,一直是程序开发的主流。而在多平台,尤其是移动平台逐渐占领消费者时间的今天,加之Web应用的发展,正逐

15、步超过本地桌面应用的市场。而厂商也纷纷针对网站发布各种相关在线应用,从谷歌的云计算GAE,到国内的百度框计算和新浪云计算,标识着越来越多的厂商正向互联网发展。而我们从表1.2也可以看出,即使是或者是金山这样的公司,都在涉足于Web网络应用,开发在线单词记忆软件。这正是因为Web应用有着本地应用无法比拟的优点,主要的优点归纳如下:(1) Web应用有跨平台性。无论是Windows、Mac、Linux这样的传统桌面系统,还是Android、IOS、Windows Phone这样的移动系统,乃至更小众的系统,只要有网络浏览器,就能访问这些应用。(2) 无需安装,即开即用。传统软件需要有软件下载、软件

16、安装、软件升级等步骤,这些步骤也是降低用户体验,阻碍用户使用的一个问题,而本课题软件使用了Web技术就做到了随时打开、随时学习、随时体验,最大化的方便了用户。(3) 跨地域性。传统的桌面应用几乎只能在一台设备上使用,而Web应用因为有在线功能,使得可以在多台电脑上使用,无论是家里,办公室,还是公交车上,只要有联网终端,就能使用。(4) 开发便捷性。因为Web应用天然的跨平台能力,所以只要开发一次,不用修改,或者只需要进行极少量的修改,就能在其他平台上使用,在方便开发的同时,也降低了生产成本。(5) 实时的更新性。因为应用是在线的,所以无论是更新版本还是数据库,都无需让用户有一般软件的繁琐的更新

17、升级操作,只需要对服务器进行更新即可。(6) 与其他在线资源的互动性。无论是在线社区、论坛还是微博,Web应用都可以与其简单的联系起来,而传统桌面应用要做到这一点,可能就需要额外的浏览器支持,或者再绑定另外开发的网络客户端模块,无形中增加了软件的体积和可维护性。1.2.3 从单一记忆形式发展到多维辅助记忆形式早期单词记忆软件的发展是以单纯的文字表现为主,主要以单词的词性、词义、音标为主来进行记忆,而现在的单词记忆软件越发复杂与庞大,发展为以本地词库为主,以在线信息为辅的多方面辅助记忆形式。主要的辅助记忆形式如下:(1) 音频。在早期因为成本,合成语音等问题,部分软件甚至不支持单词语音。现在大部

18、分单词记忆软件已经支持了。(2) 例句。早期因为资源,成本等问题,很多软件都不支持单词的例句显示功能。但是现在互联网的资源已经极大的丰富了,例句资源无论从商业的,还是免费的都有了很多选择,故现在绝大部分的单词记忆软件都携带有例句显示功能。(3) 词根词缀。一些单词记忆软件也同时使用了这些记忆方法来辅助记忆,在显示单词其他信息的同时,也显示词根词缀的信息,辅助单词的记忆,使单词的记忆达到更好的效果。但是同时,词根词缀记忆方法实际上是受到一些教师的反对,在一些实验中也证明了其的效果并不理想1。(4) 联想图片。联想图片可以是例图,也可以是漫画等诙谐图片,无论何种图片,目的都是为了用户能将图片和单词

19、联想起来。众所周知我们的大脑就是以联想方式存储信息的,故此种方法也能很大的程度上提高用户的词汇记忆水平。(5) 视频。视频记忆方法是这几年单词记忆软件新出现的元素,因为视频往往较大,即便是Flash这样的矢量视频,占用的空间也很大,故在以前的单词记忆软件中很少携带。而即使现在,视频记忆软件也都是以在线视频为主,而且并不是每个单词都有视频。视频主要讲解单词的组成、发音、例句、词根词缀、联想图片等,可以说是前面几种辅助方式的一种综合。而且因为视频辅助记忆比较冗长,往往记忆单词需要的是快速时间段内记忆大量单词,这种方式略显缓慢,除非是英语初学者,否则这种记忆形式稍显多余。1.3 本课题软件的特点在以

20、前的单词记忆软件中,在学习方法上有记忆方法老、学习方式单一、发音不标准不统一等缺点;在技术上也有程序运行缓慢、兼容性不足、不能满足当前多平台环境下的跨平台需求等缺点。针对这些缺点,本节主要介绍本软件针对当前市场上其他单词记忆软件所具备的优点。1.3.1 在单词记忆方法上的特点本课题软件在单词记忆方法上对比其他单词记忆软件的主要特点有:(1) 在综合了之前单词记忆软件的记忆方法的基础之上,特别的增加了颜色记忆法和延迟记忆法,记忆有效率再次提高。无论是初记时还是复习时,都特别的对数种辅助记忆手段进行延迟显示,而不是一次性统一显示,在使用错开时间的显示方法时,达到最好的记忆效果。(2) 在传统的Eb

21、binghaus记忆曲线方法上(艾宾浩斯记忆曲线,由德国心理学家赫尔曼艾宾浩斯的实验所证明的,人会随着时间推移而遗忘),对比其他单词记忆软件独特增加了记忆时间方法。Ebbinghaus记忆曲线的主要时间单位是“天”,而现在主流研究的看法是,人的记忆力在一天的时间段内也是不同的,故本课题软件特别在Ebbinghaus记忆曲线的时间内,将单词记忆点四舍五入的提早或延迟到一天的记忆点高峰,以此尽最大努力提高单词记忆效率2。(3) 在以前的单词记忆软件中,忽略了游戏对单词记忆的重要性,虽然有部分单词软件携带了小游戏,但是往往数量较少,或者并不是最有效的。本软件以英美人最常玩的拼字游戏(Crosswor

22、d Puzzle)为主要小游戏,符合英美人群的思维定势,提高娱乐对单词记忆的辅助能力。(4) 以发音为主,词义次之,单词为最次之的单词记忆方法。语言皆同理,中文也是如此,往往我们记忆中文也是记住其音和意义,而不是单纯的记住字形,例如“旮旯”和“鬼魅魍魉”这样的字,我们可能并不会写,但是会说会听,导致看到时也能想起来意思。英文也是同理,美国心理学家哈罗德E巴特和HG贝克的实验证明,通过声音记忆单词比单纯用眼睛看能都多记住34%,所以本软件在初记之前,会首先读音,而不是直接显示单词和单词信息。单词和单词信息是逐渐显示,而不是一次性显示。以此,最大限度的调动用户对声音的印象,而不是单纯的视觉印象,最

23、终提高单词记忆的质量。1.3.2 对比同类软件,在技术上的特点本课题软件之所以在技术上创新,是因为新技术的发展,导致了现代人面对的平台不同,面对的设备不同,面对的情况也不多。例如现代人往往看手机和平板电脑的时间多过于看电脑的时间。还例如,在工作忙碌的群体中,可能在行车中的时间多过于在电脑前静坐的时间。所以在老的同类软件中,往往只针对一个平台,就算是部分软件针对多个平台也无法顾及到多个平台的数据共享,这些开发方式和针对的用户方式已经无法适应当前新技术发展和社会发展的水平。因此,本课题软件在技术上达到创新,适应这些新技术和社会的发展,对比以前的同类软件的创新点主要体现在:(1) 基于HTML5技术

24、构建,拥有传统Web网站式应用无法比拟的优势。同类软件中虽然也有使用Web技术构建的,但是不同于本课题软件使用的HTML5技术。本课题软件的流畅度和功能特性,可以达到以前软件所不能达到的地步。所以本课题软件不同于传统Web网站式应用,从这方面来讲更接近于传统本地式桌面应用。而本课题软件又拥有传统本地式桌面应用所不具备的跨平台、即时连线、无需安装直接使用等特点。所以本课题软件的技术特点,是在传统Web网站式应用和传统桌面应用之间的新型Web应用,是应用发展的未来。本课题软件在HTML5技术之上,对比传统应用的主要优势体现在:a) 跨平台性。传统的桌面应用无法跨平台,即使使用例如GTK、QT这样的

25、跨平台库,也无法在手机、平板电脑平台上使用。而基于HTML5的Web技术可以在任何支持浏览器的平台上运行,包括而不局限于桌面平台、手机平台、平板电脑平台、可穿戴式计算机平台、物联网平台等等,做到真正的随时随地记忆单词。b) 载入的一次性,应用的离线性。传统Web网站式应用每次打开网站,甚至每次刷新页面都需要重新载入信息,而本课题软件基于HTML5技术,可以离线缓存,即便关闭浏览器、重新启动电脑,或者浏览器刷新也无需重新载入数据库。HTML5的离线缓存技术不同于一些浏览器的离线浏览技术,而是真正把网络应用做到本地的技术。这样做极大的节省了网络带宽,提高了应用性能和用户体验。不仅如此,因为有离线缓

26、存技术,应用可以做到不联网也能在浏览器中运行,不丢失任何数据。配合本软件的语音缓存能力,甚至可以做到无需联网就能在任何设备上听到单词的声音,体验本来上百MB的语音库。(2) 基于Websocket,减少传统Web应用所需要的网络流量,强化性能。传统的Web应用所使用的无非是基于AJAX的,HTTP协议的信息传输,但是此种信息传输模式在大量数据传输和长连接上要消耗大量的网络带宽和延迟。因为这些诟病,本课题软件使用了新型的Websocket连接方式,规避了传统AJAX导致的一些问题。同时Websocket也是一种更安全的信息传输手段,可以在客户端和服务器简单的实现数据加密,比以往的HTTP信息更容

27、易实现加密。虽然HTTPS也能实现数据加密传送,但是对服务器和服务器证书往往要求较高。(3) 基于新的CSS 3的图形表现形式。CSS,即级联样式表技术(Cascading Style Sheet),主要目的是用来设计网页页面风格的。而CSS 3版本包含了诸多新的特定,不同于以前的Web和桌面应用,这些新特性给予了应用软件更好的图形能力,更高的编程效率和更好的用户体验。而CSS不仅仅是Web发展的方向,也是传统桌面应用发展的方向,例如主要的开源综合库的GTK和QT都已经支持了CSS样式来开发桌面应用,目的是为了更好的跨平台通用性。(4) 基于新型NoSQL数据库模式。传统的SQL数据在Web2

28、.0时代已经渐渐疲惫,新型网络应用往往面对的是更多的用户,更大的同时查询、写入能力。本应用对比同类软件的Web网站型应用具有更友好的数据库界面,更快速的数据库查询能力,更好的扩展性和通用性。达到不限制数据库,不限制平台的等等优势。本课题软件,也是首次将比较复杂的传统桌面应用程序以HTML5为基础,以MVP为构架,以NoSQL为数据库结合的一次尝试。这三者的结合无论是在单词记忆软件中,还是在其他应用软件领域,都是一次全新的尝试。1.3.3 小节总结本软件的这些特点,若不是和最新的Web技术结合,而使用传统的软件开发技术,是很难全部兼顾的,即便做到,成本也会很高。而本课题软件在较低的成本下做到了跨

29、平台和各种创新特点,这本身就是一种全新的尝试。1.4 文章的组织结构在前面的绪论中,本文对单词记忆软件的现状及其发展、本软件实现所在的基本技术和社会背景、以及本软件对比同类软件的各种优势做了介绍。在接下来的部分里,本文的组织结构如下:(1) 在第二章,本文介绍了本课题软件设计上所使用的一些基本的使用技术,说明了这些技术的主要特点,以及本课题软件的联系,说明了为什么使用这些技术。(2) 在第三章,本文介绍课题软件的总体需求分析,说明了一个单词记忆软件所应该拥有的功能,这些需求分析会在本课题软件中逐一实现。(3) 在第四章,本文介绍了课题软件的总体结构划分和各模块的概要设计,以及课题软件为什么如此

30、划分模块。(4) 在第五章,对课题软件所使用的数据库做了分析和设计。(5) 在第六章,本文详细介绍了软件的详细设计,及各个模块的算法流程和实现,同时也说明了软件在实现过程中所遇到的困难和问题。(6) 在第七章,本文介绍了软件界面的设计思路和实现。(7) 本文在最后简短地总结了毕设期间所做的工作,总结了本软件的局限性,并对后续任务做了初步设想与规划。第二章 课题软件使用技术简介本章介绍本课题软件使用的各种使用技术,与使用这些技术的原因和特点。2.1 HTML5技术简介2.1.1 引言HTML5是HTML的最新标准,草案于2008年发布,W3C(万维网联盟)于2012年12月17日宣布HTML5规

31、范开发完成。新标准将包括更强大的编程接口。这种更新将会解放浏览器,让浏览器更少的依赖Flash等第三方插件3。HTML5总体来说是一些以HTML5的Web规范为基础的新技术的统称,一般宏观来看包括HTML5技术,CSS3技术,Websocket技术等。这些技术改变了互联网应用的开发方式和使用方式,可以给开发人员以更方便的开发工具,给予用于以更好的用户体验。2.1.2 HTML5的主要特性(1) 离线应用缓存(Offline Application)。此功能不同于以往浏览器的缓存功能,此功能提供给了开发者真正将Web应用存储于本地的方式,使得Web应用能超脱于传统Web网站应用的范畴,更贴近传统

32、本地应用程序的功能。此功能的核心,是将Web程序所需要的一切文件,包括html文件、JavaScript语言文件、CSS样式、图片等缓存在浏览器本地,需要使用时无需联网也可以使用。此功能是由W3C规范的标准功能,完全不同于一些浏览器自带的缓存功能,提供更标准、更有效的离线功能。(2) 本地数据存储(LocalStorage)。此功能不同于以前的Cookies功能,更像是一个本地JavaScript语言可以使用的超级“Cookies”,此功能允许应用程序在本地存储大量数据,而无需联网或者是数据库。(3) 绘图画布(Canvas)。此功能类似包括2D和3D部分,提供各种基本的画图函数,可以给予HT

33、ML5以画图能力,是制作游戏、部分动画的基础。(4) 原生的视频和音频支持(Video&Audio)。此功能可以提供原生的视频、音频播放能力,不需要再依赖Flash或者ActiveX控件。(5) 智能表单(Forms Inputs)。此功能让浏览器提供本地的表单判断功能,例如时间日期的选择,Email地址的验证,简化编程代码。(6) 后台运行支持(Web Workers)。HTML的后台语言,也就是JavaScript语言是一种单线程、事件驱动语言。而Worker这项新能力可以说给予了JavaScript一种全新的多线程能力(虽然标准并未规定必须多线程实现此功能,不过所有桌面浏览器都采用了多线

34、程方法)。Workers可以产生多个Worker,而每个Worker工作在不同的JavaScript程序空间内,不同程序空间不能直接访问,但是可以相互传输消息(Message)。这项功能在需要运行复杂算法时可以充分运用现代的多核心处理器能力,而冲出了JavaScript的单线程限制。(7) 套接字支持(Websockets)。Web Sockets套接字提供给了HTML5以长连接能力,以前的ajax只是由一次请求和接收组成,没办法保持连接,也就是缺乏了程序的实时性。而socket可以保持连接,每次连接也不用再提供复杂而冗长的HTTP报文,提高程序的网络性能、减少响应时间。2.1.3 HTML5

35、与本课题软件的联系本课题软件之所以使用HTML5技术开发,是因为传统的开发方式已经不能满足当前软件对于跨平台、成本、通用性的要求,而传统的Web网站式应用也不能满足当前用户渴望桌面式应用体验的要求4。在企业环境下,HTML5已经有了一定程度的发展,例如Gmail的离线应用、WebOS和Firefox OS的HTML5式网络编程、Facebook的HTML5客户端,都已经对HTML5开发应用做了尝试,Web应用在很多方面逐渐取代传统应用是主流软件开发领域的一个共同认识。故本课题软件使用HTML5开发,在拥有Web网站式应用优点的同时,使之尽量接近传统桌面应用的用户体验,这是其他传统开发平台所不能

36、达到的。这里之所以说是HTML5,而不是HTML4或以前的版本,因为只有HTML5的新技术,才能达到本软件的开发要求。本课题软件作为HTML5开发软件,甚至可以很方便的转变为其他类型程序,具有极大的灵活性。虽然由HTML5开发出来的程序是在线程序,但是可以极易的扩展为本地应用程序:例如使用免费开源的GTK、QT的Webkit引擎就可以直接变为可以跨Windows、Mac、Linux的传统桌面程序;还例如使用Adobe公司的PhoneGap的引擎就可以直接变为跨Android、IOS、Windows Phone系统的手机原生应用。总之HTML5赋予了软件无限的扩展能力。2.2 Node.js技术

37、简介2.2.1 引言Node.js并不是一个JavaScript应用,而是一个JavaScript运行平台,是使用JavaScript作为语言的服务器平台。Node.js是使用C+编写的,基于Google的V8引擎制作的,采用事件驱动、异步编程、为网络服务而设计5。2.2.2 Node.js的特点(1) 性能强大。虽然Node.js是使用JavaScript语言作为服务器且是单进程、单线程模式运行,但是凭借高效率的循环队列来维护事件列表,没有多线程的资源占用和不同进程或县城的上下文切换,这意味着在面对大量HTTP请求时,Node.js凭借事件驱动就足以搞定一切。(2) 编程语言是JavaScr

38、ipt。JavaScript作为传统的前端工程师的主力语言,在社区中有相当的影响力。正因为Node.js选择JavaScript作为语言,所以前端工程师也可以很方便的融入到后端开发,更利于前端后端开发的协调。(3) JavaScript在动态语言中性能较好,有开发人员对Javacript、Python、Ruby等动态语言做了性能分析,发现JavaScript的性能要好于其他语言,再加上V8引擎也是同类的佼佼者,所以Node.js的性能也受益其中。2.2.3 Node.js的发展现状Node.js自2009年5月发布至今,其模块网站(npmjs.org)已经拥有了超过2万个独立模块,每周的下载量

39、将近400万次,可见Node.js应用的势头之强烈。而著名社交网站LinkedIn在移动应用中也全部使用了Node.js作为服务器。Mozilla基金会、Google和我国的网易公司,也都分别开发过基于Node.js为后台服务器的多人在线角色扮演游戏引擎。2.2.4 Node.js和本课题的联系本课题软件使用了Node.js作为服务器的主要理由是:(1) Node.js具有安装配置方便、模块丰富、编程敏捷、性能强大的特点。(2) 本课题软件是以富客户端为特点、以JavaScript为主要编程语言的软件,如果使用Node.js,则更是有前台和后台语言相同等特点,方便和计划了程序设计。故本课题软件

40、使用了Node.js作为服务器模块,以配合本软件所需要的在线功能。(3) 因为Node.js的可扩展性强大,也赋予了本软件足够的扩展能力以适应以后业务的发展。2.3 NoSQL技术简介2.3.1 引言NoSQL(Not Only SQL)指非关系型数据库。随着互联网Web2.0概念的兴起,传统的关系型数据库在应对新型网站或网站应用,尤其是超大规模和高并发类网站应用时,已经显得力不从心。暴露出了很多难以克服的问题,非关系型数据库则因为其本身的特点,得到了迅速的发展。2.3.2 NoSQL的特点(1) 可以处理超大量的数据。传统SQL数据库在针对每秒上万次的查询操作时,还勉强可以应付,但是对于每秒

41、上万次的写入操作所要求的磁盘IO性能来说,就力不从心了。而对于新兴的社交网络,或者搜索引擎,要求的往往是数十万次的高要求。(2) NoSQL可以很方便的运行在廉价PC集群或者云服务器上。因为NoSql的松散组织特点,更利于分布式应用。而利用廉价PC集群更能降低企业成本。(3) 没有过多的操作。NoSql支持者也承认关系数据库提供了无可比拟的功能集合,而且在数据完整性上也发挥了稳定,但是很多情况下企业对于这些的要求可能没那么多。(4) NoSql的项目大多数是开源的,缺乏供应商的正式支持,一般从社区寻求支持。2.3.3. NoSQL和本课题的联系(1) 因为本课题软件采用JavaScript实现

42、,而JavaScript的内部存储的最好方法就是使用JSON对象。JSON作为一个离散的弱类型数据结构,或者说集合类型的对象格式,本身的结构和NoSQL的存储结构大同小异。故选择NoSQL作为主要数据库技术可以更方便的配合JavaScript的技术特点。(2) 本程序的主要数据库内容并非是安全保密的用户私人文件,而更多是单词信息和单词记忆信息这种对安全性和数据完整性要求不高的数据。如果使用SQL数据库保存,反而会使得程序代码冗长,查询效率降低。(3) 本程序的主要存储需求是客户端的,而主流浏览器中有部分并未皆实现WebSQL技术和IndexDB技术。但因主流桌面浏览器和手机浏览器中已经都实现对

43、LocalStorage技术的支持,故只能选择其作为数据存储的主要手段。而LocalStorage要存储数据最好的方法就是使用NoSQL风格的JSON数据库。2.4 MVP设计模式简介在面向对象软件的设计里,对象,或者说类是软件组成最基本的部分。采用设计方法组合这些元素,得到构成面向对象系统的部件,同时这些部件的设计方法和组成方法在不断的完善,为了得到软件工程中关于分工的“高内聚”、“低耦合”的特征,最终这些设计方法逐渐演变发展,统称为设计模式(Design Pattern)。本节介绍本课题软件所使用的MVP设计模式。2.4.1 引言MVP(Model-View-Presenter)即把一个应

44、用的输入、处理、输出流程按照Model、View、Presenter的方法进行分离,这样就分成了三个层:模型层,视图层,业务逻辑层(提供者层)。MVP是从经典的MVC(Model-View-Controller)模式中演变来的,他们的基本思想相通,Presenter层类似于Controller层,最主要的区别在于MVP模式中的Model和View层不能直接通信,必须通过Presenter层作为中介;而MVC模式中是可以直接通信的。视图(View)代表用户交互界面,对于Web应用来说,最主要的是指需要显示的HTML界面。随着应用的规模不断壮大,界面处理的难度也加大了。MVP的视图层主要工作是视图

45、层面的数据采集和处理,对用户的请求进行响应,然后将响应信息传递给业务逻辑层进行处理。模型(Model)的作用是保存软件所需要的数据模型,对于业务处理层指提供一些接口,而对视图层来说是透明的。模型层的所有的操作都在内部完成,只需要在接口上返回处理结果即可。业务逻辑层(Presenter)是介于视图层和模型层之间的一个层,用来接收来自视图层的用户请求,或者是将模型层的结果发送给视图层来显示,充当它们两者之间的一个桥梁。在MVP设计模式中,应用程序的逻辑主要在业务逻辑层实现(如图2.1所示)。图2.1 MVP结构流程图2.4.2 JavaScript下MVP的运行机制如何在JavaScript下实现

46、MVP构架,是一个技术难点,在这里,本课题的主要实现采取了参考文献6中提供的方法,配合作者综合参考其他方法而综合完善的一种独特方法。主要的信号传递由作者编写的Event类实现的。Event类的主要实现目的是为了让一个类中实现一个或多个可以绑定的接口,而其他类可以注册这些接口,当事件产生时,就通知这些接口,简介通知对这些接口进行注册的类。在MVP模式下,JavaScript对应三个层首先要用三个对象(Object)分别表示。在JavaScript中,没有C+/Java等语言中常见的类(Class)的定义,一种普遍看法是,JavaScript并不是一个传统的“面向对象”语言,而是一个“基于对象”的语言,总体更类似Lambda算子延伸之后的函数式编程语言。也就是语言中的所有变量、函数、或者任何类型,都是一个对象。当然JavaScript是可以使用面向对象方法进行编程。首先的每个操作都表现在视图层的,如点击按钮,或者输入信息。首先的一个技术难题是怎么样保证信息从视图层传递到业务逻辑层。本软件使用了一个事件方法,首先定义一个事件类Event,由视图层定义多个事件,例如某个按钮的单击事件是ButtonEvent。在业务逻辑层初始化时,对视图层的这个事件进行一次或多次注册,也就是说,注册之后,当视图类产生这个

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1