收藏 分享(赏)

一种支持Web 信息资源服务化标记语言及其软件工具.doc

上传人:春华秋实 文档编号:2212343 上传时间:2018-09-05 格式:DOC 页数:7 大小:628KB
下载 相关 举报
一种支持Web 信息资源服务化标记语言及其软件工具.doc_第1页
第1页 / 共7页
一种支持Web 信息资源服务化标记语言及其软件工具.doc_第2页
第2页 / 共7页
一种支持Web 信息资源服务化标记语言及其软件工具.doc_第3页
第3页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、.一种支持 Web 信息资源服务化的标记语言及其软件工具杨少华 1,2 张利永 1,2 韩燕波 11 (中国科学院计算技术研究所网格与服务计算研究中心,北京 100080) 2 (中国科学院研究生院,北京 100039)()摘要 互联网上聚集了大量基于万维网技术的信息资源,随着 SOA 的流行,如何将信息资源封装成 Web 服务以便于自动聚合和广泛重用成为倍受关注的问题。文中提出一种 Web 信息资源服务化标记语言,并基于该语言实现了一个可视化、半自动的服务化工具 Web2WS。Web2WS 提供友好的操作界面辅助用户定义 Web 信息资源的访问规则、数据抽取规则,以及到目标 Web服务的映射

2、规则,可方便有效地将基于 Web 的信息资源封装成 Web 服务。关键词 Web 服务;资源封装器;Web 信息集成;Web 资源服务化中图法分类号 TP311A Markup Language for Generating Web Services out of Web-based Information Resources and Software Support ThereofYang Shaohua1, 2, Zhang Liyong1, 2, Han Yanbo1 1 (Research Centre for Grid and Service Computing, Institute

3、 of Computing Technology, Chinese Academy of Sciences, Beijing 100080) 2 (Graduate University of Chinese Academy of Sciences, Beijing, 100039)Abstract There exist numerous Web-based resources on the Internet. As service-oreiented concepts and architecture proliferate, more and more attention is paid

4、 on encapsulating Web-based information resources into Web Services for composition and reuse. A markup language for this kind of encapsulation is proposed and a visual, semi-automatic tool called Web2WS is implemented. It provides a user-friendly interface that allows users to define access rules a

5、nd data extraction rules of the web-base information resource and specify mappings from the information resource to the target Web Service. Web2WS can help to generate Web Services from web sites effectively and conveniently.Keywords Web Service; Wrapper; Web Information Integration; Service Encapsu

6、lation今天的互联网聚集了大量基于万维网技术的信息资源,如新闻、天气、股票、交通等等。我们通常使用浏览器访问这些信息,而在应用程序中集成这些信息资源并不容易,具体表现在:1)万维网使用 HTTP 作为客户端与服务器的通讯协议,处理HTTP 协议过于复杂;2)信息嵌入在 HTML 标记的网页中,标签和数据交织在一起,难以分割,而且HTML 的格式比较松散,甚至不要求标签的配对,.应用程序很难从中抽取数据以及数据的结构关系。以 XML、SOAP、WSDL 和 UDDI 等标准规范和协议为核心的 Web 服务具有良好的封装性、开放性、松散耦合性、平台独立性等优点。如果以 Web服务的形式对基于

7、HTTP 和 HTML 的 Web 信息资源进行封装,应用程序便可方便地集成此类信息服务。同时,以服务作为基本组成元素的服务组合语言(如 BPEL 等)及相关工具也已成熟,信息资源的服务化也会给应用集成带来极大的方便。本文借鉴数据库领域 Web 信息抽取和集成方面的工作,提出一种基于 XML 语法的 Web 信息服务化标记语言,并基于该语言实现了一个可视化、半自动的服务化工具Web2WS(Web Site to Web Service) 。利用 Web2WS,开发者只需简单的操作便可实现如下功能:1) 通过浏览网页的方式定义网页数据抽取规则;2) 提供可视化界面定义服务规约说明并建立服务操作接

