收藏 分享(赏)

web services-100PPT.ppt

上传人:kuailexingkong 文档编号:1704341 上传时间:2018-08-19 格式:PPT 页数:103 大小:2.51MB
下载 相关 举报
web services-100PPT.ppt_第1页
第1页 / 共103页
web services-100PPT.ppt_第2页
第2页 / 共103页
web services-100PPT.ppt_第3页
第3页 / 共103页
web services-100PPT.ppt_第4页
第4页 / 共103页
web services-100PPT.ppt_第5页
第5页 / 共103页
点击查看更多>>
资源描述

1、Web Service,TOC,Web Service的概念 SOAP WSDL REST vs XML-RPC vs SOAP vs DATA BINDING WS-security WS-Notification WS-Transaction 开发一个WebService XFire 1.x Axis 1.x/2.x 开发一个Web Service实例 WebService相关技术 AJAX JMS BPEL Grid SOA,需要知道的知识,XML HTTP/HTTPS SCHEMA/DTD,Web Service的概念,Web Service,Web服务(Web Service)提供了

2、一个在不同的应用和平台之间的交互操作标准。 这个交互操作通过一系列基于XML的开放标准实现,包括WSDL、SOAP和UDDI等。这些标准提供了一系列通用方法来定义、发布和使用Web Service。,Web Service的基本层次结构,基础连接: Internet,统一数据格式: XML,服务操作协议: SOAP,服务描述协议: WSDL,Simple, Open, Broad Industry Support 简单、开放、工业界广泛支持,服务发布协议: UDDI,UDDI : Universal Description Discovery and Integration WSDL: Web

3、 Service Description Language SOAP : Simple Object Access Protocol,为什么需要WebService,Data Services,Business Logic Services,Presentation Services,Data Services,Web Services,Presentation & Process Services,browser,browser,之前,之后,Client AP,Mobile Device,Legacy,SOAP & WSDL,SOAP是什么?,SOAP 是一种轻量级协议,用于在分散型、分布式

4、环境中交换结构化信息。 SOAP 利用 XML 技术定义一种可扩展的消息处理框架,它提供了一种可通过多种底层协议进行交换的消息结构。 这种框架的设计思想是要独立于任何一种特定的编程模型和其他特定实现的语义。 SOAP的概念最初来自于 Microsoft and Userland software,它已经演化了好几代; 当前最新的规范是SOAP 2.0。由W3C组织制定。,SOAP,SOAP被广泛地认为是新一代跨平台和跨语言的分布式计算机应用的基础框架。 SOAP 1.1只支持HTTP POST方式向终端提交请求。 SOAP 1.2支持HTTP POST和GET两种方式。,四个主要组成部分,SO

5、AP是一个基于XML的轻量级规范,其主要使用在分布式系统中,由下面几个部分组成: SOAP封装结构定义了一个整体框架用来表示消息中包含什么内容,谁来处理这些内容以及这些内容是可选的或是必需的。 SOAP编码规则定义了用以交换应用程序定义的数据类型的实例的一系列机制。 SOAP RPC表示定义了一个用来表示远程过程调用和应答的协定。 虽然这三个部分都作为SOAP的一部分一起描述,但它们在功能上是相交的。特别的,封装和编码规则是在不同的名域中定义的。规范定义了SOAP封装、SOAP编码规则和SOAP-RPC协定之外,这个规范还定义了SOAP和其他协议的绑定,描述了在有或没有HTTP扩展框架的情况下

6、,SOAP消息如何包含在消息中被传送。,SOAP消息结构,SOAP消息处理框架,SOAP 规范的核心部分就是消息处理框架。 SOAP 消息处理框架定义了一整套 XML 元素,用以“封装”任意 XML 消息以便在系统之间传输。 该框架包括以下核心 XML 元素: Envelope、Header、Body 和 Fault,所有这些都来自 SOAP 1.1 中的 http:/schemas.xmlsoap.org/soap/envelope/ 命名空间。 以下代码中提供了 SOAP 1.1 的完整 XML 架构定义,以供在阅读下文时参考。SOAP 1.1 XML 架构定义: SOAP.xml,SOA

