SOA原理、實(shí)現(xiàn)和應(yīng)用_第1頁
SOA原理、實(shí)現(xiàn)和應(yīng)用_第2頁
SOA原理、實(shí)現(xiàn)和應(yīng)用_第3頁
SOA原理、實(shí)現(xiàn)和應(yīng)用_第4頁
SOA原理、實(shí)現(xiàn)和應(yīng)用_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

SOA原理、實(shí)現(xiàn)方法與應(yīng)用ServiceOrientedArchitecture

主要內(nèi)容1

SOA的產(chǎn)生過程1

SOA的基本原理21

SOA的實(shí)現(xiàn)方法3

SOA的一種實(shí)現(xiàn)—WebService41

SOA在MapGIS中的體現(xiàn)51.1

SOA的定義

SOA的提出

SOA的概念最早是由Gartner于1996年提出的。由于SOA在系統(tǒng)結(jié)構(gòu)和軟件開發(fā)中帶來了很多的優(yōu)勢,后來IBM、MS、BEA、Oracle在內(nèi)的全球著名IT公司加入了定義、實(shí)現(xiàn)和推廣SOA的行列。使得SOA得到了快速的發(fā)展。SOA的概念

SOA是一種基于服務(wù)來組織計算資源,具有松耦合和間接尋址能力的軟件體系結(jié)構(gòu)。

SOA是一種體系結(jié)構(gòu),也是一種軟件開發(fā)模型。1.2SOA與分布式體系結(jié)構(gòu)

SOA作為一種體系結(jié)構(gòu),已經(jīng)被各種分布式系統(tǒng)開發(fā)所采用。下面通過分布式系統(tǒng)的發(fā)展來說明SOA體系結(jié)構(gòu)的產(chǎn)生:分布式系統(tǒng)經(jīng)歷了:主機(jī)系統(tǒng)“客戶/服務(wù)器”兩層結(jié)構(gòu)“客戶/應(yīng)用服務(wù)器/資源服務(wù)器”三層結(jié)構(gòu)多層體系結(jié)構(gòu)一般信息系統(tǒng)的分層體系結(jié)構(gòu)用戶表示層應(yīng)用邏輯層資源管理層信息系統(tǒng)UI利用數(shù)據(jù)庫、文件系統(tǒng)管理資源應(yīng)用邏輯實(shí)現(xiàn)系統(tǒng)功能主機(jī)分布式體系結(jié)構(gòu)1、系統(tǒng)組成耦合緊密2、客戶功能單一3、沒有外部系統(tǒng)的接口兩層分布式體系結(jié)構(gòu)1、客戶、服務(wù)器之間的耦合緊密n-12、服務(wù)器成為處理瓶頸3、更新代價高三層分布式體系結(jié)構(gòu)1、瀏覽器和應(yīng)用服務(wù)器是松耦合的。2、應(yīng)用服務(wù)器和資源服務(wù)器是松耦合的。3、應(yīng)用邏輯層可以部署在服務(wù)器集群上。4、表示層和應(yīng)用邏輯層是緊耦合的,使得同一個表示層不能訪問不同平臺的應(yīng)用邏輯。

四層分布式體系架構(gòu)克服了三層結(jié)構(gòu)中:表示層和應(yīng)用邏輯層緊耦合把應(yīng)用邏輯層封裝成Web服務(wù),這樣表示層和應(yīng)用邏輯層就能實(shí)現(xiàn)松耦合。1.3SOA和軟件開發(fā)SOA是一種軟件開發(fā)模型,本質(zhì)上是一種組件模型。軟件開發(fā)模型經(jīng)歷了:命令式軟件開發(fā)方法面向?qū)ο蟮能浖_發(fā)方法面向構(gòu)件的軟件開發(fā)方法面向服務(wù)的軟件開發(fā)方法命令式軟件開發(fā)方法

命令式編程是對VonNeumann式計算機(jī)執(zhí)行順序的直接抽象。