8、口与 Web 页面元素的映射规则;3) 自动生成 Web 服务代码、相关部署文件以及客户端调用代码,发布与测试服务。本文首先对相关工作进行比较分析;第二节阐述 Web 信息资源服务化的原理,详细介绍服务化标记语言;第三节介绍服务化工具的设计与实现;第四节进行试验和评价;最后是结论和下一步工作。1. 相关工作数据库领域对 Web 信息抽取和集成研究进行了大量的工作,出现了一些成熟的技术,典型的有封装器(Wrapper)技术等。封装器特指能从 Web 站点中自动抽取信息并转化为结构化数据的一类程序1。许多封装器生成工具通过学习样本网页的结构以及用户的选择生成封装器。文献23对此类工具进行了较全面的

9、分析和总结,网站4中维护了三十多个封装器开发工具的列表,并进行了一些简要的分析和比较,其中许多工具能够抽取 HTML 网页中的数据并按一定的格式封装成 XML 文档。本文实现的服务化工具本质上属于封装器生成工具,但与传统封装器生成工具不同的是本工具生成的封装器是Web 服务。生成封装器的关键技术之一是数据抽取与映射规则的定义。许多生成工具提供图形化的交互界面辅助用户定义这些规则,其方式一般有两种:1)基于标记树方式,样本网页以 HTML 标记树呈现,用户通过选择感兴趣的树结点定义规则,如 XWRAP5;2)基于浏览器方式,样本网页直接在浏览器中显示,如 Lixto6、SG-WRAP7。浏览器方

10、式对用户屏蔽了 HTML 代码,更加方便易用。在数据抽取规则的表达上,有的使用 W3C 推荐的 XML 定位和查询语言 XPath/XQuery8,9,如 SG-WRAP;有的则使用自定义的数据抽取脚本程序,如 Lixto 使用一种自定义的基于逻辑的脚本语言 Elog。生成封装器的另一关键技术是网页的获取。获取一个简单的静态网页只需知道网页的 URL,而访问动态网页或 HTML 表单背后的网页需要了解更多的访问细节,如请求方法(GET 或 POST 等) 、参数传递及取值方法等。传统的封装器生成工具更多的关注数据的抽取,对于网页获取的支持较弱,用户如果封装 HTML 表单背后的网页需要查看样本

11、网页的 HTML 原始代码,增加了对用户背景知识的要求。现有的 Web 信息资源服务化方法大都基于封装器技术。Pollock 系统10 对 Web 信息资源的服务化分构造时和运行时两步完成:1)构造时使用现有的封装器生成技术对 Web 信息源进行封装,同时生成Web 服务的 WSDL 文档,2)运行时将封装器虚拟成 Web 服务,将基于 SOAP 的交互与封装器特定的交互进行转换。此方法可以重用已有的封装器生成工具,但是要求用户同时熟悉两套系统,而且已有的封装器生成工具往往从数据源角度而非服务的角度考虑 Web 信息。Web 服务网关11是日本东芝公司提出的另一个 Web 信息资源服务化系统,

12、该系统的特点是提出一个支持多 HTML 解析器的框架,提供了可视化交互界面完成 Web 站点到 Web 服务的封装过程,并可以对生成的 Web 服务进行基本的管理。但是具体的服务化过程比较繁琐,例如用户需要手工提供网页获取的细节,虽然提供可视化的Web 服务封装器描述文档的编辑器,但是相对于边浏览边定义的方式仍较为复杂。2. Web 信息资源服务化原理及标记语言2.1 服务化基本原理Web 信息资源服务化的目标是把网站提供的信息服务封装成 Web 服务。以列车车次查询为例,用户首先访问网站(如 ) ,然后填写车次,提交后转入车次详细信息页面。这个简单实际的例子揭示了获取 Web 信息的基本过程

13、:访问网页、提交请求、查看结果。将上述过程进行服务化,生成列车车次查询 Web 服务,它提供一个getTicketInfo 操作,该操作返回请求车次 ticketno 的详细信息 TicketInfo,接口如:TicketInfo getTicketInfo(String ticketno)。.目标 Web 服务需要关心以下几个问题:1)如何获取网页的 HTML 文档? Web 服务需要了解目标文档地址(URL) 、获取方法(GET 或POST) 、请求参数、编码信息等细节。2)如何在网页中抽取有用数据?数据抽取依赖于预定义的数据抽取规则,包括数据的定位和文本的抽取,此过程需要对 HTML 文

