公文素材库 首页

10.第六章 总结与展望

时间:2019-05-29 19:08:30 网站:公文素材库

10.第六章 总结与展望

第六章总结与展望

第六章总结与展望

6.1对电子现金的总结

电子现金技术作为电子支付中最具潜力的技术之一,在随着网络普及和计算机、网络通信技术的迅速发展,以Internet为基础的电子商务在全球范围内普及和迅速发展,与之相适应的电子支付系统成为产业界和学术界共同关注的热点。电子支付的安全性影响着电子商务的普及和发展,电子支付技术实用化,必须把安全和效率结合起来。它具有与现实物理货币相似的特性,具有信用卡和电子支票无法具有的性能。

本文主要研究了有关电子现金的一些重要理论和关键技术问题,包括:1.论述了密码学基础的概念和理论,进而选择了一种基于RSA公钥加密算法作为本设计的基本算法。

2.讨论了电子现金的安全性问题,并基于公钥密码体制原理,构造了一个电子现金方案。

3.讨论了数字签名技术原理及其应用,重点是在电子现金中RSA数字签名的应用,为电子现金的成功运作提供了保障。

4.针对本设计中一些不完善的地方进行了论述,在以后的学习和生活中尽量去完善。

但是对于电子现金的应用方面,还有些不很乐观。原因是:(1)只有少数商家接受电子现金,而且只有少数几家银行提供电子现金开户服务;(2)成本较高,电子现金对于硬件和软件的技术要求都较高;(3)存在货币兑换问题;(4)风险较大。

6.2对电子现金的展望

6.2.1电子现金的传递性的可用性研究

传递性是物理现金一个基本的特征,但在电子现金中还没有应用,最主要的原因是:电子现金中为了能跟踪重复花费的用户,在电子现金中加入了盲化的用户身份信息,在电子现金流动的过程中将加入使用过该电子现金的所有用

第六章总结与展望

户身份信息,因此根据信息论的理论,电子现金的长度是不断地增长的,每次交易都将造成大通信量问题,无法用于实际应用;另外电子现金无论是在构造还是存款过程中,相对于物理现金都是相当容易而有效的。

因此电子现金的传递性还有待于进一步研究。

6.2.2多银行电子现金的研究

现有的电子现金方案都是由一个银行发行的,但在现实生活中由多个电子银行系统发行的电子现金较之单个银行发行的电子现金是更适合的,因为在一个国家或地区具有电子现金发行能力的银行可能不止一家。这多个银行形成一个群体,它们受国家的中央银行管理,每个银行都可以发行电子现金。

所以由多个银行发行的公平电子现金模型是电子现金系统研究的重要方向。

6.2.3可分电子现金系统的研究

可分电子现金系统能够让用户进行多次合法的精确支付,减少提款次数,从而可以降低网络通信量,提高系统效率,因此可分的电子现金系统是研究的重点。Okamoto和Ohta于1991年首次提出了一个可分电子现金系统,该系统允许用户将电子现金分成任意金额进行多次支付,直到与该电子现金的总额相等为止。为使银行能够有效地检测用户的重复支付,他们采用了二叉树技术对电子现金进行表示,但这种技术导致电子现金的支付协议通信量大、计算复杂度高、效率低,尽管许多学者对该方案从不同的角度提出了改进,但都由于使用二叉树表示使得支付协议的执行效率仍然很低。

因此,到目前为止,可分电子现金系统依然是不实用的。关于这方面研究,还可以引入可信第三方来实现对超额支付者的识别,使电子现金的支付协议中没必要包含进行重复支付检查的信息,这样就可以放弃可分电子现金的二叉树表示技术,从而构造更简单的可分电子现金系统。

今后为了设计更安全有效的包括电子现金在内的电子支付协议,应该加强针对实际应用环境的公钥密码的设计,研究包括算法优化和软硬件快速实现的公钥密码技术、设计新型分组密码、研究分组密码的软硬件快速实现和专用芯

第六章总结与展望

片以及设计一些与商用的具体应用环境密切相关的特殊数字签名,比如盲签名、代理签名、群签名、具有消息恢复功能的签名等。这些密码的基础性工作,对于包括电子现金在内的电子支付技术的发展是非常必要的。

扩展阅读:总结与展望

