(计算机系统结构专业论文)基于软总线的web应用快速开发平台的设计与实现.pdf_第1页
(计算机系统结构专业论文)基于软总线的web应用快速开发平台的设计与实现.pdf_第2页
(计算机系统结构专业论文)基于软总线的web应用快速开发平台的设计与实现.pdf_第3页
(计算机系统结构专业论文)基于软总线的web应用快速开发平台的设计与实现.pdf_第4页
(计算机系统结构专业论文)基于软总线的web应用快速开发平台的设计与实现.pdf_第5页
已阅读5页,还剩70页未读 继续免费阅读

(计算机系统结构专业论文)基于软总线的web应用快速开发平台的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

? - t j l 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:鑫壶尊孔 日期:劳和年f 月知日 论文使用授权 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:_ 爿狒 导师签名: 日期:函。年s 月踟日 应用程序因为有着“不需要安装客户端”、“通过网络随时访问 和“易于升级 等诸多优点,从而得到了极大的发展。 w 曲应用的激增带动了软件行业的发展,但同时也给软件公司、软件开发人 员带来了麻烦。公司需要重新招聘有经验的w 曲开发人员,老的开发人员也需要 重新学习大量的新技术。同时w 曲开发技术的多样性、复杂性以及不统一性造成 了开发人员学习曲线长等一系列问题,很难触类旁通,快速上手。 希望能够有一种针对w 曲应用程序的快速开发平台,它可以屏蔽各种技术之 间的复杂性和不统一性,而让开发人员只需学习一些简单的知识就可以快速上手 并且极大地缩短开发周期,降低开发门槛、降低开发成本。 基于“简单、快速 这一思想,本课题通过研究现有w 曲应用程序的体系架 构和相关技术,在此基础上设计了一套开发平台,基于此平台能够几乎不编码而 快速开发出w 曲应用程序。本文详细阐述了此“平台 的设计原理“业务逻 辑组件化 和“软总线通信机制”,并且通过总结现有软件开发过程中的常见问题, 提出了自己的设计思路和结构体系,详细描述了相关模块的设计动机和设计目的。 关键词:w 曲应用,快速开发,设计模式 i卜 a b s t r a c t a b s t r a c t w i m 也ep r e v a l e n to f 廿1 e1 1 1 t 咖e t ,r e l a t e dw 曲t ec _ h i l o l o g yh a v eb e e nu p d 撕n g c o n t i n u o u s l y w 曲印p l i c t i o n 、) l “c hb a s e do nb sm o d em a l ( eag r e a td e v e l o p m e n t b e c a u s eo fm a n ya d v 锄t a g e s ,s u c ha s ”c l i e n t i n d 印e n d e n t ”, t i m ea r b i t r 撕n e s so f a c c e s s i n gn e 觚o r k ”,”c o n v e l l i e n c eu p 伊a d e ”a l l de t c t h er a p i di n c r e a s eo fw 曲a p p l i c a t i o nh a s 百v e na i li m p e t u st os o 脚a r eb u s i n e s s b u ti t “n g s 仃o u b l e st 0s o r w a r ec o m p a i l i e sa i l de n 百n e e r sa sw e l l c o n l p a n i e sn o t0 1 1 l y n e e dt or e 硼te x p 嘶e n c e dw 曲e n 季n e e r s ,b u t0 1 de n 百n e e r sn e e dt oa c q u i r ep l e n 锣o f n e wt e c l l i l 0 1 0 9 ya g a i n m e a r l w h i l e ,t l l ed i v e r s i t y c o m p l e x i t ya n dd i s u i l i t ) ro ft h ew e b d e v e l o p m e n tt e c i u l o l o g ) rm a l ( ee 1 1 百n e e r sas t e e pl e a n l i n gc u e ,a 1 1 dh a r dt o 乒a s pt h e w h o l ee s s e n c e t h e r e f o r e ,w e h o p et h e r ei s ar a p i dd e v e l o p m e n tp l a t f o r mp o i n t e da tt h ew 曲 a p p l i c a t i o n ,w h i c hc a i ln o to n l ys c r e e nc o m p l e x i t ya 1 1 dd i s u n i t y 锄o n gv 捌o u sk i n d so f t e c h n 0 1 0 百e s ,b u tm a k ee n 酉n e e r sh a l l d l ei tf l u e i l t l ya n dc u tm ed e v e l o p m e n tp e r i o d 莎e a t l yj u s tt h r o u 曲a c q u i r i n gs o m es i m p l ek n o w l e d g e l o w e rt l l ed e v e l o p m e l l tc o s tb y m ew a yo fd e c r e a s i n gt h ed e v e l o p m e n t1 e v e l i nv i e wo ft h ei d e ao f s i m p l i c i t y ;r a p i d i t y ,m i st o p i cd e s i g n sas e to fd e v e l o p m e n t p l a t f 0 珊t h r o u 曲r e s e a r c h i n gt h ea r c h i t e c t u r eo ft h e 渊e n tw 曲印p l i c a t i o na n dr e l a t e d d e v e l o p m e n tt e c h n o l o g i e s ab i ga d v a n t a g eo fm i sp l a t f o mi st h a ti tc a na l m o s td e v e l o p 也ew 曲a p p l i e dp r o 伊砌r a p i d l yw i t h o u tc o d i n g t h i st r e a t i s 9s t a t e st h ed e s i 朗t h e o d , o ft h i sp l a t f o 肌a t1 e n g t h 、1 1 a t sm o r e ,i tp r o p o s e sd e s i g n 仃a i no ft h o u g h ta n ds t m c t u r e s y s t e m ,a n d 西v e sa m i n u t ed e s 嘶p t i o no ft h ed e s i 驴m o t i v a t i o na 1 1 da i mo ft h er e l e v a i l t m o d u l e sb ys 砌m a 巧t h ec o m m o np r o b l e m si nt 1 1 ep r o c e s so fm ec u n e n ts o 觚a r e d e v e l o p m e n t k e y w o r d s :w e ba p p l i c a t i o n ,r a p i da p p l i c a t i o nd e v e l o p m e n t ,d e s i g n p a t t e m s l l i。ir0 3 2 1 业务案例分析2 0 3 2 2 抽象一个组件。2 l 3 2 3 构建更多的组件:2 4 3 - 3 基于“软总线”的组件通信机制2 7 i i i 目录 3 3 1 软总线的概念2 8 3 3 2 工作原理2 9 3 4 小结一3 1 第四章平台的设计与实现3 3 4 1 总体设计。3 3 4 2 服务端框架设计与实现3 4 4 2 1 服务端设计综述3 4 4 2 2 身份认证3 7 4 2 3s q l 组装器3 8 4 2 4 数据库访问3 9 4 2 5 数据封装4 0 4 3 客户端框架设计与实现4 1 4 3 1 客户端设计综述4 l 4 3 2 组件接口4 6 4 3 3 组件生成器接口4 7 4 3 4 页面生成器4 8 4 3 5 消息处理器4 9 4 3 6 页面刷新器5 1 4 3 7 数据请求代理5 2 4 4 实例分析5 3 4 4 1 页面生成5 3 4 4 2 页面运行5 8 4 5 小结6 0 第五章总结与展望6 l 5 1 总结6 1 5 2 不足与展望:。6 1 致谢6 3 参考文献6 4 i v 第一章绪论 1 1 选题背景 第一章绪论 随着互联网的飞速发展,相关的w e b 技术也是不断更新。已往一些软件所采 用的c s 模式已经无法满足全球网络开放、互连、信息随处可见和信息共享的新 要求,b s 模式应运而生。基于b s 模式的软件,我们通常统称为w 曲应用程序。 这些w 曲应用程序可以通过网络随时随地访问,不需要安装任何客户端,而且升 级更新也是极其方便,不会给用户带来任何麻烦【l 】。 当然,w 曲应用程序也有它的缺点,主要是在个性化,响应速度以及特殊功 能等方面存在一些问题【2 1 。不过瑕不掩瑜,w 曲应用在互联网新兴技术的推动下 快速发展。w 曲应用的激增带动了软件行业的发展,但同时也给软件公司、软件 开发人员带来了麻烦。公司需要重新招聘有经验的w 曲开发人员,老的开发人员 也需要重新学习大量的新技术。同时w 曲开发技术的多样性、复杂性以及不统一 性造成了开发人员学习曲线长等一系列问题,很难触类旁通,快速上手。所以这 些问题也让一些规模较小的软件公司感到很棘手:高薪招聘一些经验丰富的软件 开发人员但是却苦于没有长期、丰厚的项目支持,并且后期维护都是一笔不小的 人力资源开支;但是招聘一些廉价而经验相对欠缺的开发人员将无法让软件质量 得到充分保障。 所以希望能够有一种针对w 曲应用程序的快速开发平台,它可以屏蔽各种技 术之间的复杂性和不统一性,而让开发人员只需学习一些简单的知识就可以顺利 上手并且极大的缩短开发周期。通过降低开发门槛、降低开发成本,让更多的小 型软件公司进入这个领域,从而推动w 曲应用的更进一步发展。 1 2 论文的主要工作 基于上述构想,本课题设计并实现了一个w 曲应用快速开发平台。通过使用 设计模式和一些软件设计思想,将w 曲应用组件化、模块化、功能化。使用该平 台,开发人员不再需要掌握大量的w 曲开发技术,并且可以在一定程度上做到不 再需要编码,只需要像搭积木一样将一个个组件搭建在一起即可完成一些基本的 2 第二章相关理论与关键技术 第二章相关理论与关键技术 2 1 动态网页基本原理 2 1 1 静态网页原理 在讲解动态网页的原理之前,我们先来回顾一下网页技术的发展历程。 在动态网页技术诞生之前,网页都是静态的。静态网页是指那些没有后台数 据库、不含程序和不可交互的网页,它由纯粹的h l 标签构成。你编什么它就 显示什么、不会有任何改变,我们常见的那些以h 廿1 1 、h t i l l l 、s b t i i l l 、x i i l l 为后缀 名的网页都是静态网页。纯粹的静态网页通常需要手工制作,当网站内容更新较 多时,手工制作静态网页会显得相当繁琐,在动态网页流行的今天,它主要适用 于一般更新较少的展示型网站【3 1 。 另外一方面,对于客户而言,由于网页是静态不可改变的,所以友好性和交 互性较差,不利于客户与网站互动。比如当某一个人登录一个网站时,它能够显 示“小李,你好 ,而另外一个人登录时能够显示“小张,你好 。如果随着浏览 该页面客户身份的不同而显示不同的内容,这样可以大大提高友好性。而在当下, 处处可见的网页聊天、电子商务,在那个时代是多么的难以想象。随着各种因素 不断的刺激和推动着w 曲技术的发展,动态网页应运而生。 2 1 2 动态网页原理 那么什么是动态网页呢? 所谓“动态”,并不是指网页上简单的g i f 动态图片 或是f 1 a s h 动画,它都具备以下几个基本特征: 1 、交互性:网页会根据用户的要求和选择而动态地改变和响应,浏览器作为 客户端,成为一个动态交流的桥梁,动态网页的交互性也是今后w 曲发展的潮流。 2 、自动更新:即无须手动更新h t m l 文档,便会自动生成新页面,可以大 大节省工作量。 3 、能够因时因人而变:即当不同时间、不同用户访问同一网址时可以出现不 同页面【4 】。 动态网页与普通的静态网页在显示上有很大不同,它整个的运行过程可分成 3 电子科技大学硕士毕业论文 : 步:用户在浏览器的网址栏中输入所访问的页面地址,并回车触发这个 步:浏览器将这个请求发送给服务器。一般客户端向服务器发送请求有 方式: 表单提交。表单是h 例l 中的一个标记,没有显示意义,相当于一个容 个表单中的某个按钮,发生点击事件后,浏览器首先检测到这个事件, 寻找这个按钮所在的表单中所有可以向服务器传送数据的元素,记录这 标记,数值,然后发送给服务器上指定处理页面,这个指定处理页面是 a c t i o n 属性指定 论坛中的发表文章,在文本框输入信息后按提交,浏览器会将这个文本 框信息传递给服务器,m e c h o d 代表表单提交方法。 2 ) 、u 也。u r l 要么不传递参数,要么将参数作为u r l 的一部分发送给服 务器。比如一个页面,地址为h t t p :,r 、 吼】【】【n e 价e s t j s p ? & i d - 5 ”,则是告诉服务器 找到t e s t 二j s p 并且参数为i d 等于1o ,这样程序就会处理这个页面,并根据参数读 出数据写进h t m l 文件中再传递给客户端。 第3 步:服务器接收这个请求后找到对应服务器处理程序。 第4 步:处理程序将被执行,并根据命令要求生成相应的静态页面,即h t m l 页面。 第5 步:h t m l 页面将被回送给浏览器。 第6 步:用户浏览器解释执行h t m l 页面,并显示在浏览器上。 以上步骤虽然进行了一些简化,但是基本流程还是很清晰。对于服务器来说, 动态网页比如说j s p ( 或a s p 等等) ,与h 州l 页面有着本质的区别,h t m l 是 不经任何处理就被送回给浏览器,而j s p 的每一条命令都会被用来生成h 1 m l 文 件,这也正是j s p 允许生成动态内容的原因之一,也是动态网页复杂之所在。 另一方面,对于浏览器来说,j s p 和h n 儿几乎没有区别,仅仅是后缀为幸j s p 和 ,i 1 炯l 的不同,当客户端提出j s p 请求后,浏览器接受到的回送数据也只是h t m l 文件。 4 第二章相关理论与关键技术 2 2w e b 系统的三层体系结构 在基于b s 模式的w 曲的系统中,用户可以通过浏览器向分布在网络上的许 多服务器发出请求。b s 模式极大的简化了客户机的工作,客户机上只需安装、 配置少量的客户端软件即可;而服务器将担负更多的工作,对数据库的访问和应 用程序的执行将在服务器上完成。 在b s 三层体系结构下,表示层( p r e s e n t a t i 0 0 n ) 、中间业务层( b u s i n e s sl o 舀c ) 、 数据层( d a t as e r v i c e ) 被割成三个相对独立的单元【5 】: 第一层、表示层:w 曲浏览器。 在表示层中包含系统的显示逻辑,位于客户端。它的任务是由w 曲浏览器向 网络上的某一w 曲服务器提出服务请求,w e b 服务器对用户身份进行验证后用 h t t p 协议把所需的主页传送给客户端,客户机接受传来的主页文件,并把它显 示在w 曲浏览器上。 第二层、中间业务层:具有应用程序扩展功能的w 曲服务器。 在业务层中包含系统的事务处理逻辑,位于w 曲服务器端。它的任务是接受 用户的请求,首先需要执行相应的扩展应用程序与数据库进行连接,通过s q l 等 方式向数据库服务器提出数据处理申请,然后将数据库服务器的处理结果提交给 w 曲服务器,再由w 曲服务器传送回客户端。 第三层、数据访问层:数据库服务器。 在数据访问层中包含系统的数据处理逻辑,位于数据库服务器端。它的任务 是接受w 曲服务器对数据库操纵的请求,实现对数据库查询、修改、更新等功能, 把运行结果提交给w 曲服务器。 仔细分析不难看出,三层的b s 体系结构是把二层c s 结构的事务处理逻辑 模块从客户机的任务中分离出来,由单独组成的一层来负担其任务,这样客户机 的压力大大减轻了,把负荷均衡地分配给了w 曲服务器,于是由原来的两层的 c s 结构转变成三层的b s 结构。这种三层体系结构如图2 1 所示。 这种结构不仅把客户机从沉重的负担和不断对其提高的性能的要求中解放出 来,也把技术维护人员从繁重的维护升级工作中解脱出来。由于客户机把事务处 理逻辑部分分给了功能服务器,使客户机一下子“苗条了许多,不再负责处理 复杂计算和数据访问等关键事务,只负责显示部分,所以维护人员不再为程序的 维护工作奔波于每个客户机之间,而把主要精力集中于服务器程序的更新工作。 这种三层结构,层与层之间相互独立,任何一层的改变不影响其它层的功能。它 5 图2 一lw 曲三层体系结构 从根本上改变了传统的二层c s 体系结构的缺陷,它是应用系统体系结构中一次 深刻的变革。 b s 体系结构与c s 体系结构相比,具有很多c s 体系结构所不具备的独特 优势: 1 、开放的标准: c s 所采用的标准只要在内部统一就可,它的应用往往是专用的。b s 所采用 的标准都是开放的、非专用的,是经过标准化组织所确定的而非单一厂商所制定, 保证了其应用的通用性和跨平台性。 2 、较低的开发和维护成本: c s 的应用必须开发出专用的客户端软件,无论是安装、配置还是升级都需 要在所有的客户机上实施,极大地浪费了人力和物力。b s 的应用只需在客户端 装有通用的浏览器即可,维护和升级工作都在服务器端进行,不需对客户端进行 任何改变,故而大大降低了开发和维护的成本。 3 、使用简单,界面友好: c s 用户的界面是由客户端软件所决定的,其使用的方法和界面各不相同, 每一个c s 系统都要求用户从头学起,难以使用。b s 用户的界面都统一在浏览 器上,浏览器易于使用、界面友好,不须再学习使用其它的软件,一劳永逸的解 6 第二章相关理论与关键技术 决了用户的使用问题。 4 、系统灵活: 与b s 相比,c s 系统升级相对麻烦。b s 系统的三部分模块各自相对独立, 其中一部分模块改变时,其它模块基本不受影响,系统升级非常容易,且可以用 不同厂家的产品来搭建性能更佳的系统。 5 、保障系统的安全性: 在c 1 i e i l t s e e r c s 库服务器进行连接,用户可以很轻易的改变服务器上的数 据,无法保证系统的安全性。b s 系统在客户机与数据库服务器之间增加了一层 w 曲服务器,使两者不再直接相连,客户机无法直接对数据库操纵,有效地防止 用户的非法入侵。 三层的b s 体系结构具有许多传统c s 体系结构不具备的优点,又紧密的结 合了i n t e m e t 技术,是技术发展的大势所趋,它把应用系统带入了一个崭新的发 展时代。 2 3 富客户端技术的发展 富客户端( 鼬c hi n t 锄e ta p p l i c a t i o n ) 简称为剐认,意为富互联网应用,引申 为富客户端应用。富客户端是相对于瘦客户端而言,那什么是瘦客户端呢? 瘦客户端应用程序主要是指b s 结构的w 曲应用程序。其实从原理上看b s 结构是c s 结构的一种变种而已,它将c s 结构中的客户端程序统一为浏览器, 浏览器中只解析标准的h t m l 来显示用户交互界面。这样,服务端负责处理业 务逻辑和数据存取,然后将处理完的结果以h 刑l 的形式发送给客户端,客户端 负责将结果显示给用户,客户端除了负责一些数据的验证和组织之外,基本上不 处理任何的业务逻辑,只专注于用户交互界面显示。这样客户端就显得很瘦小, 所以叫作瘦客户端。 b s 模式确实有不少的优点,但是它的缺点也非常明显。首先,客户机的计 算能力几乎被废弃了,这是一种浪费;其次,用户界面的表现能力受制于w 曲浏 览器。那么,能否创造一种在应用软件的界面表现力和部署成本之间双赢的局面 呢? 这就是所谓的r n 。 在r 认时代,一个运行于w 曲浏览器中的客户端应用,要上升为富客户端 应用,应该具备三个条件【6 】: l 、不输给桌面应用的、具有丰富效果的复杂用户界面。 7 电子科技大学硕士毕业论文 2 、有能力调度服务端的业务逻辑,自行组装所需要的用户界面,而不是一味 地由服务端渲染生成用户界面。 3 、在一定程度上突破w 曲浏览器的限制。例如,在必要时能接收服务器推 送来的数据,这意味着打破“浏览器请求、服务器响应的单调格局。 2 4 关键技术 2 4 1j a v a s c rip t j a v a s 嘶p t 是一种脚本语言,它被设计用来向h n m 。页面添加交互行为。并 且它是一种解释性语言,不需要进行预编译,通常被直接嵌入h 聊l 页面【7 】。 j a v a s 嘶p t 是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算 机,并支持j a v a s 嘶p t 的浏览器就可正确执行。从而实现了“编写一次,走遍天 下”的梦想。实际上j a v a s 谢p t 最杰出之处在于可以用很小的程序做大量的事, 无须有高性能的电脑,仅需一个浏览器,无须w e b 服务器通道,通过自己的电 脑即可完成所有的事情。所以在这个互联网举足轻重的时代,j a v a s 谢p t 也得到快 速的发展。 j a v a s 翻p t 为h 喇l 设计师提供了一种编程工具,h t m l 创作者往往都不是 程序员,但是j a v a s 嘶p t 却是一种只拥有极其简单的语法的脚本语言! 几乎每个 人都有能力将短小的代码片断放入他们的 r r m l 页面当中。 j a v a s 嘶p t 提供了以下一些操纵w 曲页面的能力: l 、可以读写h t m l 元素 2 、可以读取及改变h 聊l 元素的内容。 3 、可被用来验证数据。在数据被提交到服务器之前,j a v a s c r i p t 可被用来验 证这些数据。 4 、可被用来检测访问者的浏览器。j a v a s 谢p t 可被用来检测访问者的浏览器, 并根据所检测到的浏览器,为这个浏览器载入相应的页面。 5 、可被用来创建c o o k i 骼。 6 、可被用来存储和取回位于访问者的计算机中的信息。 上面所介绍的只是j a v a s 耐p t 的一部分能力,因为随着网络的发展,在g o o 西e 等 互联网巨头公司的支持和推动下,j a v a s 耐p t 得到了极大的发展和更新,可以说在 浏览器端它无所不能。 第二章相关理论与关键技术 2 4 2a j a x a j a x 全称为“a s y n c h r o n o u sj a v a s 嘶p ta n dx m l ”( 异步j a v a s 嘶p t 和x m l ) , 它不是一门语言,是一种创建交互式网页应用的网页开发技术,是多种w 曲开发 技术综合运用的总称【引。它主要具有以下一些能力: 1 、使用x h t m l + c s s 来表示信息。 2 、使用j a v a s 嘶p t 操作d o m ( d o c u m e i l t0 i b j e c tm o d e l ) 进行动态显示及交 互。 3 、使用以l 和x s l t 进行数据交换及相关操作。 4 、使用订l h t t p r e q u e s t 对象与w 曲服务器进行异步数据交换。 5 、使用j a v a s 碰p t 将所有的东西绑定在一起。 使用a j a x 的最大优点,就是能在不更新整个页面的前提下维护数据。这使 得w 曲应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变 过的信息。 a j a x 不需要任何浏览器插件,但需要用户允许j a v a s 嘶p t 在浏览器上执行。 就像d h t m l 应用程序那样,a j a x 应用程序必须在众多不同的浏览器和平台上 经过严格的测试。随着a j a x 的成熟,一些简化a j a x 使用方法的程序库也相继 问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持j a v a s 嘶p t 的 用户提供替代功能。 对应用a j a x 最主要的批评就是,它可能破坏浏览器后退按钮的正常行为 4 。 在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能 记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的 页面之间的差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前 一次操作,但是在a j a x 应用程序中,却无法这样做。当然,随着研究者的增多, 也有一些办法来克服这些缺点,这里就不再深究。 2 4 3j s o n j s o n ( j a v a s 嘶p to b j e c tn o t a t i o n ) 是一种轻量级的数据交换格式。易于人阅读 和编写。同时也易于机器解析和生成。j g o n 采用完全独立于语言的文本格式, 但是也使用了类似于c 语言家族的习惯( 包括c ,c 抖,c 撑,j a v a ,j a v a s 嘶p t ,p 甜, p 汕o n 等) 。这些特性使j s o n 成为理想的数据交换语言【9 】。 j s o n 建构于两种结构: 9 图2 3 数组模型 值( v a l u e ) 可以是双引号括起来的字符串( s t r i n g ) 、数值( n u n 小哪、仃u e 、f a l s e 、 n u l l 、对象( o b j e c t ) 或者数组( a a y ) 。这些结构可以嵌套。如图2 - 4 所示: 1 0 图2 _ 4 值模型 字符串( s t r i n g ) 是由双引号包围的任意数量u i l i c o d e 字符的集合,使用反斜 线转义。一个字符( c h a r a c t e r ) 即一个单独的字符串( c h a r a c t e rs t r i n g ) 。 字符串( s t r i n g ) 与c 或者j a v a 的字符串非常相似。如图2 5 所示: 图2 5 字符串模型 电子科技大学硕士毕业论文 3 1瘦服务端模型 第三章平台的设计原理 “平台 的核心目的就是为了降低开发门槛,缩短开发周期,简单的讲就是 “简单、快速 ,希望能够像搭积木一样来制作软件。但是对于千变万化的业务, 任何客户、任何软件,它们都会有各自完全不一样的需求。当前主流的开发模式 都是软件公司按照客户的需求定制开发软件,因为他们的业务逻辑都各不一样, 比如说有些是需要在一个页面内显示该公司的所有员工,有些是需要在一个页面 内显示该月的销售排行榜。那么,千变万化的需求怎么才能被我们的平台所统一 起来,让我们实现几乎不编码而达到快速开发的目的呢? 3 1 1 什么是瘦服务端 在前面一章我们讲到了时下流行的w 曲开发技术是基于一种三层体系结构, 分别是“表现层 、“中间业务层”和“数据访问层 。所谓“瘦服务端”是套用了 “富客户端”的概念,在“富客户端 技术流行之后,“中间业务层的很多业务 逻辑被逐渐转移到了客户端,即用户所使用的浏览器,从而导致服务端的功能被 逐渐削弱。 在“平台 的设计思想里,我们决定进一步削弱服务器端,将“中间业务层 全部转移到客户端,随着业务逻辑的前移,“表现层”也相应的放到客户端来处理。 在这种情况下,我们的服务端看起来就非常的简单,仅仅处理数据的存取。套用 “富客户端 的概念,我将其称之为“瘦服务端”。 3 1 2 为什么要瘦服务端 在“平台”设计初期,通过反复的推敲与讨论,我们决定弱化服务器端的功 能。在服务器端只保留“数据访问层”,主要是基于以下几个原因: l 、为了保持整体框架的统一性和降低研发难度。 在前面一章,我们提到了动态网页,可以知道动态网页的主要原理是通过在 服务器执行相应的处理程序来生产h t m l 页面。其实,我们可以看出我们所访问 1 2 第三章平台的设计原理 的j s p 或a s p 网页,这些动态页面就是一个h t m l 页面模板,里面所谓的服务 器端标记或者指令只不过是一个标记占位符,它们在后台被服务器执行之后生成 真正的h t m l 代码,然后替换模板中的标记占位符,从而构建出完整的h t m l 页面,最后发送回客户端,实现网页动态变化。这是一种服务端动态网页技术。 而在富客户端技术发展之后,服务端可以将数据访问层的结果直接传送到客户端, 由客户端执行运算后再来替换那些标记占位符。所以在这里可以看到我们有三种 动态网页技术方案可以选择:纯客户端处理、纯服务端处理和混合处理。 我们先来说说混合处理。混合处理的问题不言而喻,我们所设计的“平台 是为了融合各种于变万化的业务情况,希望能有一种统一的处理方式。混合处理 本身并没有什么问题,但是它主要造成了框架的不统一。如果要满足这种不统一 性,将会大大增加我们的设计难度和开发难度,并且可能给未来的升级、后期维 护带来许多不可预见的问题。 因此,为了保证我们“平台 简单而快速的核心目的,我们排除了这种处理 方式。 2 、缓解服务器压力。 其一,在b s 这种工作模式下,所有客户的处理都是放置在服务端的。一般 中小型网站需要一到两台服务器,而大型网站通常则需要组建大规模的集群【lo 】, 服务器的压力不言而喻。所以我们削弱服务器业务,降低服务器的资源开销,可 以大大缓解服务器压力、降低硬件成本,在资源一定的情况下,从而为更多的客 户提供服务。 其二,“简单、快速”这一核心目的主要是基于“组件 来实现的( 这一话题 讲在下一节详细讲解) ,组件可以理解为是对最基本的程序单元或者元素的简单的 封装,构建出一个个的模块【l l 】。总所周知,组件或者模块可以提高代码的复用性, 降低耦合度,但是也会造成系统性能的降低,因此如何在这两者之间找到一个平 衡点也是软件开发人员孜孜不倦的追求【1 2 】。在上一段中我们提到了“纯服务端处 理”,在我们的平台里,我们将大规模的使用组件,如果这些组件都交给服务器来 处理,那么势必会增大会服务器的开销;客户访问量的小规模提升就会造成服务 器资源的快速消耗。所以,如果我们将这些组件都转移到客户端,由用户的浏览 器来处理,那么用户体验不会有明显的降低,而服务器的压力也会明显减小,工 作起来也能够更加游刃有余。 3 、提高表现层的友好性。 在“瘦客户端”模型下,我们将在客户端大量的使用a j a x 技术,它可以不 1 3 文 别的,当要读取大量数据的 验。 后,服务端只剩下“数据访 当客户端发送一个请求到服 务端,服务端直接访问数据库,执行完毕后再将处理结果发回客户端。 3 1 3 1 原有模型工作方式 在这里之前,先顺便讲一下h r r p 协议传递参数的两种方式【1 3 】: l 、g e t 方式。在客户端,g e t 方式在通过u r l 提交数据,数据在u r l 中 可以看到。比如:h 仕p :仇o c 拙o s t s h o w a s p x ? p a g e _ l & | u s 舐d = t o m 。在这里问号“? ” ( 问号) 之前是我们要请求的网址,“? ”之后才是请求时携带的参数。每一个参 数是一个键值对,每对参数之间用“& 符号隔开。通过这个u r l 我们可以看出, 浏览器向服务器请求s h o w a s p x 这个页面;并且携带了两个参数,分别是p a g e 等 于1 ,u s 嘶d 等于t o m 。服务器在收到这个请求后,就可以取出参数进行处理。 2 、p o s t 方式。在这种方式下,参数放置在h t r p 协议头部内提交。不能直 接观察到。 我们来分析一个例子,看看原有模型在服务端三层系统结构下是怎么一个工 作流程。假设有一个登录页面,用户需要输入登录名和密码,当点击登录按钮后, 会将登录名和密码发送给服务器以作验证。当登录成功会跳转到系统首页,登录 失败则会跳转到失败页面。工作流程如下: 1 、当用户输入登录名和密码,点击登录按钮后,浏览器会向服务器发送这样 一个u r l :h 仕p :仇o c a l h o s t l o 出a s p x ? u s 耐d 爿o m & p a s s w o r d = 1 2 3 。这里假设是以 g e t 方式传递参数,因为在g e t 方式下参数是可以在浏览器地址栏内观察到, 这样方便我们讲解这个流程( 实际情况一般是采用p 0 s t 方式,防止密码被直接 观察到) 。 2 、当服务器收到这个请求后,首先会取出这两个参数,然后根据它们的值来 构建一条s q l 查询语句: s e l e c t 木舶mu s e rw h e r eu s e r i d _ t o m a n dp a l s s w o “l - t 12 3 这条s q l 语句的含义是向数据库的u s e r 表里面查询任何数据,只要它们满 足这样一个条件:“u s e r 表里面的u s 谢d 字段的值为t o m 并且p a u s s w o r d 字段的值 1 4 第三章平台的设计原理 为1 2 3 。通过这个s q l 语句我们也可以看出,我们的服务段拥有这样一个s q l 语句模板: s e l e c t 奉f r o m1 l s e rw h e r eu s 耐d = x 凇a n dp a s s w o r d - 叩 当客户端传来不同的参数时,) o o ( 和y y y 就会被替换掉以形成真正的s q l 语句以供查询。 3 、将s q l 语句传递给数据库访问层,以供查询数据。 4 、当s q l 执行完毕后会返回一个数据集合。如果集合为空则表示输入的登 录名或者密码错误;如果集合不为空则表示数据库确实存在这样二个用户,即登 录验证通过。然后根据不同的结果将不同的页面发送给客户端。有很多网站,在 我们登录后会显示“) a ,你好,欢迎登录我们的网站”。这个的) a 就是你的 登录名,随着不同的登录者而变化。讲到这里我们可以得知,服务端不过是在登 录验证通过后,将登录名替换掉网页模板内的占位符,构建出真正的h t m l 代码, 然后发送给客户端。 3 1 3 2 工作原理 在原有的模型下,我们访问不同的页面需要有不同的后台处理代码,因为每 一个页面的业务逻辑都不一样。在新模型下,由于服务端只有数据访问层,不再 处理任何业务逻辑,所以我们只需要一套统一的服务端代码,这样就不再需要进 行任何的编码了。如何做到这一点呢? 通过分析前面一个例子,我们可以看出一些异同: 相同点:数据库访问逻辑都一样。因为都是执行s q l 语句。 不同点:参数不一样、s q l 语句不一样、执行完毕后数据处理方式不一 样。 为了达到统一的效果,我们分析得出了一个演化方案,步骤以下: 1 、制定统一的s q l 语句模板格式。因为要面对各种查询情况,所以需要定 制一套统一的s q l 语句模板格式,以实现“s q l 组装器”的正常工作。举例说 明: s e l e c t 宰f r o mu s e rw h e i 也u s 面d 一 1 ) a n dp a s s w o r d = 2 ) u p d a t e u s e r - i n 南s e tn a m e = 1 ) w h e r eu s 嘶d _ 2 ) 其中 1 ) 和 2 ) 都是s q l 模板中的占位符。通过上面两个例子可以看出,当服 务端在访问数据库之前,将客户端传来的参数按照规定次序依次替换模板中的占 位符便可合成完整的s q l 语句。 1 5 电子科技大学硕士毕业论文 2 、将s q l 语句模板和参数顺序作为服务端的参数作为放入配置文件,在使 用时由客户端发送给服务端。配置文件结构如下: s q l :”s e l e c t 木f r o m 1 l s e rw h e r 卫u s 耐d - 1 ) a n dp a s s w o r d _ 2 ) i f o r d e r : ”u s 耐d t :1 ,”p 嬲s w o r d ”:2 ) 在这里只是大概举一个例子,下一节将详细讲解配置文件的格式。o r d e r 表示 它存储了s q l 参数的次序。还是以登录为例,当客户端将请求参数发到服务端时, 服务端取出p 嬲s w o r d 这一个字符串,它在o r d e r 里面查找到自己的次序值2 ,所 以服务器将p a s s w o r d 的值填入s q l 模板 2 ) 这个位置。 3 、服务端在接收到来自客户端的参数和s q l 语句模板后,通过统一的组装 器拼装出完整的s q l 语句。 4 、数据库访问层执行拼装好的s o l 语句。 5 、将返回的查询结果直接发送给客户端,不做任何针对业务逻辑的处理。虽 然针对各种业务s q l 语句各不相同,但是s q l 语句的执行结果始终是一个数据 集合,我们还需要制定一个统一的数据传输规范。 3 1 3 3 制定统一的数据传输规范 在“平台”中,客户端和服务端的数据交换统一使用j s o n 格式。在第二章 讲过j s o n 是一种轻量级的数据传输格式,相比删l 它更加的简单、小巧和精 简,有利于减小服务器消耗,缩短数据传输时剐1 4 】。 在前面的分析中,我们可以得出一共有三类数据格式需要统一起来,分别是 客户端向服务端发送数据、s q l 语句模板和服务端向客户端发送数据。 1 、客户端向服务端发送数据。 ”u s 谢d :”t o m ”, ”p a s s w o r d ”:”1 2 3 ”, ”锄a i l ”:”t o m 舯a i l c o m ”, s q l n u m b e r ”:”1 0 ” 第三章平台的设计原理 以作替换。 2 、s q l 语句模板。 s q 】l m b e r :”lo ”, s q l :”s e l e c t 木f r o m l l s e r w h e r e l l s 舐d 副 1 ) 砧呵d p a s s w o r d 副 2 ) ”, o r d e r : u s 舐d :l , p a u s s w o r d :2 ) ) 当系统启动时,会将所有的s q l 语句模板读入内存,并根据模板编号,将它 们存储在一个哈希容器内。这样,每当客户端传来数据时,就立即根据编号取出 模板,然后进行组装替换。 3 、服务端向客户端发送数据 e n n 啪b c r :0 , e 力心以s g :”n o n e ”, r e s u l t s e t : f i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论