资源描述
在一定程度上人类的思维产生于简单个体之间的相互作用,MarvinMinsky,第三讲软件实体的交互基础,内容,一、网络编程基本架构二、软件互操作的基本架构三、互操作协议四、互操作接口定义五、交互实体的查找,一、网络编程基本架构,1、TCP/IP2、基于Socket的网络软件3、直接基于Socket编程的不足,Application,Presentation,Transport,Network,Datalink,Physical,Session,TCP,UDP,、TCP/IP,(1)ISO/OSI参考模型与TCP/IP的对照,ISO/OSI参考模型,主机与网络的连接:ethernet、token-ring,因特网层:IP,应用层:telnet、ftp、smtp、snmp、dns、http、nntp,TCP/IP,0NetworkHost,10NetworkHost,110NetworkHost,1110Multicastaddress,11110Reversedforfutureuse,ABCDE,1.0.0.0127.255.255.255,地址范围,128.0.0.0191.255.255.255,192.0.0.0223.255.255.255,224.0.0.0239.255.255.255,240.0.0.0247.255.255.255,类,(2)IP:InternetProtocol,Vers.H.lenServicetypeTotallength,IdentificationFlagsFragmentoffset,data,TimetoliveProtocolHeaderchecksum,SourceIPaddress,DestinationIPaddress,IPoptions(maybeomitted)Padding,IP头,Servicetype,PrecedenceDTRunused,20bytes,(3)TCP:TransmissionControlProtocolTCP为两个分布式的构件提供了双向的消息通信UNIX中的命令rsh,rcp及rlogin全部基于TCP它是一个可靠但较慢的协议在客户服务器双方进行缓冲以提高速度,TCP头格式,Sourceport,Destinationport,Sequencenumber,Acknowledgementnumber,Checksum,Urgentpointer,Options(0ormorewords),Data(optional),H.len,Codebits,Reserved,Windowsize,UDP:UserDatagramProtocol一个构件向另一个构件发送消息另一个构件的标识包含在消息中不可靠但快速的协议消息长度固定消息在接受方排队UNIXrwho命令基于UDP,2、基于Socket的网络软件,服务器,客户,创建,通信套接字,通常通过随机分配得到端口,等待连接套接字,通常对应于一个固定端口,连接请求,面向连接:,服务器,客户,Socket(),bind(),listen(),read(),close(),Socket(),connect(),write(),close(),处理请求,write(),read(),accept(),阻塞,等待客户连接,建立连接,请求服务,应答数据,面向非连接:,服务器,客户,Socket(),bind(),readfrom(),sendto(),close(),Socket(),bind(),sendto(),readfrom(),close(),处理请求,应答数据,请求服务,阻塞,等待客户数据,3、直接基于Socket编程的不足,套接字的出现促进了软件从单机环境向网络环境的发展扩展了软件的应用范围人们很快不满足于直接基于套接字的开发过程基于套接字的开发方式较为繁琐这种软件的排错十分困难特别是当服务器端需要根据用户的不同请求内容区分不同的处理过程时,根本原因在于基于套接字的交互层次较低不同软件之间需要约定专门的消息格式、数据类型等,二、软件互操作的基本架构,为支持应用层的某一实体使用另一实体而制定的一套技术规范,互操作消息,客户端指代,互操作接口定义语言,互操作协议,网络基础设施,网络基础设施,互操作消息,服务器端指代,客户端程序,服务器端程序,互操作实现(以,RPC,为例),实体查找方式,互操作规范,底层协议,决定,决定,软件互操作体系与人类交互过程的比较底层协议提供了基本的通信基础互操作消息是软件之间进行交互时所表述的语言互操作协议是对这些语言的语法说明互操作接口定义是软件之间的一种约定接口定义语言是合约的撰写规则实体查找方式是交互双方建立联系的途径包括白页、黄页、绿页等多种途径,1、底层协议底层协议是互操作协议所依赖的底层通信机制目前最受重视的协议是前面讲过的TCP/IP协议也可以是ATM等其它协议,2、互操作协议消息中关于字节序、数据表示等问题的解决方法体现了通信双方之间关于消息的数据格式消息的类型等的约定类似的约定还有服务器的管理等等所有这些约定共同构成了互操作的高层协议互操作协议一般独立于底层协议即互操作协议可以向不同的底层协议进行映射从而由不同的底层协议进行支持互操作协议一般都比较烦琐其实现由应用服务器开发者承担应用系统的开发者在开发具体系统时不必关心协议的实现问题,3、互操作接口定义语言客户指代主要完成上层代码(客户程序、服务器程序)与底层代码(RPCAPI等)之间的“映射”其参数传递、编排、服务器定位等功能完全与应用系统具体的业务逻辑实现细节无关因此只要系统明确定义了服务器的接口即可以产生与该接口对应的指代接口定义语言(InterfaceDefinitionLanguage)描述了客户与服务器之间的接口,4、实体查找方式实体查找方式主要是指服务器的定位根据自己掌握的信息客户如何才能查找到具体服务器这实际上涉及服务器端服务信息的发布服务信息的管理等问题,现有互操作架构比较,通信消息对于计算机的重要性完全类似于人类的言语对于人类的重要性协议是通信双方传输消息时必须遵守的规则的集合,Protocol:IP、TCP、UDP、IIOP、JRMP、SOAPFTP、HTTP、SMTP、SNMP,1、概念,三、互操作协议,对于互操作协议,尽管其发展的历史不长但目前也已经有许多协议被设计、实现例如:RPC协议、IIOP、JRMP、SOAP等等与人类言语类似,它们的实现方式也十分丰富可以建立在不同的底层协议之上例如TCP/IP、HTTP、ATM等等到目前为止,在互操作方面使用得最广泛的协议是IIOP这主要得益于CORBA的巨大成功以及IIOP对异构平台的支持,所谓互操作协议要素是指设计一个互操作协议时必须考虑的主要问题这些问题主要包括:数据表示消息格式引用表示等等其它需要考虑的问题包括:如何将协议映射到底层协议之上如何管理连接过程如何提高协议的效率等等,2、互操作协议要素,在单机环境内,数据表示属于硬件层、语言层而在网络环境下,调用参数必须经由网络进行传输这意味着这些数据将变成一种字节流的形式以便于参数(数据)在网络上传输就产生了如何在网络传输上表示程序中的数据问题数据表示是一种传输语法描述各种数据类型在传输线路上以字节流的形式表示出来的格式ONC-RPC中使用的格式为外部数据表示(XDR:eXternalDataRepresentation)而CORBA中使用的格式为公共数据表示(CDR:CommonDataRepresentation),(1)数据表示,底层协议主要解决通信的可行性以及部分可靠性等问题高层协议不同于底层协议的一个明显特征在于高层协议带有一定的语义信息几乎每种高层协议都对消息进行分类定义了多种不同类型的消息格式对于互操作协议而言一次调用通常至少包含请求与应答两种消息消息的种类较为类似但消息格式差异较大,(2)消息格式,互操作协议必须映射到底层协议上方能得到实现目前的互操作协议都定义协议一到多种向传输层的映射例如GIOP定义了向TCP/IP的映射:IIOPSOAP主要定义了向HTTP的映射,(3)向底层协议的映射,2、协议比较,1)互操作开销不同IIOP、JRMP使用二进制的字节流形式编排消息(CDR、XDR)SOAP采用字符型的XML编排消息SOAP消息要比IIOP、JRMP消息长得多SOAP的编排开销大、占用内存空间大2)表达能力不同SOAP易于学习、易于开发、易于调试SOAP不支持消息的批处理、对象引用、对象激活等特性降低了SOAP的表达能力并使得基于SOAP的交互受到限制而IIOP、JRMP等则不存在这种限制,3)适应能力不同IIOP、JRMP严重制约于防火墙防火墙一般由两个路由器与一个应用程序网关构成路由器负责IP层的分组信息列出可接受、禁止的源端和目标端等信息应用程序网关在应用程序级进行控制根据头信息字段、消息长度、消息内容等决定传送还是丢弃消息这是IIOP、JRMP的应用受到限制的核心因素之一SOAP则基本不受其限制4)适用环境不同JRMP适用于使用JAVA的应用系统IIOP、SOAP支持各种语言,因此适用面更广IIOP适合于同一个防火墙内部之间的交互而SOAP则适合于跨越防火墙的交互,1、概念,接口(Interface),四、互操作接口定义,应用编程接口(API)对象接口构件接口抽象?实在?,模块通常由接口和实现两部分组成模块的接口部分刻画了各个模块是如何耦合的其他模块的设计者和使用者需要知道模块的实现部分是各个模块的内部事务其他模块的设计者和使用者不需要知道,包含什么具体内容?(功能性、约束性)利用什么形式描述?(接口定义语言),含义解释,单机环境下的不同软件模块之间主要定义模块的功能性(Functional)内容类似于一个函数的映射过程接口的功能性定义是对接口中各个操作调用方式的描述操作是由操作符标识的实体指明了一个不可再分的服务原语请求一个操作的动作被称为调用一个操作对一个操作功能的描述由输入、输出两部分组成也被称为一个基调(signature)用于描述操作的输入、输出参数名称及类型,功能性(Functional),网络环境下的不同软件模块的合作需要考虑的因素不仅仅包含功能方面还涉及分布性、可靠性、安全性等方面的因素网络环境下的接口除需要定义模块的功能性内容外还需要定义模块的约束性内容接口的约束性定义是指对功能以外特征的描述简单的包括:例外处理、执行语义等复杂一些的包括:(1)行为特征:用于描述操作的输出通过对操作增加前置与后置条件而实现(2)同步特征:用于描述分布性与并发性,约束性(Constraint),2、接口定义语言,IDL:InterfaceDefinitionLanguage,WSDL:WebServiceDescriptionLanguage,服务描述语言,interfaceHospitaltypedefstringPatientId;PatientIdadmit_patient();voidrelease_patient(inPatientIdpatient);,有的以描述结构化程序的功能为主例如RPC-IDL微软的-IDL有的以描述对象的功能为主例如CORBA的IDL有的以描述服务为主例如webservice的WSDL,1)描述对象不同,比较,有的以具体计算机语言的方式表达例如SUN的JavaInterface有的以独立于具体的计算机语言但十分类似于计算机语言的方式表达例如:RPC-IDL微软的-IDLCORBA的IDL有的以XML为方式表达例如:webservice的WSDL,2)描述方式不同,有的仅描述接口的语法信息例如:RPC-IDL微软的-IDLCORBA的IDL有的还包括与底层协议的绑定信息例如:WSDL等在CORBA中这部分信息包含在IOR中,3)描述内容不同,五、交互实体的查找,网络环境中的资源具有明显的分布性这些资源可能分布于不同的节点之上问题:分布在不同节点上的实体如何查找到其他的实体?,1、三种查找方式2、命名服务3、目录服务4、合约服务,内容,命名(Naming)服务:通过外部名字定位构件类似于(电话本)白页,.公司甲67890001公司乙67890002公司丙67890003,CORBA的命名服务TCP/IP中的DNSCOM、JVM中的注册表等皆提供了类似的服务,1、三种查找方式,目录(Directory)服务:通过服务特性定位构件类似于(电话本)黄页,IT领域存储器公司公司甲67890001计算机公司公司乙67890002公司丙67890003公司丁67890004,SUN的网络信息系统(NetworkInformationSystem:NIS)Novell目录服务(NovellDirectoryService:NDS)IUT/ISO的X.500以及LDAPCORBA的交易服务微软的ActiveDirectoryService等提供了类似的服务,合约(Contract)服务:通过技术规范定位构件绿页,IT领域计算机公司公司乙电话67890002地址北京市海淀区中关村大街XX号ECPUIntelP4硬盘Seagate40G鼠标双飞燕USB,WebService的UDDI即包含这方面的信息CORBA的接口池也具有部分“绿页”功能,不同的查找服务提供的功能:,名字是知识的基础本体论(Ontology)名实论(名,所以谓也,实,所谓也墨子)操作系统中的进程名文件系统中的文件名程序语言中的变量名、过程名、数据结构名、对象名网络环境下的计算机名、数据库名、构件名,2、命名服务,名字与标识、引用,标识,引用,名字与引用的关联,指代,名字,服务使用者的空间,服务提供者的空间,查找,注册,(绑定),调用,解析,名字,引,用,名字系统,主要功能是将名字映射到对象一组context的集合这些context是连接的使用同样的命名规则提供同样的操作集合并具有同样的语义例如:c:/win98/system,名字分类,Atomicname(原子名字)名字中不可分割的部分Usr/local/bin中的usr,local,中的www,pku,edu,cnCompoundname(复合名字)包含了零个或多个原子名字的一个序列Usr/local/bin,CompositeName(合成名字)与复合名字(compoundname)不同是跨越多个命名系统的名字包含了一个有序的复合或原子名字的列表每个复合或原子名字属于不同的命名系统名字空间,命名服务(NamingService)维护了(分布或集中式)系统中资源的名字与地址之间的映射关系(binding),命名上下文,Context是一个对象其状态(属性)是一组binding的集合,这些binding的原子名字各不相同每个Context都有自己的命名规则至少提供lookup操作允许用户查找指定原子名字的对象也可能提供建立/删除/枚举binding的操作InitialContext用户使用命名服务的入口,Subcontext某个Context对象中的原子名字可以与另一个Context对象绑定,此时后者就是前者的subcontext目的是为了支持复合名字的查找按照原子名字的顺序在对应的subcontext中查找binding在UNIX文件系统中,目录类似subcontext(usr,local),而路径名类似复合名字(usr/local/bin),解析名字,根据名字查找属性的过程,3、目录服务,基本实现,目录服务是增强的命名服务存储了一组名字与属性的关联集合,目录对象(Directoryobject)命名系统中一类特殊的对象,用以表达计算环境的多种信息换言之,维护了(分布或集中式)系统中资源的名字与及其多种信息的映射关系一个目录对象具有多个属性(attributes)一个属性具有一个标识符(identifier)以及一组值(values)一个目录对象同时可以是一个context,因此,这种特殊的对象不仅可以维护名字到对象的映射,也可以维护与这个binding相关的一些信息CORBATraderService,4、合约服务,合约服务是增强的目录服务可以在不断变化的网络环境中提供定位服务的功能目前只有Web服务的UDDI提供合约服务CORBA的接口池提供了接近该功能的服务动态性是网络环境的核心特点之一这个特点影响了所有基于网络环境的应用系统以商业系统为例:必须持续不断地寻找哪些商业伙伴可以提供什么样的服务在一个不断变化的网络环境中快速地发现上述结果是一件十分困难的工作,UDDI最核心的部分是一个基于仓库池的目录服务可以用来进行自动查询Web服务UDDI的仓库池存放的是业务实体(例如公司)的信息以及它们所提供服务的相关信息例如公司地址、联系人等UDDI提供了一组API允许软件同UDDI仓库池交换数据例如注册、查找等从而让用户得到所需要的Web服务的信息UDDI提供了一种基于分布式的商业注册中心的方法该中心维护了企业和企业提供的Web服务的全球目录其中的信息描述格式基于通用的XML格式,UDDI的核心部分是UDDI商业注册库企业本身和它所提供的服务都由一个XML文件来描述从概念上说,UDDI商业注册库提供的信息由三部分组成:“白页”包括企业的地址、联系方法和得到公认的标记符“黄页”包括标准的行业分类“绿页”包括企业所提供服务的技术规格(规范)绿页还包含了与该服务描述的关联如果有必要的话还包含与其他基于文件或URL的发现机制的关联,UDDI中四种信息之间的关系,UDDI定义了四种类型的信息这些信息是技术人员在需要使用合作伙伴所提供的Web服务时必须了解的技术信息:业务实体信息业务服务信息绑定模板信息服务的规约信息,名字,、,联系方法、描述、标识符、分类,(1.n),(1.n),技术信息,(服务规约信息),名字,描述,指向技术规范的,URL,指针,
展开阅读全文