過程只是對功能的抽象,因此只能片面地反映事物的性質(zhì)。面向?qū)ο筌浖_發(fā)方法面向?qū)ο蟮娜齻€特點(diǎn):1)繼承性2)封裝性3)多態(tài)性面向?qū)ο筌浖_發(fā)方法面向?qū)ο蟮膹?fù)用機(jī)制是通過繼承實(shí)現(xiàn)過的,所以難以形成可復(fù)用的軟件模塊面向?qū)ο蟮姆庋b是對事物的抽象,因封裝的粒度小,所以難以構(gòu)成大的可復(fù)用的模塊。

總之,面向?qū)ο蠓庋b粒度小,難以形成大的可復(fù)用的模塊。它的復(fù)用性主要體現(xiàn)在代碼級,模塊復(fù)用性差。面向構(gòu)件軟件開發(fā)方法

面向構(gòu)件是對象技術(shù)的延伸和發(fā)展,構(gòu)件和對象技術(shù)都是對現(xiàn)實(shí)世界的抽象,都具有封裝性,都已接口的方式被外界訪問。構(gòu)件和對象具有以下區(qū)別:抽象視角不同。

對象是對客觀世界的基本實(shí)體的抽象,強(qiáng)調(diào)現(xiàn)實(shí)世界和實(shí)體的對應(yīng)以及實(shí)體的建模。構(gòu)件是對客觀世界的實(shí)體或者實(shí)體聯(lián)合能提供的功能的和服務(wù)的建模??蓮?fù)用程度和復(fù)用機(jī)制不同

和對象相比,構(gòu)件更強(qiáng)調(diào)可復(fù)用性。面向?qū)ο髮?shí)現(xiàn)可復(fù)用是通過繼承實(shí)現(xiàn)的,但繼承并不是實(shí)現(xiàn)復(fù)用的一種很好的方法,因?yàn)槔^承使得子類對父類產(chǎn)生了很強(qiáng)的依賴性。構(gòu)件實(shí)現(xiàn)可復(fù)用性是通過構(gòu)件的包容和聚合機(jī)制實(shí)現(xiàn)的。實(shí)現(xiàn)了復(fù)用者和被復(fù)用者的松耦合。粒度不同

構(gòu)件的封裝粒度一般大于對象的封裝粒度。面向構(gòu)件的軟件開發(fā)方法“局限性”:現(xiàn)有的構(gòu)件技術(shù),都是和具體的OS平臺相關(guān)的,這樣構(gòu)件的生產(chǎn)者和構(gòu)件的使用者就有嚴(yán)格的要求,即構(gòu)件使用者和構(gòu)建的生產(chǎn)者是緊耦合的。構(gòu)件技術(shù)是可以產(chǎn)生可復(fù)用的軟件模塊的,但這只是說當(dāng)用構(gòu)件技術(shù)“從零開始”進(jìn)行開發(fā)時才是這樣的,面向構(gòu)件技術(shù)無法復(fù)用已有的、用不同技術(shù)開發(fā)的軟件模塊,既不能把已有的“遺留系統(tǒng)”進(jìn)行“構(gòu)件化”。面向服務(wù)軟件開發(fā)方法面向服務(wù)的軟件開發(fā)方法是構(gòu)件技術(shù)在分布式環(huán)境下(特別是在Internet環(huán)境下)的延伸和發(fā)展。面向服務(wù)的軟件開發(fā)具有不同于構(gòu)件的新特點(diǎn):開放性----遵循開放的標(biāo)準(zhǔn)自描述性----服務(wù)的調(diào)用者只需要服務(wù)的描述信息就可以完全掌握服務(wù)的所用信息,包括調(diào)用方法實(shí)現(xiàn)無關(guān)性----服務(wù)的消費(fèi)者無需知道服務(wù)的實(shí)現(xiàn)語言和和實(shí)現(xiàn)平臺封裝的粒度大于構(gòu)件從軟件開發(fā)方法的角度來看SOA技術(shù)的發(fā)展。軟件開發(fā)技術(shù)的發(fā)展是不斷加大軟件模塊的封裝粒度,從而使得軟件模塊間的耦合度減少。SOA的產(chǎn)生是為了適應(yīng)分布式環(huán)境(特別是Internet環(huán)境)需求的又一種軟件開發(fā)方式。2.1