7、P Envelope 的结构,SOAP Envelope 的结构,所有的SOAP消息都使用XML形式编码,一个SOAP应用程序产生的消息中,所有由SOAP定义的元素和属性中必须包括正确的域名。SOAP应用程序必须能够处理它接收到的消息中的SOAP域名,并且它可以处理没有SOAP域名的SOAP消息,就象它们有正确的名域一样。SOAP定义了两个名域:SOAP封装的名域标志符是“http:/schemas.xmlsoap.org/soap/envelope/“SOAP的编码规则的名域标志符是“http:/schemas.xmlsoap.org/soap/encoding/“,SOAP encodin

8、gStyle属性,EncodingStyle全局属性用来表示SOAP消息的序列化规则。这个属性可以在任何元素中出现,作用范围与域名声明的作用范围很相似,为这个元素的内容和它的所有没有重载此属性的子元素。SOAP消息没有定义缺省编码。属性值是一个或多个URI的顺序列表,每个URI确定了一种或多种序列化规则,用来不同程度反序列化SOAP消息,举例如下: “http:/schemas.xmlsoap.org/soap/encoding/“ “http:/my.host/encoding/restricted http:/my.host/encoding/“ “,封装版本模型,SOAP没有定义常规的基

9、于主版本号和辅版本号的版本形式。SOAP消息必须有一个封装元素与名域“http:/schemas.xmlsoap.org/soap/envelope/“关联。如果SOAP应用程序接收到的SOAP消息中的SOAP封装元素与其他的名域关联,则视为版本错误,应用程序必须丢弃这个消息。如果消息是通过HTTP之类的请求/应答协议收到的,应用程序必须回答一个SOAP VersionMismatch 错误信息。,Envelope元素,Envelope元素始终是 SOAP 消息的根元素。 这就便于应用程序识别“SOAP 消息” 只要检查一下根元素的名称即可。 通过检查 Envelope 元素的命名空间,应用程

10、序也可确定所使用的 SOAP 版本。 Envelope元素包含一个可选的 Header 元素,后跟一个必要的 Body 元素。 Body 元素代表了该消息的有效内容。 它是一种通用容器,因为它可包含来自任何命名空间的任意数量的元素。 这就是试图发送数据的最终目的地。,例子:,在银行帐户之间转帐的请求信息: request.xml 相应的响应信息: response.xml,Fault元素,该消息处理框架还定义了一个名为Fault 的元素,用于在发生错误时在 Body 元素中表示错误。 这是不可缺少的,因为如果没有一种标准的错误表示方法,每个应用程序将不得不自己创建,从而使得通用基础结构不可能区

11、分成功和失败。 以下示例 SOAP 消息中包含了一个 Fault 元素,指明在处理该请求时发生了“Insufficient Funds(资金不足)”错误:fault.xml,Fault元素,Fault 元素必须包含一个 faultcode,后跟一个 faultstring 元素。 faultcode 元素使用一种符合命名空间的名称对错误进行分类,而 faultstring 元素提供一种对错误可读的解释(类似于 HTTP 的工作方式)。 表 2 简要地说明了 SOAP 1.1 所定义的各种错误码(所有这些代码都包含在 http:/schemas.xmlsoap.org/soap/envelope

12、/ 命名空间中)。 Fault 元素也可能包含一个 detail 元素,以便提供该错误的细节,这样可以帮助客户端诊断问题,特别是在 Client 和 Server 错误码的情况下。,SOAP 1.1 错误码,VersionMismatch处理方发现 SOAP Envelope 元素的命名空间是无效的 MustUnderstand处理方没有理解或服从 SOAP Header 元素的某个直接子元素,而该子元素包含一个值为 “1” 的 SOAP mustUnderstand 属性。 Client表明消息的格式错误或者不包含适当的信息,因而不能成功。 这通常表明,如果不对该消息做出更改,就不应该重发该

13、消息。 Server表明该消息未能得到处理的原因与消息的内容并没有直接关系,而是跟该消息的处理有关。 例如,处理过程可能包括与某个上游处理器的通信,但该处理器没有响应。 如果在稍后重发,该消息可能会成功。,Soap Header,大多数现有的协议都区分控制信息(例如,标头)和消息有效负载。 在这方面,SOAP 也不例外。 SOAP Header 和 Body 元素在易于处理的 XML 世界中也进行同样的区分。 除了易用性之外,可扩展 Envelope 的关键优势在于它可用于任何通讯协议。 在各种应用程序协议中(如 HTTP、SMTP 等)标头总是具有重要的意义,因为标头允许连网两端的应用程序就

