在一定程度上 人类的思维产生于 简单个体之间的相互作用

62
软软软 软软软软软 1/62 软软软软软软 软软软软 软软软软软软软软 软软软 软软软软软软软 ——Marvin Minsky

Upload: neci

Post on 13-Jan-2016

88 views

Category:

Documents


0 download

DESCRIPTION

在一定程度上 人类的思维产生于 简单个体之间的相互作用. ——Marvin Minsky. 第 三 讲 软件实体的交互基础. 内 容. 一、网络编程基本架构 二、软件互操作的基本架构 三、互操作协议 四、互操作接口定义 五、交互实体的查找. 一、网络编程基本架构. 1 、 TCP/IP 2 、基于 Socket 的网络软件 3 、直接基于 Socket 编程的不足. 2、 TCP/IP. ( 1 ) ISO/OSI 参考模型 与 TCP/IP 的对照. TCP/IP. ISO/OSI 参考模型. Application. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 1/62高级软件工程

在一定程度上人类的思维产生于

简单个体之间的相互作用

——Marvin Minsky

Page 2: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 2/62高级软件工程

第 三 讲第 三 讲

软件实体的交互基础软件实体的交互基础

Page 3: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 3/62高级软件工程

内 容一、网络编程基本架构

二、软件互操作的基本架构

三、互操作协议

四、互操作接口定义

五、交互实体的查找

Page 4: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 4/62高级软件工程

一、网络编程基本架构

1 、 TCP/IP2 、基于 Socket 的网络软件3 、直接基于 Socket 编程的不足

Page 5: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 5/62高级软件工程

ApplicationPresentation

TransportNetworkData linkPhysical

SessionTCP, UDP

2、 TCP/IP

( 1 ) ISO/OSI 参考模型 与 TCP/IP 的对照

ISO/OSI 参考模型

主机与网络的连接:ethernet 、 token-ring

因特网层: IP

应用层:telnet 、 ftp 、 smtp 、 snmp 、dns 、 http 、 nntp

TCP/IP

Page 6: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 6/62高级软件工程

0 Network Host

1 0 Network Host

1 1 0 Network Host

1 1 1 0 Multicast address

1 1 1 1 0 Reversed for future use

A

B

C

D

E

1.0.0.0 ~127.255.255.255

地址范围

128.0.0.0 ~191.255.255.255

192.0.0.0 ~223.255.255.255

224.0.0.0 ~239.255.255.255

240.0.0.0 ~247.255.255.255

( 2 ) IP : Internet Protocol

Page 7: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 7/62高级软件工程

Vers. H.len Service type Total length

Identification Flags Fragment offset

data

Time to live Protocol Header checksum

Source IP address

Destination IP address

IP options (may be omitted) Padding

IP 头

Service type

Precedence D T R unused

20 bytes

Page 8: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 8/62高级软件工程

( 3 ) TCP :Transmission Control Protocol

TCP 为两个分布式的构件提供了双向的消息通信

UNIX 中的命令 rsh, rcp 及 rlogin 全部基于

TCP

它是一个可靠但较慢的协议

在客户服务器双方进行缓冲

以提高速度

Page 9: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 9/62高级软件工程

TCP 头格式

Source port Destination port

Sequence number

Acknowledgement number

Checksum Urgent pointer

Options (0 or more words)

Data (optional)

H.len Code bitsReserved Window size

Page 10: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 10/62高级软件工程

UDP : User Datagram Protocol

一个构件向另一个构件发送消息

另一个构件的标识包含在消息中

不可靠但快速的协议

消息长度固定

消息在接受方排队

UNIX rwho 命令基于 UDP

Page 11: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 11/62高级软件工程

2 、基于 Socket 的网络软件服务器 客户

创建

通信套接字

通常通过随机分配得到端口

等待连接套接字

通常对应于一个固定端口

连接请求

Page 12: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 12/62高级软件工程

面向连接: 服务器客户

Socket()

bind()

listen()

read()

close()

Socket()

connect()

write()

close()

处理请求…

write()read()

accept()阻塞,等待客户连接

建立连接

请求服务

应答数据

Page 13: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 13/62高级软件工程

面向非连接: 服务器客户

Socket()

bind()

readfrom()

sendto()

close()

Socket()

bind()

sendto()

readfrom()

close()

处理请求…

应答数据

请求服务阻塞,等待客户数据

Page 14: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 14/62高级软件工程

3 、直接基于 Socket 编程的不足 套接字的出现