SOA基本原理SOA原理概述

SOA是一種服務(wù)導(dǎo)向的組件模型。服務(wù)是指軟件中的一些處理過程或是服裝成獨(dú)立業(yè)務(wù)模塊的程序邏輯單元,可以通過標(biāo)準(zhǔn)協(xié)議通過網(wǎng)絡(luò)來訪問和調(diào)用,而且接口公開。服務(wù)提供者開發(fā)出各種有用的服務(wù),經(jīng)過嚴(yán)格測試后把服務(wù)發(fā)布到公共的服務(wù)注冊表上,服務(wù)消費(fèi)者通過查找服務(wù)注冊表查找到所需要的服務(wù),然后就可以使用所需要的服務(wù)了。SOA框架組成部分SOA結(jié)構(gòu)有三部分組成:1、服務(wù)提供者2、服務(wù)注冊中心3、服務(wù)消費(fèi)者服務(wù)提供者服務(wù)提供者服務(wù)提供者是一個可以通過網(wǎng)絡(luò)尋址的實(shí)體,它接收和執(zhí)行消費(fèi)者的請求。把自己的服務(wù)注冊到服務(wù)注冊中心,以便服務(wù)消費(fèi)者能夠發(fā)現(xiàn)和訪問該服務(wù)。它主要完成以下功能:1)定義可提供的服務(wù)功能2)設(shè)計并實(shí)現(xiàn)這些功能3)用WSDL描述這些服務(wù),并用UDDI在服務(wù)注冊中心發(fā)布WSDL文檔服務(wù)注冊中心服務(wù)注冊中心服務(wù)注冊中心是包含可用服務(wù)的網(wǎng)絡(luò)可尋址目錄,它是接受并存儲服務(wù)描述的實(shí)體,供服務(wù)消費(fèi)者查詢服務(wù)只用,服務(wù)提供者將服務(wù)的描述信息發(fā)布到服務(wù)注冊中心。服務(wù)的信息包括與該服務(wù)交互的所有所有內(nèi)容,如網(wǎng)絡(luò)位置、傳輸協(xié)議和消息格式等。它主要完成以下功能:1)增加、刪除和修改已經(jīng)發(fā)布的服務(wù)的服務(wù)信息。2)按照用戶的請求從注冊表中查詢服務(wù)數(shù)據(jù)。服務(wù)消費(fèi)者服務(wù)消費(fèi)者服務(wù)消費(fèi)者可以是:一個應(yīng)用程序、需要一個服務(wù)的另外一個服務(wù)或者一個軟件模塊。它從注冊中心查詢需要的服務(wù),并通過傳輸機(jī)制綁定服務(wù),然后通過接口契約規(guī)定的格式來執(zhí)行服務(wù)。它主要完成以下功能:1)發(fā)現(xiàn)提供服務(wù)的WSDL文檔,通常通過訪問服務(wù)注冊表來實(shí)現(xiàn)。2)在WSDL的基礎(chǔ)上,通過SOAP協(xié)議來與要訪問的服務(wù)通信。2.1SOA的特征SOA是一種粗粒度、松耦合的軟件架構(gòu),服務(wù)之間通過簡單、精確定義接口進(jìn)行通訊,不涉及底層編程接口和通訊模型。這種模型具有以下的特征:1)松散耦合2)粗粒度服務(wù)3)標(biāo)準(zhǔn)化的接口4)無狀態(tài)的服務(wù)松散耦合和粗粒度從軟件開發(fā)和系統(tǒng)結(jié)構(gòu)的角度來看,SOA是耦合度最低的一種實(shí)現(xiàn)方法。

