软件工程论文

您当前的位置:学术堂 > 计算机论文 > 软件工程论文 >

推荐系统开发使用技术简介

来源:学术堂 作者:姚老师
发布于:2016-09-30 共3610字
  本篇论文快速导航:

展开更多

  第 2 章 使用技术简介

  2.1 ASP.NET MVC 框架简介。

  2.1.1 MVC 框架简介。

  MVC 框架是 view-model-controller 的英文单词的首字母缩写,使用MVC(Model View Controller 模型-视图-控制器)框架设计创建 Web 应用程序[6].

  MVC 兴起之初是用在桌面程序中的,是施乐帕克研究中在八十年代为Smalltalk-80 开发语言设计的一种软件框架[7],现在被应用在各种程序开发活动中。

  MVC 使用一种将业务逻辑、数据存储、用户界面显示三大模块互相分离的方法来组织代码结构,其最初是希望将模型和视图的 code 实现分别进行,将业务逻辑的实现单独集中到一个模块里面,达到以后需要改进或个性化定制用户界面时,不必重新编写业务逻辑的实现部分,从而使同一块 code 实现的功能可以使用不同的形式表现出来,达到代码重用的目的。

  (1)视图模块(View):

  就本文而言,视图模块就是指音乐网站的用户页面,是访问站点时够看到并与进行操作,从而和网站之进行互动的界面。视图模块(页面)其实就是由一系列 HTML 元素构成的 web 页面,但是很多的新技术也被应用,其中就有Flash 和 XML/XSL,WML 等语言和 Web services[8].使用 MVC 一最明显的改进是它能为你的 web 程序处理很多个页面,当用户在页面进行某种操作时,view本身并不对这些操作进行操作和响应,它只是单纯的采集信息,显示结果(modle返回的)。

  (2)模型模块(Modle):

  模型模块是 web 应用程序的核心组成部分,是程序中实际用来处理应用程序业务逻辑的部分,模型模块负责从数据库中存取数据并进行处理。在这三个模块中,Modle 处理的业务是最多的,所有的对数据库的增删查改等操作都是由 modle 执行的[9].模型模块处理后返回的结果与数据的格式没有关系的,这样一来同一个 modle 就能为多个 view 处理并返回数据。只需编写一个模型就可以被多个页面反复使用,增加了代码的复用率。

  (3)控制器(Controller):

  控制器采集人员在 page 中的输入并调用 modle 和 view 去计算并返还用户需要的结果。所以当 Web 页面中有相关操作时,Controller 模块自己并不做任何响应[10],比如数值计算或页面的输出等,它只是简单接受来自页面的访问请求,并根据这些请求的具体类型来调用对应的的模块去处理,并最终决定在哪个 view 页面接受并显示 modle 模块计算、返回的数据。

  根据上文的介绍可以总结出使用 MVC 的网站的业务流程,首先网站使用者在页面进行操作,由 Controller 模块接收这些操作对应的请求,交给合适的Modle 模块进行计算,而功能实现 code 在 Modle 模块中进行,当 Modle 模块的运算完成后,将结果(数据)返回 Controller,并且 Controller 用对应的 View(页面)格式化收到的数据,并通过网站页面展示给用户。 使用了 MVC 意味着我们在设计的时候要考虑各个功能的封装和分离,会有些冗余的工作量,但是考虑到它给我们带来更多的方便还是值得采用的。

  2.1.2 MVC 框架的优、缺点。

  MVC 框架的优点是代码结构清晰、可重用性高、分工明确[11]:

  首先,使用 MVC 框架能够使程序的结构清晰明了,复用率更高;其中最核心要素是在多个不同 web 页面中处理操作时可以使用同一个业务模块(模型)。

  因为 Modle 模块是封装完成的,并且与 Controller 和 view 页面相分离,因此能够轻易改变 web 网页的数据模块和业务规则。

  因为使用 MVC 框架的 web 站点的三个部件是各自分开设计并实现的,如果只是单独修改其中任意模块并不会对其他两部分的实现造成连锁效应,所以采用这种设计框架能设计出良好的重用性强、松偶合的构件。

  其次,由于整个 web 站点被分为三部分分别实现,因此用户定制页面时产生的新功能影响比较小,可能只修改其中一个模块就能实现。同样的,在编程人员构造复杂的页面程序时为了实现不同的功能模块,可能会需要使用很多不同的 Modle 模块及 View 视图,这时,使用 Controller 模块可以轻易的将这些没有关联的模块组合起来,完成相应的功能来相应客户的请求。

  最后,使用 MVC 框架在简化软件工程化管理[12]方面有很大的作用。由于三个不同的模块只负责自己的业务功能,而各层的应用在实现时往往都具有很多相似的特点,这样使得开发人员可以将精力集中在各自的模块,有利于这些人员熟悉自己模块的逻辑。

  当然,MVC 分层式结构由于其设计原因也有一些缺点:

  首先,降低了软件的性能。如果不采用 MVC 框架,很多功能处理模块可以直接对系统数据库进行操作,现在却必须中转一次,通过一个"中介层"来进行这些数据操作。

  其次,有时会导致多次连带的修改。这种连带关系在自 View 向 Modle 的方向中体现最为突出。如果为了满足 CI 必须在 View 添加一个新业务模块,为保证系统整体架构严格遵循 MVC 结构,就要在后台的业务层实现部分和数据层中都添加对应的编程实现,支持相关的业务。

  总体来看,MVC 框架是一种非常好的创建 web 程序的思路,它所规定的一些设计准则,像逻辑处理和页面显示互相分离比较简单易懂。但是如果要分离 Model、View 和 Control 的模块,你可能需要从头设计你的应用程序的整体构架。如果你愿意使用 MVC 框架,并且有足够的技术积累来处理它带来的额外的工作量和复杂度[13]

  2.2 Ajax 简介。

  AJAX是"Asynchronous JavascriptAnd XML"(异步JavaScript和 XML)的缩写。它是用来创建交互式 web 应用的编程技术[14].使用这种技术,可以在客户端不重新刷新整个网站信息的情况下,只与 Server 端进行少量的数据交换,对网站中的某些模块进行异步更新。

  AJAX 并不是程序设计语言,而是一种新的 web 技术,使用它可以设计出交互性[15]更强并且响应速度更快的(因为可以只更新部分)Web 应用程序Ajax 的优点有很多:学习曲线较为平滑:AJAX 不是一种新的编程语言,它所使用的很多技术都是从已有技术中借用的,因而方便开发人员学习和掌握。

  可以使用 JS 代码向 Server 提出前端操作产生的相应请求,并处理 Server返回的响应数据,在这一过程中并不会阻塞页面的应用。通过其核心对象XMLHTTPRequest,JS 可在不重新刷新整个 page 的前提下与 Web 服务器进行一系列数据交换。

  在浏览器与 Web 服务器之间使用异步的数据传送方式,这一网页可以根据实际操作针对性的从服务器读取某个功能模块所需的数据,而不是整个页面,也就是说可以只交换一部分数据,减少了数据传输量。

  AJAX 技术的使用使 web 网页程序 code 规模更小、响应速速更快,用户界面更友好。

  2.3 Entityframework 技术简介。

  ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案[16].

  一直以来,开发人员和数据库模块一直都有密切的联系,在实际发布并应用的商业软件中,数据库是必定存在的模块,这让就使得开发人员为了连接与访问数据库就必须去学习相关的数据库操作指令。目前在计算机相关学科中有很多研究人员都在讨论如何将业务模型和数据库集成在一起。对象关系对应(Object-Relational Mapping) 的技术就是由此而生,如 Hibernate 或 NHibernate都是随之而出现的产品。

  微软通常使用 ADO.NET 来进行数据访问,但却没有对应的数据库操作工具,像 NHibernate 这样。因此微软在。NET Framework 2.0 中,提出了 ObjectSpace,ObjectSpace 可以让 web 程序可以使用面向对象的方法连接并操作数据库,其设计理念 与 NHibernate 非常接近。但是因为 ObjectSpace 的工程非常大,在。NETFramework 2.0 发布完成时还没有全部实现,因此微软将它纳入下一版本的。NETFramework 中,并且再加上一个设计的工具(Designer),构成了现在的 ADO.NETEntity Framework.

  Entity Framework 将 DB 中的每个对象都转换成应用程序对象[17],其中的字段都改变为属性,关系则改变为导航属性,这样就将复杂的数据库 E/R 模型转化成编程人员非常熟悉的对象模型,这样开发人员就像平常编程一样直接操作对象而不用直接面对数据库结构,相当于为开发人员提供了 code 与数据结构的中间转换,方便开发者能用熟悉的开发语言来操作数据库。提供支持的模块,则是已经被高度集成的与 DB 结构对应的概念层、储存层,以 及支持 EntityFramework 的数据提供者 (provider),使得编程人员能够方便的操作数据库。

  ADO.NET Entity Framework 的整体架构图。

  (1) 概念层:负责向其上各层提供的对象与属性的显示与访问支持,概念层结构声明并定义了对象模型 (Object Model) ,通过这一层,上层的应用程序可以使用面向对象的方式访问数据,概念层结构是使用 CSDL (ConceptualSchema Definition Language) 编写。

  (2) 对应层:对应层负责确认接收到的数据、信息的来源,并将概念层的结构映射到下层的储存结构,同时还要负责监视数据流向。对应层结构是使用MSL (Mapping Specification Language) 编写(3) 储存层:储存层的功能主要是负责生成数据库管理系统 (RDBMS) 中的数据表的对应的实体,让数据可以存储到正确的目的地中,或者是从正确的源地址中取出数据。它是使用 SSDL (Storage Schema Definition Language) 编写。

返回本篇论文导航
相关内容推荐
相关标签:软件技术毕业论文
返回:软件工程论文