14、档进行解析。3)如何封装抽取的数据作为服务的输出结果?抽取数据的封装依赖于预定义的数据映射规则,它定义了 Web 信息源的请求参数和抽取的结果数据与Web 服务规约说明中的操作的输入输出消息的对应关系。图 1 揭示了 Web 信息服务化的基本原理:目标Web 服务的输入与输入页面的 HTML 表单元素建立映射,服务的输出与结果页面中的数据通过 XPath表达式建立映射,服务首先使用输入参数“填写”HTML 表单或链接参数,提交服务器取得结果页面,然后对页面进行分析,抽取数据并按预定义的数据映射规则进行封装,最后返回结果。XPath 是 W3C 推荐的 XML 路径语言, HTML文档可以表示为

15、一棵文档对象模型(DOM)树,树结点可以由类似下面的 XPath 表达式进行定位:/HTML1/BODY1/TABLE1/TR1/text()。结果页面表单输入页面提交HTML解析与错误校正车次查询Web服务服务输入服务输出HTML DOM树Xpath关联图 1 Web 信息服务化原理W S C l i e n t W e b S e r v i c eH t t p C l i e n t W e b S e r v e r2 : G e t R e s u l t P a g e s ( T i c k e t N o )3 : H t t p R e q u e s t ( T i c

16、k e t N o )4 : H t t p R e s p o n s e5 : R e s u l t H T M L sD O M P a r s e r6 : P a r s e ( H T M L s )7 : X m l - H T M L s8 : E x t r a c t ( X m l - H T M L s , X p a t h s )9 : T i c k e t I n f o1 : g e t T i c k e t I n f o ( T i c k e t N o )图 2 服务运行逻辑图 2 以车次查询为例详细说明目标 Web 服务的运行逻辑:第一步服务调用

17、客户端以车次编号TicketNo 为参数调用服务操作 getTicketInfo(1) ;第二步服务通过 HTTP 客户端与远程服务器建立连接,以车次编号为参数发送 HTTP 请求,取得包含车次信息的原始 HTML 文档(2, 3,4,5) ;第三步使用 HTML 解析器将 HTML 格式化为符合 XML 语法的 Xml-HTML 文档(6,7) ,格式化的过程是将HTML 转换成符合 W3C 的 DOM 规范的文档,为下一步使用 XML 定位语言 XPath 抽取数据作准备;第四步使用 XPath 引擎从 Xml-HTML 文档中抽取信息并把结果封装成 TicketInfo 对象(8,9)

18、。2.2 服务化标记语言为了将基于万维网技术的信息服务封装成 Web服务,我们提出一种基于 XML 语法的 Web 信息服务化标记语言 Web2WS ML(Markup Language),利用该语言可以表达数据抽取和映射规则,以及生成 Web 服务的一些细节。使用该语言编写的 XML文档称为服务化文档。本节将给出 Web 信息服务化标记语言核心元素的定义和语法,为了方便表达,这里使用 BNF 文法说明语言的语法结构。服务化文档包括六部分:Web2WS=( InputPage, OutputPage, XpathTable, Operation SoapServer, Config) ,语法结

19、构如图 3 所示,下面对各元素进行详细介绍:1)InputPage 样本表单输入页面,结构由WebPage 定义,其中 Url 为页面地址,LinkValuePair 和 FormValuePair 是请求网页的链接变量和表单变量,当 type 属性为 CONST 时,直接使用 expression 的值,为 INPUT 类型时,expression必须是 Web 服务的某个操作的输入参数,表示取值来源于服务的输入。.2)OutputPage 样本输出页面,结构与InputPage 同。3)XpathTable Xpath 变量表,每个 Xpath 变量的 path 属性对应一个 XPath

20、表达式,type 属性说明XPath 表达式返回的结果类型,TEXT 表示返回文本,COUNT 表示计算元素的个数,常用于计算中的标记个数。Xpath 变量表定义了数据抽取规则,pattern 值为正则表达式,用于匹配抽取的文本。4)Operation Web 服务操作,在服务化标记语言中直接使用对象定义服务的输入和输出,一个操作的输入由零个或多个 InputParam 组成,服务的返回结果可以是 Property、Bean、Array 中的一种,分别对应 Java 语言中的简单类型、复合类型以及数组类型,其中 Property 作为定义服务输出的原子类型,Bean 通过 Property、A