第五章系统测试与分析

一、软件测试

经过需求分析、设计和编码等阶段的开发后,得到了源程序,开始进入到软件测试阶段。然而,在测试之前的各阶段中都可能在软件产品中遗留下许多错误和缺陷,如果不及时找出这些错误和缺陷,并将其改正,这个软件产品就不能正常使用,甚至会导致巨大的损失。目前,程序的正确性证明尚未得到根本的解决,因此软件测试仍是发现软件中错误和缺陷的主要手段。

系统整体测试步骤:1、单元测试

单元测试是整体测试中的第一步,通常在编码阶段进行。在源程序代码经过编译、评审、确认没有语法错误之后,便可开始进行单元测试。

2、集成测试

集成测试在单元测试完成之后,将所有的模块概要设计要求组装成系统时进行的测试,

主要目标是发现与接口有关的问题。3、确认测试

经过集成测试之后,接口错误已经发现被发现并改正了,接下便要进行确认测试。所谓确认测试就是验证所开发软件的功能性及其他特性是否符合软件需求规格说明书的要求。所以,确认测试又被称为有效性测试。

4、系统测试

系统测试是更大范围内进行测试,它将经过确认测试的软件作为整个基于计算机的系统的一个元素,在实际运行环境下,对系统进行的一系列集成和确认测试。

二、微博系统测试(一)注册页面的错误提醒和提交注册信息测试

反复点击注册页面的输入框,检测其失焦提醒错误的JS事件是否会失效。然后再分别依“”次增多地填入用户名、密码等,点立即注册按钮,看其是否提醒缺失的必填选项。接着,再新建一个合法账户,然后重新注册个与其名字相同的账户,看系统是否提醒,并且不为其添加记录。经过以上反复测试,该模块测试成功。

(二)登录功能及模块进入身份限制的测试

使用建好的账户不停登录退出系统,检测系统存储的用户信息是否变化。然后检测,不同身份的用户是否能进到其身份不符合的模块。经过以上反复测试,该模块测试成功。

(三)输入模块的测试

对于微博的发布各项比如表情,图片,音频等反复地测试,使用它们发送是否正常。经过以上反复测试,该模块测试成功。

(四)我的首页模块的测试

对于登录成功的用户跳转到用户自己的微博首页,会显示校园即时微博信息,并且首页链接到各项功能模块,并且可以发布微博。测试各个功能模块是否正常,若有问题,马上修改。经过以上反复测试,该模块测试成功。

(五)@提到我的模块的测试

当别人发布的微博或者转的微博含有@用户名的信息,那么会给被@的用户即时消息提醒,检查此功能是否正常,如果没有差错则测试成功。经过以上反复测试,该模块测试成功。

(六)微博正文模块,包括转发、收藏、评论的测试

是否可以正常转发、收藏、评论别人的微博,检查功能是否正常,如果没有差错则测试成功。经过反复测试,该模块测试成功。第六章总结与展望二、总结

(一)、学习

通过这次的毕业设计,我主要是学习到了如何使用ROR进行WEB开发,如何灵活使用CSS写出想要的页面样式,同时也学习了软件工程以及数据库方面的知识。

在整个系统的开发中,遇到了很多的难题,比如如何正确的去统计转发数量以及评论数量等。经过几次的修改以及借鉴Sina微博的做法,才得以初步解决。也让我对权限和授权的知识的认识更进了一步。而且自己学习使用PHOTOSHOP等工具,也是为了配合CSS让自己的系统页面更好看,有一个好的视觉效果,也是花了很长的时间。对UI设计也更有了解了。

(二)、反思

当然,由于各方面知识的不专业,这样的一个系统还不够成熟。而且许多当初的设计的功能最后因为各种原因也未能加入。系统在一开始编写时未能给那些功能预留扩展,这是我在详细设计时候未设计完善所导致的,是一个很好的经验教训。希望以后自己有更好的设计。

一、展望

通过这一次毕业设计,使我认识到自己在计算机领域所擅长的以及所需要弥补的是什么。我喜欢着眼于一个软件产品的UI,自己会学习各种相关的知识来完成一个自己设计的UI。而且CSS也是我自己擅长的。以后我会更努力学习关于产品UI的专业的知识,以从事于相关职业,更好的做好产品的图形界面设计。参考文献