服務(wù)的請求者和提供者時間是松耦合的,即服務(wù)請求者不必關(guān)心服務(wù)的具體實(shí)現(xiàn)細(xì)節(jié),如程序?qū)崿F(xiàn)語言,部署平臺等。這樣的松散耦合是通過“服務(wù)描述”實(shí)現(xiàn)的。1)服務(wù)的接口是通過標(biāo)準(zhǔn)的方式進(jìn)行描述。2)服務(wù)的請求者通過消息的方式,而不是通過API和文件格式請求服務(wù)。標(biāo)準(zhǔn)化的接口和無狀態(tài)服務(wù)SOA通過服務(wù)接口的標(biāo)準(zhǔn)化描述,而接口是通過標(biāo)準(zhǔn)的方式進(jìn)行描述的,從而使得該服務(wù)可以提供給在任何異構(gòu)平臺和任何用戶接口使用。該接口隱藏了實(shí)現(xiàn)服務(wù)的細(xì)節(jié),允許獨(dú)立于實(shí)現(xiàn)服務(wù)基于的硬件或軟件平臺和編寫服務(wù)所用的編程語言使用服務(wù)。服務(wù)應(yīng)該獨(dú)立的、自包含的。在實(shí)現(xiàn)時它不需要從一個請求到另一個請求的信息或狀態(tài)。服務(wù)不依賴于其他服務(wù)的上下文和狀態(tài)。3.1SOA的實(shí)現(xiàn)技術(shù)1

CORBA組件實(shí)現(xiàn)方法1

DCOM組件實(shí)現(xiàn)方法21

遠(yuǎn)程方法調(diào)用(RMI)實(shí)現(xiàn)方法3

WebService組件實(shí)現(xiàn)方法41

Jini組件實(shí)現(xiàn)方法53.1

CORBA組件實(shí)現(xiàn)方法3.2DCOM組件實(shí)現(xiàn)方法3.2遠(yuǎn)程方法調(diào)用(RMI)實(shí)現(xiàn)方法即JavaRMI(JavaRemoteMethodInvocation)是Java編程語言里,一種用于實(shí)現(xiàn)遠(yuǎn)程過程調(diào)用的應(yīng)用程序編程接口。它使客戶機(jī)上運(yùn)行的程序可以調(diào)用遠(yuǎn)程服務(wù)器上的對象。遠(yuǎn)程方法調(diào)用特性使Java編程人員能夠在網(wǎng)絡(luò)環(huán)境中分布操作。4.1SOA的一種實(shí)現(xiàn)—WebServiceWeb服務(wù)是構(gòu)架早XML和Internet技術(shù)上的分布式計算技術(shù),其目的是利用已經(jīng)管飯使用的Internet協(xié)議在分布節(jié)點(diǎn)之間傳遞稱為消息的XML文檔。Web服務(wù)是有URL標(biāo)識的軟件應(yīng)用,其接口和綁定可以通過XML來定義和描述并且可以被發(fā)現(xiàn),與其他軟件通過基于Internet的協(xié)議以XML消息交換的方式直接交互。Web服務(wù)的關(guān)鍵技術(shù)從上面對Web服務(wù)的描述可以看出Web服務(wù)由三項關(guān)鍵技術(shù)構(gòu)成:通信:Web服務(wù)需要一種能基于Internet協(xié)議(如HTTP、SMTP和FTP等)互相傳遞XML消息的通信協(xié)議規(guī)范。描述:Web服務(wù)的接口和綁定需要用一種基于XML的語言來描述和定義。發(fā)現(xiàn)和發(fā)布:Web服務(wù)消費(fèi)者可以通過中介發(fā)現(xiàn)Web服務(wù),而Web服務(wù)的元信息也需要發(fā)布到中介上。4.2Web服務(wù)的體系結(jié)構(gòu)Web服務(wù)的規(guī)范傳輸規(guī)范:Web服務(wù)可以利用多種網(wǎng)絡(luò)協(xié)議實(shí)現(xiàn)XML消息的傳輸。Web服務(wù)可以利用HTTP(GET/PUT/POST/DELETE)、FTP、SMTP、CORBA的IIP和Java的JMS等協(xié)議。消息規(guī)范:Web服務(wù)之間的通信是通過傳遞SOAP協(xié)議的XML消息實(shí)現(xiàn)的。描述規(guī)范:用WSDL語言可以描述Web服務(wù)。描述包括一系列操作的名稱及其輸入,輸出參數(shù)、出錯信息和接口的綁定。發(fā)布和發(fā)現(xiàn)規(guī)范:UDDI是主流的Web服務(wù)注冊中心規(guī)范消息擴(kuò)展規(guī)范:在SOAP提供基本的傳輸基礎(chǔ)上,可以擴(kuò)展SOAP消息的頭結(jié)構(gòu)。4.3Web服務(wù)的通信通信模式通信實(shí)現(xiàn)方式同步通信方式RPCORPCDCOMCORBA的IIP異步通信方式消息隊列消息代理SOAP協(xié)議信封:SOAP消息的根元素,包含一個SOAPHeader和一個SOAPBody消息頭:可選,包括安全性、事務(wù)處理等消息體:必選,代表消息的實(shí)際負(fù)載。由兩種風(fēng)格:RPC風(fēng)格和文檔風(fēng)格。<?xmlversion=“1.0”encoding=“UTF-8”><soapEnv:Envelopexmlns:soapenv=/soap-envelope/ soapEnv:encodingStyle=“http///soap-encoding/”><!—SOAP消息頭--><soapEnv::Header><m:reservationxmlns:m=/reservationsoapEnv:role=/soap-envlope/role/text><m:reference>uuid:00909090-ewew-ewew-rrrd-dddo-dscfw23124221</m:reference></m:reservation><n:passengerxmlns:m=/reservationsoapEnv:role=/soap-envlope/role/text><m:name>Happy</m:name></m:passenger></soapEnv::Header><!—SOAP消息體--><soapenv:Body><m:GetOrderStatussoapenv:encodingStyle=“/encoding/”><status>underprocessing</status></GetOrderStatus></soapenv:Body></soapenv:Envelope>一個SOAP協(xié)議的結(jié)構(gòu)基本SOAP消息體系結(jié)構(gòu)首先Web服務(wù)客戶端到服務(wù)中心發(fā)現(xiàn)感興趣的服務(wù),然后從服務(wù)提供者處得到服務(wù)的描述WSDL文檔。一旦得到了WSDL文檔,Web客戶端就可以獲得了Web服務(wù)的相關(guān)信息:服務(wù)提供的接口、接口地址、接口訪問方式。SOAP服務(wù)器會對SOAP請求進(jìn)行解析,調(diào)用相應(yīng)的方法。SOAP解析器SOAP和HTTP的綁定