14、所支持命令的具体行为进行协商。 尽管 SOAP 规范本身并不定义任何内置的标头,标头将逐渐在 SOAP 中扮演同等重要的角色。 与 Body 元素类似,Header 元素是控制信息的通用容器。 其中可包含来自任何命名空间(除 SOAP 命名空间之外)的任意数量的元素。 放置在 Header 元素中的各个元素被称为标头块。 如同其他协议一样,标头块中包含的信息应该能够影响有效负载的处理。 因此,这里正适于放置诸如凭证一类的元素,以帮助控制对操作的访问:header.xml2: 我们也可以利用一个名为 mustUnderstand 的全局 SOAP 属性对标头块进行标注,以指明接收方在处理该消息之

15、前是否需要理解标头: mustunderstand.xml.,Soap Body,SOAP体元素(Body)提供了一个简单的机制,使消息的最终接收者能交换必要的信息。使用体元素的典型情况包括配置RPC请求和错误报告。体元素编码为SOAP封装元素的直接子元素。 如果已经有一个头元素,那么体元素必须紧跟在头元素之后,否则它必须是SOAP封装元素的第一个直接子元素。体元素的所有直接子元素称作体条目,每个体条目在SOAP体元素中编码为一个独立的元素。条目的编码规则如下: 一个条目由它的元素全名(包括名域URI和局部名)确定。SOAP体元素的直接子元素可能是名域限制的。,协议绑定,SOAP可以和很多传输

16、协议进行绑定: SOAP over HTTP/HTTPS GET/POST SOAP over JMS SOAP over SMTP SOAP over RPC一种具体的协议绑定准确地定义了应该如何利用给定的协议来传输SOAP 消息。 换言之,它详细定义了 SOAP 如何适用于另一协议的范围,该协议很可能具有自己的消息处理框架以及多种标头。 协议绑定实际所定义的内容很大程度上取决于该协议的功能和选项。 例如,针对 HTTP 的协议绑定应很大程度不同于针对 JMS 或针对 SMTP 的协议绑定。,SOAP 类型,如今有两种基本类型的SOAP消息处理: 文档和RPC。文档类型指出主体只是包含一个

17、XML 文档,而发送方和接收方都必须遵循该文档的格式。 另一方面,RPC 类型指出主体中包含某个方法调用的 XML 表示,正如刚才所述。 两种方法可用于确定如何将数据序列化到主体中: 使用Literal文字的 XML 架构定义和使用 SOAP 编码规则Encoding。 利用前一种方法,架构定义逐字确定了主体的 XML 格式,不具有二义性。 然而,利用后一种方法,SOAP 处理器必须在运行时遍历各种 SOAP 编码规则以确定主体正确的序列化。 很显然,这种方法更易于导致错误和互操作性方面的问题。 最常见的情形是在使用文档类型时也使用文字架构定义(称为文档/文字),以及在使用 SOAP 编码规则

18、时使用 RPC 类型(称为 rpc/编码)。 文档/编码和 rpc/文字也是可能的,但并不常见,也没有太大意义。 大多数 Web 服务平台都集中于文档/文字类型,将其作为发展的主要用例,且是现今 Microsoft ASP.NET WebMethod 框架的默认设置。,HTTP 绑定,HTTP 协议绑定定义了在 HTTP 上使用 SOAP 的规则。 SOAP 请求/响应自然地映射到 HTTP 请求/协议模型。,SOAP RPC绑定,尽管 SOAP 规范已日渐远离对象,它仍然定义了一种约定,以便利用上述的消息处理框架来封装并交换 RPC 调用。 定义一种标准的方法将 RPC 调用映射到 SOAP

19、 消息,这使得在运行时基础结构可以在方法调用和 SOAP 消息之间自动转换,而不用围绕 Web 服务平台重新设计代码。要利用 SOAP 进行方法调用,基础结构需要以下信息: 终结点位置 (URI) 方法名称 参数名称/值 可选的方法签名 可选的标头数据,SOAP RPC绑定,RPC调用:double add(ref double x, double y) Request对象: struct add double x;double y; 3344Response对象: struct addResponse double result; 77 ,SOAP RPC,SOAP文档内容5,服务调用,前置

