ImageVerifierCode 换一换
格式:DOCX , 页数:22 ,大小:111.47KB ,
资源ID:10927889      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10927889.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(技术可行性分析报告1.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

技术可行性分析报告1.docx

1、技术可行性分析报告1XXXXX系统技术可行性分析报告项目名称: 项目编号: 编 写: 审 核: 批 准: 日 期: 1 项目简介2 系统构成模块名称模块描述3 产品技术平台分析3.1 系统运行环境网络环境:硬件平台:操作系统平台:数据库平台:Web服务:3.2 开发环境网络环境:硬件平台:操作系统平台:数据库平台:Web服务:4 主要关键技术主要关键技术技术解释J2EEJ2EE(Java 2 Enterprise Edition)即Java 2企业版,是提供给开发者的采用组件技术构建分布式系统的编程框架。Struts2框架Struts2是一个兼容Struts1和WebWork的MVC框架,它是

2、以Webwork的设计思想为核心,吸收了Struts1的优点。Spring框架Spring是轻量级的容器,是一个开源框架。iBatis框架iBatis是目前流行的轻量级持久层架构,学习上手快,使用灵活、性能高效等特点。Log4jLog4j是Apache的一个日志记录的开放源代码项目。XML解析器目前流行的XML解析器主要有DOM、SAX、JDOM、DOM4J等。WebServiceWeb Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的

3、软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。RMI-IIOP采用IIOP协议(互联网内部对象请求代理协议)进行java RMI远程方法访问。AjaxAJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。C语言C语言是一种高效的结构化语言。SNMP简单网络管理协议(Simple Network Management Protocol)RRD/JRobinRRD是Round Robin Database(环状数据库)的缩写。JRobin是一个使用Java实现的开源的RRD处理程

4、序和绘图引擎。FlashFlash是交互式矢量图和Web动画的标准。JNDIJava命令与目录服务JUnitJava单元测试的工具DOMDocument Object Model文档对象模型。CSSCascading Style Sheets层叠样式表单。Maven2Apache Jakarta 项目的高级项目管理工具,比Ant更简单、更先进5 关键技术的解决方案5.1 Struts2框架Apache Struts2即是之前大家所熟知的WebWork2。在经历了几年的各自发展后,WebWork和Struts社区决定合二为一,也即是Struts 2。Struts2是一个兼容Struts1和Web

5、Work的MVC框架,它是以Webwork的设计思想为核心,吸收了Struts1的优点。Struts2体系结构Struts2框架的大致处理流程如下: 浏览器发送请求,例如请求/mypage.action、/reports/myreport.pdf等; 核心控制器FilterDispatcher根据请求调用合适的Action; WebWork的拦截器链自动对请求应用通用功能,例如workflow、validation或文件上传等功能;回调Action的execute方法,该execute方法先获得用户请求参数,然后执行某种数据操作,既可以是将数据保存到数据库,也可以从数据库中检索数据。实际上Ac

6、tion只是一个控制器,他会调用业务逻辑组件来处理用户的请求。Struts1.x与Struts2比较特性Struts1.xStruts2 Action类Struts1.x要求Action类要扩展自一个抽象基类。Struts1.x的一个共有的问题是面向抽象类编程而不是面向接口编程。Struts2的Action类实现了一个Action接口,连同其他接口一起来实现可选择和自定义的服务。Struts2提供一个名叫ActionSupport的基类来实现一般使用的接口。当然,Action接口不是必须的。任何使用execute方法的POJO对象可以被当作Struts 2的Action对象来使用。 线程模型S

7、truts1.x Action类是单例类,因为只有一个实例来控制所有的请求。单例类策略造成了一定的限制,并且给开发带来了额外的烦恼。Action资源必须是线程安全或者同步的。Struts2 Action对象为每一个请求都实例化对象,所以没有线程安全的问题。(实践中,servlet容器给每一个请求产生许多丟弃的对象,并且不会导致性能和垃圾回收问题)。Servlet 依赖Struts1.x的Action类依赖于servlet API,当Action被调用时,以HttpServletRequest和HttpServletResponse作为参数传给execute方法。Struts2的Action和容

8、器无关。Servlet上下文被表现为简单的Maps,允许Action被独立的测试。Struts2的Action可以访问最初的请求(如果需要的话)。但是,尽可能避免或排除其他元素直接访问HttpServletRequest或HttpServletResponse。易测性测试Struts1.x的主要问题是execute方法暴露了Servlet API这使得测试要依赖于容器)。第三方的扩展,如Struts TestCase,提供了一套Struts1的模拟对象(来进行测试)。Struts2的Action可以通过初始化、设置属性、调用方法来测试。依赖注入的支持也是测试变得更简单。捕获输入Struts1.