[1]、DaveThomas,DavidHansson等.应用Rails进行敏捷Web开发.电子工业出版社.201*.

[2]、裴有福.Web技术大全.中国水利水电出版社.1998[3]、百度知道.

[4]、BaronSchwartz、PeterZaitsev、VadimTkachenko、Jeremy.高性能MySQL(第2版).电子工业出版社:201*

[5]、贾铮等.HTML+CSS网页布局开发指南.清华大学出版社.201*[6]、邓蔚等.编程红宝书:Ruby完全自学手册.机械工业出版社.201*[7]、柳靖等.RubyonRails快速Web应用开发实战[M].电子工业出版社.201*

[8]、〔美〕杰克戴维斯.ThePhotoshopWow!Book.201*.致谢

经过一个学期的努力,毕业设计系统的开发暂时告一段落了。这次毕业设计,让我充分的把这几年所学到的专业知识融会贯通,从做需求分析、设计数据库、到系统整体设计和具体的代码实现。整个设计,让我学到了许多以前在课堂上面学不到的知识,很大程度的加强了自己的实践能力。在此,感谢我的指导老师许精明老师的指导和督促,在整个的开发步骤上,老师给我们列出了详细的任务工作计划,使我们在开发进程上,不致于茫然。在设计思路和系统功能结构方面,老师给我们提出了许多宝贵的意见,同时不断地给我们提出更高的要求。另外,感谢在我的毕业设计过程中给过我帮助的所有同学,是大家的帮助才得以完成我的这个系统。

同时在设计过程中,我也发现了自己的不足,因为是首次进行这样的课题开发,在代码的实现上略现笨拙,整个程序在架构上也算不上完美,以致予一些最初设计的功能最终并未实现,但我相信通过今后的学习和实践,自己在开发能力一定能够得到大大的提高。

最后衷心感谢四年来辛勤教育我们的老师,感谢朝暮相处的同学以及在毕业设计中被我引用或参考的论著的作者,并向参与此次答辩的老师致以深深的谢意!

附录二附录文献翻译

模型、视图和控制器Rails应用的架构

Rails应用的一个有趣特性是它在如何组织web应用上强制推行一些严格的限制。令人惊讶的是,这些限制让创建应用变得方便,而且不止一点的方便。让我们来看看是为什么。

3.1模型、视图和控制器

让我们回到1971年,TrygveReenskaug为开发交互应用创造了一种新架构。在他的设计中,应用被分解为三种组件:模型、视图和控制器。

模型负责保存应用的状态,有时状态是临时的,仅与用户交互时存在,有的状态是持久的,通常被保存在应用之外的数据库中。

但模型不仅仅只是数据,它实施与数据有关的所有业务逻辑。举例来说,如果一个账户不应被用于一个小于20美元的订单额度,模型将为账户施加该约束。这就是意义所在。通过在模型中制约业务逻辑规则,我们可以确保没有任何其他东西会影响数据的稳定性。模型同时作为数据库和看守者而存在。

视图负责更新用户界面。通常它基于模型中的数据。举例来说,某在线商店有个产品目录要呈现给用户,该目录可通过模型得到。但取得目录并以一定格式呈献给最终用户的却是视图,尽管视图可能为用户提供多种输入数据的方法,但它本身并不管理这些输入的数据。当数据呈现给用户以后,视图的工作就完成了。可能会有许多视图共享同一数据模型。在网络商店案例中,一些视图负责呈现商品目录信息,而另一些视图用于管理员增加或修改商品信息。

控制器负责协调整个应用。它从外部世界(通常是用户输入)接收事件,与模型交互,并给用户呈现相应视图。

这三者模型、视图与控制器都是从我们熟知的MVC框架中来的,要知道这三者是如何协同运作的,请看图3-1。

MVC最初的设想是将其用于传统的GUI应用,开发者们希望可以分离它们各自的表示,从而使维护和编写代码变得更容易。

每个概念或行为都可以在MVC框架中呈现,使用MVC就像在已放置好大梁的基础上建造摩天大楼,有了它,构建其他部分就变得更容易了。在开发应用的过程中,我们将尽量使用Rails为构建应用的搭脚手架的能力。