20、机,SOAP消息,HTTP,HTTP,WSDL2JAVA,SOAP消息,Class Operation,XML Message,服务描述CONTEXT,XML2JAVA,XML Message,实现SOAP的容器,XFIRE 1.x Apache AXIS 1.x/2.x SOAPLite ,WSDL描述web服务的三个基本属性:,服务做些什么? 服务所提供的操作(方法); 如何访问服务? 数据格式以及访问服务操作的必要协议; 服务位于何处? 由特定协议决定的网络地址,如URL。,WSDL是什么?,服务主要通过六个元素进行定义 types,定义了交换信息的数据格式。 message, 传输消息

21、的抽象定义。一个消息含有多个逻辑部分,每一部分和一些类型相关联。 portType, 一些抽象操作的集合。每个操作关联一个输入消息和一个输出消息。 binding, 针对操作和portType中使用的消息指定实际的协议和数据格式规范。 port, 指定一个绑定的地址,这样定义一个通信的终端。 service, 一些port构成的集合,WSDL定义,WSDL是XML描述的网络服务,基于消息机制、包含面向文本或面向过程信息的操作集合。 操作及消息的抽象定义与它们具体的网络实现和数据格式绑定是分离的,这样就可以重用这些抽象定义。 消息是需要交换数据的抽象描述; 端点类型是操作的抽象集合。 针对一个特

22、定端点类型的具体协议和数据格式规范构成一个可重用的绑定。 一个端点定义成网络地址和可重用的绑定的联接,端点的集合定义为服务。,服务接口定义和服务实现定义,服务接口组成了服务描述中的可重用部分, type元素、message和portType。 types元素中描述消息中复杂数据类型的使用。 message元素指定XML 数据类型组成消息的各个部分。message元素用于定义操作的输入和输出参数。 portType元素中定义了Web服务的操作。操作定义了输入和输出数据流中可以出现的XML消息。,服务接口定义和服务实现定义,服务实现定义是一个描述给定服务提供者如何实现特定服务接口的WSDL文档。

23、有binding和services。 binding 元素描述特定服务接口的协议、数据格式、安全性和其它属性。 service元素。服务元素包含一组port元素。端口将端点与来自服务接口定义的binding 元素关联起来。,WSDL是一种XML应用,它将Web Services描述定义为一组服务访问端点,客户端可以通过这些服务访问端点对包含面向文档信息或面向过程调用的服务进行访问。 WSDL首先对访问的操作和访问时使用的请求响应消息进行抽象描述,然后将其绑定到具体的传输协议和消息格式上,以最终定义具体部署的服务访问端点。 在具体使用中,可以使用任意的消息格式和网络协议。 在WSDL规范中,定义

24、了如何使用SOAP消息格式、HTTP GETPOST消息格式以及MIME格式来完成Web Services交互的规范。,WSDL文档框架,* * ,types元素,* ,message元素, * ,portType元素-抽象操作的集合,*,binding元素,*?*?*?*?*,service元素, *?*?,类型,types元素包含了交换消息的数据类型定义。为了实现最大的互操作性(interoperability)和平台中立性(neutrality),WSDL选用XML Schema DataTypes,简称XSD作为标准类型系统,并将它作为固有类型系统。*,类型XSD编码抽象数据类型建议,

25、使用元素(element)形式,而不使用属性(attribute)形式; 不包括仅在特殊的协议和数据格式中使用的元素或者属性; 数组类型使用Soap:Array 类型,并使用ArrayOfXXX作为数组类型的名; 使用XSD编码表示xsd:anyType。,消息,消息由若干个逻辑部件(part)构成。每个部件使用一个消息类型属性与某个类型系统的类型相关联。 消息定义语法如下:*消息(message)name属性指定了消息的名称。 如果消息具有多个逻辑单位,则需要使用多个part元素。,消息示例,端口类型定义,端口类型是一个由抽象操作和抽象消息构成的有名称的集合。*端口类型定义的name属性表示