9、x使用ActionForm对象来捕获输入。象Action一样,所有的ActionForm必须扩展基类。因为其他的JavaBean不能作为ActionForm使用,开发者经常创建多余的类来捕获输入。DynaBeans可以被用来作为替代ActionForm的类来创建。但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式

10、。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven 特性简化了taglib对POJO输入对象的引用。表达式语言Struts1.x整合JSTL,所以它使用JSTL的表达式语言。表达式语言有基本的图形对象移动,但是对集合和索引属性的支持很弱。Struts2使用JSTL,但是也支持一个更强大和灵活的表达式语言Object Graph Notation Language (OGNL)。将值绑定到页面Struts1.x使用标准JSP机制来绑定对象到页面上下文。Struts2使用“ValueStack”技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定

11、起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。类型转换Struts1.x的ActionForm属性经常都是String。Struts 1.x使用Commons-Beanutils来进行类型转换。转换每一个类,而不是为每一个实例配置。Struts2使用OGNL进行类型转换。提供基本和常用对象的转换器。验证Struts1.x支持在ActionForm的validate方法中手动校验,或者通过Commons Validator的扩展来校验。同一个类可以有不同的校验内容,但不能校验子对象。Struts2支持通过validate方法和XWork校验框架来进行校

12、验。XWork校验框架使用为属性类类型定义的校验和内容校验,来支持chain校验子属性Action执行控制Struts1.x支持每一个模块有单独的Request Processors(生命周期),但是模块中的所有Action必须共享相同的生命周期。Struts2支持通过拦截器堆栈(Interceptor Stacks)为每一个Action创建不同的生命周期。堆栈能够根据需要和不同的Action一起使用。总结:根据struts1.x和struts2.0的对比,struts2.0提供的方法更灵活更易于开发,所以决定采用struts2.0作为教学机管理系统2.0的前台框架。5.2 持久层框架持久层框

13、架目前比较流行的有Hibernate、ibatis等,下面主要对这两种框架进行介绍。HibernateHibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。一、Hibernate是JDBC 的轻量级的对象封装,它是一个独立的对象持久层框架,和App Serv

14、er,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。 二、Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。 三、 Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。并且即

15、使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而不是Entity Bean的替代者出现的。传统的架构: 1)Session Bean Entity Bean DB为了解决性能障碍的替代架构:2)Session Bean DAO JDBC DB 使用Hibernate来提高上面架构的开发效率的架构: 3)Session Bean DAO Hibernate DB 就上面3个架构来分析: 内存消耗:采用JDBC的架构2无疑是最省内存的,Hibernate的架构3次之,EB的架构1最差。 运行效率:如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高,但是实际

16、项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用 Batch语句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在必要的情况下采用结果集cache等等。而一般情况下程序员是做不到这一点的。因此Hibernate架构表现出最快的运行效率。 EB的架构效率会差的很远。 开发效率:在有JBuilder的支持下以及简单的项目,EB架构开发效率最高,JDBC次之,Hibernate最差。但是在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效率高的惊人,JDBC次之,而EB架构很可能会失败。 分布式,安全检查,集群,负载均衡的支

17、持 由于有SB做为Facade,3个架构没有区别。Ibatis使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等 “全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统 设计提供了更大的自由空间。Hibernate与ibatis优缺点比较:1 iBATIS非常简单易学,Hibernate相对较复杂,门槛较高。2 二者都是比