ROR也是个MVC框架,Rails为你的应用实施一个框架开发模型、视图及控制器。作为分离的功能区,并且在程序运行时将它们联接在一起。使用Rails的一个乐趣是这个联接过程基于一个智能的框架。因此你不用去写任何外部配置就可以让它们运作。这是Rails“习惯优于配置”哲学的一个体现。

在Rails应用中,送进来的请求最先传递给Router,Router用于发送和解析请求,最终,会在控制器的某段代码中标识一个特定的方法(该方法在Rails中被称为Action行为)。该行为会在请求中查看数据,还可能与模型交互,也可能使其他行为被唤醒。最终,该行为为视图准备需要提交给用户的信息。

Rails如图3-2那样处理请求,在本例中,应用开始时呈现商品目录页面,用户只需点击位于商品旁边的[AddtoCart]按钮,该按钮传递信息给

:3000/line_items?

product_id=2,其中line_items是我们应用中的一个资源,2是我们已选商品的内部ID。

路径组件接收到送来的请求,并很快将其分解。该请求包含一个路径(/line_items?product_id=2)以及一个方法(该按钮执行POST方法,其他常见方法还有PUT和DELETE)。在这个简单例子中,Rails取得了路径的第一部分line_items作为控制器名称,以及product_id作为商品编号。按照惯例,POST方法与创建动作相关联。(我们将在267页谈到命名惯例问题)

Create方法用于处理用户请求。在本例中,该方法找到目前用户的购物车,购物车是由模型控制的一个对象,接着它也要同时要求模型找到商品2的相关信息。然后该方法告诉购物车自己添加商品2的信息(看到模型是如何被用于保存所有交易信息了吗?控制器告诉应用去做什么,模型知道该如何去做)。

现在购物车已将新商品包含在内,我们可以让用户看看它了。控制器唤醒视图代码,但在此之前,它已为视图从模型中读取购物车对象做好了准备。在Rails中,这个约定通常是隐性的,又一次,是约定帮我们在视图和控制器间建立联接。

对于一个MVCweb应用来说,这已经够用了。通过跟随约定和合理划分功能区,你将发现代码变得易于扩展和维护,看起来是笔划算的交易不是吗?如果MVC只是简单将你的代码划分为适当功能区,你可能会奇怪为何还需要ROR这么一个框架,答案很简单:Rails为你包揽了所有琐碎的家务活儿,那些将占用你大量时间的恼人细节,使你将注意力集中在应用的核心功能上。让我们来看看Rails是如何做到这点的。

3.2Rails支持模型

总的来说,我们希望在关系数据库上保存应用的信息。订单实体系统将在数据库表中保存订单,在线商品及用户细节。甚至那些通常使用非结构化文本的应用,如weblog及一些新闻站点,都会使用数据库作为它们的后台存储工具。

尽管一两句话无法说明操作数据库的SQL(结构化查询语言),关系数据库实际上是基于数据集理论被设计而成。理论上讲这设计没什么问题,但它很难与面向对象语言结合在一起。对象是关于数据和操作的,数据库关于值的集合。在OO系统中,难以用代码表达的操作可以在数据库中轻松实现,反之,难以用关系数据库实现的,可以用代码表达。

随着时间推移,人们发明了多种方法来整合这两种途径,来共同呈现数据。让我们看看Rails采用了那种方法将关系数据库映射到对象上面。

对象关系映射

ORM库将数据库表映射为各种类,如果数据库中有名为orders的表,我们的程序就会有个Order类,表中的行与该类的对象关联,一个特定的订单表示Order类中的某个对象。在该对象中,属性用于获取和设置表中的特定列,Order对象中有内部方法用于获取和设置账户信息、缴纳税金和其他操作。

此外,Rails中用于覆盖数据库表的类提供系列类级方法可以实现数据库表的各种操作。举例来说,我们要根据特定ID来找寻一个订单。该操作被实现为一个可返回Order对象的类方法,在Ruby代码中,它看起来像这样:

有时这些类级方法返回的是一个对象集:

最后,与对象们都有可操作表中对应行的方法,可能最常用的就是保存,将其所在行保存进入数据库。

所以,ORM层将数据库映射为类,表中行映射为对象,列映射为对象属性。类方法用于实现表级操作,实例方法用于实现列操作。