26、端口类型名称,操作定义的name属性表示操作名称。,操作,WSDL支持4种消息交换方式,来访问服务端点。 单向(One-way):服务访问端点接收消息; 请求响应(Request-response):服务访问端点接收请求消息,然后发送响应消息; 要求应答(Solicit-response):服务访问端点发送要求消息,然后接收应答消息; 通知(Notification):服务访问端点发送通知消息。 操作中引用到的消息通过message属性指定。,单向操作,单向操作语法:*input元素指定用于单向操作的抽象消息格式。,请求响应操作,请求响应操作语法*,要求应答操作,要求应答操作语法*,通知操作,

27、通知操作语法*,操作中的元素名称,如果单向操作和通知操作未指定name属性,则该属性名默认为是操作名。 如果请求响应或要求应答操作中未指定name属性,则该属性名默认为是 操作名+“Request”/“Responese”/“Solicit”。针对于请求应答和要求应答操作可以通过parameterOrder指定一个参数名列表。该属性的值是一个用空格分开的消息构件名序列 。,绑定,绑定语法如下:*?*,服务,public class myServices public void myMethod (int x)return ,rpc/encoded样式,WSDL文档内容,rpc/encoded样

28、式,SOAP文档内容5,2 rpc/literal样式,WSDL文档内容,2 rpc/literal样式,SOAP文档内容5,3 document /encoded,WSDL文档内容,3 document /encoded,SOAP文档内容5,4document /literal,WSDL文档内容,4document /literal,SOAP文档内容5,Sample WSDL,sample.wsdl,开发Web Service,XFire1.2.1,什么是XFire?,http:/xfire.codehaus.org,XFire简介,XFire是下一代的java SOAP框架。XFire通过

29、一些简单的API和对规范的支持使得面向服务的开发成为可能。 XFire性能非常好,它是建立在低内存的StAX模型的基础上的。,特性和目标,支持主要的Web Service标准SOAP, WSDL, WS-I Basic Profile, WS-Addressing, WS-Security, 等等. 高性能的SOAP栈 可插入式地绑定对 POJOs, XMLBeans, JAXB 1.1, JAXB 2.0, and Castor的支持。 可运行在 Java 5和1.4 平台 支持多种传输协议 - HTTP, JMS, XMPP, In-JVM, 等等. 简单易用的API 支持Spring,

30、Pico, Plexus, and Loom 等框架. 支持JBI 支持客户端和服务器端接口自动生成 支持JAX-WS,在XFire下开发Web Service,Step by step,第一步:下载XFire,http:/xfire.codehaus.org/Download 下载xfire-distribution-1.2.1.zip 压缩包解压,第二步:建立工程,新建web工程,命名为xfire。 将xfire-1.2.1lib下面的包和xfire-1.2.1xfire-all-1.2.1.jar一起拷贝到新建的web工程WEB-INFlib下面。,修改web.xml文件,增加如下内容X

