博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三层网络体系结构的特点和实现方法
阅读量:2181 次
发布时间:2019-05-01

本文共 5828 字,大约阅读时间需要 19 分钟。

转自

 

主要论述了三层网络体系结构的技术特点,组成框架,实施分类和实现案例。

关键词:网络,体系结构,特点,方案

1 引 言
  九十年代末,随着网络技术在各行各业的深入应用,IT行业又出现了一种低费用、低管理开销、并享有Client/Server计算模式优点的新型体系结构——三层网络体系结构。如果把C/S体系结构称为“胖客户机/服务器”计算模式,那么,三层体系结构可以称为“瘦客户机/服务器”计算模式。
2 技术特点
  三层(或多层)结构的特点是在两层结构的基础上加入一个(或多个)中间件层。它将C/S体系结构中原本运行于客户端的应用程序移到了中间件层,客户端只负责显示与用户交互的界面及少量的数据处理(如数据合法性检验)工作。客户端将收集到的信息(请求)提交给中间件服务器,中间件服务器进行相应的业务处理(包括对数据库的操作),再将处理结果反馈给客户机。
  与传统的C/S体系结构相比,三层体系结构存在以下优点:
2.1 客户端零维护
  在三层体系结构中,几乎所有的业务处理都是在中间件Web Server上完成的,客户端只需要安装支持Java的浏览器即可,不用做任何其它安装和配置工作,所以也就不存在客户端维护的问题,真正实现了“客户端零维护”。处理业务时,操作员可以直接通过Web浏览器访问Web Server进行业务处理工作。
2.2 可扩展性好
  三层体系结构的可扩展性好体现在以下四个方面:
  第一,工作节点的可扩展性好。由于三层体系结构的客户端零维护的特点,使增加一个工作节点的工作简单到了只需增加一台装有Web浏览器的PC机即可。
  第二,应用系统的可扩展性好。好的应用系统应该能方便地实现一定程度上业务的变化和业务单元的增加。三层体系结构采用面向对象的分析和设计模式,将业务模块都封装到了业务类和服务类中,所以,如果一个业务流程变了,或需要增加一个新的业务模块,只需替换或增加新的业务类和服务类即可。
  第三,业务逻辑与用户界面及数据库分离,使得当用户业务逻辑发生变化时只需更改中间层的控件/组件/JB/EJB即可。
  第四,便于数据库移植。由于客户端不直接访问数据库,而是通过一个中间层进行访问,所以,在改变数据库、驱动程序或存储方式时无需改变客户端配置,只要集中改变中间件上的持久化层的数据库连接部分即可。
2.3 安全性好
  在三层体系结构中,客户端只能通过Web Server而不能直接访问数据库,这大大提高了系统的安全性。如果对系统提出更高的安全性要求的话,还可以通过防火墙进行屏蔽。
2.4 资源重用性好
  由于将业务逻辑集中到Web Server统一处理,三层体系结构可以更好地利用共享资源。例如数据库连接是一项很消耗系统资源、影响响应时间的事件,在三层体系结构中可以将数据库连接放在缓冲池中统一管理,由不同应用共享,并有效控制连接的数量。
3 组成结构
  三层结构主要由以下三部分组成:
3.1 客户端
  客户端的主要任务是显示用户界面,接收用户事件。三层体系结构中,用户界面通过浏览器显示,WebServer将应答最终以HTML为载体下载到客户端浏览器,经浏览器(如IE、NetScape)进行解释,得到最终的用户界面。从技术的角度划分,客户端程序由以下几部分组成:
3.1.1 HTML
  HTML是所有界面元素的载体,标题、正文、Table、Form、Script程序段、Applet、ActiveXControl……所有这些都是通过<标识></标识>嵌在HTML中的。HTML是各种浏览器的通用语言,界面上的一切对象都要嵌入到HTML中才能被浏览器所解释。
3.1.2 CSS
  对CSS的翻译,国内不同文献有不同的解释,比较通用的解释是“层叠风格表单”。层叠风格表单的标准是由W3C组织制定的,目前市面上各个浏览器普遍支持的是CSS1标准。
  层叠风格表单定义了一个文档元素的显示特性。
HTML标识符所包含的每一个元素都可以被定义到一个或多个内容显示的设置。从功能上讲,CSS可以细分为CSS1/2和CSS-P(层叠风格表单定位)。CSS1/2的作用是设置文档元素的颜色、字体等显示特性;CSS-P的作用是设置文档元素在页面上的精确位置。
  对于创建一个中型或大型企业的管理信息系统,这样大规模的基于Web Server的系统来说,使用CSS是一个理想的选择。它可以有效地保证所有页面呈现统一的显示风格,同时也能减少大量编码工作。