一个典型的ORM库中,你需要提供配置参数明确数据库实体与程序实体间的映射,使用这些ORM工具的程序员通常发现他们要创建和维护一大堆的XML配置文件。

ActiveRecord

ActiveRecord是个专用于Rails的ORM层,它跟从标准ORM模型。表映射为类,行映射为对象,列映射为对象属性。它与大多数ORM库最大的不同在于它的配置方式。通过约定和遵循合理框架,ActiveRecord大大减少了程序员配置文件的数量。

为了说明这一点,以下有个使用ActiveRecord来覆盖Orders表的代码:

这段代码通过ID来取得订单,它使用了Order类,并修改pay_type变量(我们现在先忽略创建数据库连接的代码)。ActiveRecord把我们从处理底层数据库的麻烦中解放出来,让我们集中精力在业务逻辑上。

但ActiveRecord能做的不止于此,正如你所见的那样,在开发购物车应用时,你会看到这点。ActiveRecord与Rails框架的其他组件无缝的集成在一起,若一个表单发送的应用数据与业务模型有关,ActiveRecord可以将数据抽取到模型当中。ActiveRecord支持各种设定好的数据模型,若表单数据没能通过验证,Rails视图就可以抽取并将错误显示出来。ActiveRecord是RailsMVC架构稳固的模型基础。ActionPack:视图与控制器

请考虑下这点,视图和控制器在MVC框架中是联系紧密的两个部分,控制器为视图提供数据,控制器从视图产生的页面中获取事件,正因如此,Rails中对这两者的支持被绑定到一个名为ActionPack的独立组件中。

不要傻傻因为ActionPack是个独立组件就以为你的视图和控制器代码会被搞得一团糟。恰恰相反,Rails给了二者足够的独立性,让开发者为控制与显示逻辑编写界限清晰的代码。

视图支持

在Rails中,视图负责创建部分或全部需要在浏览器中呈现的响应,无论是运行应用或发送邮件。简单说来,视图就是一块HTML代码用以显示固定的文本块。通常你可能想在其中嵌入动态代码,而这些是由控制器中的行为方法创建的。

在Rails中,动态部分由模板生成,它有以下三个特性。最常用的叫模板模式,也叫做嵌入式ruby(ERb)。

将小片的Ruby代码嵌入视图文档中,在很多方面都与其他web开发框架类似,如PHP或JSP。尽管这方法很灵活,但还是有些人认为它亵渎了MVC的精神。通过在视图中嵌入代码,我们大胆尝试了本应在模型或控制器中的增量逻辑,正如其他事物一样,有节制的合理使用是明智的,滥用则造成问题。开发人员需把握二者之间的界限(我们会在第410页,用ERB更新HTML代码一节看到有关内容)。

XMLBuilder也可使用Ruby代码构建XML文档生成的XML结构会自动跟随代码结构,我们将从第408页开始讨论xml.builder模板。

Rails也提供RTS视图,该视图允许你在服务器端创建JavaScript代码,然后在浏览器中显示。这点对创建动态Ajax接口很有利,我们将从145页讨论这部分内容。

谈谈控制器

Rails控制器是应用的逻辑中心,它协调了用户、视图和模型三者间交互。然而Rails控制幕后大部分交互操作,让你的代码可集中于功能实现上。这使得Rails控制器代码变得极易开发和维护。控制器也用于安置一系列重要相关服务:

它负责引导外部请求获得内部行为,它可以很好管理用户友好的URLs。它管理缓存,可以让应用在大量请求访问时表现良好。

它管理帮助模块,该模块可以在不增加大量代码的情况下扩展视图模板的性能。

它管理会话,让应用在交互时保持连续的感觉。附录一翻译原文

Model,viewandcontrollerRailsapplicationframework

AninterestingfeatureofRailsapplicationsimposestringentrestrictionsonhowtoorganizethewebapplications.Surprisingly,theserestrictionscreateapplicationsbecomesconvenient,butmorethanalittleconvenient.Letuslookatwhy.

3.1model,viewandcontroller

Let"sgobackto1971,TrygveReenskaugcreatedanewframeworkforthedevelopmentofinteractiveapplications.Inhisdesign,theapplicationisbrokendownintothreecomponents:model,viewandcontroller.