– 促进了软件从单机环境向网络环境的发展– 扩展了软件的应用范围

人们很快不满足于直接基于套接字的开发过程– 基于套接字的开发方式较为繁琐– 这种软件的排错十分困难

特别是当服务器端需要根据用户的不同请求内容区分不同的处理过程时

根本原因在于基于套接字的交互层次较低 不同软件之间需要约定专门的消息格式、数据类型等

Page 15: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 15/62高级软件工程

二、软件互操作的基本架构

为支持

应用层的某一实体使用另一实体

而制定的一套技术规范

Page 16: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 16/62高级软件工程

互操作消息

客户端指代 互操作接口定义语言

互操作协议

网络基础设施 网络基础设施

互操作消息

服务器端指代

客户端程序

服务器端程序

互操作实现(以RPC 为例)

实体查找方式

互操作规范

底层协议

决定

决定

Page 17: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 17/62高级软件工程

软件互操作体系与人类交互过程的比较

• 底层协议提供了基本的通信基础• 互操作消息是软件之间进行交互时所表述的语言

互操作协议是对这些语言的语法说明• 互操作接口定义是软件之间的一种约定

接口定义语言是合约的撰写规则 • 实体查找方式是交互双方建立联系的途径

包括白页、黄页、绿页等多种途径

Page 18: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 18/62高级软件工程

1 、 底层协议

底层协议是互操作协议所依赖的底层通信机制

目前最受重视的协议 是前面讲过的 TCP/IP 协议也可以是 ATM 等其它协议

Page 19: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 19/62高级软件工程

2 、互操作协议

消息中关于字节序、数据表示等问题的解决方法体现了通信双方之间关于消息的 数据格式

消息的类型 等的约定类似的约定还有 服务器的管理 等等

所有这些约定 共同构成了互操作的高层协议

互操作协议一般独立于底层协议即互操作协议可以向不同的底层协议进行映射

从而由不同的底层协议进行支持互操作协议一般都比较烦琐

其实现由应用服务器开发者承担应用系统的开发者在开发具体系统时

不必关心协议的实现问题

Page 20: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 20/62高级软件工程

3 、互操作接口定义语言

客户指代主要完成上层代码(客户程序、服务器程序)与底层代码( RPC API 等)之间的“映射”

其参数传递、编排、服务器定位等功能完全与应用系统具体的业务逻辑实现细节无关

因此只要系统明确定义了服务器的接口

即可以产生与该接口对应的指代

接口定义语言( Interface Definition Language )描述了 客户与服务器之间的接口

Page 21: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 21/62高级软件工程

4 、实体查找方式

实体查找方式主要是指服务器的定位根据自己掌握的信息

客户如何才能查找到具体服务器

这实际上涉及 服务器端服务信息的发布服务信息的管理等问题

Page 22: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 22/62高级软件工程

互操作体系名称 互操作协议 接口定义语言 实体查找

RPC RPC IDL RPC注册

DCOM ORPC MIDL 系统注册

CORBA GIOP ( IIOP)

IDL 命名服务

EJB JRMP Java Interface JNDI

Web Service SOAP WSDL UDDI

现有互操作架构比较

Page 23: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 23/62高级软件工程

通信消息 对于计算机的重要性 完全类似于人类的言语对于人类的重要性

协议是通信双方传输消息时必须遵守的规则的集合

Protocol: IP 、 TCP 、 UDP 、 IIOP 、 JRMP 、 SOAP FTP 、 HTTP 、 SMTP 、 SNMP

1 、概念

三、互操作协议

Page 24: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 24/62高级软件工程

对于互操作协议,尽管其发展的历史不长但目前也已经有许多协议被设计、实现

例如: RPC 协议、 IIOP 、 JRMP 、 SOAP 等等与人类言语类似,它们的实现方式也十分丰富

可以建立在不同的底层协议之上例如 TCP/IP 、 HTTP 、 ATM 等等

到目前为止,在互操作方面使用得最广泛的协议是 IIOP

这主要得益于 CORBA 的巨大成功以及 IIOP 对异构平台的支持

Page 25: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 25/62高级软件工程

所谓互操作协议要素是指设计一个互操作协议时必须考虑的主要问题

这些问题主要包括: 数据表示消息格式引用表示 等等

其它需要考虑的问题包括:如何将协议映射到底层协议之上如何管理连接过程如何提高协议的效率 等等

2、互操作协议要素

Page 26: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 26/62高级软件工程

在单机环境内,数据表示属于硬件层、语言层而在网络环境下,调用参数必须经由网络进行传输

