,电子商务系统结构,
施敏华 ( smh@cs.zju.edu.cn)
浙江杭州玉泉,浙江大学计算机学院,310027
Tel,0571- 87951256
? 单层应用模型
? 两层客户 /服务器模型
? 三层应用程序模型
? Web Service
应用开发架构
应用支撑-什么是目录?
? 目录是一种分类条目。
? 目录有,
? 日常目录:如电话目录、电视目录、图书馆目录、书
的目录等。
? 在线目录:在计算机中的目录,是一种分层式的数据
库。主要有 LDAP目录。
应用支撑-目录服务
? 目录服务:提供目录搜索。
? 目录服务系统:是软件、硬件、策略等资源的定位集合
体。包括,
? 目录中的信息
? 目录服务端硬、软件
? 目录客务端硬、软件
? 客户端到服务端、服务端之间的网络基础设施
? 策略等
目录服务的需求
? 对计算机资源定位的需要
? 在海量数据中进行查询(主要为读操作)
? 关系数据库的低效率
LDAP目录服务
? X,500是一种 CCITT( ITU)针对已经被国际标准化组织
( ISO)接受的目录服务系统的建议。
? 是目录服务的一种国际标准。
? 但其在数据表示、编码和传输方面都显得比较笨重。
什么是 LDAP?
LDAP的全称是 Lightweight Directory Access
Protocol,即:轻量级目录存取服务。
它是基于 X.500标准的,但简化了,所以称为轻量级。
另外,与 X.500不同,LDAP支持 TCP/IP,这对访问
Internet是必须的。
传统方法的劣势
( 1)对于大规模数据,系统整体的性能降低,因为关系数据
库需要不断的进行数据类型的验证和事务的完整性的确
认。
( 2)扩充问题,任意的扩充会导致索引的爆炸性变化。
LDAP的优势
( 1)可以在任何计算机平台上,访问 LDAP目录。
( 2) LDAP目录可放在任何服务器上,因为 LDAP是一个跨平台的协议。
( 3)有较好的安全和访问控制,如,
? 给予用户改变他们自己的电话号码和家庭地址的权限,但是限制
他们对其它数据(如,职务名称,经理的登录名,等等)只有
,只读, 权限。
? 给予, HR-admins"组中的所有人权限以改变下面这些用户的信息:
经理、工作名称、员工号、部门名称和部门号。但是对其它域没
有写权限。
? 禁止任何人查询 LDAP服务器上的用户口令,但是可以允许用户改
变他或她自己的口令。
? 给予经理访问他们上级的家庭电话的只读权限,但是禁止其他人
有这个权限。
? 给予, host-admins"组中的任何人创建、删除和编辑所有保存在
LDAP服务器中的与计算机主机有关的信息
? 通过 Web,允许组的所有者删除或添加他们拥有的组的成员。
LDAP的优势 (continued)
(4)能够进行目录的复制
LDAP服务器可以复制部分或全部数据,例如:可以
把数据复制到远程的办公室,以增加数据的安全性,
也可为多个用户所用。
(5)可使目录分布在网络内的多台计算机上。
(6)为了保存大的对象,能够将目录分为多个分区进行存
储。
什么时候使用 LDAP存储数据?
( 1)需要在任何平台上都能读取数据
( 2)每一个单独的记录项都只有很少的改变
( 3)可以把数据存在平面数据库( flat database:文本
性质的数据库),而不是关系型数据库中。
? 电子邮件地址
? 邮件路由信息
? 人力资源数据
? 公用密匙
? 联系人列表等等
LDAP存储各种类型的数据
LDAP的结构
? LDAP结构是一个目录树结构
? LDAP用目录记录的标识名( Distinguished Name,简称
DN)来读取单个记录。
? 标识名规范,
? DC 域元素
? OU 组织单元
? CN 通用名
DC
DC
ou
CN
Domain
OU1
Computers
Computer1
Users
User1
Users
User2
OU2
Printers
Printer1
张 三
Attributes Values
姓名
大楼
楼层
张三
117
1
LDAP的层次结构
Contoso.ibm
Finance
Sales
Suzan Fine
LDAP://CN=Suzan Fine,OU=Sales,OU=Finance,DC=contoso,DC=ibm
CN=Suzan Fine,OU=Sales,OU=Finance,DC=contoso,DC=ibm
LDAP的层次结构 (continued)
一个实例
? 用标识名来访问打印机:
p1.printers.finance.hz.zj.gov的写法是,
? LDAP://CN=P1,OU=Printers,DC=finance,DC=hz,DC=zj,D
C=gov
DNS vs.目录服务
? DNS主要目的是把主机名转换成 IP地址而目录有更普遍的
作用
? DNS有一套专门的、固定的计划,而目录允许扩展
? DNS不充许更新它的信息,而目录可以。
如何在企业集成中使用?
? 使用 DNS域名空间,定义和命名根域。
? 确定是一棵树还是一个森林。
? 参考你的组织结构。
互联网将全球的企业联系起来,同时面临应用整合的挑战,
?不同平台的集成
?不同的网络的集成
?不同的数据表示的集成
?全球化协同计算
为集成而设计
可连接的应用程序
? 松耦合
? 可编排
? 基于标准
? 跨平台
软件形式
? 单机软件
? 整体发布
? Client/Server软件
? 简单的网络应用
? 分布式软件
软件发展面临的问题
? 软件的复杂度增加
? 代码开发管理
? 软件升级和更新
? 牵一而发动全身?
? 分布式软件的发布和配置
? 用户需要培训,程序员和设计人员更需要
软件发展面临的问题 (续 )
? Custom-made versus standard software
? 如何平衡?
? 依赖于全才开发人员
? 软件层次划分
? 软件的可扩展性
? 用户可定制、脚本支持
? 与标准接轨
? 如 Web ——〉 B/S
软件发展趋势
? 组件软件、软件组件
? 中间件市场已经形成
? 软件基础设施的重要性
? 经验和成果的重用
? 软件的可重用性要求
? 重用粒度不同
? API的多样化
? 软件方案 (solution),consulting市场
组件软件
? 部分升级
? 补丁
? 缩短软件的更新周期
? 增加了异构软件的可能
? 标准接口、标准规范、标准协议
? 动态组合,提高软件生产力
? 符合现代软件的发展要求
软件组件
? 关键:接口设计
? 接口不变性
? 接口可扩展性
? 对基础设施的依赖
? COM,CORBA,..,
? 内部独立设计、独立开发
? 独立发布、独立测试
基础设施:组件体系
? COM(Component Object Model)
? 93年发布,脱胎于 MS的 OLE
? 规范 +实现
? CORBA(Common Object Request Broker
Architecture)
? 91年第 1版,OMG(Object Management Group)
? 规范 +实现
? EJB(Enterprise Java Bean)
? 98年第 1版,sun
? 规范 +实现
COM:组件对象模型
? 建立在二进制层次上的标准
? 许多概念与 C++的特征相似,如 vtable
? 程序与程序之间的通信建立在此基础上
? COM规范
? 平台无关
? 定义了大量的标准接口用于各种用途
? COM实现
? 平台相关
? Windows实现了规范要求以及许多辅助功能
COM,COM体系
? 基本的功能
? 扩展功能
? 连接点
? 结构化存储
? 名字服务
? 自动化
? 其他
? COM+
COM,COM+
? 建立在 COM的基础上,COM的自然延伸
? Services
? 事件服务
? 队列服务
? 事务服务
? 负载平衡
? 其他
COM:应用
? OLE
? ActiveX control
? 脚本功能扩展
? OLE DB
? ADSI
? ASP
? 其他
COM:分布式应用
? COM/COM+为基于 Windows的分布式应用提
供了基础设施
? Transaction
? Security
? OLE DB
? Web
? 集成 Active Directory
? 管理功能
CORBA
? OMG,800多家厂商联合制定的标准
? 91年 1.0,主要是 C语言映射
? 95年 2.0,加入 IIOP
? 目前最新版本 3.0
? CORBA规范
? 制订了互操作规范,上层标准协议
? 一系列映射到多种语言的规范
? 各种服务相关的规范
? CORBA实现,ORB
CORBA体系结构
CORBA:跨平台、跨语言
? 典型的语言,C++语言,Java语言,Smalltalk
? 多种平台
? 关键,IOR(Interoperable Object reference)
? ORB实现
部分 ORB实现
? 商业 ORB
? Orbix,IONA公司
? Visibroker,Inprise公司,4.0版完全支持 2.3规范
Netscape communicator浏览器嵌入 Visibroker
? 自由 ORB
? ORBit,遵循 CORBA 2.2规范,支持 C语言,性能较