21、rray 复合或自身嵌套定义,Array 定义为 Property 或 Bean 的数组。Property 的type 属性说明值的计算方式,例如 type 等于XPATH 时,expression 为某个已定义的 Xpath 变量,从而实现服务输出与网页 HTML 元素的关联。服务操作定义了数据的映射规则和目标 Web 服务的详细信息。5)SoapServer 定义了发布目标 Web 服务的SOAP 服务器信息,包含主机地址和端口等信息,用于服务发布。6)Config 定义了服务代码生成相关信息,控制代码生成。Web2WS := InputPageOutputPageXpathTableOp

22、eration *SoapServerConfigInputPage:= WebPageOutputPage:= WebPageWebPage:=*XpathTable := *Operation := *OutputObjOutputObj := Property | Bean | ArrayProperty:=Bean:=Property *Bean *Array *Array:=LoopVarProperty |Bean图 3 Web2WS 语法结构从编程语言角度上看,服务化文档可以看作是Web 信息服务化的程序脚本,编程人员可以手工编写,亦可通过第 4 节的服务化工具自动或辅助生成。3

23、. 服务化工具设计与实现基于服务化标记语言,我们实现了一个可视化、半自动的 Web 信息服务化工具Web2WS。工具以插件形式运行于 Eclipse12和 EMF 开发平台,很好的重用了 Eclipse 的强大集成开发环境。在工具的开发实现中,我们尽量使用一些成熟的开源模块,一方面加快开发的速度,把精力聚焦到需要解决的核心问题上;另一方面也增强了工具的稳定性。3.1 系统架构图4给出了服务化工具Web2WS的系统架构,由Web2WS文档图形化编辑器、Web代理、内置网页浏览器、代码生成器、服务辅助工具五部分构成。Web2WS文档图形化编辑器内置网页浏览器Web代理互联网代码生成器服务辅助工具S

24、oap服务器原始 html格式化 html 抽取规则 web2ws文档http交互细节Web服务图 4 Web2WS 系统架构Web2WS 文档图形化编辑器是基于服务化标记语言的集成开发环境。编辑器以树的方式呈现,负责 Web2WS 文档的新建、读入和编辑,并可验证文档是否符合语言的定义。编辑器从 Web 代理中获取输入输出网页的 HTTP 交互细节,对用户屏蔽繁杂又琐碎的 HTTP 协议,自动生成 Web2WS 文档的.Java/.wsdd文件.InputPage 和 OutputPage 元素。编辑器与内置的网页浏览器协作完成数据抽取和映射规则的定义。Web 代理作为内置网页浏览器的网络代

25、理,接受浏览器请求,访问互联网获取网页的原始 HTML文档。我们使用 Apache 的 HttpClient 3.0 作为 HTTP客户端,HttpClient 提供了高效、健壮的 HTTP 访问能力。在返回 HTML 需要对 HTML 进行如下处理:1)XML 格式化,使用开放源代码的 CyberNeko HTML 分析器对 HTML 进行分析和错误校正,输出符合 XML 语法的 HTML 文档。2)嵌入交互控制代码,在不改造浏览器的前提下为了实现基于浏览器的动态交互,Web 代理在返回的 HTML 文档中嵌入 JavaScript 交互控制代码,辅助用户完成数据抽取和映射规则的定义。其中大

26、量使用一种胖客户端技术 AJAX(异步JavaScript+XML) 。Web 代理同时自动记录用户访问页面的 HTTP交互细节,如请求网页的 URL、请求方法、参数以及返回 HTML 文本的字符编码等信息。内置网页浏览器作为用户定义数据抽取和映射规则的交互界面。用户在浏览样本网页时使用鼠标选择感兴趣的数据,配置数据抽取规则。浏览器通过Web 代理获取远程网页,其 HTML 文档是经过 Web代理处理过的 Xml-HTML 文档,并且嵌入了交互控制代码使得页面具有更多的动态交互功能。代码生成器负责生成基于 java 语言的 Web 服务。它以服务化文档为输入,根据文档中的网页访问细节、数据抽取