31、FireServletXFire Servletorg.codehaus.xfire.transport.http.XFireConfigurableServletXFireServlet/servlet/XFireServlet/*XFireServlet/services/*,编写WebService服务器端代码,在src下新建包org.codehaus.xfire.demo 编写Book.java 编写BookService.java 编写BookServiceImpl.java BookService.aegis.xml,编写Handler,新建包org.codehaus.xfire.

32、demo.handlers 编写CheckVersionHandler.java 编写OutHeaderHandler.java,编写WebService配置文件,在src下新建log4j.properties文件。 在src下新建目录META-INF/xfire/ 在META/xfire/下新建文件services.xml,编写客户端测试代码,BookClient.java,发布WebService,右键点击xfire选择MyEclipse-Add and Remove Project Deployment,将xfire发布到Tomcat上去。,查看自动生成的WSDL,打开ie,键入 htt

33、p:/localhost:8080/xfire/services/BookService?wsdl,自动生成的WSDL,运行客户端程序,右键点击BookClient.java 选择Run As-Java Application 由于首次运行需要初始化,所以运行较慢,会报几个延时错误后才会显示结果。,客户端运行显示结果,语义Web & Web服务 & SOA,Web,Web可以获得如此巨大的发展,一个很重要的原因就是HTML的简单、易用; Yahoo的发展和出现得益于其网页目录. Google的出现可以处理海量的网页信息.,语义Web,从学术的角度,一个可以准确有效搜索、推理的Web应该是一个语

34、意的Web,即结构化的和有意义的Web; 目前数十亿的页面不可能消失或者重建。 一个可行的方法:包装已有信息,给已有信息增加语意的说明,即元数据,例如标签(Tag或Annotation)。 从这个意义和角度,Google Toolbar的书签服务,Yahoo收购del.icio.us就可以理解,大家要做的是一样的事情,都是为了提供更好的搜索结果,而不是简单的提供书签服务。,从搜索角度看,自然语言提问,系统自动找到答案 系统有一个知识库,知识来源可以是网页 知识区分领域,语义Web,学术界和业界提出了语意Web(Semantic Web)的概念,简单来说,就是扩展现有Web,使Web页不仅仅是供

35、信息表达的手段,而且可以自描述,具有语意,而更好的搜索http:/del.icio.us和互操作。,SOA,为了更快更有效地响应变化莫测的市场机会,所有行业的公司都在想方设法进行这方面的努力。为获得更高的业务灵活性,许多公司都在实施面向服务的架构 (SOA)。 SOA 的灵活性体现在它将业务流程和相关的 IT 基础设施中的元素看作安全的、标准化的组件(服务),通过对这些组件(服务)进行重用和组合,即可应对不断变化的业务目标和业务优先级。,当企业系统越来越多后,缺少业务流程标准 架构策略限制 独立的程序业务需要 基础设施的构建没有蓝图,从不同的组件中创建服务,确定客户资格,获得信用报告,请求附加

36、信息,Generate decline,等等,Etc.,通过整合服务实现业务流程,现在,像实施服务一样实施应用,Web服务减少了应用间的接口,从这样 ,变成这样 (web服务).,应用程序,业务应用和接口是可重用的,减少业务应用中间的接口,减少接口的数目和复杂度,对应用接口有丰富的业务描述,但是分别独立的连接还是会导致接口之间的限制,接 口,=,interface,应用服务,应用程序,应用程序,应用程序,应用程序,应用程序,应用程序,应用程序,接 口,接 口,接 口,接 口,接 口,接 口,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,企业服务总线更好地减少了接口,结果

37、 快速的业务相应,允许动态的选择,置换和匹配,让你找到可以重用的应用和接口,减弱接口间点到点的连接,使应用之间的形成联结或解散联结更灵活,变成这样 (SOA),企业服务总线 ESB,从这样 (web服务) ,接 口,接 口,接 口,接 口,接 口,接 口,接 口,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,应用服务,什么是企业服务总线?,企业服务总线(Enterprise Service Bus) 是一个整合应用和服务的灵活的连接基础组织。,ESB减少了你的SOA体系中的接口的数量,大小和

38、复杂度。,转化请求者和服务之间的传输协议,处理分离资源间的业务事件,转换请求者和服务之间的消息格式,路由服务间的消息,旅行预定过程,有效班机 服务,企业服务总线,新检查旅行服务,定酒店 服务,有效酒店 服务,定车服务,新的有效 班机服务,旧的有效 班机服务,定机票 服务,检查信用 服务,改变服务并且对已经存在的服务造成最小的影响,快速添加新的服务,ESB使你关注于核心业务多过IT,如果你的应用符合 Web服务标准,如果你的应用并不完全符合 Web服务标准,这样你需要ESB就要关注在基于标准的服务整合。,这样你需要高级ESB关注在对已有的非服务形式的应用的整合。,企业服务总线,1,2,高级企业服

39、务总线,旅行预定过程,有效班机 服务,检查旅行服务,定酒店 服务,有效酒店 服务,定车服务,定机票 服务,检查信用 服务,旅行预定过程,有效班机 服务,检查旅行服务,定酒店 服务,有效酒店 服务,定车服务,定机票 服务,检查信用 服务,ESB的两个关键需求,一个企业服务总线的高级视图,ESB的集中控制和分布处理,星形集成:,相关链接,Web Service相关链接,http:/www.w3.org/TR/soap/ http:/www.w3.org/TR/wsdl/ http:/www.w3.org/TR/UDDI/ http:/xfire.codehaus.org/ http:/ws.apache.org/axis2,课后练习,模仿BookService,开发一个自己的GoodsService,通过WebService方式提供商品信息的查询服务。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报