? mico,GNU,OpenSource
? TAO,美国华盛顿大学分布式对象计算研究小组
? omniORB,AT&T剑桥实验室
? 国产 ORB
? 国防科大的嵌入式 CORBA(eBus)
? 东南大学的 ORBUS
CORBA:服务
? 命名服务
? 层次命名
? 绑定
? Trading Service
? 功能更强、使用更灵活的对象查询服务
? 事件服务
? 事件发送方和接受方之间的 decouple
Enterprise Java Bean
EJB体系是 JAVA平台上的 服务器端 组件模型
?目标 是最大限度地减轻分布式应用程序的开发工作。
?安全, 事务处理 尽可能不再由手工编码的方式实现,
而是通过使用 JavaBean自身的标记实现。
组件开发中的参与者 (Role)
?提供者 (Provider)-设计 Bean
?安装者 (Deployer)-将 EJB类安装到 EJB容器中
?应用程序开发者 (Application Assembler)
?容器提供者( Container Provider)-提供运行环境
应用程序服务器
Servlet/JSP 引擎
EJB Server
客户端
Browse
数据库服务器
HTTP
JDBC
DB2
Model
Controller View
基于 EJB 的三层系统架构
C
C
C
C
S
S
S
S
C
C
C
C
S
TP
m
on
ito
r
S
1000+
传统的事务处理
C
C
C
C
C
S
S
S
S
C
TP
M
on
ito
r
动态负载均衡和故障恢复
C
S
S
S
S
1
2
Commit!
组件往往是分布的
TM (Transaction Manager)
TX
TX XA
C
S
S
S
S
资源管理
(DBMS server,
Queue manager)
XA工业标准
.NET 和 J2EE技术实现架构
.NET 技术架构
Windows
公共语言运行时
,NET Framework