这意味着这些数据将变成一种字节流的形式以便于参数(数据)在网络上传输

就产生了如何在网络传输上表示程序中的数据问题

数据表示是一种传输语法描述各种数据类型在传输线路上

以字节流的形式表示出来的格式ONC-RPC 中使用的格式为外部数据表示

( XDR : eXternal Data Representation )而 CORBA 中使用的格式为公共数据表示

( CDR : Common Data Representation )

( 1 )数据表示

Page 27: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 27/62高级软件工程

底层协议 主要解决通信的 可行性 以及部分 可靠性 等问题

高层协议不同于底层协议的一个明显特征在于高层协议带有一定的语义信息

几乎每种高层协议 都对消息进行分类定义了多种不同类型的消息格式

对于互操作协议而言一次调用通常至少包含请求与应答两种消息消息的种类较为类似但消息格式差异较大

( 2 )消息格式

Page 28: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 28/62高级软件工程

互操作协议必须映射到底层协议上方能得到实现

目前的互操作协议都定义协议一到多种向传输层的映射

例如 GIOP 定义了向 TCP/IP 的映射: IIOP

SOAP 主要定义了向 HTTP 的映射

( 3 )向底层协议的映射

Page 29: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 29/62高级软件工程

2 、协议比较

1 )互操作开销不同IIOP 、 JRMP 使用二进制的字节流形式编排消息

( CDR 、 XDR )SOAP采用字符型的 XML 编排消息

SOAP 消息要比 IIOP 、 JRMP 消息长得多SOAP 的编排开销大、占用内存空间大

2 )表达能力不同SOAP易于学习、易于开发、易于调试SOAP 不支持消息的批处理、对象引用、对象激活等特性降低了 SOAP 的表达能力并使得基于 SOAP 的交互受到限制而 IIOP 、 JRMP 等则不存在这种限制

Page 30: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 30/62高级软件工程

3 )适应能力不同IIOP 、 JRMP严重制约于防火墙防火墙一般由两个路由器与一个应用程序网关构成 路由器负责 IP 层的分组信息

列出可接受、禁止的源端和目标端等信息 应用程序网关在应用程序级进行控制 根据头信息字段、消息长度、消息内容等

决定传送还是丢弃消息这是 IIOP 、 JRMP 的应用受到限制的核心因素之一SOAP 则基本不受其限制

4 )适用环境不同JRMP适用于使用 JAVA 的应用系统IIOP 、 SOAP 支持各种语言,因此适用面更广IIOP适合于同一个防火墙内部之间的交互而 SOAP 则适合于跨越防火墙的交互

Page 31: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 31/62高级软件工程

1 、概念 接口 (Interface)

四、互操作接口定义

Page 32: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 32/62高级软件工程

应用编程接口( API )对象接口构件接口抽象?实在?

模块通常由接口和实现两部分组成模块的接口部分 刻画了各个模块是如何耦合的

其他模块的设计者和使用者需要知道模块的实现部分 是各个模块的内部事务

其他模块的设计者和使用者不需要知道

包含什么具体内容?(功能性、约束性)利用什么形式描述?(接口定义语言)

含义解释

Page 33: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 33/62高级软件工程

单机环境下的不同软件模块之间主要定义模块的功能性( Functional )内容

类似于一个函数的映射过程

接口的功能性定义是对接口中各个操作调用方式的描述

操作 是由操作符标识的实体指明了一个不可再分的服务原语

请求一个操作的动作被称为调用一个操作

对一个操作功能的描述由输入、输出两部分组成 也被称为一个基调( signature )

用于描述操作的输入、输出参数名称及类型

功能性( Functional)

Page 34: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 34/62高级软件工程

网络环境下的不同软件模块的合作需要考虑的因素不仅仅包含功能方面还涉及分布性、可靠性、安全性等方面的因素

网络环境下的接口 除需要定义模块的功能性内容外还需要定义模块的约束性内容

接口的约束性定义是指对功能以外特征的描述简单的包括:例外处理、执行语义等复杂一些的包括:( 1)行为特征 :用于描述操作的输出

通过对操作增加前置与后置条件而实现( 2)同步特征 :用于描述分布性与并发性

约束性( Constraint )

Page 35: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 35/62高级软件工程

2 、接口定义语言

IDL: Interface Definition Language

WSDL: Web Service Description Language

服务描述语言

interface Hospital {typedef string PatientId;PatientId admit_patient ( );void release_patient ( in PatientIdpatient );

};

