收藏 分享(赏)

第四章.商务逻辑层与技术.ppt

上传人:dzzj200808 文档编号:5583833 上传时间:2019-03-08 格式:PPT 页数:41 大小:550.50KB
下载 相关 举报
第四章.商务逻辑层与技术.ppt_第1页
第1页 / 共41页
第四章.商务逻辑层与技术.ppt_第2页
第2页 / 共41页
第四章.商务逻辑层与技术.ppt_第3页
第3页 / 共41页
第四章.商务逻辑层与技术.ppt_第4页
第4页 / 共41页
第四章.商务逻辑层与技术.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、第4章 商务逻辑层及其技术,4.1商务逻辑层的构成与应用服务器,商务逻辑层的构成,4.1商务逻辑层的构成与应用服务器,应用服务器 从Web服务器和数据库服务器中分离出来,能提供Web服务、部分的商务服务、商务支持、基础支持的软件包或应用平台; 属于三层架构的中间一层,4.2应用服务器技术分析,4.2.1第一代:基于CGI的应用服务器 CGI工作原理,4.2应用服务器技术分析,4.2.1第一代:基于CGI的应用服务器 CGI工作原理 实例,#include “stdio.h“ #include “stdlib.h“ void main() char *str1, *str2;printf(“Co

2、ntent-type: text/htmlnn“);printf(“n“);printf(“用C编制CGI程序n“);printf(“n“);printf(“第一个CGI程序,这是用C编写的n“);str1 = getenv(“QUERY_STRING“);str2 = getenv(“ACCEPT“);printf(“query_string:“); printf(“%s“, str1); printf(“n“);printf(“accept:“); printf(“%s“, str2); printf(“n“);printf(“n“); ,4.2应用服务器技术分析,4.2.1第一代:基于C

3、GI的应用服务器 CGI工作原理 实例 p100 CGI中环境变量 缺点 将HTML标识嵌入在传统的程序设计语言中,修改HTML的内容不直观、不方便,维护困难; 每个CGI程序在服务器上运行时,对应一个独立的进程,这样在多用户请求时,会有大量的CGI进程在服务器上运行,过度地消耗服务器上的资源,4.2应用服务器技术分析,4.2.2第二代:基于ASP的应用服务器 优点 逻辑控制代码嵌在HTML文件中,编辑HTML方便; 可使用控件和API来访问数据库 缺点 只能在Windows及IIS服务器下运行,不能实现跨平台的运行; 容易遭到黑客的攻击 其它安全问题,4.2应用服务器技术分析,4.2.3 第

4、三代:基于Java的应用服务器 优点 基于Java,易实现跨平台的应用; 支持中间件功能,易组建分布式的网络应用系统; 易实现网络负载均衡,4.2应用服务器技术分析,4.2.3第三代:基于Java的应用服务器 从Servlet 到JSP Servlet缺点 类似CGI,将HTML标识嵌入在Java程序中,编辑与发布HTML不直观、不方便; JSP优点 类似于ASP,将Java控制代码嵌入在HTML中,但JSP是后台编译型的,而ASP是后台解释型的; JSP缺点 缺少组件开发的工具; 缺少系统集成的能力,4.2应用服务器技术分析,4.2.3第三代:基于Java的应用服务器 从JSP到JSP+Se

5、rvlet+JavaBean 优点 具有组件开发与集成的能力,业务逻辑处理,页面构建,与用户交互及控制,4.2应用服务器技术分析,4.2.4第四代:基于Java组件的应用服务器 优点 支持大型组件的开发; 支持异构系统的集成; 灵活的应用程序配置,有效的系统容量扩展,4.2 应用服务器技术分析,4.2.5 应用服务器的产品类型及开发工具(http:/ ),一些支持JSP和Servlet的开发工具有:,4.3 应用服务器的基本功能,高性能的应用程序运行环境 内容缓存 数据库连接缓存 支持进程的多线程执行 大量用户访问情况下的负载均衡 为应用提供扩充性 会话管理 目录及内容管理 商务引擎 系统管理

6、 性能配置管理 存取控制管理 系统日志管理,4.4 分布处理与组件技术,4.4.1分布处理与组件技术概述 应用带来的挑战,首先,在企业级应用中,硬件系统集成商基于性能、价格、服务等方面的考虑,通常在同一系统中集成来自不同厂商的硬件设备、操作系统、数据库平台和网络协议等,由此带来的异构性给应用软件的互操作性、兼容性以及平滑升级能力带来了严重问题。另外,随着基于网络的业务不断增多,传统的客户/服务器模式的分布应用方式越来越显示出在运行效率、系统网络安全性和系统升级能力等方面的局限性。,4.4 分布处理与组件技术,4.4.1分布处理与组件技术概述 分布处理,分布处理是指网络中两个或两个以上的软件相互