组件
组件
组件
组件
Biz
tal
k



Biz
tal
k













.Net 应用体系结构
Non-Web Clients
Data Tier Web Tier
IIS-01
SQL Server
Middle Tier
Web
Browser
Web Service
.Net Components
Transaction
Message Queue
ADO.Net
Scalability
Monitoring
Security
Web Clients
WinForm ASP.Net
Transaction
Message Queue
ADO.Net
Scalability
Monitoring
Security
Application Server
To
ols
Ma
na
ge
me
nt
+
An
aly
sis
Integration
Content Mgmt
Wireless/Mobile
Data
Commerce
Cache / Proxy / Fwall
Collaboration
Operating System
Microsoft.Net 平台
CS2000
BizTalk / HIS
Exchange / SPS
Content Mgmt Server
Mobile Info Server
SQL Server
Windows Server
ISA Server
Visual
Studio
Visio
3rd
party
Add-ons
App
Center
MOM
Biz
Analytics
Vis
ua
l Stu
dio
Windows Server,Enterprise Servers
Passport,Alerts,.NET My Services
Windows XP,Windows CE,Pocket PC,Office
Microsoft.Net 软件平台
.NET Framework 架构
Windows COM+ Services
通用语言运行环境 (CLR)
基类库( Base Class Library)
ADO.NET and XML
ASP.NET Windows Forms
公共语言规范 ( Common Language Specification)
VB C++ C# JScript …
Vi
su
al
St
ud
io
.N
ET
通用语言运行环境 ( Common Language Runtime)
?,Net应用的运行环境
? 管理运行代码
? 确认类型的安全性
? 提供垃圾收集,错误处理
? 对半信任代码的访问安全控制
? 提供公共类型系统
? 可以访问系统资源
? 本地 API,COM interop
? 软件构造的突破 --基于特性的编程
统一的开发模式
?,Net Framework
? Windows 应用
? System.Windows.Forms
? Web 应用
? System.Web
? 移动设备应用
? MMIT
?,Net Compact Framework
多语言开发
? 统一的对象系统
? 只要选择喜欢的语言使用即可
? 不需要学习更多的规则或 API
? 先进的多语言互用功能
? 跨语言继承,异常处理
? 目前支持 20多种语言
? VB,C++,C#,Java,JScript,Perl,COBOL
? 功能强大的工具
? 调试器等可以跨语言工作
.Net技术概览
? 展示层 – ASP.Net,Windows Forms
? 中间层 -,Net组件
? 中间层可使用的企业服务
? System.EnterprisesServices
? 事务服务 MTS
? 消息服务 MSMQ
? 目录服务 ADSI,UDDI
? 对象池 Object Pooling
? 异步组件 Queued Component
? 数据层 – ADO.Net
? 远层调用 -,Net Remoting/ Web Service
? 利用现有资源 -,Net Interop / Web Service /BizTalk
对 XML的普遍内在支持
Data Documents
& Msgs
Objects
XML
SOAP,Serialization,
Remoting
XML DOM,
XmlReader
XmlWriter
SQL 2000,
ADO.NET
J2EE体系架构
什么是 J2EE?
Java 2 Platform,Enterprise Edition (J2EE)
? 运用 Java技术开发企业应用的标准
? 包括了
? 多层应用开发模型
? 开发平台 - APIs 和服务
? 测试软件包
? 参考实现
? 将所有 Sun的企业技术集合在一个体系结构下的平台
? 特定版本下的 EJB,Servlet,JSP
? Java Web Server
? JNDI,JDBC,JTA,JMS,JavaMail,CORBA…
应用程序服务器
Servlet/JSP 引擎
EJB Server
客户端
Browse
数据库服务器
HTTP
JDBC
DB2
Model
Controller View
基于 EJB 的三层系统架构
J2EE 技术架构
任何平台
Java虚拟机
J2EE Framework