Responsibleforthestatetosavetheapplicationmodel,sometimesthestateistemporary,onlywhentheuserinteraction,andsomestateislong-lasting,usuallystoredinthedatabaseoutsideoftheapplication.

Themodelisnotjustdata,itistheimplementationofallthebusinesslogicanddata.Forexample,ifanaccountshouldnotbeusedforanorderoflessthan$20amount,themodelwillaccounttoimposetheconstraints.Thisiswherethemeaning.Constraintsinthemodelbusinesslogicrules,wecanensurethatnootherthingswillaffectthestabilityofthedata.Modelatthesametimeasthedatabaseandthecaretakerthere.

Theviewisresponsibleforupdatingtheuserinterface.Itisusuallybasedonthedatamodel.Forexample,anonlinestore,acatalogtobepresentedtotheuser,thedirectorycanbeobtainedthroughthemodel.Butmadeandthecatalogwasdedicatedtotheenduser,butisaviewinacertainformat,althoughtheviewmayprovideuserswithavarietyofinputdata,butdoesnotitselfmanagetheseinputdata.Whenthedataafteritispresentedtotheuser,theviewoftheworkcompleted.Theremaybemanyviewsharethesamedatamodel.Inthecaseofonlinestores,someoftheviewresponsibleforshowingthecataloginformation,whileothersviewfortheadministratortoaddormodifytheproductinformation.

Thecontrollerisresponsibleforcoordinatingtheentireapplication.Itfromtheoutsideworld(normallyuserinput)toreceiveevents,interactingwiththemodel,andrenderedtotheuserview.

Three-model,viewandcontrollerarefromtheWearefamiliarwiththeMVCframework,andtoknowthesethreecollaboration,seeFigure3-1.

MVCwasoriginallyconceivedfortraditionalGUIapplications,developershopecanbeseparatedfromtheirrespectiverepresentation,sothatmaintenanceandcodeeasier.

EachconceptorbehaviorcanbepresentedintheMVCframeworkusingtheMVCashavebeenplacedgirdersonthebasisoftheconstructionofskyscrapers,andwithit,buildtheotherpartseasier.Inthedevelopmentandapplicationoftheprocess,wewilltrytouseRailsscaffoldingabilitytobuildapplications.

RORisaMVCframework,Railsimplementationofaframeworkforyourapplication-thedevelopmentofthemodel,viewandcontroller.Theprogramrunsasaseparatefunctionalarea,andtheyarelinkedtogether.Railsisafunconnectionprocessbasedonanintelligentframework.Soyoudonothavetowriteanyexternalconfigurationallowstheiroperation.ThisisamanifestationoftheRails"habitsoverconfiguration"philosophy.

Railsapplication,sentintherequestwasfirstpassedtotheRoutertheRouterisusedtosendtheresolutionrequest,andultimately,inthecontrollersectionofcodethatidentifiesaparticularmethod(themethodcalledActionbehaviorinRails).Theactwouldviewthedataintherequest,mayalsointeractwiththemodel,mayalsomakeotheractstobeawakened.Ultimately,thebehaviorfortheviewtopreparerequiredtouser.

submit

information

to

the

RailsinFigure3-2asprocessingtherequest,showingtheCatalogpageinthiscase,thebeginningoftheapplication,userssimplyclickonthegoodsnext[AddtoCart]button,thebuttontotransmitinformationto:3000/line_items?

theproduct_id=2,line_itemsisaresourceinourapplication,twointernalIDhasbeenchosenforthegoods.

Pathcomponentreceivesarequestsent,andwillsoonbeitsdecomposition.Therequestcontainsapath(/line_items?Theproduct_id=2)andamethod(thebuttontoexecutethePOSTmethod,theothercommonmethodsPUTandDELETE).Inthissimpleexample,Railshasachievedthefirstpartofthepath-line_itemsasthecontrollername,andproduct_idasacommoditynumber.Byconvention,thePOSTmethod,createactionassociated.(267itcomestonamingconventionproblems)