7、共享信息资源,这些软件可以位于同一台计算机中,也可以部署在网络中的任一结点位置,基于分布计算模型的软件系统具有均衡系统负载、共享网络资源的技术优势。分布处理的实现,大部分是基于Client/Server模式,结合组件的使用,实现多层的应用架构;但最近也有一些不属于Client/Server模式的分布处理,如Napster和BT应用。BT,即BitTorrent,一种P2P的文件传输应用系统与协议,由BramCohen首创,在2003年一鸣惊人,到2005年初,它已成为仅次于TCP/IP的网络垄断协议了。,分布处理的一些著名事件,1993年:DEC系统研究中心的研究员Lenstra和Manass

8、e召集了600名志愿者,利用分布式处理方法参与由著名的美国RSA研究所发起的RSA-129密码破译活动。这次活动使人们见识了分布处理的威力,此后对它的研究空前活跃起来; 1995年:分布处理再接再厉,一举攻破了RSA-130。这是一个130位的加密算法,这次活动开启了分布处理和Internet结合的大门,使分布处理成为主流的研究方向,并最终导致网格的诞生; 1996年:著名的GIMPS即互联网梅森素数大搜索项目正式启动,近十年来,通过它已发现多个梅森素数; 1999年:著名的寻找外星智能生命信息的SETIhome项目正式推出,它以无比的神秘感吸引了因特网上数百万名志愿者,成为目前参加人数最多的

9、分布式处理项目; 2000年:19岁的大学生Shawn Fanning开发出Napster,在网上掀起网络音乐交换热潮,催生了一个庞大的在线音乐市场; 2001年:IBM宣布自己的网格研究计划,并将为此投资40亿美圆; 2002年:由Bram Cohen开发的分布式下载工具BitTorrent横空出世,以革命性的面目改变了传统的网络交换方式; 2003年:IBM发起史上最大网格计算计划,共有1000万台电脑连入其中。,4.4 分布处理与组件技术,4.4.1分布处理与组件技术概述 组件技术,组件技术是提高大型软件可重用性的一种技术,其最基本的出发点是通过软件模块化、软件模块标准化,使大型软件可以

10、利用一个个能够重复使用的“软件零件”进行组装,加快系统的开发速度,降低复杂度、降低成本。这一思想在软件工程中早就提出过,但是在技术和工艺方面的成熟则是近几年的事。由此可知,组件技术的核心在于创建和利用组件(Component)。,组件技术是从面向对象技术发展而来的,但它是一种更高层次上的对象技术:它独立于语言和面向应用程序,只规定组件的外在表现形式,而不关心其内部实现方法;它既可用面向对象的编程语言实现,也可用非面向对象的过程语言实现。,4.4 分布处理与组件技术,4.4.2 组件标准 几种组件规范 CORBA OMG是一个非盈利性国际组织,致力于使CORBA成为“无所不在的中间件”。1989

11、年成立时仅有8家公司参与,而今天已经是拥有900多个机构成员的“议会式”标准化组织,世界上几乎所有最有影响的计算机公司(如IBM、Microsoft和HP等)、著名的工商企业(如Boeing、Citibank和FordMotor等)和大学研究机构都是这个组织的成员。OMG所制定的分布对象计算标准规范包括CORBA/IIOP 、对象服务、公共实施和领域接口规范。遵照这些规范开发出的分布处理软件环境可以在几乎所有的主流硬件平台和操作系统上运行。现在,CORBA/IIOP已成为Internet上实现对象互访的技术标准,OMG的IIOP也已成为许多公司(如Oracle、Netscape、Sun和IBM

12、等)进行系统集成的基本协议。1995年以来,基于CORBA软件的企业级应用发展迅猛,大有覆盖古老的RPC、DCE之势。目前世界上有一定影响的CORBA软件制造商已有10多家。,CORBA是一种规范,它定义了分布式组件如何实现互操作,它由四个部分组成: l Object Request Broker:CORBA对象互通讯的软总线; l Object Services(可选):ORB所能提供的系统级服务,如安全性、命名/目录和事务处理; l Common Facilities(可选):应用程序级服务,如复合文档等; l Application Interface:CORBA对象和应用的外部接口。