组件
组件
组件
组件
JC
A
eb
XM
L
JTA
JM
S …
Browser
Servlet
or
JSP
Containers
EJB Server
B
C
HTTP
Entity
Bean
HOME
REMOTE
Session
Bean
HOME
REMOTE
Data
J2EE 应用体系结构
A
Data
JDBC
AppServer
IBM 平台
Application Server
To
ols
Ma
na
ge
me
nt
+
An
aly
sis
Integration
Content Mgmt
Wireless/Mobile
Data
Commerce
Cache / Proxy / Fwall
Collaboration
Operating System
WebSphere Integration
Lotus / WebSphere Portal
Everyplace Servers
WebSphere Edge Server
Visual
Age
for
Java
WebSphere
Studio
Tivoli
WebSphere
Site
Analyzer
Multiple Operating Systems
DB2 UDB
WebSphere App Server
Content Mgmt Server
WebSphere Commerce Srvr
CI
CS
R/
3
Pe
op
leS
oft
Tu
xe
do
Cu
sto
m
统一集成框架
EJB EJB Servlet
Repository
JMS
MOMs
JDBC
RDBMS
WebSphere Application Server
WebSphere集成框架
Java 运行环境
? JVM - Java应用的运行环境
? 编译运行 Java语言
? 管理运行代码
? 类型安全
? 内存管理
? 异常处理
? 跨越平台
? Windows/UNIX/Linux
EJB
? J2EE的中间件技术
? Session Bean
? 传统的对象
? 无隐含的数据映射
? 编写你自己的数据访问代码
? Entity Bean
? 对象等价于数据库记录
? 提供数据映射方法
? Create,Load,Store and Remove
? BMP/CMP
Entity Bean
? Transacted Entity Bean
? Property true 意味着在每个事务的开始和结束都要读数据和写
数据 (即使数据没有变化 )
? Propery false 指仅在生成时读一次数据,以后再也不读 (即使数
据已陈旧 )
? Read-only Bean (BEA 特有的功能 )
? BEA 特有的功能以防止在状态无变化时不调 Store 方法
? BEA 亦有刷新的设置可允许数据按时间间隔刷新
? 只读的,事务的 entity bean 行为类似于,NET 中运用
DataReader 的类 (每次读,重不写 )
? CMP Opt Tool 是 WebSphere 的优化
? 读取 bean 的源代码,判断数据访问模式,删除不必要的 Store
调用
? Option A,B and C caching 亦可规定 bean 的数据库访问是否
是排他的
? Option C意味着排他的数据访问,所以 Store method 可以懒方
式调用
J2EE应用开发
? 企业级 Web应用的开发
? J2SE - Rich Client
? J2ME – 移动设备应用开发
? 均基于 Java 2/JDK
J2EE技术概览
? 展示层 – ServLet/JSP
? 中间层 – EJB
? 中间层可用的企业服务
? 事务服务 JTA
? 目录服务 JNDI
? 消息服务 JMS
? 异步组件 Message-Driven EJB
? 数据层 - JDBC
? 远程调用 – RMI/IIOP
? 使用现有资源 - JCA
对 XML的支持
? J2EE标准未包括对 XML Web服务的支持
? 各个厂商提供自己的方案
? 支持 UDDI/WSDL/SOAP
? WSI组织保证互操作性
? SUN的方案
? JAXP/JAXB/JAXM/JAXR/JWSDL
? JAX/RPC
? JAX* – Java API for XML *
.Net与 J2EE 的比较
技术架构整合
WS-I
Windows
CLR
,NET

















