第16章 新技术应用,主要有六个小节
16.1 中间件技术
16.2 J2EE与.NET平台
16.3 虚拟计算
16.4 片上系统
16.5 多核技术
16.6 面向方面的编程
构建与软件重用
构件:
是一个功能相对独立的具有可重用价值的软件单元。是系统中实际存在的可更换部分,它实现特定的功能,符合一套接口标准并实现一组接口。在面对对象方法中,一个构件由一组对象构成,包含了一些协作的类的集合,它们共同工作来提供一种系统功能。
软件重用:
是使用已有的软件产品来开发新的软件系统的过程。可以分为:
垂直式重用:是在一类具有较多公共性的应用领域之间重用软件构件。
水平式重用:重用不同应用领域的软件元素,例如数据结构、排序算法、人机界面构件等,标准函数库是一种典型的原始的水平式重用机制。
软件重用的范围不仅涉及源程序代码,还包括10种可能重用的软件要素:
项目计划 成本估计 体系结构 需求模型
规格说明 设计 源程序代码 用户文档
技术文档 用户界面 数据结构 测试用例。
软件的重用由 可重用的资产(构件)的开发、管理 、支持 、 重用、4个过程。
构件开发者和领域工程师工作在重用资产开发过程;
应用工程师工作在应用项目开发过程;
构件标准:
分为三个主要流派:
对象管理集团(OMG)的CORBA
Microsoft的构件对象模型(COM)和分布式构件对象模型(DCOM)
Sun的企业Java Bean(EJB)
构件获取:
从现有构件中获得符合要求的构件;
通过遗留工程将具有潜在重用价值的构件提取出来;
从市场上购买现成的商业构件,即COTS构件;
开发新的符合要求的构件。
构件管理:
构件管理的内容包括:
构件描述、构件分类、构件库组织、 人员及权限管理 、用户意见反馈
构件的组织:
可重用技术对构件库组织方法的要求是:
支持构件库的各种维护动作(增、删、改),但尽量不要影响构件库的结构;
不仅要支持精确匹配,还要支持相似构件的查找;
不仅要能进行简单的语法匹配,还要能够查找在功能或行为上等价或相似的构件;
对应用领域具有较强的描述能力和较好的描述精度;
库管理员和用户容易使用。
已有构件分类方法:
关键字分类法、刻面分类法、超文本组织方法
构件分类:
从构件的外部形态看,构成一个系统的构件可分为:
独立而成熟的构件、有限制的构件、适应性构件、装配的构件、可修改的构件
人员及权限管理
构件库系统的5类用户:
注册用户、公共用户、构件提交者、一般系统管理员、超级系统管理员
构件重用
构件开发的目的是重用。为了让构件在新的软件项目中发挥作用,库的使用者必须完成以下工作:
检索与提取构件
理解与评价构件
修改构件
构件组装
中间件技术
中间件是位于平台(硬件和操作系统)和应用之间的通用服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,可以有符合接口和协议规范的多种实现。中间件是为了解决分布异构问题。
目前被业界比较认可的两种定义为:
在一个分布式系统环境中处于操作系统和应用程序之间的软件;
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
从上述定义可以发现:
中间件是一类软件,而不是一种软件;
中间件不仅仅实现互连,还要实现应用之间的互操作;
中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。
中间件的功能:
负责客户机和服务器间的连接和通信;
提供客户机与应用层的高效率通信机制;
提供应用层不同服务之间的互操作机制;
提供应用层与数据库之间的连接和控制机制;
提供一个多层结构应用开发和运行的平台;
提供一个应用开发框架,支持模块化的应用开发;
屏蔽硬件、操作系统、网络和数据库;
提供交易管理机制,保证交易的一致性;
提供应用的负载均衡和高可用性;
提供应用的安全机制与管理功能;
提供一组通用的服务去执行不同的功能,为的是避免重复的工作和使应用之间可以协作。
“三架马车”
中间件、操作系统、数据库管理系统
中间件的优越性
缩短应用的开发周期
节约应用的开发成本
减少系统初期的建设成本
降低应用开发的失败率
保护已有的投资
简化应用集成
减少维护费用
提高应用的开发质量
保证技术进步的连续性
增强应用的生命力
中间件分类
从中间件的层次上划分:
底层型中间件:
主流技术:JVM(java虚拟机)、CLR(公共语言运行时)、ACE(自适应通信环境)、JDBC、ODBC;
代表产品:Sun JVM、Microsoft的CLR
通用型中间件:
主流技术:CORBA、EJB、COM/DCOM
代表产品:IONA Orbix、BEA WebLogic、IBM MQSeries
集成型中间件
主流技术:WorkFlow、EAI
代表产品:BEA WebLogic、IBM WebSphere
由于中间件需要屏蔽分布环境中异构的操作系统和网络协议,它必须能够提供分布环境下的通信服务,我们将这种通信服务称之为平台。基于目的和实现机制的不同,将平台分为
RPC:使用RPC来远程执行一个位于不同地址空间里的过程,且效果上和本地调用相同;
MOM:利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成;
ORB:是OMG推出的对象管理结构(OMA)模型的核心组件,作用是提供一个通信框架,透明的在异构的分布计算环境中传递对象请求。
可向上提供不同形式的通信服务,包括同步、排队、订阅分布、广播等,在这些基本的通信平台上,可构筑各种框架,为应用程序提供不同领域的服务。
J2EE与.NET平台
J2EE
J2EE为设计、开发、装配和部署企业级应用程序提供了一个基于构件的解决方案。
J2EE平台提供了一个多层结构的分布式的应用程序模型,该模型具有重用构件的能力,基于XML的数据交换、统一的安全模式和灵活的事务控制。
J2EE独立于平台的特性让使用J2EE的解决方案不受任何提供商的产品和API的限制。
J2EE核心技术:
EJB(java服务器端的构件模型)、 JDBC(java连接数据库的标准)、
java Servlet(java服务器端小程序)、 JSP(java服务器页面)、
JMS(java消息服务)、 JNDI(java命名目录接口)、
JTA(java事务API)、 java Mail API(java邮件API)、
JAXP(java XML解析API)、 JCA(J2EE连接体系结构)、
JAAS(java认证和授权服务)
.NET平台
Microsoft.NET的5个部分:
操作系统:.NET平台的基础;
.NET Enterprise Servers:提供一系列服务器产品,通过这些产品可以缩短构建大型企业应用系统的周期;
.NET Building Block Services:指的是一些成型的服务,.NET开发者可以以付费的方式直接将这些服务集成在自己的应用程序中;
.NET Framework:位于整个.NET平台的中央,为开发.NET提供底层支持;
Visual Studio.NET:是.NET应用程序的集成开发环境,位于.NET平台的顶端。
J2EE与.NET平台的比较
相同点:
都是为了解决构建企业计算等大型平台而出现的;
都包含一系列技术缩短开发周期,提高开发效率,节省构造成本;
都在安全性、扩展性、性能等方面做出了努力;
都提供了一系列的技术供选择。
不同点:
在开发语言的选择范围上,
.NET的语言选择范围相当大;
J2EE只能使用java语言;
在对企业计算的支持方面:
.NET虽然可以宣称平台中的技术是标准的,但与J2EE不同,.NET的标准并没有完全开放;使用.NET来开发唯一可以不选用Microsoft产品的就是数据库,.NET中ADO.NET直接支持的仅仅是MS SQL Server和Access,对于其他数据库,都必须使用OLE DB来访问;
J2EE的选择余地很大,是一种开放式标准,任何厂商都可以根据这些标准开发自己的产品,有助于降低系统开发成本,减少开发费用。
综上,虽然.NET中的技术标准可以构造完整的分布式应用,但J2EE的选择范围更多。
软件即服务(SaaS)
SaaS是一种通过互联网提供软件的模式,厂商将软件部署在自己的服务器上,客户根据自身需求,通过互联网向厂商订购所需软件服务,按订购的服务多少和时间长短向厂商支付费用,并通过互联网获得所提供的服务。用户不用再购买软件,而是租用基于Web的软件,来管理企业经营活动,无需对软件进行维护,服务提供商会全权管理和维护软件。
对企业来说,SaaS的好处:
技术上,SaaS部署简单,无需购买,只需注册;无需配置专业人员,就能满足企业要求;
投资上,不用一次性投资到位,不占用过多资金,不用考虑成本折旧问题;
维护和管理上,不需要专门的人员,减少了这方面的资源消耗,集中资源对核心业务进行有效运营。
对企业来说,SaaS的缺点:
安全性:企业的核心资源不会希望由第三方来负责;
标准化:SaaS缺乏标准化。
虚拟计算
P2P计算
P2P中,每一个客户终端既是客户端,又是服务器。它将信息和资源都向互联网各点均匀分布,也就是”边缘化”的趋势,消除单个资源带来的瓶颈,控制和实现网络上各节点的负载均衡。能合理使用计算机空闲资源。
云计算
是一种商业计算模型,将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。云计算的云是存在于互联网上的服务器集群上的资源,包括软件和硬件资源,所有的处理都在云计算提供商所提供的计算机群来完成。
云计算的服务形式:
软件即服务(SaaS)
平台即服务(PaaS)
是一种分布式平台服务,厂商提供开发环境、服务器平台、硬件资源等服务给客户,用户在其基础上定制开发自己的应用程序并通过其服务器和互联网传递给其他客户。客户能控制部署的应用程序,也可控制运行应用程序的托管环境配置。
基础设施即服务(laaS)
提供给消费者的服务是对所有设施的利用,包括处理、存储、网络和其他基本的计算资源,用户能够部署和运行任意软件。消费者不管理或控制任何云计算基础设施,但能控制操作系统的选择、存储空间、部署的应用,也有可能获得有限的网络组件控制。
云计算的特点:
虚拟化技术
灵活定制
动态可扩展性
高可靠性和安全性
高性价比
数据、软件在云端(服务器端)
超强大的计算和存储能力
云计算是一种基于并高度依赖Internet,用户与实际服务提供的计算资源相分离,集合了大量计算设备和资源,并向用户屏蔽底层差异的分布式处理架构。
以下情况可以考虑使用云计算服务:
短时间内的中、大规模计算需求
待建系统前期投入低,并且总体拥有成本较优
在充分相信云计算服务提供商的情况下的数据安全性需求
没有足够的服务器管理和维护人员
在终端设备配置较差的情况下完成较复杂的应用
普适计算(普存计算、普及计算)
强调和环境融为一体的计算,而计算机本身则从人们的视线里消失;在普适计算下,人们能够在任何时间、任何地点以任何方式进行信息的获取和处理。