13、在CORBA中专门以接口描述语言(Interface Description Language)来统一描述CORBA对象所提供的所有外部接口,脱离特定语言的约束,使得与语言无关。但同时需要一个从IDL接口到由本地语言(C/C+、Java)所编写的CORBA对象的“桥梁”对象请求解析器(Object Request Broker)为中介,它可以架构在多种流行通信协议之上(如TCP/IP或是IPX/SPX)实现。在TCP/IP上,来自于不同开发商的ORB用InternetInter-Orb协议(IIOP)进行通讯 。,在CORBA应用程序运行期间,ORB可能被请求做许多不同的事情,包括: l 查找

14、并调用远程计算机上的CORBA对象 ; l 负责不同编程语言之间的参数转换(如C到Java); l 可超越本机界限的安全管理 ; l 为其它的ORB收集并发布本地对象的metadata ; l 用下载的代码(stub)中描述的静态方法调用去击活远程对象中的方法 ; l 用动态方法调用击活远程对象 ; l 自动击活一个当前没有装入内存运行的对象; l 将回调方法导引向其管理之下的本地对象 。,4.4 分布处理与组件技术,组件标准与分布式系统开发 几种组件规范 CORBA ActiveX/DCOM /COM+,ActiveX/DCOM是由Microsoft推出的对象组件模型,最初用于集成Micro

15、soft的办公软件,目前已发展成为Microsoft世界的应用系统集成标准,并集中反映在其产品ActiveX中。目前,只有OMG的技术能够支持异构环境中大型分布式电子商务应用的开发,而Microsoft的DCOM技术尚不能完全胜任。Microsoft的优势主要表现在应用和市场能力上,从市场策略考虑,Microsoft决定支持OMG提出的OLE/COM与CORBA的互操作标准,从而使COM的对象能够与CORBA的对象进行通信。今后若干年内,OMG和Microsoft的分布对象技术将共存,并在许多方面相互渗透。,4.4 分布处理与组件技术,组件标准与分布式系统开发 几种组件规范 CORBA Act

16、iveX/DCOM /COM+ RMI,RMI(远程方法调用,Remote Method Invocation)是分布在网络中的各类Java对象之间进行方法调用的一种ORB实现机制。之所以这么讲,是因为CORBA技术与Java技术存在着天然的联系。Sun是OMG的创始成员,CORBA标准中的许多内容(例如IDL标准、IIOP标准)是以SUN公司提交的方案为核心制定的。CORBA与Java/RMI的主要区别在于以下两个方面: 程序设计语言无关性是CORBA的重要设计原则,而Java/RMI依赖于Java语言和Java虚拟机; Java/RMI技术的最大成就是使对象能够作为参数在Internet上

17、迁移和执行(对象序列化,serialize),而CORBA2.0标准中只考虑对象的远程访问,没有对象作为“值“传递的承诺。 正是由于这两个技术的天然联系和各自的优势,CORBA技术与Java技术的融合已成为必然。 RMI早期使用Java远程消息交换协议JRMP(Java Remote Messaging Protocol)进行通信。JRMP是专为Java的远程对象制定的协议。用Java RMI技术开发的应用系统可以部署在任何支持Java运行环境(Java Run Environment,JRE)的平台上。但由于JRMP是专为Java对象定制的,因此RMI对于用非Java语言开发的应用系统的支持

18、不足,不能与用非Java语言书写的对象进行通信。随着Java与CORBA技术的融合,后期出现了支持与用非Java语言书写的对象进行通信的RMI-IIOP协议。这两种协议的实现机制不同,但编写RMI程序的过程基本相同,他们都是基于存根(stub)/骨架(skeleton)架构结构。RMI-IIOP和JNDI(J2EE中的目录和名字服务,商务支持平台的基本功能)是实现企业JavaBean的技术基础。,4.4 分布处理与组件技术,组件标准与分布式系统开发 几种组件规范 CORBA ActiveX/DCOM /COM+ RMI Web Service SOAP+WSDL+UDDI,4.4 分布处理与组

19、件技术,4.4.3 分布式系统的开发 使用RMI机制进行组件调用 RMI机制的实现原理,首先,服务器程序要创建远程对象(1),并对它进行注册(默认在匿名端口1099上监听客户对象请求(2),等待客户的调用。客户程序调用远程对象时首先通过注册(3)与远程服务器建立连接,下载相应的远程调用的客户端代理stub对象(注:这一点与web service不同,在web service中,在设计程序期间客户端就要预先从服务器端下载到客户端),然后通过stub/skeleton框架(4)与远程服务器进行通信。,调用Stub : 初始化与包含远程对象的远程虚拟机的连接; b) 对远程虚拟机的参数进行编组(写入

20、并传输); c) 等待方法的调用结果; d) 解编(读取)返回值或返回的异常; e) 将值返回给调用程序。,Skeleton: a) 解编(读取)远程方法的参数; b) 调用实际远程对象实现的方法; 将结果(返回值或异常)编组(写入并传输)给客户端的调用程序。,4.4 分布处理与组件技术,4.4.3 分布式系统的开发 使用RMI机制进行组件调用 几个名词 对象序列化,RMI通过网络在客户机和服务器之间进行参数传递,而参数在网络之间是以字节流的方式传递的。当参数是对象时,在传递前需要将参数转换成字节流,而在另一端接收时需要将字节流还原成对象。RMI可以利用Java的序列化机制,实现这种功能。,4