Linux
JVM
J2EE
Se
cu
rit
y
JC
A
eb
XM
L
JTA
JM
S …

表示层
业务逻辑层
数据层
J2EE
CLR
.NET Assembly
ADO.NET
(可使用 COM+ 服
务 ; 比如事务 )
Web 表单
Server 控件
Code-Behind
ASP.NET
IIS
JavaBeans
EJBs
JSP
Servlets
可运行于大多
数主要应用及
Web服务器
支持大多数
数据库 (通
过 Type 4
驱动程序 )
J2SE/EE
JDBC (事务使
用 JTA)
.NET
SQL Server
Oracle
DB/2,etc,
SQL Server
Oracle
DB/2,etc,
Web 架构, J2EE vs,NET
状态, ASP.NET Session,
.NET 数据缓存
状态, 封装于 EJB 中,
也可在 Web Sessions 中
? JDBC
? JTA
? JNDI
? JMS
? JavaMail
? RMI/IIOP
? JAF
.Net/J2EE主要技术比较
,Net
ADO.NET
,Net Transaction
Active Directory
.Net Messaging
SmtpMail
Web Services/Remoting
J2EE
.Net JIT (Just In-Time
Activation)
.NET与 J2EE平台的详细对比
技术
.NET
J2EE
支持技术 发布协议
DCOM,SOAP
RMI/IIOP
防火墙 ISA* 没有定义 HTML页面缓存
ISA*,ASP.NET
没有定义
表示层技术 基础结构
IIS
JWS
程序设计模型 ASP.NET Servlets,JSP 高可用性
NLBS*,ACS*,其他
没有定义
负载平衡 NLBS*,ACS*,其他 没有定义 中间层技术
基础结构 COM+ EJB 程序设计工具
Visual Studio.NET
没有定义
高可用性 ACS* 没有定义 负载平衡
ACS*
没有定义
安全性 API COM+ Security Call Context JAAS
消息队列 API
MSMQ
JMS 1.0
异步组件 Queued (COM+) Message driven beans (EJB 2.0)
命名与目录服务
ADSI
JNDI
数据层技术 分布式事务处理
MS-DTC
JTS
关系型数据库 API ADO.NET JDBC 2.0 层次型数据库 API
ADO.NET
-
数据库存储 SQLServer** - 大型机数据库连接性
HIS*
Java连接器
架构技术 电子商务架构
Commerce Server*
-
B2B BizTalk Server* -
技术的成熟性
Microsoft
J2EE
1996 1997 1998 1999 2000 2001
MSXML
JAXP
ASP
JSP
MTS/COM+
EJB
ODBC
JDBC
Mar 1992
ADSI
JNDI
QC
MDB
LCE MMC
WinDNA
J2EE
MSMQ
JMS
VS.Net
.Net
EJB 与,NET 组件比较
Session Beans
无状态
有状态
,NET 类 无状态
传统的对象
无隐含的数据映射
编写你自己的数据访问代码
Entity Beans
永远有状态
.NET中
无等价类
.NET J2EE
对象等价于数据库记录
数据映射通过以下 4个方法,
Create,Load,Store and Remove
BMP = 这 4个方法由你自己编写
CMP = container 提供这些方法
除了这 4个方法再没有其它的数据访问
J2EE的移植性与互操作性
? 理论上 J2EE应用可以采用多个厂商的产品
? 只要符合 J2EE的标准
? 实际情况
? J2EE标准不完整,如 Web Service
? J2EE的技术需改进,如 EJB
? 各厂商发展各自的技术
? 不同产品很难协同和移植
? J2EE可选择同一厂商支持的不同操作系统
.Net的移植性与互操作性
? 理论上,Net应用可移植到任何平台
? CLS提交给标准化组织
? 只要支持 CLR
? 实际情况
? 只有 Windows/Free BSD
?,Net支持 Web Service
? 可以使用任何平台运行的 Web Service
? 任何平台可使用,Net Web Service
技术比较结论
?,Net和 J2EE应用有着相似的架构
?,Net和 J2EE有相应的主要技术
?,Net所有技术来自 Microsoft
? J2EE的技术有多个厂商的实现
?,Net和 J2EE都可以满足大多数应用的需求
? 主要的差别不在技术的可行性上
? 开发效率
? 性能
? 成本
? 稳定性
在 Internet应用集成中的问题
? 不同组件模型的
组件无法进行相
互的无缝调用
? 相同组件模型在
Internet上也很难
甚至无法相互调