3.1.3 Script
  Script是指某一种脚本语言,目前主要有JavaScript和VBScript两种通用的脚本语言。由于网景的Netscape不支持VBScript,所以要想编写跨浏览器的脚本程序,JavaScript是唯一的选择。
  从功能上讲,Script可以分为客户端脚本和服务端脚本,由于在三层体系结构中,服务端的控制和应答由Servlet和JSP完成,所以系统只使用客户端脚本。
  客户端脚本的主要作用是:检查录入数据的合理性,充当过滤器的作用,保证提交给Web Server的数据是合法的;结合业务规则,控制界面元素的显示特性;在必要情况下进行cookie操作。
3.1.4 Object
  Object是嵌入HTML中的外来对象,常用的Object有两种:Java Applet和MSActiveX Control。当系统对界面的灵活性及功能的需求超出了HTML和Script的实现范围时,开发者往往会考虑到Object技术。
  Applet是运行于客户端的Java小应用程序,随包容它的页面一起下载到客户端,由支持Java的浏览器(带有Java虚拟机)解释并运行。
  ActiveXControl的作用类似于Applet,所不同的是它只能运行于Windows平台的客户端,而且只在第一次访问包容ActiveX Control页面时下载并安装ActiveXControl,直到服务端的ActiveXControl版本升级了才会下载第二次。
3.2 中间件服务器
  中间件服务器由Web Server和Java ApplicationServer两部分组成,有的中间件将这两部分集成到了一起。
3.2.1 Web Server
  HTTPServer使用基本的服务器构架,它在启动时创建自己的服务处理线程池。在线程处理池中的线程进入循环,监听来自客户端的HTTP请求,并使用HTTP协议,对来到的HTTP请求进行处理。所有的HTTP连接都传给它们。HTTP请求到来后,服务处理线程根据URL和Server的配置信息进行必要的授权检查,决定调用哪个Servlet来处理请求,然后将Servlet处理之后的结果作为应答反馈给客户端。
  在HTTP Server中有几个处于核心地位的Servlet,它们提供标准的HTTP功能。这几个核心的Servlet分别是:File Servlet,用于处理对文件服务的请求,Cgi Servlet,提供基本的CGI功能,InvokerServlet,作为一个元Servlet(meta-servlet),负责其它Servlet的加载、击活和删除;Dispatcher Servlet:间离部分可信和完全可信的Servlet,使它们在各自安全的“沙箱”里执行。
  网络应用级协议有多种,如HTTP、FTP、SMTP等,其中,HTTP协议是最安全、应用最广的协议,HTTP请求是被防火墙视为安全的请求。因此,三层结构中间件都带有HTTPServer,它是三层结构中间件的门户,是联系客户端和真正处理业务的Application Server的桥梁和纽带。
3.2.2 Java Application Server
  Application Server是中间件的核心部分,是真正实现业务功能的服务,它接受HTTPServer分配的请求,做出相应处理,再将处理结果传递给HTTPServer,由HTTPServer形成HTTP应答反馈给客户端。
3.2.3 数据库服务器
  数据库服务器是业务对象的属性得以永久性保存的载体。保证对象持久的最直接的方法是使用面向对象的数据库管理系统,它是专门为存储和共享对象而设计的。目前,大型三层体系结构应用系统中用的较多的关系型数据库有Orcale、DB2、Sysbase等。
4 实现分类
  三层结构体系存在着J2EE和Windows DNA两大阵营。
4.1 基于Windows DNA结构的实现方案
  如果采用Windows DNA体系结构,则数据库应考虑微软的SQLServer。SQLServer数据库仅适用于中小企业级。
  采用Windows DNA的优势在于,目前绝大多数桌面操作系统都是微软的Windows平台,而且我们所常用的办公软件也是微软的产品。这样很容易将电子商务系统与日常办公结合起来。另外,微软的产品价格平易近人。再者,Windows2000不仅本身自带了IISWeb server,而且也完全集成了COM+-中间件服务,无需再额外选择所谓的“中间件”服务器。另外,采用Windows DNA结构,开发效率要比采用J2EE效率高50%以上。
  采用Windows DNA的缺点在于,系统的平台兼容性、移植性差。这是众所周知的,无需赘述。
  基于Windows DNA结构的实现方案简单地说就是:ASP+ActiveXControl+COM++ODBC。
4.2 基于J2EE的实现方案
  J2EE是一种利用Java 2平台来简化诸多与多级企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE不仅巩固了标准版中的许多优点,例如“编写一次、到处运行”的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对EJB(Enterprise JavaBeans)、Java ServletsAPI、JSP(Java Server Pages)以及XML技术的全面支持。
  Sun公司在企业版中增加了一整套核心企业应用程序编程界面,而所有这些界面均为标准的模块化组件。J2EE技术还为这些组件提供一整套企业服务,通过自动化的方式完成应用程序开发中的诸多耗时且费力的艰难工作,为用户提供一种可创建广泛兼容的企业解决方案而无需进行复杂编程的平台。利用这一优势可以方便地开发出高质量的、适合企业使用的应用程序,还可极大地减少产品研发上市时间、成本和风险。