21、.4 分布处理与组件技术,4.4.3 分布式系统的开发 使用RMI机制进行组件调用 几个名词 对象序列化 远程接口,使用RMI时应先定义一个远程接口,即一个继承自java.rmi.Remote的接口(所有的RMI接口都必须扩展这个接口),与序列化接口一样,远程接口不包含任何方法,它只是一个标志,表示这是一个RMI接口,远程接口允许客户机利用远程调用的方法访问RMI对象。远程接口也可以用做远程调用方法的参数或返回值。当RMI服务是一个用于创建其他RMI对象的工厂时,这是一个通常的做法。,4.4 分布处理与组件技术,4.4.3 分布式系统的开发 使用RMI机制进行组件调用 RMI的实现和运行步骤

22、定义一个远程接口 创建一个实现接口的类 编译远程服务器 创建Stub和Skeleton 创建RMI客户端程序,并编译 启动RMI注册表(或名字/目录服务) 设置安全控制策略 启动RMI服务端程序 运行RMI客户程序,Weblogic为例:,u 定义一个远程接口 这个接口必须扩展java.rmi.Remote接口,该接口中的每一个方法必须声明将抛出一个RemoteException异常。例如:import java.rmi.Remote;import java.rmi.RemoteException;public interface RemoteInterface extends java.rm

23、i.Remote String message(String msg) throws java.rmi.RemoteException; ,Weblogic为例:,u u 创建一个实现接口的类 定义一个实现该接口的类,该接口扩展了Remote,满足此类作为远程对象类的要求,该类还必须提供一种对象引用的方法,这可以通过实现接口java.io.Serializable,或通过扩展java.rmi.server.UnicastRemoteObject类实现。 import javax.naming.*; import java.rmi.RemoteException; import java.rmi

24、.RMISecurityManager; public class RemoteObject implements java.io.Serializable,RemoteInterface String name;public RemoteObject(String name) throws RemoteException super(); this.name=name; public String message(String msg) throws RemoteException return “My name is:“+name+“,thanks for your message:“+m

25、sg ; public static void main(String args), System.setSecurityManager(new RMISecurityManager(); /* try String myName=“ServerTest“;RemoteObject theServer=new RemoteObject(myName);Naming.rebind(myName,theServer); /* catch(Exception e) System.out.println(“an Exception occurred while creating server“);,W

26、eblogic为例:,u 编译远程服务器javac RemoteInterface.javajavac RemoteObject.javau 创建Stub和Skeletonrmic RemoteObject 这样会生成几个相应的文件,如:RemoteObject_Skel.class 、RemoteObject_Stub.class等。,Weblogic为例:,u 创建RMI客户端程序,并编译 import java.rmi.RMISecurityManager; import java.rmi.Naming; public class RemoteClient public static v

27、oid main(String args) System.setSecurityManager(new RMISecurityManager();tryRemoteInterface server=(RemoteInterface)Naming.lookup(“ServerTest“);String serverString=server.message(“hello,nice to meet you“);System.out.println(“The server says:n“+serverString);catch(Exception e) System.out.println(“Err

28、or while performing RMI“); ,Weblogic为例:,u 启动RMI注册表(或名字/目录服务)若使用RMI注册表,则运行命令rmiregistry 或start rmiregistry,它会在默认的端口启动注册表;为了在其他端口上启动RMI注册,可这样:rmiregistry portNumber或start rmiregistry portNumber。u 设置安全控制策略由于在上面创建了一个SecurityManager,这里就需要创建一个安全策略文件,安全管理器通过安全策略进行安全控制,下面是一个简单的安全策略文件policy内容:grant permission java.security.AllPermission; u 启动RMI服务端程序注册或名字/目录服务启动后,就可以启动服务器程序了。javaw RemoteObjectjava Djava.security.policy=policy RemoteObject u 运行RMI客户程序java Djava.security.policy=policy RemoteClient,4.4 分布处理与组件技术,组件标准与分布式系统开发 命名与目录服务 命名服务 目录服务 JNDI接口 一个简单分布系统的开发(略),4.5 EJB组件开发与使用(略),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报