18、较优秀的开源产品3 当系统属于二次开发,无法对数据库结构做到控制和修改,那iBATIS的灵活性将比Hibernate更适合4 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。在这种情况下iBATIS会有更好的可控性和表现。5 iBATIS需要手写sql语句,也可以生成一部分,Hibernate则基本上可以自动生成,偶尔会写一些Hql。同样的需求,iBATIS的工作量比Hibernate要大很多。类似的,如果涉及到数据库字段的修改,Hibernate修改的地方很少,而iBATIS要把那些sql mapping的地方一一

19、修改。6 以数据库字段一一对应映射得到的PO和Hibernte这种对象化映射得到的PO是截然不同的,本质区别在于这种PO是扁平化的,不像Hibernate映射的PO是可以表达立体的对象继承,聚合等等关系的,这将会直接影响到你的整个软件系统的设计思路。7 Hibernate现在已经是主流O/R Mapping框架,从文档的丰富性,产品的完善性,版本的开发速度都要强于iBATIS总结:根据本项目对sql优化灵活性的要求,选择ibatis作为数据持久层框架。5.3 Ajax技术Ajax概述:Ajax不是一种技术。实际上,它由几种蓬勃发展的技术以新的强大方式组合而成。Ajax包含: XHTML和CSS

20、 使用文档对象模型(Document Object Model)作动态显示和交互 使用XML和XSLT做数据交互和操作 使用XMLHttpRequest进行异步数据接收 使用JavaScript将它们绑定在一起传统的web应用模型工作起来就象这样:大部分界面上的用户动作触发一个连接到Web服务器的HTTP请求。服务器完成一些处理-接收数据,处理计算,再访问其它的数据库系统,最后返回一个HTML页面到客户端。这是一个老套的模式,自采用超文本作为web使用以来,一直都这样用, 但看过The Elements of User Experience的读者一定知道,是什么限制了Web界面没有桌面软件那么

21、好用。传统Web应用模型(左)与Ajax模型的比较(右).这种旧的途径让我们认识到了许多技术,但它不会产生很好的用户体验。当服务器正在处理自己的事情的时候,用户在做什么?没错,等待。每一个动作,用户都要等待。很明显,如果我们按桌面程序的思维设计Web应用,我们不愿意让用户总是等待。当界面加载后,为什么还要让用户每次再花一半的时间从服务取数据?实际上,为什么老是让用户看到程序去服务器取数据呢?Ajax如何不同凡响通过在用户和服务器之间引入一个Ajax引擎,可以消除Web的开始-停止-开始-停止这样的交互过程. 它就像增加了一层机制到程序中,使它响应更灵敏,而它的确做到了这一点。不像加载一个页面一

22、样,在会话的开始,浏览器加载了一个Ajax引擎-采用JavaScript编写并且通常在一个隐藏frame中。这个引擎负责绘制用户界面以及与服务器端通讯。Ajax引擎允许用异步的方式实现用户与程序的交互-不用等待服务器的通讯。所以用户再不不用打开一个空白窗口,看到等待光标不断的转,等待服务器完成后再响应。使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然後返回一个新的网页。这个做法

23、浪费了许多带宽,因为在前後两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。 与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。Ajax应用程序的优势在于: 通过异步模式,提升了用户体验 优化

24、了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用 Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。Ajax开发框架:毫无疑问,Ajax作为当前最火爆的技术之一,其优秀的框架层出不穷。Prototype、Dwr、Dojo、JQuery、YUi 都是非常出色的产品。1. JQuery特点:短小精悍(19k),接口设计得精妙(自然语言的风格),与程序思路配合精密。极大限度地体现了javascript的特性;支持xpath查询,dom1-3,轻松选择需要的元素;css支持;简单的动画实现,支持自定义动画;支持插件开发,现有插件多;完整的a