27、和映射规则以及生成目标 Web 服务的详细信息,产生 Web 服务、单元测试用例及 Web服务调用客户端的程序代码,以及相关服务部署文件和 WSDL 文档。由于 Eclipse 本身是优秀的 Java集成开发环境,用户可以即时对 Web 服务进行编译和测试。服务辅助工具集成了服务发布、测试等功能,可以直接将服务部署到 SOAP 服务器并进行测试。3.2 运行界面图 5 是 Web2WS 运行界面的一个截图,其中主工作区域是服务化文档图形化编辑器,服务化文档和生成的目标 Web 服务的源代码文件保存于 Eclipse工程项目中。Web 浏览器用于显示服务化的网页,同时也是定义数据抽取规则的交互界

28、面。服务化文档图形化编辑器Web浏览器服务化文档目标Web服务代码图 5 Web2WS 用户界面4. 试验与评价4.1 服务化工具好用性评价从定性的角度分析,Web2WS 好用性体现在以下几点:1) 对服务开发者屏蔽获取目标网页的 HTTP 交互细节。开发者只需提供输入表单所在网页的地址,在浏览网页的过程中由工具自动获取详细的 HTTP 交互细节。2) 基于 Web 浏览器的数据抽取和映射规则定义界面。相对于大多数以 HTML 标记树为操作界面的方式,基于浏览器的界面更加直观、易用。3) 降低了服务开发者的背景知识要求。工具仅要求服务开发者懂得 Java 语言和 Web 服务的基本概念,对于某

29、些复杂的网页可能需要一些正则表达式的知识。4) 集成的开发环境。工具以 Eclipse 插件的形式运行,代码生成器的目标语言为 Java,可以利用 Eclipse 平台强大的 Java 开发和测试环境,方便的测试服务代码和调用客户端。从定量的角度分析,工具的好用性体现在缩短开发者构建服务的时间,我们以互联网上五个典型的信息服务作为案例统计服务的构建时间,服务的开发者为熟悉 Web2WS 的使用者(同实验室的研究生)。统计信息如表 1 所示,可见对于熟练的工具使用人员,大约十分钟左右即可构造一个 Web 服务。构建 Web 的服务的主要时间花在数据抽取和映射规则的定义上,而且随规则数目的增加而增

30、加,而其余时间相对较为稳定。表 1 服务构建时间统计Web 服务 服务提供 网站 总时间 (分钟) 数据抽取与映射 定义 (分钟) 数据抽取规则 数量(条).天气预报 新浪网 9 5 8车次查询 火车票网 15 11 20股票查询 和讯股票 9 5 5书价查询 互动出版网 9 6 7在线词典 Dict.CN 8 4 24.2 Web 服务执行性能试验我们从执行时间角度对自动生成的 Web 服务进行了实验。由图 2 的服务运行逻辑可以看出,Web服务的执行主要包括以下几个阶段:1)网络访问时间,指的是从发出页面请求到取得 HTML 文档的时间,它与网络带宽和服务器处理请求的时间相关;2)文档解析

31、时间,指使用 HTML 解析器将取得的HTML 文档格式化为符合 XML 语法和 W3C DOM规范的 Xml-HTML 文档所用的时间;3)数据抽取与组装时间,指根据数据抽取规则从 Xml-HTML 文档提取数据并按服务的输出格式进行组装所用的时间。我们通过统计 Web 服务在各阶段的花费时间对Web 服务的执行性能进行评价。测试环境为一台内存 1G、CPU 为 1.8GHz 的 AMD 机器,操作系统为Windows XP,服务运行容器使用 Tomcat+Axis。同一时刻只测试一个服务,每个服务使用十组输入数据进行测试,并统计平均值,测试结果列于表 2。从表 2 中可以分析得出服务执行的

32、性能瓶颈主要受以下因素影响:1)HTML 文档的大小,文档越大,文档解析的时间越长,而且数据抽取与组装的时间急剧增加,图 6 显示了文档大小对服务执行的性能的影响;2)网络的访问时间,包括网络传输延迟以及服务器处理请求的时间,与服务功能、网络状况、服务器的处理能力等因素相关。其中用时最长的书价和股票查询为两秒多,其余的用时在几十到几百毫秒之间,基本可以满足对时间限制不是很严格的应用。表 2 Web 服务执行性能统计Web 服务HTML 文档大小(字节)文档解析时间(毫秒)数据抽取与组装时间(毫秒)网络访问时间(毫秒)总共用时(毫秒)天气预报 18273 39 23 67 129车次查询 140

