




已阅读5页,还剩58页未读, 继续免费阅读
(计算机应用技术专业论文)面向ria的mvc架构设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 i 摘 要 ria(rich internet application,富因特网应用)是集桌面应用程序的最佳用户 界面功能与 web 应用程序的普遍采用和快速、低成本布署以及互动多媒体通信的实 时快捷于一体的新一代网络应用程序。 基于软件架构的复用技术和软件架构的一般设计方法,针对 ria 应用进行领域 需求分析,并结合面向服务思想建立了 ria 应用的分布式模型 riadf(rich internet application distribution framework)。riadf 定义了 ria 应用的基本设计目标和客 户端/服务器基本功能模块,确定了模型基于实例和基于服务的混合交互模式,并在 此基础上定义了三种基本服务类型:应用程序定义请求服务、业务逻辑请求服务以 及 web 数据服务。riadf 对面向 ria 的应用开发有一定的理论指导意义。 利用 mvc 的 web 服务器端软件框架能够有效的提高 web 应用程序的可复用 性, 基于 riadf 模型,经过对现有的服务器端 mvc 架构的分析对比,并结合 web service、 设计模式、 组件协作等技术, 建立了一个易复用、 可进化的面向 ria 的 mvc 架构 riadf/mvc,以简化面向 ria 应用的开发。riadf/mvc 架构的重要特点是 以客户端视图为中心,采用 xmlrpc 协议作为客户端与服务器端的互操作协议, 实现对视图的细粒度级别控制。在这个架构之下,具体设计和实现了基于 asp.net 的原型系统,给出了架构各主要组成部分的技术要点和实现细节。项目应用实例给 出了基于 riadf/mvc 架构的一般开发过程,验证了 riadf/mvc 的可用性和对软 件复用的初步支持。 关键词关键词:富因特网应用,模型-视图-控制器,架构 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 ii abstractabstract ria(rich internet application) is a new generation of web applications, which integrates best ui functions of desktop applications and the popularity and fast、low cost of deployment of web applications and the interactivity of real-time multimedia. based on reuse technology and design methods of software frameworks and service- oriented idea, the ria domain requirement is analyzed and riadf (rich internet application distribution framework) is put forward. riadf defines the basic design goals and basic functions modules of client/server in ria, as well as a combined model of instance-based and service-based interactions between clients and servers. riadf also defines three types of services: application definition request service, businesss logic request service and web data service. riadf gives out basic theory guidelines for ria development. web frameworks based on mvc design model have great reusability. based on riadf, a new framework riadf/mvc is put forward to ease ria development, combined with web service, design patterns, component interaction technologies. the greatest feature of this framework is that it focuses on the client-side view, and uses xmlrpc protocol as basic interaction protocol, and the framework has implemented fine-grained manipulating of client view components. a prototype system of riadf/mvc has been designed based on asp.net, and the details of design and implementation of the framework including some important components have also been outlined. a real project demonstrates the basic development diagram based on this framework and it also verfies the reusability of the framework and basic support of software resue. key words:rich internet application, model-view-controller, framework 独创性声明独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在 文中以明确方式标明。本人完全意识到,本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借 阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进 行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密 ,在_年解密后适用本授权书。 不保密。 (请在以上方框内打“” ) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日 本论文属于 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 1 1 绪 论 1.1 研究背景、目的及意义 1.1.1 研究课题来源 本课题研究内容是:面向 ria 的 mvc 架构设计与复用研究。本课题来源于华中 师范大学 e-learning 项目教育资源管理系统 erms,该项目的主要应用目标之 一是为在线教育提供丰富的教学交互能力。为了能够为应用提供富体验的用户界面 ui、减轻开发难度,以及为后续研发提供基础构件,项目组基于 asp.net 平台设计 并实现了面向 ria 的 mvc 架构 riadf/mvc,实践证明该架构提高了项目的开发效率, 有很高的复用价值。 1.1.2 研究背景、目的及意义 随着计算机技术的进步和 internet 网络的普及,通过 web 向客户提供服务成为 现代软件发展的一种趋势,传统的商务活动也在向 web 转化。在可以预见的将来, 这种基于 web 的服务一定会在相当程度上取代传统应用而在人们的生活中占据主导 地位。 传统的 web 应用程序是基于 html 页面和服务器端数据传递的模式。html 是适合于文本的,随着 web 应用程序复杂性越来越高,传统的 web 应用程序已渐 渐不能满足 web 浏览者更高的、全方位的体验要求了,这也就是被 macromedia 公 司所称之为的 “体验问题” (experience matters) 。 此时一种被称为 ria1(rich internet application,富因特网应用)的具高度互动性和丰富用户体验的网络应用程序出现 了。macromedia 公司也借此机会开发了相关的技术和开发工具,促进 ria 的开发 和普及。 ria 是集桌面应用程序的最佳用户界面功能与 web 应用程序的普遍采用和快 速、低成本布署以及互动多媒体通信的实时快捷于一体的新一代网络应用程序。ria 中的客户端(浏览器)提供可承载已编译客户端应用程序(文件形式,基于 http 传 递)的运行环境,客户端应用程序使用异步客户/服务器架构连接到现有的后端应用 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 2 服务器,这是一种安全、可升级、具有良好适应性的新的应用模型,这种模型结合 了声音、视频和实时对话的综合通信技术使得 ria 具有前所未有的网上用户体验。 在教育领域,基于体验的研究与应用一直是 e-learning2-3关注的重点,而基于 web 的富体验设计也一直是应用开发效率低下的重要原因,实际应用市场上存在 着企业级的需求与传统的企业级应用开发平台的体验缺乏之间的矛盾。如何充分利 用企业级开发平台的优势,引入富体验到架构设计中,是 e-learning 应用研究的一 个主流方向。 mvc4 (model-view-controller,即模型-视图-控制器)设计模式以及基于 mvc 的架构(或 mvc 架构)的应用已相当成熟,如 microsoft 公司的产品 mfc5 (microsoft foundation class)中的 document-view 结构就是一个典型的 mvc 架构,这是 mvc 设计模式在桌面系统中的一个典型应用。在 web 架构领域,如 asp.net6、struts7 等企业级开发平台或架构也都是基于 mvc 设计模式的,这些架构在业界已经取得 相当成功的应用和普及。 传统的基于 mvc 模式的架构不再适用于面向 ria 的应用模式,如何对现有架 构进行改进以支持 ria 的应用需求是本课题的研究目的之一,本文将在分析 ria 应用需求后建立 ria 的应用模型,基于 ria 应用模型和 mvc 架构模式,设计面向 ria 应用的 mvc 架构,并给出基于 asp.net 的设计与实现,最后对该架构的可复 用性进行讨论。 1.2 国内外概况与关键技术 1.2.1 ria 1. ria 概要 企业级应用程序经历了几次系统架构方面的重要转变,在此过程中,客户端的 表现能力有起有落。ria 大致经历了这样一个发展过程: (1) 基于主机的应用程序:应用程序提供基于文本的非图形化用户界面,只有 内部人员才能进行访问。 (2) 客户机/服务器(client/server,简称 c/s)应用程序:二十世纪九十年代随 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 3 着 windows 的出现和客户端处理能力的增强,出现了客户机/服务器应用程序,它 们采用图形用户界面,客户端的数据处理能力比较强。但由于客户端应用程序需要 进行不断的更新,因此部署成本比较高,只能为少数人所使用。 (3) 浏览器/服务器(browser/server,简称 b/s)应用程序:九十年代中期,互 联网飞速发展,出现了浏览器/服务器应用程序,web 的广泛使用解决了 c/s 应用程 序部署、和更新的困难。但由于采用了 html 页面形式的用户界面,客户端的数据 处理能力较 c/s 应用程序有所回落。 ria 对用户体验提出更多要求,如丰富的用户界面组件,在无刷新页面之下提 供快捷的界面响应时间,提供通用的用户界面特性如拖放式(drag and drop)以及 在线和离线操作能力。 ria 具有的 web 应用程序的特点包括如:立即布署、跨平台、采用逐步下载来 检索内容和数据以及可以充分利用被广泛采纳的互联网标准。ria 具有通信的特点 则包括实时互动的声音和图像。 客户机在 ria 中的作用不仅是展示页面,它可以在幕后与用户请求异步地进行 计算、传送和检索数据、显示集成的用户界面和综合使用声音和图像,这一切都可 以在不依靠客户机连接的服务器或后端的情况下进行。 对于企业来说,部署 ria 的好处在于: (1) ria 可以继续使用现有的应用程序模型(包括 j2ee 和.net) ,因而无需大 规模替换现有的 web 应用程序,便可以轻松构建更为直观、易于使用、反应更迅速 并且可以脱机使用的应用程序; (2) ria 可以帮助企业提供多元化的重要业务效益,包括产提高销量、提高品 牌忠诚度、延长网站逗留时间、较频繁的重复访问、减少带宽成本、减少支持求助 以及增强客户关系等。 2. ria 目前的发展态势 在过去的两到三年中,web 开发人员一直是想构建一种比传统 html 更丰富的 客户端:一个用户接口,它比用 html 能实现的接口更加健壮、反应更加灵敏和更 具有令人感兴趣的可视化特性。ria 的出现目标之一是允许我们在因特网上以一种 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 4 像使用 web 一样简单的方式来部署富客户端程序。无论将来 ria 是否能够如人们 所猜测的那样完全代替 html 应用系统,对于那些采用 c/s 架构的胖客户端技术运 行复杂应用系统的机构和采用基于 b/s 架构的瘦客户端技术部署 web 应用系统地机 构来说,ria 确实提供了一种廉价的选择。 目前出现的几种比较有实力或者有特点的 ria 客户端开发技术: (1) macromedia flash/flex flash 从 6.0 开始 flash 就逐步具备建立窗体风格的应用程序的功能。据 macromedia 称已经有 98%以上的桌面系统的浏览器都安装了 macromedia flash player。这使得以 macromedia flash player 为客户端的 ria 可以支持种类广泛的平 台和设备。 flex 是为满足希望开发 ria 的企业级程序员的需求而推出的表示服务器和应用 程序框架,它可以运行于 j2ee 和.net 平台。flex 表示服务器提供基于标准的、声 明性的编程方法和流程,并提供运行时服务,用于开发和部署丰富客户端应用程序 的表示层。flex 开发者使用直观的基于 xml 的 mxml 来定义丰富的用户界面。该 语言由 flex 服务器翻译成 swf 格式的客户端应用程序,在 flash player 中运行。 (2) laszlo laszlo 是一个开源的 ria 开发环境。使用 laszlo 平台时,开发者只需编写名为 lzx 的描述语言(其中整合了 xml 和 javascript) ,运行在 j2ee 应用服务器上的 laszlo 平台会将其编译成 swf 格式的文件并传输给客户端展示。从这点上来说, laszlo 的本质和 flex 是一样的。flash 是任何浏览器都支持的展示形式,从而一举 解决了浏览器之间的移植问题。而且,在未来的计划中,laszlo 还可以将 lzx 编译 成 java 或.net 本地代码,从而大大提高运行效率。 (3) java swt java 已经出现几年了,并且完全支持创建基于窗体的用户界面。除了 java 基础 类(jfc/swing)中的用户界面组件之外,开发人员还可以使用来自于 eclipse project 的 swt 工具箱和许多第三方工具箱进行开发。对于图形来说,可以采用 java 2d api:一个非常完整且非常复杂的图形 api。你可以通过一个 web 浏览器使用 java 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 5 插件软件,或使用 java 运行时环境中较新的 java web start 技术来部署应用程序。 使用 java 建立 rich client 的主要缺陷是它的复杂性(即使对简单的窗体和图形也要 求编写非常烦琐的代码)和 java 浏览器插件的低市场占有率。 (4) xul xul(念作zool)是一种基于 xml 的用户界面语言,它来自于 mozilla 的开 放源码项目。它可用于建立窗体应用程序,这些应用程序不但可以在 mozilla 浏览 器上运行,而且也可以运行在其他描述引擎上,如 zulu(一个 flash mx 组件)和 thinleys(一个 java 实现) 。xul 描述引擎都非常小(100k 以下) ,它可以使用 xml 数据也可以生成 xml 数据。xul 的一个主要缺点在于它目前还没有获得一个主要 商业实体的支持。xul 最大的优点在于它与 gecko 引擎的集成(打开了通向大量 web 标准的大门) ,以及与大多数其它 xml 用户界面描述语言相比它是一种非常具 有表达力和简洁的语言。 (5) bindows bindow 是用 javascript 和 dhtml 开发的 web 窗体框架。javascript 用于客户 端界面的显示和处理,xmlhttp 用于客户端与服务器的信息传输。javascript 在客 户端的表现力不容置疑,利用 javascript 几乎可以实现 windows 应用程序所能干的 大部分事情,xmlhttp 一直以来常被用于实现无刷新的 web 页面,它和 javascript 配合,可以完成数据从服务器和客户端的传输。bindows 的一个主要的缺 点是它采用一次全部载入的方式来实现脚本库,在窗口的加载期,需要一个漫长的 等待过程,甚至浏览器的进程会产生无响应的情况。这点 bindows 根本没有遵循 用多少去多少的准则。另外,bindows 采用自已的界面语言,开发人员的学习较长。 近几年的 ria 研究集中客户端相关技术上,如界面元数据8、客户端界面组件、 界面特效等,就 ria 本身来说,发展还很不成熟,在学术界对 ria 的分布式应用 模型和面向 ria 的架构研究还比较少,特别是基于现有架构的改进研究比较少,这 正是本文提出面向 ria 的 mvc 架构的切入点。 1.2.2 基于 mvc 模式的架构 对于 mvc 模式的应用研究,不管在桌面应用领域还是在 web 应用领域,已经 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 6 有非常多的成功案例, 如微软的mfc中document-view结构是一种典型的基于mvc 模式的架构。 在 web 应用领域历史来看,经历了经典 mvc model0、mvc model1 及 mvc model2过程, 微软的asp和基于java的jsp是基于model1的, 后来出现的asp.net 以及 struts 等基于 model2,model2 是对 model1 结构的一大改进,本质上来说它们 都实现了 mvc 模式,所以主流的基于 web 的应用开发架构在核心上都基于 mvc 模式。 可以看出,model2 的三个部分 model、view、controller 都在存在于服务器端, 并且类似于桌面应用开发,这种模型是基于事件驱动(event-driven)9的,客户端 事件的解释放在服务器端来进行,事件由控制器来进行捕获并过滤,然后转给相应 的事件处理逻辑来完成视图和模型的控制,在服务器端这一过程将伴随着视图的重 构和操作控制以及客户端 html 映射生成过程,按 ria 概念,这一过程是同 ria 相悖的,首先视图应当存在于客户端,其次事件的捕获也应当在客户端,再次每一 个视图组件应当作为独立实体运行并能与服务器端进行交互。虽然基于 mvc 模式 的变体10或改进研究11-13很多,但从运行时的角度看,它的一大特点是模型、视图 和控制器都存在于服务器,客户端浏览器只作为界面视图映射的显示部件,这种模 型虽然在运行时和设计时有一致性,易于开发人员理解等优点,但基于这种模型的 应用不能满足 ria 快速开发要求,在客户端/服务器互操作性、服务器执行效率、 用户体验(如无页面刷新和界面定制)特性以及分布式计算资源利用上也都存在一 定缺陷。 所以如何改进 mvc 模式适应 ria 有比较可行的应用价值。 1.2.3 软件复用技术 本文关注软件复用技术14,不仅仅是因为我们设计的 web 架构本质上是一个 架构复用问题,在设计上,还存在基于设计模式、基于控件等级别的复用机制。 软件复用作为软件工程中一个很有活力的领域15,已成为研究和开发的主流方 向,在实际应用中,从零开发的软件只占极少数,大多数都可以重用已有的软件。 软件重用是从已有的资源中寻求建造新工程的过程。 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 7 软件复用概念的第一次引入是在 1968 年 nato 软件工程会议上。近十几年来, 面向对象技术的出现并逐渐成为主流技术,为软件复用提供了基本的技术支持。软 件复用的研究也成为热点,被视为是解决软件危机,提高软件生产率和质量的现实 可行的途径。 软件复用的对象包括软件开发过程中所使用和产生的各种资源16-18,包括源代 码、各种文档、测试数据、设计方法、体系结构等等,总称为可复用资产。 软件复用就其复用的级别而言,最低层的复用是代码复用,然后依次为软件库 复用,构件复用,架构复用,设计模式19的复用。各种类型的复用为软件的复用提 供不同层次的支持。 面向领域的应用架构的复用是软件复用技术发展的必然结果,现在,这种基于 架构的复用已经成为软件生产中最有效的复用方式之一20-22它首先可以被看成是成 熟的软件结构的复用,从软件构件技术讲,也可以看成是基于构件的软件的骨架和 容器。 设计模式(design pattern)描述了软件开发过程中出现的具体问题及相应的经 验式解决方案23-25,设计模式提供了精练子系统、部件和它们之间关系的模板,解 决了特定背景下一般的设计问题。一个设计模式描述了一组合作的对象和类,模式 的一个重要特点是允许一组合作的对象和类之间具有特定方面的可变性。设计模式 可分为构造型模式、结构型模式和行为型模式26。 本文所提出的 riadf 模型是对 ria 应用模式进行建模,实现面向 ria 的 mvc 架构 riadf/mvc 架构即是结合模式和架构技术的复用的具体应用,事实上,在本 架构中还融入了其它的一些设计模式,如在视图协调器中存在着事件监听模式,协 调器本身是一个 mediator 模式,服务中介是一个 broker 模式等等。 1.2.4 关键技术 1. asp.net 微软的 asp.net 对 active server page(asp)进行了很大的改变,不仅使开发者 更易于创建动态 web 内容,还使他们更易于创建复杂而可靠的 web 应用程序,例 如 web service。 asp.net 是微软的.net 开发平台的非常关键的组成部分。 asp.net 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 8 的主要目标是降低 web 应用程度开发的门槛,它采用与降低使用 visual basic(vb) 进行 windows 编程难度大致相同的方法实现了这个目标:通过设计“事件驱动 event-driven”编程模型,在此模型中开发者向一表单中填加控件,然后编写后台 code-behind 代码处理与这些空间相关的事件(例如,数据进入文本框或者单击鼠 标)。通过在.net 开发平台中嵌入 asp.net,微软将 clr 和类库的益处提供给了 开发者。asp.net 使用 clr 来编译代码,管理执行,创造了运行更快、表现更好 的 web 应用程序。asp.net 在三个领域提供了超越 asp 的改进:编程模型、状态 管理、以及从.net 平台继承优点。 (1) 事件驱动编程模型 事件驱动编程允许开发者创建一旦特定事件发生时就执行的代码。例如,在 asrnet 的情形中,当加载、卸载或单击页面上的控件时,一段特的代码将执行。 asp 使用线性代码处理模型,每条 asp 代码线都掺杂了静态 html,并且按照在 asp 文件中出现的顺序加以处理。 事件驱动编程使 asp.net 编程更接近于 windows 编程。这样做的好处是开发 者只需编写响应事件的代码,并且他们可以将事件驱动编程的知识从 windows 桌面 应用程序扩展到 web 应用程序上来。事件驱动编程的另一个优点是它可以使处理数 据的代码与向用户显示数据的代码相分离。例如,asp.net 允许开发者使用一种称 作 “代码隐藏” 的机制将 web 应用程序逻辑(通常用 vb.net 或 c#开发)从表示层(通 常采用 html 格式)中分离出来。通过将逻辑与表示相分离,asp.net 允许多个页 面使用相同的代码,从而使维护更容易。开发者不再需要为了修改一个编程逻辑问 题而浏览 html 表示,web 设计者也不必通读所有代码来修正一个页面的 html 错误。 (2) 更好的状态管理 asp.net 状态管理涉及到跟踪每个人的会话数据,这是由用户在与 web 站点发 生交互时生成的独特的数据。例如,用户购物车内当前的产品信息,或者用户目前 是否登录到了该站点上。 asp.net 解决了和状态管理有关的两个问题,一是状态信息经常易丢失性;二 个状态信息难于管理。和 asp 一样,状态信息存在于 asp.net 运行其中的进程中。 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 9 和 asp 不同的是,asp.net 还可以使用一个用于进程外状态管理的 windows service(asp state)。尽管这比进程中状态管理稍慢,但是即使 aspnet 进程被重启, 信息仍能保存下来,而且它也可以支持跨越多个服务器上的 web 应用程序。 (3) 从.net framework 中受益 asp.net 使开发者用.net framework 类库创建带有 ui 的 web 页面更为容易。 net framework 类库提供诸如文本和列表框,以及各种按钮等控件,开发者可以通 过将标签(例如 asp:button)插入到他们的动态 web 页面中来使用这些控件,或者也 可以使用 visualstudio.net 的图形页面编辑器来添加控件。asp.net 提供以下几种 类型的控件: html 表单控件,现有 html 控件的服务器端版本,与 html 控件之间的 主要差别是“runat-server”属性,它表示代码在服务器上运行,而控件显示在客户 端; web 表单控件,服务器端控件,这些控件比 html 控件更易于使用,因为 诸如容量这样的属性在所有控件中均使用一致的方式设置。 利用.net 控件设计技术以及设计时服务(design time service) ,用户可以开发 自己的支持 wswy(所见即所得)特性的自定义控件。 2. xml 相关技术 xml27作为一种完全可移植的数据格式,为同一系统不同部分跨平台的数据交 换,异构软件系统数据交换提供了相同的 xml 文档格式。 xml 的优势之一是它允许各个组织和个人建立适合自己需要的标签集合,并且 这些标签可以迅速地投入使用。这一特征使得 xml 可以在电子商务、政府文档、 司法、出版、cad/cam、保险机构、厂商和中介组织信息交换等领域中一展身手, 针对不同的系统和厂商提供各具特色的独立解决方案28-32。 xml 的最大优点33-34在于它的数据存储格式不受显示格式的制约。一般来说, 一篇文档包括三个要素:数据、结构和显示方式。对于 html 来说,显示方式内嵌 在数据中,这样在创建文本时,要时时考虑输出格式,如果因为需求不同而需要对 同样的内容进行不同风格的显示时,要从头创建一个全新的文档,重复工作量很大。 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 10 此外 html 缺乏对数据结构的描述,对于应用程序理解文档内容和抽取语义信息都 有诸多不便。 xml 大大丰富了 html 的描述功能,可以描述非常复杂的 web 页面,如复杂 的数学表达式,化学方程式等。简单的讲,xml 的功能可以分为四个方面:结构 化、自描述、可扩展和浏览器自适应。 3. xs(l)t 及 xpath xsl(extensible stylesheet language,可扩展样式语言)定义 txml 的语法规范, 该语法规范被用来把 xml 文件转换成 html.xml 或其它格式的文档。一个 xsl 样式表集合了一系列设计规则, 用于从 xml 文件中抽取信息, 并将其转换成 html 等其它格式。这种转换采用了公开的方式,使其能够更加方便地被程序员描述。而 且 xsl 还将提供多种脚本语言的通道,以满足更为复杂的应用需求。xsl 本身是 xml 的应用之一, 它直接架构在 xml 的语法上, 因此一个 xsl 文件也是一个 xml 文件。 xslt(xsltransformations,xsl 转换)是作为 xsl 的一部分使用的,xslt 处 理 xml 文件是采用转换的方式, xslt 处理程序把一篇 xml 文档处理成树形结构, 它由一个节点集合组成, 这些节点起始于一个根节点, 根节点指向的节点对应于xml 文档中的根元素,根节点连接它的子节点,每个子节点又连接零个或多个它的子节 点,文档中的每个元素都对应于某个节点。xslt 文档包含一组模板规则和其它规 则。模板规则包括匹配模式(pattern)和输出模板(template)。xslt 处理程序依次扫 描每个子树形结构,同时将其与模式相匹配,如果吻合,则按照模板中规定的形式 输出这个子树形结构中的数据。 xpath(xml path language,xml 路径语言)是用作 xslt 和 xpointer 的对 xml 文档各部分进行定位的语言。它给 xslt 提供一个共同、整合的定位方法,用来定 位 xml 文件中各个部位。xpath 除了提供一套定位语法之外,还包括一些函数, 它们提供基本的数字运算、布尔运算和字符串处理功能。xpath 使用一个紧凑的、 非 xml 的语法来方便实现 xpath 在 xml 属性值中的使用,它基于 xml 文档的逻 辑结构,在该结构中进行导航。除了用于定位,xpath 自身还有一个子集能用于进 行匹配,它能验证一个节点是否匹配某个模式。xpath 把一个 xml 文档看成一个 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 11 树或节点的模型。节点的类型有多种,包括元素节点、属性节点和文本节点。 4. soap 协议 soap (simple object access protocol,简单对象访问协议)是一种 xml 有效载 荷的简单封装机制,定义了一个远程过程调用(rpc)规范和一个消息规范。soap 为 在一个松散的、分布的环境中使用 xml 对等地交换结构化、类型化的消息提供一 个简单且轻量级的机制。由于 soap 采用了 xml,并在调用与交换信息方面有其 优势,使得它成为解决 web 服务中互相调用的接口定义所遵循的规范。 soap 设计目标是简单性和可扩展性,能在不同系统之间实现互操作性,跨越 不同平台,克服防火墙的限制,使通信各方在互联网上实现畅通无阻的信息交流。 传统的消息系统和分布对象系统的某些性质并不是 soap 规范的一部分。这些性质 包括:分布式碎片收集、成批传送消息和对象引用(要求分布式碎片收集)。 由于没有定义底层传输机制,使 soap 有效载荷能够在 http、ftp、java 消 息服务(jms)及其他类似传输协议上进行传输;通过 soap 编码规则,可将任何与 应用程序相关的数据编码为 xml 文件,并封装成 soap 消息;通过 soaprpc 表 示,可以调用任何 web 接口,并得到相关返回值。 5. dom dom(document object model,文档对象模型)是针对 xml 文档的 api,定义 了文档的逻辑结构以及访问它们的方法。它定义了一个标准的访问和处理 xml 结 构的方法.为了表现这种分层结构的本质,dom 提供了整套的对象、方法及属性以 使我们能处理 dom。使用 dom 模型,程序员可以方便地创建文档、导航其结构 文档的任何成分。dom 作为 w3c 的规范或增加、修改、删除、移动它的重要目标 是提供一个适用于多种不同编程环境、任何编程语言的标准编程接口。 6. xmlrpc 协议 xml-rpc 协议35-36是由微软及 userland 联合开发的,目标在于提供一种简单 机制,使处于不同环境的应用之间可以通过 internet 来进行远程过程调用。它采用 xml 作为数据承载标准,http 为传输协议。协议模型如图 1-1 所示,xml-rpc 请求以 http/post 方式向服务器提交,通过 http/response 响应方式返回请求 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 12 结果,xmlrpc 支持同步和异步两种调用方式。 7. 反射技术 70 年代末期,lisp 用解释程序反射其它的特定的解释程序的语义,这是反射技 术的首次出现。80 年代初期,smalltalk 通过修改编译器修改语言的语义和控制消息 图 1-1 xml-rpc 协议模型 传递,将反射概念集成到元类(metaclasses)中。80 年代后期,clos(the common lisp object system)成为第一个开发了完整的元对象协议37(meta-object protocol, 简称 mop)的面向对象语言,这个元对象协议允许修改基于元对象的语言的关键 特征。 计算反射38(computational reflection)是在程序的自身执行过程中,程序像数 据一样表示程序状态的一种处理能力。这种处理包括两个方面,即自省 (introspection)和调解(intercessory) ,通常将计算反射简称为反射(reflection) 。 最近几年来,反射技术以其明确分离描述系统自身结构、行为的信息与系统所 处理的信息,建立可动态操纵的因果关联以动态调整系统行为的良好特征,已经从 理论和技术研究走向实用化,使得动态获取和调整系统行为具备了坚实的基础。程 序在运行时通过自省运行需求,使用具体化能力自己调解自己,动态获得新行为能 力。 1.3 主要研究工作 本课题的主要目的是研究面向 ria 的 mvc 架构。面向 ria 的应用有新的应用 模式,本文将在建立了 ria 分布式应用模型的基础上,针对服务器端 mvc 架构进 行重构和复用,以建立新的面向 ria 的可复用架构。本课题在分析 ria 的研究现 状及发展趋势的基础上确定了本论文的主要工作: xmlrpc-request xmlrpc-response client browser http server 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 13 1. 服务器端 mvc 架构研究; 2. 建立面向 ria 的分布式应用模型; 3. 面向 ria 的 mvc 架构的分析与设计; 4. 实现面向 ria 的 mvc 架构的原型系统; 5. 面向 ria 的 mvc 架构的复用评估。 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 14 2 服务器端 mvc 架构 服务器端 mvc 架构有很强的复用性,在 web 架构的设计中也占有非常重要 的作用。本章将简要介绍软件架构以及基于架构的复用技术,并讨论如何进行软件 架构的建模和设计,然后将分析几种经典的面向服务器端 mvc 架构的工作原理和 结构。 2.1 软件架构 2.1.1 架构概念 架构39 (framework)是可重用的,半成品的应用程序,可以用来产生专门的定制 程序。同类或对象一样,软件应用的相似性比不同点要多。它们运行在相同的机器 上,期望从相同的设备输入信息,输出到相同的显示设备,并且存储数据到相同的 硬盘设备。工作在传统桌面应用的开发人员习惯于那些可以覆盖应用开发同一性的 工具包和开发环境。构架在这些公共基础上的应用架构可以为开发人员提供可以为 他们的产品提供可重用服务的基础架构。 随着软件规模的不断扩大,编程模式也在不断的变化。它经历了过程化编程模 型、面向对象编程模型,到现在的面向架构编程模型。架构为程序提供一个通用的 模板,开发人员在模板中加入应用特殊的部分,最后形成整个应用。在这种编程模 式下,编程人员不再关心如何去处理程序的流程,而把要考虑的重心放在怎么实现 业务对象上。编程人员考虑的是业务对象的某个方法被调用时该怎么处理,而不是 考虑该什么时候去调用那个方法。应用服务器给组件运行提供一个中间件集成架 构,组件被应用服务器调用,实现企业的业务逻辑。应用服务器负责处理启动组件、 实例化组件、调用组件实例、撤销组件实例等等的流程以及线程、进程安排、消息 分派、事务处理、安全许可等底层工作,而组件则关心它的某个方法被调用时应该 处理的业务。 2.1.2 基于架构的复用 架构是一个一般设计实现,由一些互相合作的类组成,能适应特定领域中的各 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 15 种情况。应用开发人员通过扩展或定制架构40-43生成应用特定部分的功能。架构是 针对特定领域的,架构提供该领域中共同的行为或共同行为模式的一个简单例子, 从而引导应用开发人员去扩展和定制架构形成特定的应用程序。例如,一个应用程 序架构可以提供通用的窗口、菜单、工具条、状态条等。应用通过修改、添加、定 制这些对象而实现特定的功能。在这种情况下,用户特定的代码不再需要关心整个 应用的流程,这是架构的工作。应用关心的是特定的代码的执行应实现特定的业务。 基于架构的开发可以给应用开发人员带来以下几方面的好处: 1 模块性 架构使用稳定的接口封装了具体的实现,从而增强了架构的模块性。架构使用 这种机制将具体实现的影响和实现的改变局部化,从而提高了软件产品的质量。局 部化的好处在于减少了理解和维护具体实现的时间或金钱。 2 可重用性 通过架构提供的稳定接口增强了软件产品的可重用性。当创建新的应用程序 时,可以重用架构中定义的通用组件。这些通用组件由具有丰富领域知识和程序设 计经验的程序员设计开发,它们满足一定应用领域的需求。使用通用组件避免了软 件产品中这些部分重新设计带来的风险。可重用的架构组件的使用也相应的提高了 程序员开发软件产品的效率,同时又保证了软件产品的质量、性能、可靠性。 3 可扩展性 架构通过提供接口的方法,提高它的可扩展性,这些方法允许应用程序扩展架 构稳定的接口,它们将稳定的接口和特定应用中可变的行为分离开来。架构的这种 特性保证了能够方便地为新的应用提供新的服务和特性。 软件架构是整个或者部分系统的可复用设计,使用软件架构的最大好处就是复 用,在面向对象系统中最大的复用方式就是软件架构,一个大的应用系统往往可能 由多层相互协作的软件架构组成。 由于软件架构能复用代码,以此从某个已有构件库中建立应用将变得非常容 易,因为构件都采用了软件架构统一定义的接口,从而使得构件之间的通信变得简 单。软件架构能重复设计,它提供可复用的抽象算法及高层设计,并能将大系统分 华 中 科 技 大 学 硕 士 学 位 论 文华 中 科 技 大 学 硕 士 学 位 论 文 16 解城更小的构件,而且能够描叙构件之间的内部接口。这些标准接口使在已有构件 基础上通过组装建立各种各样的系统成为可能。只要符合接口定义,新的构件就能 插入到软件框架中,构件设计者就可以复用软件框架的设计了44-45。 2.1.3 架构设计方法 架构的设计和应用的设计到底有何不同,一般而言,两者的侧重点不同。设计 应用系统时,要求对专用领域的重要概念有深入的了解。这些概念通过建模演变成 类,并作为实现整个应用的构建块。而设计架构时,重点在识别出必须具备灵活性 的地方,也就是“热点” ,这也是架构的关键所在。 基于软件架构的应用程序开发中,软件架构基于基础核心的地位,这就要求软 件架构是健壮的、可扩展的、灵活的,并且可以支持动态内容。而软件架构的设计 则要求做到完备性、灵活性、扩展性、可理解性,同时要求抽象适用于不同的场合; 用户与软件架构的交互清晰,文档齐全。在软件架构设计过程中的一个核心问题就 是发现可复用的设计和热点,以保证软件架构具备充分的灵活性,使用户能在已有 构件的基础上生成应用程序。目前软件架构设计方面成熟的技术46-47有两大类。 1 实践法 这是实例驱动的设计方法,是从若干典型的应用中抽象相似点来构建软件架构, 软件架构反过来又可应用于不同的问题。这一方法首先需要分析问题领域,确定所 需要的软件架构,从一类应用中去分析、比较各种不同的软件解决方案,寻求方案 的共性和每个程序的唯一性特征,这些共性就是被多个程序使用的软件架构的基 础。然后就是软件架构的实现了,包括软件架构核心类的发现、软件架构的测试、 试运行以及更新和软件架构的部署。 2 系统法 在系统法中,软件架构的设计首先要对问题进行泛化处理,它要求解决如问题 领域中的哪些概念可以表现为变量需要统一处理。然后就是软件架构的设计了,往 往先实现最通用的软件架构然后实现次通用的软件架构,以此类推。这需要解决如 下的问题:系统中哪一部分可能需要改变;用户需要在什么地方向架构加入自己的 代码这种方法有助
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 知识产权申报培训书籍课件
- 知识产权普法培训内容课件
- 跨学科教学课件
- 知识产权就业培训课件
- 2025年消费与零售市场消费者行为变化趋势分析
- 2025年加油站安全培训试题库及答案
- 钢铁销售基本知识培训课件
- 2025年安全加密师面试题及答案
- 知识产权培训情况总结
- 知识产权培训宣讲会议课件
- 北邮社电机拖动与调速技术教学包课后题解
- 学校门卫岗位职责及管理制度
- JJG 1105-2015氨气检测仪
- GB/T 8118-2010电弧焊机通用技术条件
- GB/T 17421.7-2016机床检验通则第7部分:回转轴线的几何精度
- 呆滞物料预防与处理(精益培训)
- 《中式面点制作第二版》教案高教版
- 看门狗定时器
- 质量整改通知单(样板)
- 进展性脑卒中的诊疗策略课件
- 2020届高三北京高考“多文本阅读”总攻略
评论
0/150
提交评论