Page 36: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 36/62高级软件工程

有的以描述结构化程序的功能为主例如 RPC-IDL

微软的 -IDL有的以描述对象的功能为主

例如 CORBA的 IDL有的以描述服务为主

例如 web service的WSDL

1)描述对象不同

比较

Page 37: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 37/62高级软件工程

有的以具体计算机语言的方式表达

例如SUN的 Java Interface

有的以独立于具体的计算机语言

但十分类似于计算机语言的方式表达

例如: RPC-IDL

微软的 -IDL

CORBA的 IDL

有的以 XML为方式表达

例如:web service的WSDL

2)描述方式不同

Page 38: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 38/62高级软件工程

有的仅描述接口的语法信息

例如: RPC-IDL

微软的 -IDL

CORBA 的 IDL

有的还包括与底层协议的绑定信息

例如: WSDL 等

在 CORBA 中这部分信息包含在 IOR 中

3 )描述内容不同

Page 39: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 39/62高级软件工程

五、交互实体的查找

网络环境中的资源具有明显的分布性这些资源可能分布于不同的节点之上

问题: 分布在不同节点上的实体如何查找到其他的实体?

Page 40: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 40/62高级软件工程

1 、三种查找方式2 、命名服务3 、目录服务4 、合约服务

内 容

Page 41: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 41/62高级软件工程

命名 (Naming) 服务:–通过外部名字定位构件–类似于(电话本)白页

……….… 公司甲 67890001 公司乙 67890002 公司丙 67890003……………………

CORBA 的命名服务TCP/IP 中的 DNSCOM 、 JVM 中的注册表等 皆提供了类似的服务

1 、三种查找方式

Page 42: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 42/62高级软件工程

目录 (Directory) 服务:–通过服务特性定位构件–类似于(电话本)黄页

IT领域 存储器公司 公司甲 67890001 计算机公司

公司乙 67890002公司丙 67890003公司丁 67890004……………………

SUN 的网络信息系统( Network Information System : NIS )Novell 目录服务( Novell Directory Service : NDS )IUT/ISO 的 X.500 以及 LDAPCORBA 的交易服务微软的 Active Directory Service 等 提供了类似的服务

Page 43: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 43/62高级软件工程

合约 (Contract) 服务:–通过技术规范定位构件–绿页 IT领域 计算机公司 公司乙 电话 67890002

地址 北京市海淀区中关村大街 XX号 Email www.foo.com.cn

CPU Intel P4 …… 硬盘 Seagate 40G …… 鼠标 双飞燕 USB……

Web Service 的 UDDI 即包含这方面的信息CORBA 的接口池也具有部分“绿页”功能

Page 44: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 44/62高级软件工程

不同的查找服务提供的功能:

  白页 黄页 绿页

DNS    

CORBA Naming

   

CORBA Trading

   

CORBA IR   

X.500/LDAP  

UDDI

Page 45: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 45/62高级软件工程

名字是知识的基础本体论( Ontology )名实论(名,所以谓也,实,所谓也 ——墨子)

操作系统中的进程名文件系统中的文件名程序语言中的 变量名、过程名、

数据结构名、对象名网络环境下的计算机名、数据库名 、构件名

2 、命名服务

Page 46: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 46/62高级软件工程

名字与标识、引用

标识

引用

名字与引用的关联

指代

名字

服务使用者的空间 服务提供者的空间

查找

注册

(绑定) 调用

解析

名字 引用

Page 47: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 47/62高级软件工程

•名字系统

–主要功能是将名字映射到对象–一组 context 的集合

这些 context 是连接的使用同样的命名规则提供同样的操作集合并具有同样的语义

例如: www.pku.edu.cn c:/win98/system

Page 48: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 48/62高级软件工程

•名字分类

–Atomic name( 原子名字 )名字中不可分割的部分Usr/local/bin 中的 usr, local, binwww.pku.edu.cn中的 www, pku, edu, cn

–Compound name (复合名字)包含了零个或多个原子名字的一个序列Usr/local/bin, www.pku.edu.cn

Page 49: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 49/62高级软件工程

Composite Name (合成名字)– 与复合名字 (compound name) 不同– 是跨越多个命名系统的名字– 包含了一个有序的复合或原子名字的列表

每个复合或原子名字属于不同的命名系统名字空间

– http://www.pku.edu.cn/public/index.htmlhttp : 来自“ URL scheme-id”名字空间www.pku.edu.cn : 来自 DNS名字空间Public/index.html : 来自主机文件的名字空间