概括起来,J2EE体系结构的优点是:
  Java Servlet和JSP都要编译为Java Class才作为Servlet运行,因此执行性能会明显提高。
  Java Servlet和JSP中可以完全使用Java进行编程,可以完成许多简单的商业逻辑,特别是JSP,可以直接书写HTML,因此简化了页面的输出,这样就保留了脚本语言易于使用的优点。
  复杂的商业逻辑以组件的形式部署在EJBServer中。由于EJBServer提供了多种组件事务服务,使系统更能够应付大量的并发用户和管理复杂的事务逻辑。
  EJBServer中集成的组件命名服务可以使组件位置透明化,简化了组件的部署和客户端应用的维护。
  开发过程易于分工,可以由专人负责编写组件,其他人组装页面。
  J2EE平台全面支持和实施XML,这种强大的组合可使XML具备跨平台的兼容性,甚至用于对XML代码进行语法检查和调试的工具也可与平台无关。J2EE技术和XML技术分别是企业开发的阴阳两极,因为XML可实施独立于平台的数据,而J2EE平台则可实施独立于平台的解决方案。XML可通过移植的方式表现数据,因此就对Java技术的可移植性构成了补充。
  基于J2EE结构的实现方案是:JSP+JavaBeans/EJB+Servlet+JDBC。
5 实现案例
    笔者以Windows DNA方式做了一个实现案例:
  此案例服务器站建立在Windows2000上,数据库服务器选用的是SQLServer 6.5。数据库中存放了大量的单位基本信息,经过身份确认的用户可以根据各自不同的需求对这些数据进行相应的操作,如数据的上报,查询等。案例中主要用到了ASP和JavaScript等方法。
5.1 建立连接
  为了建立与数据库的连接,可以通过两种方式:一种是建立DNS,另一种是OLE DB。这里我们用了DNS方式建立了一个SQL的数据源Convote。一个DSN连接通常需要的参数有:DSN名,用户名,口令,例如我们用用户名“users”,口令“pass”,通过DSN
  连接数据库。
5.2 用户登陆
  用户输入用户名和密码后提交,用下列语句取得用户信息:
 
  取得用户名和密码后与数据库内的用户名和密码进行比较,正确的可以进入系统,否则提示出错。
5.3 数据查询 

5.4 关闭连接
  与数据库的连接结束后一定要关闭连接:conntemp.close()
5.5 ActiveX控件
  当用户的需求用Script无法满足时,我们常常要用到Java Applet和MSActiveX控件。这里,就MSActiveX控件有个实例。ActiveX控件把主机应用程序显示和操作组件所需的附加支持包含在GUI环境中,还可以把OCX组件放在网页当中。

  如当用户需要在客户端进行IC卡的读写时,由于IC卡的读写是较复杂的程序,单纯用Script语句根本就无法实现此功能。此时我们就需要用到ActiveX控件。用VB编写了一个ActiveX OCX,把它嵌入HTML中,让第一次访问的用户随页面一起下载,同时OCX所要调用的DLL也随着OCX一起下载到客户端,于是控件在客户端就可以执行起来。

  这里我们使用的是Asp页面静态调用ActiveX控件的方法:
  之后,就可以在ASP语句中使用此ActiveX组件的几个方法了。
  读卡界面如图3所示。
    点击读卡,则可以读出卡内信息,如图4所示。

    总之,B/S模式应是今后的发展方

转载地址:http://qhikb.baihongyu.com/

你可能感兴趣的文章
Leetcode C++《热题 Hot 100-17》461.汉明距离
查看>>
Leetcode C++《热题 Hot 100-18》538.把二叉搜索树转换为累加树
查看>>
Leetcode C++《热题 Hot 100-21》581.最短无序连续子数组
查看>>
Leetcode C++《热题 Hot 100-22》2.两数相加
查看>>
Leetcode C++《热题 Hot 100-23》3.无重复字符的最长子串
查看>>
Leetcode C++《热题 Hot 100-24》5.最长回文子串
查看>>
Leetcode C++《热题 Hot 100-28》19.删除链表的倒数第N个节点
查看>>
Leetcode C++《热题 Hot 100-29》22.括号生成
查看>>
Leetcode C++《热题 Hot 100-47》236.二叉树的最近公共祖先
查看>>
Leetcode C++《热题 Hot 100-48》406.根据身高重建队列
查看>>
《kubernetes权威指南·第四版》第二章:kubernetes安装配置指南
查看>>
Leetcode C++《热题 Hot 100-49》399.除法求值
查看>>
Leetcode C++《热题 Hot 100-51》152. 乘积最大子序列
查看>>
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>
Leetcode C++ 《第181场周赛-2》 1390. 四因数
查看>>
阿里云《云原生》公开课笔记 第一章 云原生启蒙
查看>>
阿里云《云原生》公开课笔记 第二章 容器基本概念
查看>>
阿里云《云原生》公开课笔记 第三章 kubernetes核心概念
查看>>
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>