版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、哈尔滨工业大学计算机学院唐好选Email:pRPC 的基本原理pCORBA的概念与组成pCORBA构件模型RPC的基本原理NetworkLocal CallClientStubRPCInterfaceRPCInterfaceServerStubRemoteProceduresendreceivesendreceive客户端程序服务器端程序RPC过程描述过程描述1、客户按本地调用的方式 直接调用本地的客户代理 客户代理具有与服务器相同的过程接口2、客户代理将客户的调用请求进行加工、打包向底层通信机制(如套接字)发出请求消息客户代理不进行任何逻辑处理只是一个中介3、客户端通过底层的通信机制将消息传
2、送给服务器端的底层通信机制RPC过程描述过程描述4、服务器 需要部分地解析消息找出客户希望调用的服务器程序5、服务器代理对消息进行解析从中获得调用者的参数然后调用服务器程序6、服务器程序执行相应的过程7、服务器程序将结果返回给服务器代理8、服务器代理将结果打包 向底层通信机制发出应答消息9、服务器端通信机制将消息传送给客户端通信机制RPC过程描述过程描述10、客户端节点上也可能有多个调出点通信机制需要部分地解析返回的消息找出消息应该返回给哪个客户程序并将消息发送给对应的客户代理11、客户代理从消息中解析结果返回给客户程序客户端开发过程服务器端开发过程服务器端程序服务器端程序IDL编译器编译器(
3、rpcgen)客户端程序客户端程序account.haccount_clnt.caccount _svc.cserver.cclient.crpclib.o互操作接口互操作接口定义语言定义语言互操作协议互操作协议 互操作实现(以互操作实现(以RPC为例)为例)互操作查找互操作查找互操作规范互操作规范底层协议底层协议决定决定决定决定服务器端程序服务器端程序客户端程序客户端程序客户端代理客户端代理互操作消息互操作消息网络基础设施网络基础设施服务器端代理服务器端代理互操作消息互操作消息网络基础设施网络基础设施CORBA的概念与组成CORBA概述概述pCORBA(Common Object Reque
4、st Broker Architecture 公共对象请求代理体系结构)是OMG制定的、最清晰的、跨越平台最多的分布对象模型p通过IDL(Interface Definition Language)定义的接口,使用不同的编程语言,不同编译器实现的构件,可以通过对象请求代理(ORB: Object Request Broker)连接,形成跨平台的应用pCORBA是一套规约,而不是一个产品,开发商可以开发不同的产品来实现CORBA规约CORBA历史历史pOMG成立于1989年,CORBA规约的第一代主要集中在为分布式对象定义了一个基础,其核心是ORB和IDLp1995年颁布的CORBA 2.0增加
5、了ORB的互操作性规约,主要是基于TCP/IP的IIOP(Internet Inter-ORB Protocol :因特网ORB互联协议)p1997年颁布的CORBA 2.1 增加了COM/CORBA互操作规范p1998年颁布的CORBA 2.2 增加了移植性的对象适配器(POA :Portable Object Adapter)和IDL到Java语言的映射规约,OMA中增加了领域接口部分p2001年颁布的CORBA 3.0 增加了CCM( CORBA Component Model: CORBA构件模型),提供容器作为构件的运行环境客户程序客户程序Client对象实现对象实现Server动动
6、态态调调用用客户客户IDL存根存根ORB接口接口动态动态框架框架接口接口静态静态框架框架接口接口对象对象适配适配器器对象请求中间件核心对象请求中间件核心(ORB Core)接口接口仓库仓库实现实现库库CORBACORBA的基准模型的基准模型对象请求代理(对象请求代理(ORBORB)对象服务对象服务应用对象应用对象公共设施公共设施p 基准模型描述了分布式对象系统的基本成分(1)CORBAService(对象服务)是一组系统级对象,为实现和管理对象提供了基本功能,包括名字、生存周期服务、事务服务、安全服务等(2)ORB是核心,它提供了一种机制,使得对象可以透明的发送请求和接受响应 ORB与对象服务
7、相结合,确保符合CORBA基准的应用构件之间有效的通信(3)CORBAFacilities(公共设施)是适用于众多应用领域的通用构件,例如信息管理、系统管理、任务管理和用户界面等(4)Application Object(应用对象)是专用于特定领域的构件CORBACORBA的基准模型(续)的基准模型(续)对象类的上下文关系对象类的上下文关系ORBORB的体系结构的体系结构接口仓库接口仓库IDL编译程序编译程序实现仓库实现仓库客户机客户机对象实现对象实现GIOP/IIOPDII客户代理客户代理ORB内核内核ORB接口接口Operation()输入参数输入参数输出参数输出参数+返回值返回值对象适配
8、器对象适配器实现骨架实现骨架DSIpORB体系结构定义一个描述客户机如何向远程对象发送请求并得到回答的框架ORBORB的职责的职责p ORB给分布式对象提供了透明发送请求和接受响应的机制,主要包括以下职责:p负责根据客户机给出的对象引用定位相应的远程对象实现,激活远程对象实现,建立与远程对象实现的连接p客户端ORB接受客户机请求的参数,将参数打包,通过ORB互联协议(如IIOP协议)跨网络送给服务器端的ORBp服务器端的ORB接受通过ORB互联协议跨网络传送过来的参数,并将这些参数解包,发送给对象实现p负责将对象实现响应客户机的请求后的输出参数、返回值等,以同样的打包/解包方式,传回给客户机O
9、RBORB内核和内核和ORBORB接口接口pORB内核内核提供了对象的通用表示和对象间通信的机制。客户提供了对象的通用表示和对象间通信的机制。客户和对象实现通过和对象实现通过ORB接口的形式访问接口的形式访问ORB内核提供的功能内核提供的功能pORB接口接口是客户与对象实现可以直接访问到的、抽象描述是客户与对象实现可以直接访问到的、抽象描述ORB操作的接口,操作的接口,ORB接口由接口由ORB内核实现,它不倚赖于任内核实现,它不倚赖于任何的对象适配器,何的对象适配器,ORB接口主要包括:接口主要包括:pORB初始化(初始化(ORB-init)p获取初始对象引用获取初始对象引用p对象引用操作对象
10、引用操作p策略域的管理策略域的管理p线程有关的操作线程有关的操作ORBORB的实现方式的实现方式p 位于客户和对象实现内部的ORBp 基于服务器的ORBp基于系统的ORB ORBORB的对象适配器的对象适配器OAOApOA是对象实现访问ORB所提供服务的主要方式,由于对象实现方式不同,ORB内核很难为所有对象提供方便有效的单一接口,通过OA,ORB可以定制接口,为一组特定的对象实现提供服务,OA负责的主要功能有:生成和解释对象引用,方法调用、注册、激活和冻结对象实现,将对象引用映射到相应的对象实现pBOA(基本对象适配器)着重CORBA服务器实现pPOA(可移植对象适配器)规约将CORBA对象
11、定义为具有标识、接口和实现的抽象实体,负责把CORBA对象概念适配为编程语言的服务体(Servant)概念,允许编程人员构造可移植的对象实现pORB通过对象适配器提供的服务通常包括p生成和解释对象引用p方法调用p交互的安全性p对象和实现的激活及冻结p将对象引用映射到实现p注册实现p对象粒度、寿命、策略、实现风格等的明显区别 使得 ORB核心很难为所有对象提供方便和有效的单一接口p通过对象适配器ORB可以将一组特定的对象实现作为目标对象适配器的作用对象适配器的作用ORBORB的接口仓库和实现仓库的接口仓库和实现仓库p接口仓库(Interface Repository: IR)是储存、发布、管理相
12、关对象接口定义的集合,通常以IDL文件作为输入,将接口描述信息经过处理后存放在文件、数据库或者其它形式的存储机制中,并提供一组标准的调用接口供运行时动态查询p实现仓库包含了允许ORB激活和定位对象实现的信息,一般来说,对象实现的安装和与对象实现的激活及执行有关的策略控制都是通过实现仓库上的操作完成的客户桩和实现骨架客户桩和实现骨架p客户桩又称为IDL Stubs,是由IDL编译程序根据IDL文件生成的,与编程语言相关的客户端代码段,客户桩向客户提供一个因接口而异的APIp实现骨架又称为IDL Skeleton,是由IDL编译程序根据IDL文件生成的,与编程语言相关的服务器端代码框架,实现骨架提
13、供将对象适配器转发的请求调度到对象实现上的代码动态激活接口动态激活接口DIIDII和动态骨架接口和动态骨架接口DSIDSIpDII(Dynamic Invocation Interface)是一种允许动态创建和激活对CORBA对象请求的客户端接口,根据客户代码提供的要调用的对象、要执行的操作、操作的参数集和参数类型等信息(其中包括从接口仓库中获得的各种动态信息),在运行时动态创建和激活对对象的请求pDSI(Dynamic Skeleton Interface)是一种允许将请求在运行时从对象适配器动态提交给对象实现的接口。DSI要求实现代码必须向ORB提供所有操作参数的描述,ORB则提供输入参数
14、的值,以便在执行操作时使用,在执行操作后,实现代码向ORB提供输出参数的值或者异常CORBACORBA请求发送和响应的方法请求发送和响应的方法u客户机与远程对象发送和接受请求的方法主要有两种:静态方法和动态方法,静态方法更为普遍u静态方法要求在编译时已知所有的IDL接口,由IDL编译程序生成客户端的桩代码和服务器端的骨架代码,并分别链接到客户机程序和对象实现中u对于动态方法,在编译时客户机和服务器端程序都不知道IDL接口。运行时,客户端使用DII(动态激活接口)向对象实现发出请求,服务器端对象适配器使用DSI(动态骨架接口)访问对象实现,两者之间的接口信息从ORB接口仓库中动态获取ORBORB
15、通信协议模型通信协议模型Client StubORBClientServer-objectServer-objectServer SkeletonServer SkeletonORB(Java)ORB(C+)IIOPIIOPCORBA构件模型构件模型的产生构件模型的产生p CORBA 3.0首次提出了构件模型,扩充了CORBA的对象模型p CORBA构件模型(CORBA Component Model: CCM)是一种用来构建和部署CORBA应用程序的服务器端构件模型,其设计思想比较类似于EJB,大量的代码生成以及系统功能的实现由容器提供者而不是应用程序自己来完成p CCM的体系结构主要包含:
16、抽象构件模型,构件实现框架( Component Implementation Framework : CIF),构件的包装、组织和部署,构件容器框架等抽象构件模型(抽象构件模型(1 1)uCCM抽象构件模型定义了服务器端构件及其交互抽象构件模型定义了服务器端构件及其交互构件构件插座插座(uses)事件接收器事件接收器(consumes)事件源事件源(publishes, emits)构件接口构件接口(supports)呈面呈面(provides)属性属性(1)构件接口唯一标识了构件的实例,客户可通过对构件接口的引用来调用构件的操作,支持一个或多个接口例:例: interface A,B; /
17、Forward declaration component Foo supports A,B / definition of equivalent interface / and its supported interfaces provides W,X,Y,Z; / Facets (provided interfaces. ) /other component definitions ; 抽象构件模型(抽象构件模型(2 2)(2)呈面标识构件向客户提供的可访问的功能接口,上例中,呈面W,X,Y,Z标识构件提供的W,X,Y,Z接口(3)插座(receptacles)是构件之间连接(connec
18、tion)的描述模型。IDL中的关键字“uses”用于定义构件与要连接的接口之间的关系,如: Checkout ; component ShoppingCart uses Checkout the_checkout; 抽象构件模型(抽象构件模型(3 3)(4)事件接收器( event sink )和事件源( event source ) CCM支持发布/订阅事件模型,属于推(push)模型,事件使用者(consumer, 或称为事件接收器)先订阅(subscribe)某类事件,此后,事件产生者(supplier, 或称为事件源) 把事件推给使用者 作为事件源的构件产生事件的方式有两种: (1)
19、发布(publishes)方式:在产生事件的构件与任一接收者之间建立专门通道 (2)广播(emits)方式:利用多个产生者共享的通道广播事件 构件也可能接收别的构件产生的事件,用关键字”consumes”说明抽象构件模型(抽象构件模型(4 4)(5)属性主要用于构件部署(6)构件实例是由Home来管理,一个Home管理某一类构件的所有实例. Home要求所有的实例在一处生成,从而有效管理其生命周期,这是工厂设计模式的典型应用抽象构件模型(抽象构件模型(5 5)构件的容器框架构件的容器框架p 容器提供服务方的运行环境,CORBA构件使用一个容器来实现对系统服务的访问CORBA 构构件内部接口件内
20、部接口POA回调接口回调接口容器容器外部外部接口接口构件构件HomeCORBA 构构件内部接口件内部接口POA回调接口回调接口容器容器外部外部接口接口构件构件HomeORB事务事务安全安全持久状态持久状态通知通知CORBA构件接口p为了使客户能够准确、方便地访问服务,服务的提供者必须对自身进行准确的描述,并以一定的方式提供给客户 接口的定义是必须的接口的必要性接口的必要性p模块(Module)通常由p接口(Interface)和p实现(Implementation)两部分组成p模块接口刻画了各个模块是如何耦合的p模块的实现部分是各个模块的内部事务模块是什么?模块是什么?其它模块其它模块的设计者
21、的设计者和使用者和使用者需要知道需要知道其它模块其它模块的设计者的设计者和使用者和使用者不需要知不需要知道道p功能性描述u是对接口中各个操作调用方式的描述,分为对输入和输出两个部分的描述p约束性描述u是对功能以外特征的描述,不仅包括异常处理、执行语义等简单内容,还包括行为特征和同步特征接口包含的具体内容接口包含的具体内容以描述结构化程序的功能为主(如RPC-IDL,微软的-IDL)以描述对象的功能为主(如CORBA的IDL)以描述服务为主(如web service的WSDL服务描述语言)几种接口定义语言几种接口定义语言为什么需要为什么需要IDL?IDLSmalltalkCobolJavaAda
22、-95C+CIDL可转换为多种编程语言,用其它语言实现可转换为多种编程语言,用其它语言实现IDLidl2javaIdl2c+Client stubServer skeletonClient stubServer skeletonIDL IDL 编译器编译器CORBA库库CORBA库库本地代理本地代理 目标对象目标对象存根代码存根代码XXXC.XXXXC.X框架代码框架代码XXXS.XXXXS.X客户程序客户程序服务器程序服务器程序客户程序像客户程序像访问本地对访问本地对象一样访问象一样访问远程对象远程对象保存保存接口接口把对象接口映把对象接口映射成某种语言射成某种语言pIDL的任何基本类型映射
23、到特定语言中时保持其size不变,但可能改变其标识范围(Range)pIDL自定义类型包括对特殊类型的重命名和复杂类型的定义,复杂类型包括pEnumerationpStructurepUnionpSequenceparrayIDLIDL的数据类型的数据类型p类似于C+中枚举类型的定义方式:enum Color red, green, blue, black, orange;pIDL不定义枚举类型中各个成员的特定序号,只定义一种对比关系(序号由左向右增加)p与C+不同,IDL不允许控制枚举成员的序号,比如: enum Color red=0, green=7; /不合法定义p枚举类型表示一个闭包
24、的命名空间,任何枚举成员不能重复出现在多个枚举类型中 enum InteriorColor white, blue, grey ; enum ExteriorColor yellow, blue, green ; / 不合法p不允许定义空的枚举类型IDLIDL数据类型数据类型-Enumeration-Enumerationp结构中通常包含一个或多个任意类型的成员,包括用户自定义的复杂类型 struct TimeofDay short hour; short minute; short second; ;p结构允许嵌套定义 struct Outer struct FirstNested long
25、 first; long second; firstS; struct SecondNested long first; long second; secondS; ;IDLIDL数据类型数据类型-Structure-StructurepIDL联合类型完全不同于C+中的联合 union ColorCount switch (Color) case red: case green: case blue: unsigned long num_in_stock; case black: float discount; default: string order_details; ;p联合中的成员类型
26、可以是任意类型,包括用户定义的复杂类型,而鉴别器类型必须是整型(char, short, long, boolean, enum)IDLIDL数据类型数据类型-Union-Unionpdefault在联合类型中是一个可选项,不过,只要它存在于联合类型中,就必须要代替一种特定的情况(其它情况均不成立),该情况不能为空,否则是不合法的 union U switch (boolean) case FALSE: long count; case TRUE: string message; default: / Illegal, default case cannot happen float cost
27、; ;IDLIDL数据类型数据类型-Union-UnionpIDL支持一维和多维数组 typedef Color ColorVector10; typedef string IDtable1020;p数组必须用typedef关键字定义,每一维元素个数必须明确定义 typedef string IDtable20; / ErrorIDLIDL数据类型数据类型-Array-Arrayp序列是IDL特有的特殊数据类型,其本质是变长数组,可包含任意类型元素,可以是有界的或无界的 typedef sequence Colors; typedef sequence Numbers; p序列是可空的IDLI
28、DL数据类型数据类型-Sequence-Sequencetypedef unsigned long PhoneNumber;typedef string GuestName, Address;enum ChargeCard MasterCard, Visa, AmericanExpress;struct GuestRecord GuestName name;Address address;PhoneNumber number;ChargeCard card_kind;unsigned long card_number, expiration;typedef sequence GuestList
29、;IDLIDL类型定义示例类型定义示例typedef struct Employeestruct string name;Address address;unsigned long social_security_number; Employee;typedef EmployeeRecord Employee100;enum PersonKind A_GUEST, AN_EMPLOYEE,AN_OTHER;union Person switch (PersonKind) case A_GUEST:GuestRecord guest_record;case AN_EMPLOYEEEmployee
30、Record employee_record;default: string description;IDLIDL类型定义示例(续)类型定义示例(续)接口通过interface关键字来定义 interface Calculator short add(in short s1, in short s2); short sub(in short s1, in short s2); short mul(in short s1, in short s2); short div(in short s1, in short s2);IDL接口定义了分布对象对外表现的细节,每个IDL接口定义了一个新对象类型
31、对接口的访问通过调用接口内定义的操作来实现,操作是接口的核心,是服务请求的入口点接口清晰地划分了服务实现与客户之间的边界IDL 接口接口 (Interface)p接口中定义的所有内容都具有public属性pIDL接口中不包含成员变量,客户端所有的请求均通过调用接口中的相关操作来实现p每个CORBA对象只对应一个接口,而每个接口则对应于若干CORBA对象p换句话说:IDL接口对应于C+类的定义,而CORBA对象则对应于 C+类的实例IDL 接口接口 (Interface)pIDL接口组成一个名字空间p接口中可以嵌套其它的定义,如pConstant definition 常量定义pType def
32、inition 类型定义pException definition 异常定义pAttribute definition 属性定义pOperation definition 操作定义p接口不支持嵌套定义接口的语法接口的语法interface Haystack exception NotFound unsigned long num_straws_searched; ; /异常定义异常定义 const unsigned long MAX_LENGTH = 10; /常量定义常量定义 readonly attribute unsigned long num_straws; /属性定义属性定义 typ
33、edef long Needle; /类型定义类型定义 typedef string Straw; void add(in Straw s); /操作定义操作定义 boolean remove(in Straw s); void find(in Needle n) raises(NotFound); ;接口的语法接口的语法u操作定义必须包括:操作定义必须包括:返回值类型返回值类型(非匿名类型);(非匿名类型);操作名字操作名字(不可重载);(不可重载);零个或多个参数声明零个或多个参数声明。操作不区分读写操作。操作不区分读写操作u例如:例如: interface simple void op(
34、); /注意:注意:void op(void)是错误的是错误的 /同样:同样:op();也是错误的也是错误的 ;u接口例子接口例子 :interface Primes typedef unsigned long prime; prime next_prime(in long n); void next_prime2(in long n, out prime p); void next_prime3(inout long n); ; u其中in表示从Client-Server; out表示从Server-ClientIDL 操作操作p操作签名操作签名(Signature)的一般形式为:的一般形式
35、为: oneway (param1,.,paramL)raises(except1,.,exceptN) context(name1,., nameM)p其中:其中:pOneway表示该操作为异步操作,表示该操作为异步操作,操作机制类似于UDP数据报通信,是一种不可靠的信息传输机制:返回类型必须为void;不包含out参数或inout参数;不包含raise表达式p 是返回结果的类型是返回结果的类型p为接口中的操作提供名称为接口中的操作提供名称praises指示可能引发的异常处理指示可能引发的异常处理pcontext指示有效的请求环境信息指示有效的请求环境信息IDL 操作(续)操作(续)pCOR
36、BA保证发出请求的客户总是可以接收到一个成功的返回或者一个异常p异常被分为两类:用户自定义异常和系统异常, IDL定义了29个系统异常,具有不同的名字,但共用同一个异常体p异常的声明类似于IDL结构类型exception CardExpired string expiration_date; ;exception CreditLimitExceeded unsigned long credit_limit; ;exception CardReportedStolen string reporting_instructions;unsigned long hotline_phone_number
37、; ;IDL 异常异常 (Exceptions)pIDL接口可定义公共属性,属性可以是只读的(Read-only)或者可读写的(read-write),属性定义不包含raise表达式p只读属性代表一个基本操作,可进行读操作p可读写属性代表一对基本操作,可进行读写操作IDL属性属性pinterface Thermostat readonly attribute short temperature; attribute short nominal_temp; ;p在语义上等价于:interface Thermostat short get_temperature(); short get_nomi
38、nal_temp(); void set_nominal_temp(in short t); ;p模块是为IDL定义、创建、分离名字的空间,防止不同模块中标识之间的冲突p模块可以嵌套;CORBAServices对模块进行了扩充,每个服务定义一个或多个模块p模块内的名字可通过如下方式引用:pPart:Assembly:ComponentWidgetIDL模块模块 (Modules)module Part typedef Assembly:Widget PartWidget; module ComponentPart typedef PartWidget ComponentWidget; ;IDL
39、IDL模块定义的主要内容模块定义的主要内容常量常量类型类型异常异常接口接口模块模块常量常量类型类型异常异常操作操作属性属性CORBA应用开发典型的典型的CORBACORBA应用开发过程应用开发过程IDLIDLCompileIDLCompile客户机客户机服务器服务器ORB库客户机桩ORB库服务器骨架客户机程序开发者服务器程序开发者使用静态调用的使用静态调用的CORBACORBA应用开发过程应用开发过程IDL Fileidl2javaidl2cppidl2java客户桩骨架Java CompileJava CompileC+ Compile客户程序对象实现Client ProgramObject
40、 ImplementORB内核StubSkeleton客户端和服务器端使用同一开发环境客户端和服务器端使用同一开发环境客户端和服务器端使用不同开发环境客户端和服务器端使用不同开发环境pIONA 公司的Orbix:Orbix 是全球范围内部署最广泛的企业 CORBA 解决方案(企业版/标准版/大型主机版),为全球规模最大要求最高的面向服务的体系结构 (SOA) 提供了基础结构pInprise 公司的visibroker:提供visibroker for java,visibroker for dephi,visibroker for c+ 三个版本 ,主要实现了CORBA中的ORB核心技术,同时
41、又为CORBA提供了一些扩充功能pDigital 公司的ObjectBroker:.NET平台一款开源O/R映射框架pIBM公司的ComponentBrokerpOOC公司的OminiBrokerORBORB产品产品一个简单的一个简单的CORBA应用开发(自学)应用开发(自学)p例:网格对象调用,客户远程调用服务器网格对象Grid Object的get()和set()操作,开发环境为C+编程语言网格对象网格对象客户机客户机服务器服务器widthheightget(row,col)set(row,col,value用用IDL定义接口定义接口/grid.idlinterface Grid read
42、only attribute short height; readonly attribute short width; void set(in short row, in short col, in long value); void get(in short row, in short col, out short value);编译编译IDL文件文件grid.idl客户机客户机服务器服务器Grid.idlgridC.cc客户机桩客户机桩ORB客户机库客户机库gridS.cc服务器骨架服务器骨架ORB服务器库服务器库Grid.hh公用的说明公用的说明/grid.hhclass Grid :
43、 public virtual CORBA : Object public: static Grid_ptr_bind(); virtual CORBA : Short height(CORBA : Environment&); virtual CORBA : Short width(CORBA : Environment&); virtual void set(CORBA : Short row, CORBA : Short col, CORBA : Long value, CORBA : Environment&); virtual void get(CORBA : Short row, CORBA : Short col, CORBA : Environment&);编译编译grid.idl生成的文件生成的文件/用C+语言定义对象实现Grid_i#include “grid.hh”class
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宁波市鄞州区属国有企业面向应届高校毕业生公开招聘企业人才37人备考题库及答案详解参考
- 2025年广东外语外贸大学新塘实验学校第三方教师招聘备考题库(含答案详解)
- 2025年天津市双菱中学招聘教师23人备考题库及答案详解(考点梳理)
- 沧州市中心医院2026年度高层次人才选聘170人备考题库及一套完整答案详解
- 2025年凭祥国家重点开发开放试验区管理委员会招聘工作人员备考题库及答案详解参考
- 2025年金华海关综合技术服务中心招聘备考题库及一套参考答案详解
- 2026年福安市教育局下属学校公开招聘紧缺急需人才19人备考题库附答案详解
- 2025年温岭市中医院公开招聘编外员工备考题库带答案详解
- 宁波市镇海中学(含甬江校区)2026年教师招聘14人备考题库完整答案详解
- 2026年苏州幼儿师范高等专科学校公开招聘专任教师及专职辅导员6人备考题库有答案详解
- 办公室员工绩效考核评分细则
- 厘米和米的换算及应用
- 2025年11月1日安徽省直遴选面试真题及解析
- GB/T 9722-2023化学试剂气相色谱法通则
- GB/T 9944-2025不锈钢丝绳
- 2025高考历史小论文10种题型范文
- 2025版煤矿安全规程宣贯培训课件
- 鱼腥草种植课件
- 2025年城市垃圾转运站运营成本分析初步设计评估报告
- 公路定额管理办法
- 幼儿园教师培训:打击乐教学
评论
0/150
提交评论