Page 50: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 50/62高级软件工程

Page 51: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 51/62高级软件工程

命名服务( Naming Service )– 维护了(分布或集中式)系统中资源的名字

与地址之间的映射关系( binding )

Page 52: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 52/62高级软件工程

命名上下文

Context– 是一个对象– 其状态(属性)是一组 binding 的集合,这些 bindi

ng 的原子名字各不相同– 每个 Context 都有自己的命名规则– 至少提供 lookup 操作

允许用户查找指定原子名字的对象

– 也可能提供建立 /删除 /枚举 binding 的操作Initial Context

– 用户使用命名服务的入口

Page 53: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 53/62高级软件工程

Subcontext– 某个 Context 对象中的原子名字可以与另一个 Conte

xt 对象绑定,此时后者就是前者的 subcontext– 目的是为了支持复合名字的查找

按照原子名字的顺序在对应的 subcontext 中查找 binding在 UNIX文件系统中,目录类似 subcontext ( usr, loca

l ),而路径名类似复合名字 (usr/local/bin)

Page 54: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 54/62高级软件工程

解析名字根据名字查找属性的过程

Page 55: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 55/62高级软件工程

developer manager

U1

1

M1 U3 M2 MIS Network

M1 N1 M2

user

NamingContext Contains Name & OR

U2

2 3 4 5

6 7 8

Root Context

Server

Page 56: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 56/62高级软件工程

3 、目录服务

基本实现

目录服务 是增强的命名服务存储了一组名字与属性的关联集合

Page 57: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 57/62高级软件工程

目录对象 (Directory object)– 命名系统中一类特殊的对象,用以表达计算环境的多种信息– 换言之,维护了(分布或集中式)系统中资源的名字与及其

多种信息的映射关系– 一个目录对象具有多个属性 (attributes)– 一个属性具有一个标识符 (identifier) 以及一组值 (values)– 一个目录对象同时可以是一个 context ,因此,这种特殊的

对象不仅可以维护名字到对象的映射,也可以维护与这个 binding相关的一些信息

– CORBA Trader Service

Page 58: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 58/62高级软件工程

Naming System

Directory Object

Context

Binding

Attribute

Attribute

Attribute ( as a

context )

identifier

value

value

name

object

Page 59: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 59/62高级软件工程

4 、合约服务

合约服务 是增强的目录服务可以在不断变化的网络环境中提供定位服务的功能

目前只有 Web 服务的 UDDI 提供合约服务CORBA 的接口池提供了接近该功能的服务

动态性是网络环境的核心特点之一这个特点影响了所有基于网络环境的应用系统以商业系统为例:

必须持续不断地寻找哪些商业伙伴可以提供什么样的服务在一个不断变化的网络环境中快速地发现上述结果是一件十分困难的工作

Page 60: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 60/62高级软件工程

UDDI

最核心的部分是 一个基于仓库池的目录服务可以用来进行自动查询Web 服务

UDDI 的仓库池存放的是 业务实体(例如公司)的信息以及它们所提供服务的相关信息

例如公司地址、联系人等

UDDI 提供了一组 API允许软件同 UDDI仓库池交换数据例如注册、查找等从而让用户得到所需要的 Web 服务的信息

UDDI 提供了一种基于分布式的商业注册中心的方法该中心维护了企业和企业提供的 Web 服务的全球目录其中的信息描述格式基于通用的 XML 格式

Page 61: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 61/62高级软件工程

UDDI 的核心部分是 UDDI商业注册库

企业本身和它所提供的服务都由一个 XML文件来描述从概念上说, UDDI商业注册库提供的信息由三部分组成:

“ 白页”包括企业的地址、联系方法和得到公认的标记符“ 黄页”包括标准的行业分类“ 绿页”包括企业所提供服务的技术规格(规范)

绿页还包含了与该服务描述的关联如果有必要的话还包含与其他基于文件或 URL 的发现机制的关联

Page 62: 在一定程度上 人类的思维产生于 简单个体之间的相互作用

软件实体的交互基础 62/62高级软件工程

UDDI 中四种信息之间的关系

UDDI 定义了四种类型的信息这些信息是技术人员在需要使用合作伙伴所提供的 Web 服务时必须了解的技术信息:

业务实体信息业务服务信息绑定模板信息服务的规约信息

<业务实体>

名字、联系方法、描述、标识符、分类

<业务服务> (1..n)

<绑定模板> (1..n)

技术信息

<tModel>(服务规约信息)

名字

描述

指向技术规范的 URL 指针