




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
试谈用JAVA实现三层体系结构中用户层与应用层摘要:近些年来应用程序使用多层体系结构来设计已经越来越普遍。本文从使用JAVA的角度来论述了三层结构中优点和实现应用服务器层和用户层的方法和手段。关键字:三层体系结构,用户层,应用服务器层,一.三层结构的简单描述及优点三层体系结构,即用户层、应用层和数据库服务器。用户层主要指用户界面,它要求尽可能的简单,使最终用户不需要进行任何培训就能方便地访问信息;第二层就是应用服务器,也就是常说的中间件,所有的应用系统、应用逻辑、控制都在这一层,系统的复杂性也主要体现在应用层;最后的数据库服务器存储大量的数据信息和数据逻辑,所有与数据有关的安全、完整性控制、数据的一致性、并发操作等都是在第三层完成。采用JAVA的三(N)层结构的优点.能有效降低建设和维护成本,简化管理多层应用结构在各层次上的组件能单独更新、替换或增加、拆除。因此,系统维护更方便,代价相对低得多。而且,因各组件互相独立,更换组件就好比更换组合音响的一个部件,对系统其它部分并无影响,所以更新维护更加安全可靠。客户端采用瘦客户机。因为,客户机不必进行大量的计算或数据处理,它的硬件配置就不需要太高。通过将业务逻辑集中到中间层,系统获得了对业务逻辑的独立性,即当用户的需求改变时,开发人员可以迅速地在中间层(应用服务器)上更新业务逻辑,而无需将更新后的应用提交到众多的PC终端系统上去,即客户端无需任何改动(改动众多的客户端并不是件轻松的事)。.适应大规模和复杂的应用需求如果说结构化方法使软件开发从一门手工艺术走向科学的工程方法,组件技术则使软件工程从个体作坊走向大规模工业。虽然,结构化方法对中小型系统开发能够行之有效,但对大型系统,结构化分析的结果往往是错综复杂的网状结构,而不是结构清晰的层次结构。这也正是面向对象方法学诞生的原因。组件技术能使复杂系统的设计变得简单可行,具有良好的伸缩性。三层或多层结构,可以将数据处理从客户端转移到应用服务器和数据库服务器上。这样,尽管客户端与应用服务器之间可能存在着多个甚至数百个的连接,但是应用服务器与数据库服务器之间的连接却只有少数几个,从而达到减少通信线路上传递的数据量的目标。这样的功能分配提供了很强的系统可伸缩性,使得在用户数量急剧增加时还能保持系统性能的稳定。即使在用户数量很大的情况下,数据库仍能保持良好的工作负载,保持系统的快速的响应速度。.可适应不断的变化和新的业务需求任何应用系统实施的重点不在于需求确定以后能否实现这些需求,而是在系统实施后如何适应变化的需求。JAVA系统结构和组件式系统的开发和维护过程中,技术人员可以按照新的需求,通过在不同系统层次上调度更新的组件或新加入的组件来调整旧的系统,以适应新的与不断变化的要求。以往的系统只能靠专业维护人员或系统开发商的再次开发或修改原有系统,才能满足新的需求,代价往往很大,无法保证时间上的要求。.访问异构数据库多层结构的中间层即应用服务器能够提供广泛的异构数据库访问和复制能力。传统的客户机/服务器结构则需要在客户端安装许多访问异构数据库的驱动程序,而三层/多层结构只要在中间层有相应的驱动程序就可以访问异构数据源。.能有效提高系统并发处理能力传统的一体化集中式系统或客户服务器架构,在处理大信息量业务时,都可能形成瓶颈。而多层体系架构的组件式系统将界面、界面发布、业务应用逻辑及数据存储分为多个层次分散管理,逻辑或物理地将它们分开,可减轻系统压力,提高整体性能。并且中间层可以采取多机并行的方式,相互备份的方式,保证系统的高可用性。一般情况下进行数据分析时,每次查询可能涉及到大量的数据,往往需要较长的响应时间,特别在分布式数据环境下,响应时间有时长得令人难以忍受。三层(多)层结构提供了客户端与服务器之间的异步通信,使得客户不必等待提交的分析处理结果而可以继续执行其他处理任务。6.能有效提高系统安全性多层体系结构将数据与程序、数据控制与应用逻辑分层独立管理,能更严格地控制信息访问;信息传递中采用数据加密技术,可进一步减低信息失密的风险。应用服务器内建安全控制数据库,实现应用服务器与数据服务器的双重权限控制,对权限的划分更准确、灵活、严格。新系统在信息访问、传递和存储三个环节上均有严格的安全措施。由于利用JAVA的三层结构具有这么多的优点,以至于它的应用越来越广,现在几乎所有的Web服务器都采用三(N)层结构,所以怎样采用JAVA实现三(N)层体系结构成了当今程序员希望掌握的一个热点。二.利用JAVA实现三层体系结构中的中间层:服务器应用层。创建服务器创建一个Server类从Thread类继承过来。声明一个ServerSocket对象监听客户请求。Server类的构造函数创建和启动ServerSocket线程。如果在启动服务器时引发异常,将会产生一个出错信息。此构造函数的代码如下 :PublicServer(){try{serverSocket=newServerSocket(1001);}catch(IoExceptione){fail(e,”Couldnotstartserver”);}“Serverstarted⋯⋯⋯”);This.start();}实现监听客户请求服务器的run()方法和实现Runnable接口的所有线程一样,拥有线程的指令。在这种情况下,服务器进入了个无限循环并监听客户请求。当服务器安全连接到客户机时,ServerSocket类的accept()方法接收此连接。服务器为客户机创建一个用户定义的类Connection的对象,将一个Socket对象传入构造函数。客户机和服务器之间的通讯通过这个套接字发生。run()方法的代码如下:Publicvoidrun(){try{while(ture){Socketclient=serverSocket.accept();Connectioncon=newConnection(client);}}catch(IoExceptione){fail(e,”Notlistening”);}}3启动服务器main()方法的代码如下。它创建了一个启动线程的Publicstaticvoidmain(Stringargs[]){newServer();}Connection线程
Server类的对象。以下代码片段描述了ConnectionClassConnectionextendsThread
类.{protectedSocketnetClient;protectedbufferedReaderfromClient;protectedPrintStreamtoClient;publicconnection(Socketclient){netClient=client;try{fromClient=newBufferedReader(newInputStreamReader(newClient.getInputStream());toClient=newPrintStream(newClient.getOutStream()));}catch(IoExceptione){try{netClient.close();}catch(IoExceptione1){“Unabletosetupstreams”+e1);Return;}}this.start();}publicvoidrun(){Stringlogin,password;Try{for(
;
;
){toClient.println(“Login:”);login =fromClient.readLine();if(logion==null)break;toClient.println(“Welcome!!Entercommand:
”);}}catch(IoExceptione){}finally{try{netClient.close();}catch(IoExceptione){}}}}Connection类创建一个 BufferedReader对象(fromClient)和一个 PrintStream对象(toClient)。FromClient使用getInputStream()方法检索客户端的输入:toClient 使用getOutPutStream()方法使得服务器可以把输出写到客户端。这样一来;就开始了双工通讯。当客户连接到服务器时,服务器使用toClient对象的Println()方法将”Login:”写到套接字上 ,它使用 readLien()方法将客户机发送的登陆 ID存入字符串变量Login.println()方法用于将”Password:”。提示写到套接字上.然后,服务器再次调用readLine()将用户输入存入另一个变量password。服务器中可以有一个验证登陆ID和口令以加密的格式存储,这将是解密的地方.如果用户是经过授权的,就可以使用已经建立流对象开始对话。到了注销的时候,服务器中断循环.这引起finally程序块的执行,关闭客户套接字.关闭套接字是很关键的,如果让连接开着,很快就将耗尽服务器的内存.finally程序块确保连接的关闭。注意:服务器是多线程的 ,每个客户都要从服务器得到它自己的线程。三.利用JAVA实现三层体系结构中的用户层。;publicclassClient{publicstaticvoidmain(Stringstr[]){Socketsocket;PrintStreamout=null;BufferedReaderin=null;Try{socket=newSocket(“”,1001);out=newPrintStream(socket.getOutputStream());in=newBufferedReader(newInputStreamReader(socket.getInputStream()));}catch(UnknownHostExceptione){“Unknownhostname”);System.exit(1);}catch(IOExceptione){“I/Oerror”);System.exit(1);}BufferedReadersdtin=newBufferedReader(newInputStreamReader((System.in)));Stringlogin=in.readLine();StringlogName=stdin.readLine();out.println(logName);Stringpassword=in.readLine();Stringpass=stdin.readLine();out.println(pass);Stringstr=in.readLing();while((str=stdin.readLine())!=null){out.println(str);if(str.equal(“byebye”))break;}out.close();in.close();stdin.close();}}上述程序输入“byebye”时中断连接。这样当应用层的程序运行后,就可以运行客户端的程序。当输入了用户名和密码后,就可以输入其他的信息了。直到输入“byebye”为止。四.小结JAVA语言是一种使用越来越普遍的语言,而三(N)层体系结构正方兴未艾。本文通过使用JAVA语言来编写应用程序的服务器程序和客户端程序。虽然只是简单的实现了服务器与客户端之间的通讯,但是如果体会了他的精髓,并辅以 SQLServer或其他的数据库作为存储、处理数据的第三层,这时的应用程序将会具有非常大的实用性。出师表两汉:诸葛亮先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理;不宜偏私,使内外异法也。侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下:愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。将军向宠,性行淑均,晓畅军事,试用于昔日,先帝称之曰以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。
“能”,是以众议举宠为督:愚亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之、信之,则汉室之隆,可计日而待也 。臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年CFA考试难点试题及答案
- 财务比例分析的应用技巧试题及答案
- 辅助学习的特许金融分析师试题及答案
- 西北旅游区介绍
- 2024年特许金融分析师考试考生技巧题试题及答案
- 员工岗位操作培训
- 特许金融分析师考试学习计划题试题及答案
- 2024年特许金融分析师考试资料准备试题及答案
- 餐饮领班述职报告
- 高校青年教师培训
- 人教版高中数学新教材详细目录
- 6MW光伏发电项目报价清单表(全项)
- 思想政治素质和品德考核表
- 《糖尿病诊疗规范》
- 中国古代宗教课件
- 比亚迪f3维修手册13.全车电路图
- 复印病历资料申请表
- GB/Z 41561-2022ISO 8124-1、EN 71-1和ASTM F963标准机械物理性能差异比对
- GB/T 34560.2-2017结构钢第2部分:一般用途结构钢交货技术条件
- 2023年甘肃能源化工投资集团有限公司招聘笔试模拟试题及答案解析
- 大客户销售谋略课件
评论
0/150
提交评论