33、72 30 56 141 227股票查询 110754 265 1610 324 2199书价查询 62432 134 183 1938 2255在线词典 13166 27 32 35 94050010001500200013166 14072 18273 62432 110754HTML文 档 大 小 ( 字 节 )时间 (毫秒 )文 档 解 析 数 据 抽 取 与 组 装图 6 HTML 文档大小对服务执行性能的影响5. 结论和下一步工作本文探讨了 Web 信息资源的服务化问题,提出一种针对 Web 信息资源的服务化标记语言,同时以该语言为核心实现一个可视化、半自动的服务化工具:Web2W

34、S。该工具提供友好的交互界面辅助用户定义 HTML 网页数据抽取与映射规则,有效的辅助开发人员构建、发布,和测试 Web 服务。与传统的封装器生成工具相比,Web2WS 生成的 Web 服务相对于其他软件构件具有更好的松耦合性、平台独立性、互操作性等优点,而且在易用性上做了一些改进。下一步工作将在完善现有功能的同时进行如下的一些改进:1)服务执行性能的提高,许多网站的信息具有时效性,采用缓存技术减少网络的访问时间和次数,可以改善服务的执行性能。2)对网页脚本语言的支持,使目标 Web 服务能够处理网页中的脚本语言。3)Web 服务的维护,由于生成的 Web 服务与网页结构相绑定,需要提供一个机

35、制用于发现和适应网页结构的变化。参 考 文 献1 J. Hammer, H. Garcia-Molina, et al. Extracting Semistructured Information from the Web. In: Proc. of the Workshop on Management for semistructured data (SIGMOD97), 1997. 1825, 2 A.H.F. Laender, B.A. Ribeiro-Neto, et al. A brief survey of Web data extraction tools, SIGMOD, 20

36、02. 31( 2): 8493,3 S. Kuhlins and R. Tredwell. Toolkits for Generating Wrappers. NetObjectDays, 2002, 2591: 1841984 R. Tredwell and S. Kuhlins. Wrapper Development Tools. http:/www.wifo.uni-mannheim.de/kuhlins/wrappertools/index.html.en. 2004-065 L. Liu, P.u. Calton, et al. XWRAP: An XML-Enabled Wra

37、pper Construction System for Web Information Sources, In Proc. of International Conference on Data Engineering, 2000. 611621.6 R. Baumgartner, S. Flesca, et al. Visual Web Information Extraction with Lixto, The VLDB Journal, 2001: 119 1287 X. Meng, H. Lu, H. Wang, et al. SG-WRAP: A Schema-Guided Wra

38、pper Generator, In Proc. of International Conference on Data Engineering, IEEE Press, 2002. 3313328 Berglund, S. Boag, D. Chamberlin and M.F. Fernndez. XML Path Language (XPath) 2.0, http:/www.w3.org/TR/xquery/, 20059 S. Boag and D. Chamberlin. XQuery 1.0: An XML Query Language, http:/www.w3.org/TR/

39、xquery/, 2005.10 Y Lu, Y. Hong, et al. Pollock: automatic generation of virtual web services from web sites, ACM Symposium on Applied Computing (SAC), Santa Fe, New Mexico, USA, 2005. 16501655, 11 H.P. Huy, T. Kawamura and T. Hasegawa. How to make web sites talk together: web service solution, WWW 2

40、005, Chiba, Japan, 200512 http:/www.eclipse.org/Yang Shaohua, born in 1981, PhD. candidate, His research interests include service-oriented software integration and context-aware middleware.杨少华,男,1981 年生,博士研究生,研究方向:面向服务的软件集成、上下文感知中间件。Zhang Liyong, born in 1980, PhD. candidate, His research interests

41、 include service composition and execution engine.张利永,男,1980 年生,博士研究生,研究方向:服务组合技术及其执行环境。Han Yanbo, born in 1962, professor. His research interests include software integration and service grid.韩燕波,男,1962 年生,研究员(博导) ,研究领域:软件集成与服务网格。联系人:杨少华联系方式:北京市海淀区中关村科学院南路 6 号 2704 信箱 计算所智能软件部邮编:100080电话:13810834762,010-62600955Mail:

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

当前位置:首页 > 学术论文 > 毕业论文

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


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

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

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