25、pi文档以及范例,易学;拥有官方UI程序供使用,效果好。 2. Yui特点:Yahoo发布的AJAX组件库,是一个包含了各个方面,从工具类库到通讯,到UI组件的综合性JS库。YUL的最大优势在于文档非常齐全,而且有Yahoo的支持,缺点是库目前还不全,功能也不强大。 3. Ext 特点:Ext来自于对YUI的扩展,扩展後功能和界面都有了很大的提高。初期仅仅是对YUI的对话框扩展,后来逐渐有了自己的特色,深受网友的喜爱。Ext封装了很多组件用于UI的展示,Ext的所有组件都是扩展于Ext.Component, 而后子类扩展和集成形成了一个单根的组件树.4. Prototype特点:一个非常优雅的

26、JS库,定义了JS的面向对象扩展,DOM操作API,事件等等,之上还有rico/script.aculo.us实现一些JS组件功能和效果(尚不够完善),以prototype为核心,形成了一个外围的各种各样的JS扩展库,是相当有前途的JS底层框架,突出特点就是非常易学易用,门槛很低,常常是一两行JS代码就可以搞定一个相关的功能。同时它也是RoR集成的AJAX JS库。5. Dojo特点:Dojo包括了Javascript本身的语言扩展,以及各个方面的工具类库,和比较完善的UI组件库;Dojo设计的包加载机制(Package System)和模块化(Libraries)的结构,能保持更好的扩展性,

27、提高执行性能,减轻了用户开发的工作量,并保持一定的灵活性(用户可以自己编写扩展);Dojo官方网站有着丰富的学习资源;专业的开发团队,可以保证更新速度及质量。 6. Mootools特点:小巧高效,完整下载36k;模块化设计,合理规范,优雅的OOP风格;创新的下载过程,可以跟据自己的需要勾选相应的模块下载,Build Your Own Framework;Effects模块(moo.fx)轻量高效,可以实现优雅、可定制、easing的动画;完整的API文档,丰富的范例。 7. Dwr特点:把java类转化为javascript类由dwr自动完成,只需简单的配置;应用起来极其简单。开发者不要该服

28、务器代码就可以集成;容易测试。和webwork一样,隐藏的http协议;强扩展性。例如与spring集成,只需修改一点代码;性能。就与jason等简单比较,dwr性能可能是最好的。 8. Buffalo特点:国人开发的Ajax框架。定义了Web远程调用的传输基础,并且将远程调用对象完整的序列化到了本地,成为可以被JavaScript编程触及的对象。Buffalo中的重要组件-BuffaloBinding,提供了将JavaScript对象绑定到HTML元素的能力。这种绑定将是无侵入的,只需要在HTML元素中加入若干个不影响排版的属性,即可将数据与界面绑定。 9. Qooxdoo特点:不通过常规的

29、HTML来构造页面,完全使用JS以类似VB/Delphi风格的编程方式构造Web GUI界面,比较适合内网面向C/S风格的web应用,而不适合面向Internet的界面多变风格的应用。 10. Spry特点:设计规范,功能全面,文档丰富,面向设计人员而不是开发人员。与其它一些Ajax框架相比,它的服务器端的技术不是很可靠。它依赖于XML,XML可以很容易被Spry组件接受。 总结:根据本项目对页面性能要求,要选择性能高的框架jquery作为页面js库,同时选择ext作为皮肤js库。5.4 XML解析器目前流行的XML解析器主要有DOM、SAX、JDOM、DOM4J等,下面我们就这四种解析器进行

30、分析和比较:1、 DOMDOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。(所以其劣势就是基与大文件的加载速度很慢,因为它是需要全部加载后才操作的).用 DOM 解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用 DOM 解析器的时候需要处理整个 xml 文档,所以对性能和内存的要求比较高,尤其是遇

31、到很大的 xml 文件的时候。由于它的遍历能力,DOM 解析器常用于 xml 文档需要频繁的改变的服务中。另一方面,对于特别大的文档,解析和加载整个文档可能很慢且很耗资源,因此使用其他手段来处理这样的数据会更好。这些基于事件的模型,比如 SAX。2、 SAXSAX 解析器采用了基于事件的模型,它在解析 xml 文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。这种处理的优点非常类似于流媒体的优点。分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中,对内存的要求通常会比较低。这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现。但用 SAX 解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1