SOAP消息可以和各種網(wǎng)絡(luò)協(xié)議進(jìn)行綁定,因此SOAP和HTTP的綁定是可選的,但是由于所有的OS都支持HTTP,所以所有的SOAP實(shí)現(xiàn)方案都支持HTTP的綁定。SOAP協(xié)議示例Packagewaremanagerproject;Packageorg.apache.axix.client.Call;Importorg.apache.axis.client.Service;Importorg.apache.axis.encoding.XmlType;PublicclassWareManageClient{PublicWareManageClient(){}Publicstaticvoidmain(String[]args)throwsExeception{try{ Stringendpoint=http://8080/axis/service/WareManage; Stringmethod=“getStocks”; Serviceservice=newService(); Callcall=(Call)service.Create(); Call.setTargetEndpointAddress(new.URL(endpoint)); Call.setOperationName(method); call.setProperty(Call.NAMESPACE,“urn:wareManage”); call.addParameter(“ID”,XMLType.XSD_STRING,ParameterMode.IN); Call.setReturnType(XML_TYPE,SOAP_INT); StringID=“00002”; Integerresponse=(Integer)call.invoke(newObject[]{ID}); System.out.println(“Gotresult:”+response); } Catch(Execeptione) { System.out.println(e);}}}POST/WareManageHttp/1.0Connect-Type:text/xml;charset=utf-8Accept:application/soap+xml,application/dime,multipart/releted,text/*User-Agent:Axis/1.1RC2Host:127.0,0,1:8080Cache-Control:no-cachePragma:no-cacheSOAPAction:””Content-Length:402<?xmlversion=“1.0”encoding=“UTF-8”><soapenv:Envelopexmlns:soapenv=/soap/envelope/ xmlns:xsd=/2001/XMLSchema xmlns:xsi=/2001/XMLSchema-instance><soapenv:Body><getStockssoapenv:encodingStyle=“/soap/encoding/”><IDxsi:Type=“xsd:string”>00002</ID></getStocks></soapenv:Body></soapenv:Envelope>4.4Web服務(wù)的描述現(xiàn)有的接口描述方法都采用IDL,IDL是獨(dú)立于實(shí)現(xiàn)語言、實(shí)現(xiàn)平臺的。

Web服務(wù)使用WSDL描述服務(wù)。WSDL和IDL的聯(lián)系和區(qū)別:1)WSDL和傳統(tǒng)的中間件描述語言IDL在功能上有重合之處:二者都描述了服務(wù)或構(gòu)件的調(diào)用接口。但是由于Web服務(wù)所處的分布式環(huán)境更加復(fù)雜,所以WSDL和IDL有以下區(qū)別:2)WSDL需要定義訪問Web服務(wù)的機(jī)制,IDL和具體的平臺相關(guān)聯(lián)。3)WSDL需要描述Web服務(wù)的有效訪問位置。WSDL的結(jié)構(gòu)WSDL的基本表示形式<definitionsname=serviceNametargetNamespace=/math/Xmlns=/wsdl/><!—抽象描述部分--><type>…</type><message>…</message><portType>…</portType><!—具體描述部分--><binding>…</binding><service>…</service></definitions>WSDL文檔有一個根元素definitions。根元素包含Types、Messages、portType、binding和Service元素。用WSDL描述服務(wù)的實(shí)例//庫存管理服務(wù)端Java類PublicclassWareManage{PublicWareManage(){}PublicintgetStocks(StringID){intiStock=0;//gettheStocksfromtheDB…returniStocks;}PublicintchangeStocks(StringID,intamount,intchgType){intiStocks=getStocks(ID);if(chgType==0)iStocks-=amount;elseiStocks+=amount;//writestocksintoDB;…returniStocks;}}WSDL的消息定義<!—消息定義--><wsdl:messagename=“getStockRequest”><wsdl:partname=“ID”type=“soapenc::string”/></wsdl:message><wsdl:messagename=“changeStockResponse”><wsdl:partname=“changeStockReturn”type=“xsd::int”/></wsdl:message><wsdl:messagename=“changeStockRequest”><wsdl:partname=“ID”type=“soapenc::string”/><wsdl:partname=“amount”type=“xsd::int”/><wsdl:partname=“chgType”type=“xsd::int”/></wsdl:message><wsdl:messagename=“getStockResponse”><wsdl:partname=“getStockReturn”type=“xsd::int”/></wsdl:message>WSDL的端口類型定義<!—端口類型定義--><wsdl:portTypename=“WareManage”><wsdl:operationname=“getStock”parameterOrder=“ID”><wsdl:inputname=“getStockReuest” message=“impl:getStockRequest”/> <wsdl:outputname=“getStockResponse” message=“impl:getStockResponse”/></wsdl:operation><wsdl:operationname=“changeStock”parameterOrder=“IDamountchgType”><wsdl:inputname=“changeStockReuest” message=“impl:changeStockRequest”/> <wsdl:outputname=“changeStockResponse” message=“impl:changeStockResponse”/></wsdl:operation></wsdl:portType>WSDL的綁定定義<!—綁定定義--><wsdl:bindingname=“WareManageSoapBinding”type=“impl:WareMange”><wsdlsoap:bindingstyle=“rpc”transport=/soap/http/><wsdl:operationname=“getStock”><wdlsoap:operationsoapAction=“”><wsdl:inputname=“getStockReuest”><wsdlsoap:bodyuse=“encoded” encodingStyle=/soap/encodingnamespace=http://testservice/></wsdl:input><wsdl:outputname=“getStockResponse”><wsdlsoap:bodyuse=“encoded” encodingStyle=/soap/encodingnamespace=“http://localhost:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論