Createmethodsforhandlinguserrequests.Inthiscase,themethodfindsthecurrentuser"sshoppingcart,thecartisanobjectofcontrolbythemodel,thenitshouldalsorequirethemodeltofindtherelevantinformationofcommodity2.Thentoldcartaddcommodity2information(seethemodelishowtobeusedtosavealltransactioninformation?Controllertellstheapplicationwhattodo,themodelknowshowtodo).Shoppingcartnewproductshavebeenincluded,wecanlettheuserseeit.Controllertowake-upviewofthecode,butbeforeithastheviewisreadfromthemodeltheshoppingcartobjectready.InRails,thisagreementisusuallyhidden,onceagain,agreedtohelpustoestablishaconnectionbetweentheviewandcontroller.

ForaMVCwebapplication,whichisalreadygoodenough.Followtheconventionsandrationaldivisionoffunctionalareas,youwillfindthecodeeasytoextendandmaintain,itseemsispenbargainisnotit?IfMVCissimplyyourcodeintotheappropriatefunctionalarea,youmightwonderwhysuchaframeworkneedstoROR,theanswerissimple:Railssweptalltrivialchoreschildrenwhowilloccupyalotoftimeannoyingdetails,sothatyoufocusontheapplicationofcorefunctions.LetuslookatRailsishowtodoit.3.2Railssupportmodel

Overall,wehopethattheinformationstoredinarelationaldatabaseapplications.Orderphysicalsystemwillsavethedetailsoftheordersofgoodsanduserinthedatabasetable.Eventhosewhotypicallyuseunstructuredtextapplications,suchasweblogandnewssitewillusethedatabaseastheback-endstoragetools.

AlthoughoneortwowordscannotexplaintheoperationofthedatabaseSQL(StructuredQueryLanguage)relationaldatabaseisactuallybasedonthetheoryofdatasetstobedesigned.Intheory,thisdesignisnoproblem,butitisdifficulttocombinewithobject-orientedlanguage.Theobjectisadatabaseonthevalueofacollectionofdataandoperations.InOOsystems,itisdifficulttocodeexpressionoperationinthedatabaseeasily,andviceversa,itisdifficulttouserelationaldatabase,canbeexpressedincode.

Overtime,peopleinventedavarietyofmethodstointegratethesetwoapproachestogethertopresentthedata.LetuslookatRailsusesakindofrelationaldatabaseismappedtotheobjectabove.Object-relationalmapping

ORMlibrariesmapdatabasetablestoavarietyofclasses,ifthedatabasetablecalledorders,ourprogramwillhaveaOrderclass,rowinatableassociatedwiththeobjectofthatclass,aspecificorderthattheOrderclassobjects.Theobjectattributeisusedtoaccessandsetaspecificcolumninthetable,theOrderobjectinternalmethodsusedtogetandsettheaccountinformation,paytaxesandotheroperating

Railsprovidesaseriesofclass-levelmethodcanachieveavarietyofoperationofthedatabasetableusedtocovertheclassofthedatabasetable.Forexample,wefindanorderbasedonthespecificID.ThisoperationisimplementedasaclassmethodtoreturntheOrderobjectinRubycode,itlookslikethis:

Sometimesobjects:

these

class-level

method

returns

a

set

of

Finally,withtheobjecttohaveacorrespondingrowintheoperationaltable,maybethemostcommonlyusedistosave,saveitsrowintothedatabase.

ORMlayerdatabasemappingfortheclass,rowsinatablemappingobject,thecolumnismappedtoobjectproperties.Classmethodsfortable-leveloperations,andaninstancemethodforcolumnoperation.AtypicalORMlibrary,youneedtoprovidethemappingbetweentheconfigurationparametersexplicitlydatabaseentitiesandproceduresforentities,usingtheseORMtoolsprogrammersoftenfindtheywanttocreateandmaintainabunchofXMLconfigurationfiles.ActiveRecord

ActiveRecordistheRailsORMlayer,whichfollowthestandardORMmodel.Thetablemappingfortheclassmappingrowstoobjects,thecolumnismappedtoobjectproperties.ThebiggestdifferenceisthatwithmostoftheORMlibraryconfiguration.Conventionsandfollowthelogicalframework,ActiveRecord,greatlyreducingthenumberofprogrammersconfigurationfile.

Toillustratethis,thefollowingcodetocovertheOrderstableusingtheActiveRecord:

