新書推薦:
《
微观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:NT$
709.0
《
Python贝叶斯深度学习
》
售價:NT$
407.0
《
文本的密码:社会语境中的宋代文学
》
售價:NT$
306.0
《
启微·狂骉年代:西洋赛马在中国
》
售價:NT$
357.0
《
有趣的中国古建筑
》
售價:NT$
305.0
《
十一年夏至
》
售價:NT$
347.0
《
如何打造成功的商业赛事
》
售價:NT$
407.0
《
万千教育学前·透视学前儿童的发展:解析幼儿教师常问的那些问题
》
售價:NT$
265.0
|
編輯推薦: |
1. 介绍中间件的概念和原理,介绍主流的中间件框架,并基于Java技术提供丰富的编程实践案例。
2. 作者在中间件教学和科研方面深耕多年。全书深入浅出,在原理讲解的基础上,通过具体的技术和案例降低学习曲线,有助于学员把软件技术和知识点融会贯通,提升软件的架构设计能力和实践开发的能力。
|
內容簡介: |
内容涉及中间件原理与定义、发展历史、远程过程调用(RPC)、CORBA框架、组件对象模型、Web容器、消息中间件、数据访问、事务处理中间件、池化和负载均衡、Web服务、微服务等,屏蔽系统异构性,将复用等驱动软件发展的思想作为主线贯穿全书。第1~3章介绍中间件技术的背景知识、基本理论和早期的经典框架,第4~11章按功能和支撑技术分类介绍典型的中间件技术。各章内容自成体系,读者可根据需要学习。 基于Java技术栈介绍相应的框架和技术,设计了相应的编程案例,帮助读者巩固对中间件技术的理解,进行中间件编程实践。 适合作为高等院校计算机、软件工程、信息管理及相关专业的教材,也适合软件相关行业从业人员学习参考。
|
目錄:
|
第1章分布式系统概述
1.1计算机系统的演化
1.1.1单机系统
1.1.2单机分布式系统
1.1.3中心集群系统
1.1.4分布式集群系统
1.2分布式系统的概念
1.3分布式系统的应用和意义
1.3.1分布式系统的主要应用
1.3.2分布式系统的意义
1.4分布式系统的难点和框架
1.4.1分布式系统技术难点
1.4.2远程调用
1.4.3分布式计算环境
1.4.4群件和分布式开发模型
1.5分布式计算和大数据技术
1.5.1大数据及其处理技术
1.5.2分布式的大数据处理平台
1.5.3主流的分布式计算系统
小结
思考题
第2章中间件概述
2.1中间件的概念
2.2中间件发展历程
2.2.1中间件发展的历史
2.2.2中间件发展的驱动力
2.3中间件的特征和功能
2.3.1中间件的特征
2.3.2中间件的功能
2.4中间件的分类和产品
2.4.1中间件的分类
2.4.2典型的中间件技术
2.5中间件产业和市场
2.5.1全球中间件市场
2.5.2我国的中间件产业
小结
思考题
第3章面向对象中间件框架
3.1开放分布式处理参考模型
3.1.1面向对象技术
3.1.2RMODP标准组成
3.1.3RMODP功能组成
3.2CORBA框架
3.2.1OMA介绍
3.2.2CORBA介绍
3.2.3CORBA的优势与发展
3.3COM组件模型
3.3.1组件的概念
3.3.2COM的发展历程
3.3.3COM组件
3.3.4DCOM组件
3.3.5COM 组件
3.3.6.NET组件
小结
思考题
实验1跨语言的调用和编程
第4章远程过程调用
4.1远程过程调用
4.1.1远程过程调用的概念和历史
4.1.2远程过程调用原理
4.1.3远程过程调用应用
4.2Java远程调用RMI
4.2.1RMI简介
4.2.2RMI的原理
4.2.3RMI编程案例
4.3RPC和RMI的比较
4.3.1RPC与RMI的区别
4.3.2RMI的优点
小结
思考题
实验2远程过程调用
第5章Web容器
5.1Web服务器
5.1.1Web服务器概述
5.1.2Web服务器的工作原理
5.1.3Web服务器和MVC框架
5.2Web容器简介
5.2.1容器的概念
5.2.2解耦合、控制反转及依赖注入
5.2.3面向切面的编程
5.3Java EE框架
5.3.1概述
5.3.2Java EE框架组成
5.3.3Java EE的主要技术
5.3.4企业级Java中间件
5.4Spring框架
5.4.1Spring框架的历史
5.4.2Spring的体系结构
5.4.3Spring容器中的依赖注入
5.4.4Spring中的AOP编程
小结
思考题
实验3Spring 和AOP编程
第6章消息中间件
6.1消息中间件概述
6.1.1消息中间件的概念
6.1.2消息中间件的发展历史
6.2消息中间件产品和使用场景
6.2.1消息中间件产品
6.2.2消息中间件应用场景
6.3消息中间件的架构和协议
6.3.1点对点和消息代理结构
6.3.2消息中间件的要素
6.3.3消息中间件常用协议
6.4Java消息中间件规范JMS
6.4.1JMS简介
6.4.2JMS架构
6.4.3JMS编程示例
6.5消息驱动的Bean
6.5.1PTP消息传递模型下的配置
6.5.2Pub/Sub消息传递模型下的配置
6.5.3使用MDB接收消息
6.5.4消息选择器
小结
思考题
实验4消息中间件编程
第7章数据访问中间件
7.1开放数据库连接
7.1.1ODBC
7.1.2OLE DB
7.1.3ActiveX Data Objects
7.1.4JDBC
7.2对象关系映射
7.2.1ORM的概念
7.2.2对象与数据库间的映射
7.2.3对象关系映射例子
7.2.4Hibernate框架
7.3JPA持久化框架
7.3.1JPA的概念
7.3.2JPA持久化对象
7.3.3JPA的优势
7.3.4JPA编程范例
7.3.5JPA与Hibernate的关系
7.4其他持久化框架
小结
思考题
实验5JPA数据存储编程
第8章事务处理中间件
8.1事务处理基础
8.1.1事务的概念
8.1.2JDBC的事务
8.2分布式事务处理
8.2.1分布式事务
8.2.2事务处理中间件
8.2.3两阶段提交2PC
8.2.42PC的应用
8.3EJB事务体系结构
8.3.1容器管理的事务
8.3.2Bean管理的事务
8.4JTA事务处理
8.4.1JTA的概念
8.4.2JTA的实现架构
8.4.3JTA编程的例子
小结
思考题
实验6JTA分布式事务处理
第9章池化和负载均衡中间件
9.1资源池技术概述
9.2对象池技术
9.2.1对象池的概念
9.2.2Commons Pool概述
9.2.3Commons Pool的结构
9.2.4Commons Pool的实现原理
9.3数据库连接池技术
9.3.1数据库连接池的概念
9.3.2操作数据库连接池
9.3.3配置连接池
9.3.4典型的Java连接池
9.4线程池技术
9.4.1线程池的概念
9.4.2线程池的组成
9.4.3Java线程池技术
9.4.4Java线程池编程
9.5负载均衡技术概述
9.5.1负载均衡的概念
9.5.2负载均衡技术的分类
9.6典型负载均衡技术
9.6.1LVS负载均衡
9.6.2DNS负载均衡
9.6.3Nginx负载均衡
9.6.4F5 BIGIP负载均衡
小结
思考题
实验7测试和验证数据库连接池
第10章Web服务
10.1Web服务的概念
10.2Web服务的发展历史
10.2.1XMLRPC协议
10.2.2重量级协议SOAP
10.2.3REST架构风格
10.3Web服务相关技术
10.3.1可扩展标记语言
10.3.2SOAP
10.3.3Web服务描述语言
10.3.4统一描述、发现和集成
10.4基于SOAP的Web服务
10.4.1Web服务基本框架
10.4.2基于Java的SOAP规范
10.4.3基于JAXWS的Web服务编程
10.5基于REST的Web服务
10.5.1REST架构和准则
10.5.2基于REST的Web服务编程
10.5.3REST和SOAP的比较
10.6面向服务的体系结构
10.6.1SOA的概念
10.6.2SOA系统架构
10.6.3SOA的实施
10.6.4SOA与Web服务
小结
思考题
实验8构建REST风格的Web服务
第11章微服务
11.1软件服务架构的发展
11.1.1单体架构
11.1.2集群架构
11.1.3垂直架构
11.1.4面向服务架构
11.1.5微服务架构
11.2微服务的概念
11.3微服务架构
11.3.1微服务架构体系
11.3.2微服务设计模式
11.3.3常用的微服务架构方案
11.4基于Spring Cloud架构的开发
11.4.1Spring Cloud框架
11.4.2服务发现框架Eureka
11.4.3负载均衡Ribbon
11.4.4熔断器Hystrix
11.4.5微服务网关Zuul
11.4.6配置中心Config
11.5微服务案例
11.5.1构建Spring Cloud项目父工程
11.5.2搭建Eureka服务中心
11.5.3搭建EurekaClient服务提供者模块
11.5.4Ribbon负载均衡器的使用
11.5.5搭建Hystrix模块应对服务宕机情况
11.5.6Zuul网关实现动态路由
11.5.7Spring Cloud Config实现配置文件集中管理
11.6微服务开发模式
11.6.1服务的拆分
11.6.2微服务和DevOps
小结
思考题
附录AJAXWS自动生成的WSDL文件
参考文献
|
內容試閱:
|
软件行业面临的四大历史问题——质量问题、效率问题、互操作问题和灵活应变的问题,今天依然困扰着软件行业。中间件技术就是在克服这些软件行业及应用的共性问题中不断发展和壮大起来的。中间件与操作系统、数据库并称三大核心基础软件,是构建应用软件的基础。中间件也被形象地比喻为“软件胶水”,它使软件开发人员更容易实现通信和输入输出,可为网络分布式计算环境提供通信服务、交换服务、语义互操作服务等系统之间的协同集成服务,解决系统之间的互连互通问题。从本质上来说,中间件通过复用、松耦合、互操作和标准化等机制来提高软件质量,加快软件研发速度,提高效率,使研发出来的产品能够相互集成并灵活适应变化。因此,中间件平台凝聚着当前逐渐发展起来的大部分软件技术和成果,涵盖更好的程序设计语言、更好的软件架构、更好的平台和软件开发技术,如面向对象、组件开发、面向切面、面向服务的架构和微服务等。
凯文·凯利在其著作《失控》中提到: “最深刻的技术是那些看不见的技术,它们走下精英阶层,不断放低身段,将自己编织进日常生活的肌理之中,直到成为生活的一部分,从我们的视线中淡出。”在当今的计算机和软件产业中,相比大数据、人工智能、物联网这些炙手可热的概念和技术,中间件似乎消失在当前的热门技术谱系中。同时,这个淡出的过程也是中间件从高科技领域走向大众,进而编织进整个软件工业,成为当前分布式计算和互联网软件运行的底层支撑平台的过程。
笔者从2009年博士毕业就开始从事软件工程和计算机专业的教学工作。第一次教授的课程恰好是“中间件技术”,边教边学,边学边教。十几年来,一方面惊喜于软件技术的日新月异,感叹于各种中间件技术及其框架的精妙; 另一方面也深感软件技术在快速变革和迭代。大学生和当今的软件从业者应具有举一反三、灵活变通地分析和解决问题的能力。除了“中间件技术”课程,近年来由于工作需要,笔者也教授了“C 程序设计语言”“C#程序设计语言”“数据库管理系统”“软件工程导论”“算法设计与分析”“大数据分析”“人机交互”“面向对象分析与设计”等诸多课程。通过梳理这些软件工程类和计算机类的专业课程,笔者发现中间件技术的发展与编程语言、软件工程的发展是一脉相通的。通过中间件技术的学习,学生们可以把计算机和软件开发的工程化的思想、原理很好地结合在一起。通过学习中间件技术的发展历史,熟悉中间件技术的框架,学生们可以更好地理解软件的底层技术和软件工业的演变史,融会贯通,进而利用这些理论和方法解决实际问题。
中间件技术有趣且重要。但近年来中间件技术不再是技术热点,早年编撰的教材过于理论,所涉及的技术也早已不再适用,目前市面上找不到一本适合本科教学的中间件技术教材,不失为一种遗憾。由此,笔者萌生了自己编写讲义和教程的想法。经过多年的酝酿和努力,终成此书。
本书内容涉及中间件原理与定义、发展历史、远程过程调用(RPC)、CORBA框架、组件对象模型、Web容器、消息中间件、数据访问、事务处理中间件、池化和负载均衡、Web服务、微服务等,屏蔽系统异构性,将凝练共性和复用功能等驱动软件发展的思想作为主线贯穿全书。为了符合当前主流的开发技术,并与其他专业类课程相协调,本书尽量以Java技术栈为基础介绍相应的框架和技术,提供相应的编程案例,以帮助读者巩固对中间件技术的理解,进行中间件编程实践。
本书第1~3章介绍中间件技术的背景知识、基本理论和早期的经典框架,第4~11章按功能和支撑技术分类介绍了当前典型的中间件技术。各章的内容自成体系,读者可根据需要学习和查阅。具体的章节安排如下。
第1章介绍了分布式系统的基础概念,包括计算机从单机系统一直到分布式系统的发展历程; 分析了分布式系统在某些应用场景下的优势和技术难点; 介绍了分布式系统的常用框架、分布式系统和大数据之间的联系,以及分布式的大数据计算平台。熟悉分布式计算的读者可直接跳过本章,进入第2章的学习。
第2章介绍了中间件的概念和中间件产生的发展历程,包括中间件产生的原因和驱动力; 介绍了中间件的特征、功能和中间件的分类,以及一些常用的中间件技术和产品; 最后从全球和国内两个角度介绍了中间件的产业和市场。
第3章介绍了国际标准化组织(ISO)提出的RMODP标准。从面向对象的角度阐述其标准组成与功能组成; 介绍了由OMG提出的OMA体系结构与CORBA规范,同时分析了CORBA相比传统开发模式的优势; 最后介绍了微软公司提出的COM组件对象模型和.NET组件,并阐述了两者之间的区别。
第4章介绍了远程过程调用(RPC)的概念,远程过程调用的原理和调用流程; 介绍了基于Java的远程方法调用RMI的概念、原理,并通过实例来讲解RMI机制; 最后总结了RPC与RMI的区别并介绍了RMI的主要优点。
第5章介绍了Web服务器的概念并阐述其工作原理; 介绍了Web容器及Web容器所用到的技术和思想——解耦合、控制反转、面向切面编程; 介绍了Java EE和Spring框架的主要技术组成; 最后通过编程案例,帮助读者学习Web容器编程和AOP编程的原理。
第6章介绍了消息中间件的概念、发展历史、中间件的产品和使用场景,详细说明了消息中间件的架构、要素,以及常用的协议; 介绍了在Java平台上的消息中间件规范JMS,包括JMS架构和程序接口的介绍,以及实际编程的例子; 介绍了消息驱动的Bean组件,包括消息的异步处理和消息选择器。
第7章介绍了数据访问应用程序接口,包括ODBC、OLE DB、ADO,以及以Java API形式提供服务的JDBC; 介绍了对象关系映射的概念和Hibernate框架,并用案例演示对象关系映射的编程; 介绍JPA持久化框架的概念和持久化对象的过程,并阐述了具体框架与JPA之间的关系,以及其他的持久化框架。
第8章介绍了事务的基本概念,介绍了分布式事务处理,包括事务处理中间件的概念和两阶段提交协议; 介绍了EJB事务体系结构,包括容器管理的事务处理和Bean管理的事务处理; 最后介绍了JTA事务处理的机制,通过实际编程例子来帮助读者学习理解JTA的工作原理。
第9章介绍了资源池化技术的概念,介绍了对象池、数据库连接池、线程池等技术,包括Commons Pool的概念和编程,通过实际例子帮助读者学习理解池化技术; 介绍了负载均衡的概念和典型技术方案,包括LVS负载均衡、DNS负载均衡和基于Nginx反向代理的负载均衡技术等。
第10章介绍了Web服务的基本概念、发展历史和Web服务中的关键技术,包括XML、SOAP、WSDL和UDDI等; 介绍了Web服务中两种主流的实现方式——基于SOAP和REST的Web服务,并给出了实际编程案例; 最后介绍了面向服务的体系结构(SOA),并说明了Web服务与SOA之间的联系。
第11章介绍了软件服务架构的发展,微服务的概念、架构体系、设计模式和常用的微服务架构方案; 介绍了经典的微服务开发框架Spring Cloud,包括Eureka、Ribbon、Hystrix、Zuul、Config 5大核心组件,并给出了实际编程案例; 最后介绍了微服务的开发模式,包括服务拆分的准则等。
本书由笔者讲授厦门大学软件工程专业“中间件技术”课程的讲义整理而得,面向高等院校软件工程、计算机和信息管理等专业的学生,可作为中间件技术和软件组件技术等课程的教材。本书对应一个学期16~18周的课时量。其中,第1~3章每章安排2学时,第4、6、7、8、9、11章每章安排3学时,第5、10章每章安排4学时。本书也为读者和大学教研人员提供了翔实的课后参考资料,包括PPT课件、学习和实验指导、课后思考题及参考答案等。读者可以从清华大学出版社的官方微信公众号“书圈”(见封底)下载。
本书主要由赖永炫教授构思执笔,厦门大学移动计算与数据分析实验室(MOCOM)的硕士生杨诗鹏、江丽英、廖林波、曹辉彬、张乐、袁鹏轩、孟戈等做了大量的辅助性工作。厦门大学多届学习“中间件技术”课程的同学为本书提供了第一手的反馈和修订意见,在此衷心感谢这些同学的辛勤工作。也感谢笔者的女儿赖书妍,她给笔者的生活带来色彩,让本书的撰写更加顺利。
笔者在本书撰写过程中参考了大量的国内外教材和专著,以及一些网络上的技术博客,对涉及中间件技术的知识进行了梳理、归纳和总结,将一些重要的知识和案例纳入了本书,特别向这些文献的作者表示感谢。本书也是笔者十多年来在软件工程方面教学和科研工作的总结。读者在阅读本书及使用配套资源的过程中如有任何问题和建议,请联系404905510@qq.com,望不吝赐教。
赖永炫
于厦门大学海韵园
2024年1月
|
|