EJB
CORBA
COM
CORBA
为什么需要互操作性?
满足客户的需求
? 异构已成为事实
? 完全的中央控制不切实际
? 大多数大企业拥有混合的系统
? 企业合作,收购,兼并
? 企业要求互操作性
? CIO已经把集成列入 IT方面第一关注的事项
? 误区
? 套牢 (Lock-in)还是开放 (Open)
? 跨平台还是互操作性
互操作的目标
? 保护现有的投资
? 与新模块无缝结合
? 访问到任何平台上的业务逻辑
? 通过标准接口访问到数据层
? 充分发挥平台的优势
j2ee
.net
应用程序流程
JSPs
Servlets
Servlets
EJBs DB2
ASP.NET Serviced Components SQL Server
客户端 Web 层 业务逻辑层 数据库层
浏览器
互操作 – 业务层
? 集成 EJB
? 集成应用程序服务器
? 考虑,
? 事务处理
? 错误处理
? 可伸缩性,安全性,性能
Web 层 业务逻辑 数据层
Web 层 业务逻辑 数据层
互操作 - 业务层
方案一
? RMI -,NET Remoting 桥接
? 优点
? 接线层级的性能
? 缺点
? 紧耦合
? 特定的厂商和版本
Web 层 业务逻辑 数据层
Web 层 业务逻辑 数据层
j2ee
.net
互操作 - 业务层
方案二
JSPs Servlets Servlets EJBs DB2
ASP.NET Serviced Components SQL Server
客户端 Web 层 业务逻辑层 数据库层
浏览器 方案二, 消息队列
互操作 - 业务层
方案二
? 消息队列 (MQ Series)
? 优点
? 松耦合
? 支持 N到 N的场景
? 支持事务,安全性,可靠的消息传递
? 缺点
? 不能同步操作
? 可能出现端口或防火墙问题
? 消息队列跨越互联网?
Presentation
Application
Session
Transport
Network
Data link
Physical
Network
Interface
IP,ARP,ICMP
TCP
Application
UDP
TCP/IP OSI
OSI vs,TCP
和消息队列
消息队列
松耦合系统
? 独立系统相联结
? 独立的基础架构
? 独立地开发,部署,管理
? 彼此之间没有信任关系
? 目标
? 少数的,定义明确的连接点
? 各系统实现没有依赖性
? 任何一端的修改都可以适度容忍
j2ee
.net
互操作 - 业务层
方案三
JSPs Servlets Servlets EJBs DB2
ASP.NET Serviced Components SQL Server
客户端 Web 层 业务逻辑层 数据库层
浏览器 方案三, Web 服务
互操作 - 业务层
方案三
? Web 服务
? 优点
? 松耦合
? 同步 (或异步 )操作
? 跨防火墙
? 产业界推动
? 可扩展
? 缺点
? Web服务标准在事务处理,可靠消息传
递方面缺少支持
安全性如何?
? Web 服务
? 基本的标准 (XML,XSD,SOAP,WSDL,
UDDI) 没有涉及安全性
? 现在可以使用点到点基于传输层的安全措施 (
比如,HTTPS)
? 将来的版本将包含 WS-Security
? 对于其它互操作机制
? 自己完成加密,数字签名等
互操作建议
? 可能的情况下使用 XML Web 服务
? 转移到一个面向服务的体系结构
? 使用 XML Schema
? XML Web 服务包含了 XML Schema
? 也适用于消息传递,文档交换,及其它情形
? 只有在绝对必要时才可以不遵循这些约定