ThecodetogettheorderbyID,usetheOrderclass,andmodifypay_typevariables(whichwefirstignorethecodetocreateadatabaseconnection).ActiveRecordusfreefromthetroubleofdealingwiththeunderlyingdatabase,letusconcentrateonthebusinesslogic.ActiveRecordcandomorethanthat,asyoucansee,inthedevelopmentofashoppingcartapplication,youwillseethis.ActiveRecordandothercomponentsoftheRailsframeworkforseamlessintegrationwithaformtosendapplicationdataandbusinessmodelsrelatedtoActiveRecorddatacanbeextractedtothemodel.ActiveRecordsupportsavarietyofpredetermineddatamodel,theformdatadoesnotpassverification,theRailsviewcanextractanddisplaytheerrorout.

ActiveRecordisthebasisofthesolidmodelRailsMVCarchitecture.ActionPack,:viewandcontroller

PleaseconsiderthatunderthispointofviewandthecontrollerintheMVCframeworkiscloselylinkedtotwopartsofthecontrollerfortheviewtoprovidedataaccesstoeventsgeneratedbythecontrollerfromtheviewpageandthatiswhythesebothRailsthesupportisboundtoaActionPackindependentcomponent.

DonotbefooledbecauseActionPackisanindependentcomponentandthinkthatyourviewandcontrollercodewillbeamess.Onthecontrary,theRailstobothsufficientindependence,thepreparationofclearboundariesofthecodeallowsdeveloperstocontrolanddisplaylogic.ViewsupportInRails,theviewisresponsibleforcreatingpartoralloftheneedtoberenderedinthebrowserresponse,whetheritisrunningtheapplicationorsende-mail.Simplyput,theviewisanHTMLcodeforafixedblockoftext.Normallyyoumightwanttoembeddeddynamiccode,andthesearecreatedbythecontrollerbehavior.

InRails,thedynamicpartsaregeneratedbythetemplate,ithasthefollowingthreecharacteristics.Themostcommonlyusediscalledthetemplatepattern,alsoknownasembeddedruby(ERbtem).

EmbedasmallpieceofRubycodetoviewdocumentinmanywayssimilartootherwebdevelopmentframeworkssuchasPHPorJSP.Althoughthismethodisveryflexible,butstillsomepeoplethinkthatitdesecratedthespiritoftheMVC.Embedcodeintheview,wehaveaboldattempttoincrementallogicofthemodelorcontroller,likeotherthings,therationaluseofrestraintiswise,abuseiscausingtheproblem.Developersneedtograsptheboundariesbetweenthetwo(410,ERBupdatetheHTMLcodefortheonetoseethecontent).

CanalsobeXMLBuilderRubycodetobuildanXMLdocument-thestructureofthegeneratedXMLwillautomaticallyfollowthecodestructure,wewill408discussxml.buildertemplate.

RailsalsoprovidestheRTSview,whichallowsyoutocreateserver-sideJavaScriptcode,andthendisplayedinthebrowser.ThisisverybeneficialtocreateadynamicAjaxinterface,from145todiscussthispart.

Talkaboutthecontroller

Railscontrollerapplicationlogiccenter,whichcoordinatestheinteractionbetweenusers,viewandmodelthethree.However,mostoftheRailscontrolbehindthescenestointeroperate,sothatyourcodecanbefocusedonthefunctionrealization.ThismakestheRailscontrollercodetobecomeeasilydevelopandmaintain.Thecontrollerisalsousedforplacementofaseriesofimportantservices:Itisresponsiblefordirectingexternalrequestsforaccesstointernalbehavior,itcanbeagoodmanagementofuser-friendlyURLs.

Itmanagesthecache,youcanlettheapplicationrequestsaccesstoalargenumberofgoodperformance.

Itmanagestohelpthemodule,themodulecanincreasetheperformanceofanexpandedviewofalargenumberofcodetemplates.

Itmanagessessions,applicationsinteracttomaintainacontinuoussense.附录三附图或程序清单

一、功能一附图或程序清单二、功能二附图或程序清单

友情提示:本文中关于《10.第六章 总结与展望》给出的范例仅供您参考拓展思维使用,10.第六章 总结与展望:该篇文章建议您自主创作。

  来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


10.第六章 总结与展望
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/731478.html
相关阅读
最近更新
推荐专题