1 概述

软件和硬件的区别

  • 软件的复制成本为0。软件要想方设法地复制,重复利用,以复用为核心。
复用的重要手段:抽象设计
  • 软件屏蔽物理差异。

中间件的定义

  • 处于系统软件(操作系统和网络软件)与应用软件之间
  • 为程序提供程序时互操作的软件
互操作:互相操作
  • 允许各应用软件之下所涉及的“系统结构、操作系统、通信协议、数据库和其它应用服务”各不相同

现代应用系统的基本特征

分布

任务已不只是在单机上运行,而是由网络中多台计算机上的相关应用共同协作完成,需考虑网络传输、数据安全、数据一致性、同步等诸多问题;

异构

计算机硬件、操作系统、网络协议、数据库系统以及开发工具种类繁多,需考虑数据表示、调用接口、处理方式等诸多问题;
cobol:跨平台性、异构型强;学习曲线比较陡峭

动态协作

参与协作的应用允许位置透明性、迁移透明性、负载平衡性等需求。

层层抽象 解耦(方法例子) 左右分块(上下分层) 面向接口的编程 高内聚 低耦合
层层抽象的原因:
·将复杂问题划分,降低复杂度
·符合抽象设计,把共性的部分提取出来
·迭代式分层
解耦:把多对多变成1对多
接口:定义模块交互的方式

组成部分

执行环境(Execution Environment)软件

如果一个网络的各个节点安装了EE软件,各节点的应用软件就可以实现相互合作

应用开发(Application Development)工具

一组工具,用来帮助开发内含“透明动用对方”成分的应用软件,或改造原有的无透明动用能力的应用软件
软件发展历程:单机→C/S→B/S→多层架构→云计算→边云协同→端管边云协同

中间件对于应用之间协同工作的贡献

提供了合作对象透明设施 T1

合作一方不必知道另一方是谁和在何处,只说明自己需要怎样的服务,T1就能为其物色一个合适的合作方

提供了下层设备透明设施T2

合作一方不必关心合作的另一方所用的节点设备(机器和操作系统)与本节点的差异

软件发展面临的挑战、发展的源动力

软件危机解决的出路

编程的自动化(程序代码的自动生成: 开发工具)

应用的框架代码由开发工具自动生成,程序员只需要编写功能代码;

实现程序的通用性 (操作系统与机器)

操作系统级的源程序;(一个程序要写多遍,多次编译链接);
与操作系统无关的源程序;(一个程序写一遍,基于操作系统和机器要进行多次编译链接);
与机器无关的源程序;(一个程序只要写一遍,编译链接一遍);

实现软件之间的互操作:

二进制级的软件互操作:同构软件的互操作,异构软件之间的互操作;
一个机器中,同进程内互操作;
同一机器中,不同进程间的互操作;
不同机器间的软件互操作;

软件开发的知识面

发展趋势的归纳

  • 应用程序之间的整合受到愈来愈多的重视。
    • Internet/Intranet,Web的影响非常深远;
    • 百花齐放的软件技术和程序语言,没有考虑日后整合;
    • 整合/集成要使用一种松耦合(loose coupled)构架并借助标准的沟通方式和数据来整合已有系统是必经之路。
  • Web Service 提供了跨平台的能力,XML则是跨平台的数据交换标准。整合分散应用的最终选择是Web Services和XML.
web service基于http协议,http是网络上唯一能穿越广域网服务器防火墙的协议
  • 整合应用系统须要自动化工具以及一个整体构架(SOA Service-oriented Architecture)——(开发工具系统支持环境)。
开发≠写代码
我写的≠写代码
配置式的开发、编程式的开发

实现源程序的通用性

层层抽象,抽象提供通用性。

互操作的基本概念

互操作性定义:在一个由异质实体构成的网络环境中,当应用程序在网络结点上运行时,它可以透明地动用网络上其它结点上的资源,并借助于这些资源共同来完成某个或某组任务,这种能力被称为互操作性。
经纪人:
·程序接口
·配置文件接口

中间件特性

  1. 二进制级的互操作;
  2. 服务程序有多个客户
  3. 客户和服务都会升级进化,无约束,可组合性;
  4. 对应用程序员,保持编程模式的不变性;
  5. 客户和服务之间的契约既要具有永恒性,又具有可延伸性;
J2EE平台(中间件)的意义:使得程序员把精力放在业务逻辑上
链路质量问题、安全问题
陈述的量、响应速度

互操作的范围

有三种形式:它们都要考虑服务程序的标识, 动态适配

同一进程内不同模块之间的互操作;

可以直接完成;

同一机器中不同进程之间的互操作;

要求进程之间通信,不用考虑Data encoding;

不同机器之间模块之间的互操作;

要求机器间通信,要考虑不同Data encoding之间的转换,因此须要中间翻译;还要事先约定传输协议
从共享的角度
从传递的角度