版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、web服务技术标准与规范第十讲web 服务技术标准与规范所谓 web 服务(web services)是指由企业发布的完成其特别商务需求的在线应用服务, 其它公司或应用软件能够通过 internet 来访问并使用这项在 线服务 。 web 服务 技术促进了internet 上企业之间的协作,使用 web 服务可以使合作伙伴的信息系统之间更容易地进行通信。但随之而来的问题是: 如何集成来自不同企业的服务?为了使 web 服务易于使用,众多组织已经致力于 web 服务技术,进行标准协议的制定,提供 web 服务的创建工具和解决方案。本讲将以 web 服务栈为中心介绍web 服务技术涉及的一些关键标
2、准和规范,如 soap、 wsdl 、uddi 等。web 服务标准本身是不断发展变化的,文中着重介绍目前被普遍接受的底层标准,并对还需要进行标准化的领域进行简单的讨论。1web 服务web 服务是可以在组织内部或者公司之间的异构计算资源中被共享、 组合、使用和复用的商业资产。 web 服务是一个可编程的部件,它提2供一种易于通过 internet 获取的商业服务。 web 服务可以是独立的, 也可以连接在一起向外部世界提供更强大的系统功能。web 服务将逐渐成为构建电子商务应用的基础体系结构。基于 web 服务的体系结构是从一个分布式面向对象部件的系统向一个服务网络的逻辑演进,该服务网络提供
3、一个能够跨企业集成的松散耦合的底层基础结构。web 服务是基于 internet 的模块化应用,它们执行特定的商业任务并遵循特定的技术格式。如果应用中的某过程可以在 internet 上以一种标准格式被调用,称之为 web 服务的服务器;类似的,如果通过 internet 调用本应用以外的某过程,则是 web 服务的客户。因此,实质上web 服务是 internet 上应用之间的客户服务器,目的是实现 b2b 伙伴之间的个性化信息交换,并以一种易用的格式提供和发布应用模块。 为了实现这种开放工作,必须要有标准的格式和方法。几乎所有的主流技术公司都已相继涉足 web 服务的标准化工作, 参与了各
4、种标准化组织。 当前,最主要的标准化组织是 w3c (world wide3web consortium )。其它组织也做了大量的工作,如 uddi.org , oasis , un/cefact , bpmi.org ,以及 ebxml.org 等。web服务栈( web services stack)web 服务不同于已有的构件对象模型以及相关的对象模型协议,如 corba 和 iiop(internetinter-orb protocol )、com 和 dcom 以及 java和 rmi (remote method invocation )。 web服务可以用任何语言编写, 并且可以
5、使用 http 访问。从技术上看,一个 web 服务是一个由内容、应用代码、过程逻辑、或者这些部分的任意组合所构成的 xml 对象,并且可以通过任何tcp/ip 网络访问,只要网络中使用 soap 标准集成,使用 wsdl 标准进行自描述, 使用 uddi 标准在一个公共的或者私有的目录中注册和发现。如图 1 所示,web 服务由多个层构成,这些层堆叠在一起形成了发现和调用一个独立的web 服务所提供功能的标准机制的基础。即,web 服务栈以层次结构来表示,高层在低层的基础之上构建。4uddi服务 发web 服务 &服务 描soap/x基 于xmlhttp/http网 络图 1 web 服 务
6、 栈图中 http 提供了分布式应用之间的通信机制,xml 定义了数据交换和描述的格式, soap 是调用 web 服务的协议, wsdl 描述 web 服务的格式,而 uddi 则是注册、查找和使用 web 服务的中枢组织。 下面分别介绍这些协议及相关的规范。2 httpweb 服务栈中的最底层是网络层,也可以称为协议层。分布式的应用需要有网络协议来定义两个并发过程之间的通信机制。概念上, web 服务的设计是与协议无关的, 在图 1 的分层体系结构模型中,从底向上任何标准的 internet 协议都可以用于在网络上调用 web 服务。但目前主5要是 http (hypertext tran
7、sport protocol)和https (hypertext transport protocol secure)协议 。http/1.1 是一个基于文本的、 “请求响应”( request-response)型的协议,它规定一个客户打开到服务器的一个连接, 然后以专门的格式发送一个请求, 服务器进行响应, 同时如果必要则保持连接的打开状态。 http 使用的普遍性及其固有的穿防火墙的能力使它成为主导的 web 服务网络协议。但同时由于 http 是基于文本的协议而缺乏表示远程过程调用 (rpc )消息参数值的机制。其它的请求 /响应类型的传输协议,如文件传输协议( file transf
8、er protocol ,ftp )和简单邮件协议( simple mail transport protocol , smtp )也可以使用,但是并没有在 web 服务的各种标准中定义, 目前也只有极少数实现支持这些协议。另外,最近 ibm 发布了一个可靠通信协议的提案,称作 httpr 。httpr 在 http 的基础上加强了可靠性,在保持 http 优点的同时能够保证消息可以不受阻碍地发送到目的地。 可靠的通信对 web 服务来说是一个非常关键的方6面,虽然目前对由协议层实现是否最适合仍然有争议,但在不远的将来它肯定会以某种形式出现。3xml (extensible markup la
9、nguage,可扩展标记语言)基于 xml 的消息层包括数据表示、 数据格式和消息传输协议。 xml 为信息交换定义了描述和格式。数据表示http 是一种基于文本的协议, 因而缺乏表示rpc 消息中的参数值的机制, 这也是 xml 作为web 服务的一个重要成分出现的原因。xml 是一种元语言,可以通过标准的编码和格式化信息的方法进行跨平台的数据交换。xml允许数据被串行化为易于被任何平台解码的消息格式,提供了在网络应用之间交换结构化数据的机制。xml采用纯文本表示, 设计的初衷是为了存储、传送和交换数据的。xml 是一种标记语言,标记在 xml 中不是预先确定的,而必须由使用者自己定义。 x
10、ml 允许使用者自由发表有用的信息, 不仅可以是有关数据结构的, 也可以是关于数据意义的。 另外, xml 文档的结构、内容和外观可以作为三个不同的部分进行维护,提供了更高的独立性。对于数据表示层来说, 可扩展性是一个关键因素。为了支持可扩展性, web 服务需要一种机制以避免名字冲突, 并允许一个程序只处理自己所关心的元素。 xml 名空间( namespaces)提7供了一种简单、通用的方式以区分相同名字的元素或属性。为了支持可扩展性, xml 中的每个元素和属性都有一个相关的名空间 uri 。数据格式web 服务需要一种方法定义 web 服务消息中使用的数据类型。 xml schema
11、规范标准化了一个描述 xml 数据类型的符号集, 还定义了一个内置简单数据类型的集合和在各 xml 文档中建立元素类型的机制。 xml schema 规定了 xml 文档的逻辑结构,定义了元素、元素属性以及元素和元素属性之间的关系。xml 仍然处于不断的发展中。 需要说明的是, xml 本身只是一种标记语言,只是进行描述,并不提供商务逻辑,web 服务提供对这些逻辑的访问。这也是为什么 web 服务的更高层的、基于xml概念同样非常重要的原因。4soap (simple object access protocol,简单对象访问协议)soap 是目前被广泛接受的消息传输协议。 soap 是一个
12、为信息交换设计的轻量协议, 用于在网络应用程序之间交换结构化数据, 是一种基于 xml 的机制。 soap 主要是在分布的、分散的环境中提供了一个跨 internet 调用服务的框架结构,并提供了独立于编程语言和分布对象底8层基础结构的跨平台集成机制。 soap 代表了 xml-rpc 的发展,已经被 w3c 作为一种 internet 标准采纳。soap 是一个远程过程调用( rpc)协议,使用标准的 internet 协议进行传输:同步调用时的http 或异步调用时的 smtp 。由于可以在 http 上运行,这使得 soap 在穿防火墙进行操作的方面优于 dcom 、rmi 和 iiop
13、 ,而在嵌入设备上实现 soap 也比开发一个 orb 更简单。soap 的主要设计目标是简单性和可扩充性。为了到达这两个目标, soap 中省略了在其它消息系统和分布式对象系统中常见的一些特性, 如无用存储单元收集、消息批处理等。soap 没有定义一种编程模型或实现, 而是定义了一个模块化的包装模型, 并在模块内定义了编码数据的编码机制。 这使得 soap 可以在从消息传递系统到远程过程调用的任何系统中应用。soap的组成soap 由四个部分组成:( 1)一个 soap 封皮( envelope),定义了描述消息所包含信息的框架结构, 即消息中包含什么信息、由谁来处理以及是必需的或可选的。9
14、( 2)一组 soap 编码规则(encoding rules ),定义了一个串行化机制, 用于交换应用定义的数据类型的实例。 soap 编码的类型使用简单的标量类型和复合类型, 如结构和数组。 这些类型以xml 文档元素的形式表现, xml schema 规范中定义的数据类型以及这些数据类型的派生类型都可以直接用作 soap 元素。( 3)soap rpc 表示,定义如何表示远程过程调用和响应。 soap 的设计目标之一是用xml 的可扩展性和灵活性封装 rpc 功能,在 soap1.2 中详细定义了 rpc 和响应的统一表示,将对一个方法的调用和响应作为结构来建模,结构中包含了返回值, 或
15、者还可能包括传入的参数。( 4)soap 绑定( binding ),定义如何使用底层传输协议进行 soap 消息的交换。虽然soap 本身 可以 和 多 种 协议 结合 使用 ,但 soap1.2 中只描述了在 http 中的使用。soap和 http 绑定可以同时使用 soap 的形式方法与分散的灵活性以及 http 丰富的特性集。在http 中使用 soap 并不意味着 soap 覆盖了10http 现有的语义,而是soap 继承了 http的语义。soap消息soap 消息是用 xml 编码的文档,由三个部分组成:( 1)soap 封皮( soap envelope ),是描述 soa
16、p 消息的 xml 文档的顶点元素。( 2)soap 消息头( soap header ),提供了一种灵活的机制对 soap 消息以分散的、模块化的方式进行扩充,而通信的各方( soap 发送者,soap 接收者以及 soap 中介)不必预先知道。 soap 消息头是可选的。( 3)soap 消息体( soap body ),定义了一个简单的机制来交换要发送给最终 soap 接收者的消息中的必要信息,是这些信息的容器。典型的使用是编组 rpc 调用和 soap 错误报告。soap消息交换模型soap 消息是单方向的,从一个soap发送者( sender )到一个soap接收者(receiver
17、 )。但单独的消息通常可以被组合在一起形成其它消息机制。例如,soap通过在 http 请求中提供一个soap 请求消息11和在 http 响应中提供一个 soap 响应消息实现 http 的请求 /响应消息模型。soap 消息交换模型要求接收到一个 soap 消息的应用程序执行下列操作:( 1)识别 soap 消息中意图供给本应用的部分,本应用可以作为 soap 中介将消息的其它部分传递给另外的应用。( 2)检验 soap 消息中指定的所有必须处理的部分,并进行相应的处理。( 3)如果 soap 应用不是消息的最终目的地,它应该在删除所有自己消耗的部分后将消息转发给消息要供给的下一个应用。s
18、oap 只是一种包装和绑定调用一个web 服务所需信息的方式, web 服务也可以使用其它的编码技术调用。另外, soap 本身没有严格地归入 web 服务, soap 可以作为一种对任何类型的远程对象或过程的访问机制使用, 也可以只是一个简单的消息传递机制。除了 soap 以外,w3c 创建的 xmlp 工作组还 建 立 了xml协 议 ( extensiblemarkuplanguage protocol ,xmlp )。xmlp 是类似于 soap 的 xml 消息协议,包括封皮、对象串行12化方式、http 传输绑定以及进行远程过程调用的方式几个部分。甚至有人认为 xmlp 将逐步取代
19、 soap。5wsdl ( web services description language,web 服务描述语言)web 服务的目标之一是允许应用程序以标准的方式在两个或多个同等的服务之间进行选择,因为有时应用可以由作为支持网络的服务而实现的构件构造而成, 甚至可以从这些服务中进行动态选择。服务描述层定义了为程序提供足够信息所需的描述机制, 使程序能够根据一定的准则选择服务,如服务的质量、安全性、可靠性等。到 web 服务的接口由基于 xml 的 wsdl 定义,它提供了应用访问指定的 web 服务所必需的全部信息, 描述服务提供了什么功能、 服务位于何处以及服务如何调用。wsdl 以 x
20、ml 格式描述网络服务, 将服务描述为在包含面向过程或面向文档信息的消息上进行操作的一组端点。操作和消息是抽象描述的,然后绑定到具体的网络协议和消息格式以定义一个端点。相关的具体端点被组合成为抽象端点(服务)。 wsdl 是可扩展的,允许描述任13何端点和消息,而不考虑通信使用的消息格式或网络协议。wsdl 使用下面的元素定义网络服务:类型(types),使用某种类型系统的数据类型定义的容器。wsdl 并没有引入新的类型定义语言,而将 xsd 作为自己的标准类型系统,并允许通过可扩展性使用其它的类型定义语言。消息( message),对要传送的数据的一个抽象定义。操作(operation ),
21、对服务支持的动作的抽象描述。端口类型( port type ),一个或多个端点支持的操作的一个抽象集合。绑定(binding ),对特定端口类型的一个具体协议和数据格式规格。端口( port ),一个单独的端点,由一个绑定和一个网络地址组合在一起定义。服务( service),一组相关的端点的集合。一个 web 服务由一组端口定义,而端口由绑定到一个具体协议和数据格式规范的一组抽象操作和消息定义。 操作和消息的抽象是为了使它14们可以复用和绑定到不同的协议和数据格式, 如soap、 http get/post 或 mime 。在 wsdl 中,端点和消息的抽象定义是和它们的具体网络配置和数据格
22、式绑定相分离的; 另外,wsdl 定义了一个公共的绑定机制, 用于将特定的协议或数据格式或结构连接到抽象的消息、操作或端点,这些都允许对抽象定义的复用。wsdl 目前已经被广泛支持,但还不是w3c推荐的标准语言。6uddi ( universal description , discovery ,and integration ,统一描述、发现和集成)面对极度丰富的服务, 最常出现的问题是 “在哪里以及如何找到需要的信息?”。统一 uddi 规范在底层协议的基础上又定义了一层, 在这一层,不同的企业能够以相同的方式描述自己提供的服务和查询对方提供的服务。uddi 是一套基于 web 的、分布式
23、的、为 web服务提供的信息注册中心的实现标准规范, 同时也包含一组使企业能将自身提供的 web 服务注册以使别的企业能够发现的访问协议的实现标准。15信息结构uddi 为表示 xml 中商业服务描述定义了一个数据结构标准, 提供了更高层次的商业信息以补充 wsdl 中的说明。 uddi 定义了四种基本的结构:商业实体(business entity ),描述商业信息,如名称、类型等。商业服务(business service),已发布的 web 服务的集合。绑定模板( binding template ),访问信息,如 url 。技术规范( tmodel ),对服务类型的技术规格说明,如接口
24、定义、消息格式、消息协议、安全协议等。服务发布和发现在进行一个 web 服务调用之前,必须先找到具有所需服务的企业, 发现调用接口和语义, 然后编写或配置自己的软件以便与服务合作。uddi 的核心部件是 uddi 商业注册,它用一个xml文档来描述企业及其提供的web 服务。uddi商业注册是一个基于soap 的 web 服16务,提供企业用于将它们的服务发布到注册中心的接口。注册中心是分布式的, 彼此之间不断进行复制操作。web 服务基本上是机器到机器的通信,为了有效工作,这种体系结构必须具有进行基于 web 的应用和业务过程集成的有效工具。 uddi 商业注册中心包含三类信息, 企业可以通
25、过这些信息发现一个 web 服务。白页,包括企业的名称、地址、联系方式和企业标识,并允许其它公司按照名称查找目录。黄页,包括基于标准分类法的行业类别。绿页,包括了关于该企业所提供的web 服务的技术信息,其形式可能是一些指向文件或url 的指针,而这些文件或 url 是为服务发现机制服务的。绿页还允许注册的公司之间使用xml进行连接,提供了业务过程自动化的关键机制。编程接口uddi 规范提供了编程接口, 允许商业注册一个 web 服务,以及查找指定 web 服务的注册。一旦想要的 web 服务被确定,将提供一个指向wsdl 文档所在位置的指针。编程接口分为查询17api 和发布 api 两个逻
26、辑部分。查询api 又分为两个部分:一部分用来构造搜索和浏览 uddi 注册信息的程序,另一部分在 web 服务出现错误时使用。发布 api 可以用来创建各种类型的工具,以直接与 uddi 注册中心进行交互, 便于企业技术人员管理发布信息。使用 uddiuddi 规范包含了对基于web 的 uddi 商业注册中心可以实施的整套共享操作。一般来说,程序或程序员通过 uddi 商业注册中心来获得 web 服务的位置及其技术信息。其中对于程序员来说,是对自己的系统实现准备, 以使自己的系统能和那些 web 服务实现访问兼容,或是描述自己的 web 服务从而能让别人使用。从商业层次上来说, uddi
27、商业注册中心可以被用于核查某个合作伙伴是否拥有特定的 web 服务的调用接口,或是找出在某行业中能提供某种类型服务的公司,并确定某合作伙伴的 web 服务的技术描述及交互时所需的技术细节。uddi 是完全可选的,也就是说,具有 web 服务的公司,如果只是想对有限的人员或设备提供特定功能,它们不需要对外发布它们的服务。18其它标准除了 uddi 以外,服务发现层还有其它一些标准。如由 microsoft 开发的 disco(discovery ofweb services)规范。 disco定义了一个基于xml 的发现文档格式和一个检索该发现文档的协议。 disco 允许开发人员通过一个 ht
28、tpget 操作发现服务。使用发现文档格式,可以将一个发现文档发送到一台远程服务器, 如果存在支持 soap 的 web 服务,则收回一个服务所提供的 wsdl 描述。7服务集成和工作流工作流的概念在设计电子商务应用时愈加重要。当一个企业需要集成来自多方的 web 服务并为终端用户组织这些服务时, 必须掌握其系统的过程和顺序。对于这些具有异步特征的应用,适合使用工作流引擎。要使 web 服务的实现不仅仅停留在简单的请求 /响应模式上,商业过程协作和工作流是必不可少的, 其中包括跨企业边界的 web 服务的合成与自动化。要成功进行企业间的自动化和协作的必需条件是要有一个标准化的商业协议来描述这些
29、商业过程。服务工作19流领域目前尚未形成固定的标准,有一定影响的是 wsfl 、xlang 以及 bpmi 。wsflweb 服 务流 程 语言 ( web services flow language ,wsfl )是一个描述商业过程的规范。 wsfl 提出了两种 web 服务组合的类型:一是商业过程, 一是合作伙伴交互。 商业过程作为一组为达到一个特定的商业目标而顺序执行的 web 服务建模。合作伙伴交互描述 web 服务之间如何彼此交互。 web 服务被连接在一起以表明一个 web 服务与另一个 web 服务接口的操作交互作用。xlangxlang 是 microsoft 的 bizta
30、lk 服务器使用的 xml 商业过程语言。 xlang 用于描述商业过程,这 些 过 程 在 运 行 时 由 biztalk 控 制 引 擎( orchestration engine )执行。 xlang 还允许将web 服务结合到商业过程中以及 web 服务的组合。另外, xlang 支持补偿过程。 xlang 不支持代价较高的两阶段提交协议, 而是提供了一个可供选择的开放式模型的表示方法, 其中可以为活动明确指定抵消该活动影响的补偿活动。20由于 microsoft 先前与 ibm 在 wsdl 和 uddi 上的合作,有人认为将来二者可能会向 w3c 提出将 xlang 和 wsfl
31、结合起来的提议。bpmibpmi ( business process management initiative )推进公共商业过程的标准化。这些过程可能跨多个应用、 部门或商业合作伙伴, 可能在防火墙之后或者可以通过 internet 访问。 bpmi.org 制定了一些开放规范,如 bpml 和bpql ,这使得可以对电子商务过程用即将出现的 bpms ( business process management system)进行基于标准的管理。bpml(businessprocessmodelinglanguage),是商业过程建模的元语言。bpml将商业过程定义为为了达到一个共同目标
32、在参与者和根据定义的规则集合执行的活动之间的交互作用。bpql (business process query language)是到一个过程服务器的管理接口, 允许商业分析员查询由过程服务器管理的过程实例的状态, 并控制过程实例的执行。该接口是基于 soap 的。为了过程的注册、 广告和发现, 由过程库管理的21过程模型通过 bpql 接口可以作为 uddi 服务对外提供。bpml 和 bpql 都是开放规范。8其它相关标准和领域其它许多组织在 web 服务规范的制定方面也做了大量的工作。 这里只简单介绍几种比较知名的规范。ebxmlebxml 的结构类似 web 服务栈,是在 intern
33、et 上用标准技术引导电子商务的协议和规范的一个栈。 ebxml 曾被考虑作为 web 服务的另一个选择,其时间也早于 web 服务模型。然而这两个模型之间有一些重叠, 而 ebxml 更注重 edi 方式的信息交换。一种可能的设想是 web 服务模型和 ebxml 之间的逐步合并。 un/cefact 和 oasis 最近已经采纳 soap 作为 ebxml 消息传递底层结构的基础。 w3c 也积极考虑 ebxml 规范,并将并入规范中那些满足作为标准化 web 服务体系结构的需求的方面。22jax packjax pack 是 sun 封装了 java 领域的各种标准的结果。 jax 是一
34、组 xml 的 java api ,其设计支持 web 服务标准 api ,包括 soap、 xmlp 、wsdl 和 uddi 等。jax pack 中包括的 api 如下:jaxp (java api for xml parsing ),包含sax(simple api for xml ),dom(document object model )和 xslt 。jaxb (java api for xml binding),一种将 xml 数据类型定义编译到能够将 xml 读入 java 对象并将再其写回的 java 类中的机制。jaxm ( java api for xml-based m
35、essaging),一个发送消息的基于 soap 的协议。jaxr (java api for xml registries ),一个包罗众多的规范,其中为 uddi 和 ebxml 注册及其它可能的注册提供了统一接口。jax-rpc( javaapiforxml-basedremote process communication ),一个请求远程服务器上操作的基于soap 的协议。23除了上面描述的各种规范以外, 还需要提及一些其它的重要领域,这些领域涉及 web 服务栈的所有层,其中包括安全性、管理、服务质量和事务等。在 web 服务具有转换企业商业关系的能力之前,企业需要这些额外的特性以及随之而来的附加机制、安全、身份确认、合同管理、质量控制等。其中最重要的是安全性和事务。安全性xml 密钥管理系统( xml key management system,xkms )是将 pki 和数字化证书与 xml 应用集成的结果,由 w3c xml 签名工作组开发。该领域的其它规范包括安全服务标记语言( security services markup language ,s2ml )和 authxml ,正由 oasis xml 安全服务委员会支持其统一标准化。btp事务在 web 服务中有独特的需求。在保证相关联的工作流可靠协调的同时, 事务协议必
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2020医院财务管理制度(3篇)
- 医院投资筹资管理制度汇编(3篇)
- 新冠肺炎院内管理制度(3篇)
- 施工现场美化管理制度(3篇)
- 月季的草坪养护管理制度(3篇)
- 道路公共照明用电管理制度(3篇)
- 防控疫情登记管理制度(3篇)
- 鞋厂开发部管理制度(3篇)
- 养老院入住申请制度
- 企业绩效评估与奖惩制度
- 2026届福建省宁德市三校高三上学期1月月考历史试题(含答案)
- 2026年冀教版初一地理上册期末真题试卷+解析及答案
- 2025年文化产业版权保护与运营手册
- 四川省乐山市高中高三上学期第一次调查研究考试数学试题【含答案详解】
- 物流行业运输司机安全驾驶与效率绩效评定表
- 2026年及未来5年市场数据中国脱硫市场运行态势及行业发展前景预测报告
- 中国农业科学院2026年度第一批统一公开招聘笔试考试参考试题及答案解析
- 饲料运输合同范本
- 厦门灌口中学2026届化学高二第一学期期末质量检测试题含答案
- 室外看台座椅安装施工方案
- 西藏转移就业课件
评论
0/150
提交评论