企業(yè)級應(yīng)用系統(tǒng)體系架構(gòu)WebService課件_第1頁
企業(yè)級應(yīng)用系統(tǒng)體系架構(gòu)WebService課件_第2頁
企業(yè)級應(yīng)用系統(tǒng)體系架構(gòu)WebService課件_第3頁
企業(yè)級應(yīng)用系統(tǒng)體系架構(gòu)WebService課件_第4頁
企業(yè)級應(yīng)用系統(tǒng)體系架構(gòu)WebService課件_第5頁
已閱讀5頁,還剩313頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

企業(yè)級應(yīng)用系統(tǒng)體系架構(gòu)(六)

WebService2022/11/22From:O’Reilly:EnterpriseJavaBeans3.0,5thEdition,May.2006企業(yè)級應(yīng)用系統(tǒng)體系架構(gòu)(六)

WebTopicWebServicesStandardsWebServicesOverviewXMLSchemaandXMLNamespacesSOAP1.1WSDL1.1UDDI2.02TopicWebServicesStandards2WebServicesOverviewWebServicespresenttheopportunityforrealinteroperabilityacrosshardware,operatingsystems,programminglanguages,andapplications.BasedontheXML,SOAP,andWSDLstandards,webserviceshaveenjoyedwidespreadadoptionbynearlyallofthemajorenterpriseplayers,includingMicrosoft,

IBM,BEA,JBoss,Oracle,Hewlett-Packard,andothers.SunMicrosystemshasintegratedwebservicesintotheJavaEEplatform;specifically,SunandtheJavaCommunityProcesshaveintroducedseveralwebservicesAPIs,includingtheJavaAPIforXMLWebServices(JAX-WS),theJavaAPIforXML-basedRPC(JAX-RPC),theSOAPwithAttachmentsAPIforJava(SAAJ),andtheJavaAPIforXMLRegistries(JAXR).ThesewebservicesAPIswereintegratedintoJ2EE1.4andhavebeenexpandeduponinJavaEE5andEJB3.0.3WebServicesOverviewWebServiWebServicesOverviewAwebserviceisaremoteapplicationdescribedusingtheWebServiceDescriptionLanguage(WSDL)andaccessedusingtheSimpleObjectAccessProtocol(SOAP)accordingtotherulesdefinedbytheWS-IBasicProfile1.1.TheWS-I(WebServicesIntegrationOrganization)isagroupofvendors(Microsoft,IBM,BEA,SunMicrosystems,Oracle,HP,andothers)thathavebandedtogethertoensurewebservicesareinteroperableacrossallplatforms.Todothis,theyhavecreatedarecommendationcalledtheBasicProfile1.1,whichdefinesasetofrulesforusingXML,SOAP,andWSDLtogethertocreateinteroperablewebservices.4WebServicesOverviewAwebserWebServicesOverview5WebServicesOverview5TopicWebServicesStandardsWebServicesOverviewXMLSchemaandXMLNamespacesSOAP1.1WSDL1.1UDDI2.06TopicWebServicesStandards6XMLSchemaAnXMLSchemaissimilarinpurposetoaDocumentTypeDefinition(DTD),whichvalidatesthestructureofanXMLdocument.ToillustratesomeofthebasicconceptsofXMLSchema,let'sstartwithanXMLdocumentwithaddressinformation:

<?xmlversion='1.0'encoding='UTF-8'standalone='yes'?><address><street>3243West1stAve.</street><city>Madison</city><state>WI</state><zip>53591</zip></address>YoumeasurethecorrectnessofanXMLdocumentbydeterminingtwocriteria:whetherthedocumentiswellformedandwhetheritisvalid.7XMLSchemaAnXMLSchemaissimXMLSchemaInordertovalidateanXMLdocument,youneedawaytorepresenttheseapplication-specificconstraints.TheXMLSchemafortheAddressXMLdocumentlookslikethis:<?xmlversion='1.0'encoding='UTF-8'?><schemaxmlns="/2001/XMLSchema"xmlns:titan="/Reservation"targetNamespace="/Reservation"><elementname="address"type="titan:AddressType"/><complexTypename="AddressType"><sequence><elementname="street"type="string"/><elementname="city"type="string"/><elementname="state"type="string"/><elementname="zip"type="string"/></sequence></complexType></schema>8XMLSchemaInordertovalidateXMLSchemaXMLSchemabuilt-intypesandtheircorrespondingJavatypes9XMLSchemaXMLSchemabuilt-inXMLSchemaBydefault,eachelementdeclaredbya<complexType>mustoccuronceinanXMLdocument,butyoucanspecifythatanelementisoptionalorthatitmustoccurmorethanoncebyusingtheoccurrenceattributes.Forexample,wecansaythatthestreetelementmustoccuroncebutmayoccurtwice:<complexTypename="AddressType"><sequence><elementname="street"type="string"maxOccurs="2"minOccurs="1"/><elementname="city"type="string"/><elementname="state"type="string"/><elementname="zip"type="string"/></sequence></complexType>Bydefault,themaxOccursandminOccursattributesarealways1,indicatingthattheelementmustoccurexactlyonce.10XMLSchemaBydefault,eacheleXMLSchemaThe<element>declarationsarenestedundera<sequence>element,whichindicatesthattheelementsmustoccurintheordertheyaredeclared.Youcanalsonesttheelementsunderan<all>declaration,whichallowstheelementstoappearinanyorder.ThefollowingshowstheAddressTypedeclaredwithan<all>elementratherthana<sequence>element:<complexTypename="AddressType"><all><elementname="street"type="string"maxOccurs="2"minOccurs="1"/><elementname="city"type="string"/><elementname="state"type="string"/><elementname="zip"type="string"/></all></complexType>11XMLSchemaThe<element>declarXMLSchemaInadditiontodeclaringelementsofXSDbuilt-intypes,youcandeclareelementsbasedoncomplextypes.ThisissimilartohowJavaclasstypesdeclarefieldsthatareotherJavaclasstypes.Forexample,wecandefineaCustomerTypethatusestheAddressType:<?xmlversion='1.0'encoding='UTF-8'?><schemaxmlns="/2001/XMLSchema"xmlns:titan="/Reservation"targetNamespace="/Reservation"><elementname="customer"type="titan:CustomerType"/><complexTypename="CustomerType"><sequence><elementname="last-name"type="string"/><elementname="first-name"type="string"/><elementname="address"type="titan:AddressType"/></sequence></complexType><complexTypename="AddressType">……………</schema>12XMLSchemaInadditiontodeclaXMLSchemaAnXMLdocumentthatconformstotheCustomerXSDwouldlooklikethis:<?xmlversion='1.0'encoding='UTF-8'?><customer><last-name>Jones</last-name><first-name>Sara</first-name><address><street>3243West1stAve.</street><city>Madison</city><state>WI</state><zip>53591</zip></address></customer>Atruntime,theXMLparsercomparesthedocumenttoitsschema,ensuringthatthedocumentconformstotheschema'srules.Ifthedocumentdoesn'tadheretotheschema,itisconsideredinvalid,andtheparserproduceserrormessages.13XMLSchemaAnXMLdocumentthatXMLNamespacesInsomecases,it'sconvenienttocombinetwoormoreXMLmarkuplanguagesintoasingledocumentsothattheelementsfromeachmarkuplanguagecanbevalidatedseparatelyusingdifferentXMLSchema.TousedifferentmarkuplanguagesinthesameXMLdocument,youmustclearlyidentifythemarkuplanguagetowhicheachelementbelongs.<?xmlversion='1.0'encoding='UTF-8'?><res:reservationxmlns:res="/Reservation"><res:customer><res:last-name>Jones</res:last-name><res:first-name>Sara</res:first-name><addr:addressxmlns:addr="/Address"><addr:street>3243West1stAve.</addr:street><addr:city>Madison</addr:city><addr:state>WI</addr:state><addr:zip>53591</addr:zip></addr:address></res:customer></res:reservation>14XMLNamespacesInsomecases,iXMLNamespacesTheprefixesareassignedusingXMLNamespacedeclarations,whichareshowninboldinthepreviouslisting.AnXMLNamespacedeclarationfollowsthisformat:xmlns:prefix="URI"Theprefixcanbeanythingyoulike,aslongasitdoesnotincludeblankspacesoranyspecialcharacters.TheURIusedintheXMLNamespacedeclarationidentifiestheexactmarkuplanguagethatisemployed.Itdoesn'thavetopointatawebpageoranXMLdocument;itonlyneedstobeuniquetothatmarkuplanguage.Forexample,theXMLNamespaceusedbytheAddressmarkupisdifferentfromtheURLusedfortheReservationmarkup:xmlns:addr="/Address"xmlns:res="/Reservation"TheURIintheXMLNamespacedeclarationshouldmatchthetargetnamespacedeclaredbytheXMLSchema.<?xmlversion='1.0'encoding='UTF-8'?><schemaxmlns="/2001/XMLSchema"targetNamespace="/Address"><complexTypename="AddressType“>……………15XMLNamespacesTheprefixesareXMLNamespacesPrefixingeveryelementinanXMLdocumentwithitsnamespaceidentifierisabittedious,sotheXMLNamespaceallowsyoutodeclareadefaultnamespacethatappliestoallnonprefixedelements.ThedefaultnamespaceissimplyanXMLNamespacedeclarationthathasnoprefix(xmlns="URL").Forexample,wecanuseadefaultnameintheReservationdocumentforallreservationelements:<?xmlversion='1.0'encoding='UTF-8'?><reservationxmlns="/Reservation"><customer><last-name>Jones</last-name><first-name>Sara</first-name><addr:addressxmlns:addr="/Address"><addr:street>3243West1stAve.</addr:street><addr:city>Madison</addr:city><addr:state>WI</addr:state><addr:zip>53591</addr:zip></addr:address></customer></reservation>16XMLNamespacesPrefixingeveryXMLNamespacesWecanapplythescopingrulesofnamespacetosimplifytheReservationdocumentfurtherbyallowingtheaddresselementstooverridethedefaultnamespacewiththeirowndefaultnamespace:<?xmlversion='1.0'encoding='UTF-8'?><reservationxmlns="/Reservation"><customer><last-name>Jones</last-name><first-name>Sara</first-name><addressxmlns="/Address"><street>3243West1stAve.</street><city>Madison</city><state>WI</state><zip>53591</zip></address></customer></reservation>17XMLNamespacesWecanapplytheXMLNamespacesXMLNamespacesareURIsthatuniquelyidentifyanamespacebutdonotactuallypointataresource.Inotherwords,youdon'tnormallyusetheURIofanXMLNamespacetolooksomethingup.It'susuallyonlyanidentifier.However,youmightwanttoindicatethelocationoftheXMLSchemaassociatedwithanXMLNamespacesothataparsercanuploaditanduseitinvalidation.ThisisaccomplishedusingtheschemaLocationattribute:<?xmlversion='1.0'encoding='UTF-8'?><reservationxmlns="/Reservation"xmlns:xsi="/2001/XMLSchema-Instance"

xsi:schemaLocation="/Reservation/schemas/reservation.xsd"><customer><last-name>Jones</last-name><first-name>Sara</first-name><addressxmlns="/Address"

xsi:schemaLocation="/Address/schemas/address.xsd">……………18XMLNamespacesXMLNamespacesaXMLNamespacesXMLSchemaalsousesXMLNamespaces.Let'slookatXMLSchemafortheAddressmarkuplanguagewithanewfocusontheuseofXMLNamespaces:<?xmlversion='1.0'encoding='UTF-8'?><schemaxmlns="/2001/XMLSchema"targetNamespace="/Address"xmlns:addr="/Address"><elementname="address"type="addr:AddressType"/><complexTypename="AddressType"><sequence><elementname="street"type="string"/><elementname="city"type="string"/><elementname="state"type="string"/><elementname="zip"type="string"/></sequence></complexType>

19XMLNamespacesXMLSchemaalsoTopicWebServicesStandardsWebServicesOverviewXMLSchemaandXMLNamespacesSOAP1.1WSDL1.1UDDI2.020TopicWebServicesStandards20SOAP1.1SOAP1.1issimplyadistributedobjectprotocolsuchasDCOM,CORBA'sIIOP,andJRMP(theprimarytransportusedbyRMI).SOAPisdefinedbyitsownXMLSchemaandreliesheavilyontheuseofXMLNamespaces.EverySOAPmessagethatissentacrossthewireisanXMLdocumentconsistingofstandardSOAPelementsandapplicationdata.TheuseofnamespacesdifferentiatesthestandardSOAPelementsfromtheapplicationdata.Here'saSOAPrequestmessagethatmightbesentfromaclienttoaserver:<?xmlversion='1.0'encoding='UTF-8'?><env:Envelopexmlns:env="/soap/envelope/"><env:Header/><env:Body><reservationxmlns="/Reservation"><customer><!--customerinfogoeshere--></customer></reservation></env:Body></env:Envelope>21SOAP1.1SOAP1.1issimplyadSOAP1.1The<Envelope>elementistherootoftheSOAPmessage;allotherelementsarecontainedbyit.Withinthe<Envelope>elementaretwodirectchildren:the<Header>elementandthe<Body>element.The<Header>elementisgenerallyusedforcarryinginfrastructuredatasuchassecuritytokens,transactionIDs,routinginformation,andsoon.Inthepreviousexample,the<Header>elementisempty,whichisnotunusualforbasicwebservices.Inmanycases,weareonlyinterestedinexchanginginformationandnotinmoreadvancedissues,suchasthoserelatingtosecurityandtransactions.Althoughthe<Body>elementisrequired,the<Header>elementisnot.Fromthispointforward,the<Header>elementwillbeomittedfromexamples.The<Body>elementcarriestheapplicationinformationthatisbeingexchanged.Inthepreviousexample,the<Body>elementcontainsa<reservation>element,whichistheapplicationdata.It'sanXMLdocumentfragmentbasedontheReservationXSDdevelopedearlierinthischapter.It'scalleda"fragment"becauseit'sembeddedinsideaSOAPmessage,insteadofstandingalone.22SOAP1.1The<Envelope>elementWebServicesStylesTheSOAPmessageinthepreviousexampleisaDocument/Literalmessage,whichmeansthatthemessagebodyisasingleXMLSchemainstancedocument,andthusthefullmessagecanbevalidated.Forthisreason,Document/Literalisbecomingthepreferredmessagestyleofthewebservicescommunity.TheschemaLocationattributecouldhavebeenincluded;it'somittedbecauseweassumethatthereceiverisalreadyfamiliarwiththeschemausedforthattypeofSOAPmessage.TheotherstyleallowedbytheWS-IBasicProfile1.1andsupportedbyEJB3.0isRPC/Literal.RPC/LiteralrepresentsSOAPmessagesasRPCcallswithparametersandreturnvalues,eachwithitsownschematype.ThefollowingJavainterfacedefinesasinglemethodcalledmakeReservation():publicinterfaceTravelAgent{publicvoidmakeReservation(intcruiseID,intcabinID,intcustomerId,doubleprice);}23WebServicesStylesTheSOAPmeWebServicesStylesThemakeReservation()methodcanbemodeledasaSOAPmessageusingtheRPC/Literalmessagingstyle:<env:Envelopexmlns:env="/soap/envelope/"xmlns:titan="/TravelAgent"/><env:Body><titan:makeReservation><cruiseId>23</cruiseId><cabinId>144</cabinId><customerId>9393</customerId><price>5677.88</price></titan:makeReservation></env:Body></env:Envelope>Thefirstelementwithinthe<Body>identifiesthewebservicesoperationbeinginvoked.Inthiscase,it'sthemakeReservationoperation.Directlyunderthe<titan:makeReservation>elementaretheparametersoftheRPCcall,eachrepresentedbyanelementwithavalue.24WebServicesStylesThemakeResExchangingSOAPMessageswithHTTPSOAPmessagesarenetwork-protocolagnostic,whichmeansthataSOAPmessageisnotawareofordependentonthetypeofnetworkorprotocolusedtocarryit.Withthatsaid,SOAPisprimarilyexchangedusingHTTP.ThereasonforusingHTTPissimple.AnotheradvantageofusingHTTPisthatSOAPmessagescanslipthroughfirewallswithoutanyhassles.YoucanuseSOAP1.2withotherprotocols,suchasSMTP,FTP,andevenrawTCP/IP,butHTTPistheonlyprotocolforwhichabindingiscurrentlyspecified.Asaresult,EJB3.0andJavaEE5requiresupportforSOAP1.1overHTTP1.1butnototherprotocols.25ExchangingSOAPMessageswithTopicWebServicesStandardsWebServicesOverviewXMLSchemaandXMLNamespacesSOAP1.1WSDL1.1UDDI2.026TopicWebServicesStandards26WSDL1.1TheWebServiceDescriptionLanguage(WSDL)isanXMLdocumentusedtodescribeawebservice.WSDLisprogramming-language,platform,andprotocolagnostic.Imaginethatyouwanttodevelopawebservicescomponentthatimplementsthefollowinginterface:publicinterfaceTravelAgent{publicStringmakeReservation(intcruiseID,intcabinID,intcustomerId,doubleprice);}27WSDL1.1TheWebServiceDescriWSDL1.1AWSDLdocumentthatdescribesthemakeReservation()methodmightlooklikethis:<?xmlversion="1.0"?><definitionsname="TravelAgent"xmlns="/wsdl/"xmlns:soap="/wsdl/soap/"xmlns:xsd="/2001/XMLSchema"xmlns:titan="/TravelAgent"targetNamespace="/TravelAgent"><!--messageelementsdescribetheparametersandreturnvalues--><messagename="RequestMessage"><partname="cruiseId"type="xsd:int"/><partname="cabinId"type="xsd:int"/><partname="customerId"type="xsd:int"/><partname="price"type="xsd:double"/></message><messagename="ResponseMessage"><partname="reservationId"type="xsd:string"/></message>28WSDL1.1AWSDLdocumentthatdWSDL1.1<!--portTypeelementdescribestheabstractinterfaceofawebservice--><portTypename="TravelAgent"><operationname="makeReservation"><inputmessage="titan:RequestMessage"/><outputmessage="titan:ResponseMessage"/></operation></portType><!--bindingelementtellsuswhichprotocolsandencodingstylesareused--><bindingname="TravelAgentBinding"type="titan:TravelAgent"><soap:bindingstyle="rpc"transport="/soap/http"/><operationname="makeReservation"><soap:operationsoapAction=""/><input><soap:bodyuse="literal"namespace="/TravelAgent"/></input><output><soap:bodyuse="literal"namespace="/TravelAgent"/>29WSDL1.1<!--portTypeeWSDL1.1</output></operation></binding><!--serviceelementtellsustheInternetaddressofawebservice--><servicename="TravelAgentService"><portname="TravelAgentPort"binding="titan:TravelAgentBinding"><soap:addresslocation="/webservices/TravelAgent"/></port></service></definitions>30WSDL1.1</outpThe<definitions>ElementTherootelementofaWSDLdocumentisthe<definitions>element.Usually,aWSDLdocumentdeclaresalltheXMLNamespacesusedintherootelement.Inthepreviousexample,the<definitions>elementmakesfourXMLNamespacedeclarations:<?xmlversion="1.0"?><definitionsname="TravelAgent"xmlns="/wsdl/"xmlns:soap="/wsdl/soap/"xmlns:xsd="/2001/XMLSchema"xmlns:titan="/TravelAgent"targetNamespace="/TravelAgent">Thedefaultnamespace(xmlns="/wsdl/")istheWSDLnamespace.ThexsdprefixisassignedtotheXMLSchemanamespace.ThetitanprefixisassignedtoaTitanCruisesURL,whichindicatesthatit'sanXMLNamespacebelongingtoTitanCruises.

ThisnamespaceisalsothevalueofthetargetNamespaceattribute.ThisattributeissimilartotheoneusedinXMLSchema.Forexample,the<portType>elementreferences<message>elementsandthe<binding>elementreferencesa<portType>elementusingthetargetnamespace31The<definitions>ElementTherThe<portType>and<message>ElementsThe<portType>elementdescribesthewebservicesoperationsthatareavailable.Anoperationcanhaveinput,output,andfaultmessages.JAX-WS,andthereforeEJB3.0,supportstwostylesofwebservicesmessaging:request-responseandone-way.TheTravelAgent<portType>isanexampleoftherequest-responsemessagingstyle:<!--portTypeelementdescribestheabstractinterfaceofawebservice--><portTypename="TravelAgent"><operationname="makeReservation"><inputmessage="titan:RequestMessage"/><outputmessage="titan:ResponseMessage"/></operation></portType>Hereisawebservicethatsupportsone-waymessaging:<!--portTypeelementdescribestheabstractinterfaceofawebservice--><portTypename="ReservationProcessor"><operationname="submitReservation"><inputmessage="titan:ReservationMessage"/></operation></portType>32The<portType>and<message>EThe<types>ElementIfyourserviceneedsanycustomtypes,theyaredefinedinthe<types>element,whichisthefirstchildofthe<definitions>element.The<types>elementallowsustodeclaremorecomplexXMLtypes.Forexample,insteadofdeclaringeachparameterofthemakeReservationoperationasanindividualpart,youcancombinethemintoasinglestructurethatservesastheparameteroftheoperation:<?xmlversion="1.0"?><!--typeselementdescribescomplexXMLdatatypes--><types><xsd:schematargetNamespace="/TravelAgent"><xsd:complexTypename="ReservationType"><xsd:sequence><xsd:elementname="cruiseId"type="xsd:int"/><xsd:elementname="cabinId"type="xsd:int"/><xsd:elementname="customerId"type="xsd:int"/><xsd:elementname="price-paid"type="xsd:double"/></xsd:sequence></xsd:complexType>33The<types>ElementIfyourserThe<types>Element

</xsd:schema></types><!--messageelementsdescribetheparametersandreturnvalues--><messagename="RequestMessage"><partname="reservation"type="titan:ReservationType"/></message><messagename="ResponseMessage"><partname="reservationId"type="xsd:string"/></message>34The<types>Element</The<binding>and<service>ElementsThe<binding>elementdescribesthetypeofencodingusedtosendandreceivemessagesaswellastheprotocolonwhichtheSOAPmessagesarecarried.The<binding>definitionforthetravelAgentporttypelookslikethis:<!--bindingelementtellsuswhichprotocolsandencodingstylesareused--><bindingname="TravelAgentBinding"type="titan:TravelAgent"><soap:bindingstyle="rpc"transport="/soap/http"/><operationname="makeReservation"><soap:operationsoapAction=""/><input><soap:bodyuse="literal"namespace="/TravelAgent"/></input><output><soap:bodyuse="literal"namespace="/TravelAgent"/></output></operation></binding>35The<binding>and<service>ElThe<binding>and<service>ElementsSimilartothe<portType>element,the<binding>elementcontains<operation>,<input>,<output>,and<fault>elements.Infact,abindingisspecifictoaparticular<portType>:its<operation>,<input>,and<output>elementsdescribetheimplementationdetailsofthecorresponding<portType>.ThepreviousexampleusedtheHTTPprotocolwithRPC/Literal-stylemessaging.TheWSDLbindingforDocument/Literal-stylemessagingisdifferent:<!--bindingelementtellsuswhichprotocolsandencodingstylesareused--><bindingname="TravelAgentBinding"type="titan:TravelAgent"><soap:bindingstyle="document"transport="/soap/http"/><operationname="submitReservation"><soap:operationsoapAction=""/><input><soap:bodyuse="literal"/></input></operation></binding>36The<binding>and<service>ElThe<binding>and<service>ElementsThe<service>elementdescribestheInternetaddressofawebservice:<!--serviceelementtellsustheInternetaddressofawebservice--><servicename="TravelAgentService"><portname="TravelAgentPort"binding="titan:TravelAgentBinding"><soap:addresslocation="/webservices/TravelAgent"/></port></service>37The<binding>and<service>ElTopicWebServicesStandardsWebServicesOverviewXMLSchemaandXMLNamespacesSOAP1.1WSDL1.1UDDI2.038TopicWebServicesStandards38UDDI2.0UniversalDescription,Discovery,andIntegration(UDDI)isaspecificationthatdescribesastandardforpublishinganddiscoveringwebservicesontheInternet.TheanalogynormallyusedtodescribeUDDIisthatitprovideselectronicWhite,Yellow,andGreenpagesforcompaniesandtheirwebservices.Youcanlookupcompaniesbynameoridentifier(Whitepages)orbybusinessorproductcategory(Yellowpages).YoucanalsodiscoverinformationaboutwebserviceshostedbyacompanybyexaminingthetechnicalentitiesofaUDDIregistry(Greenpages).NotonlydoesaUDDIregistryprovideinformationaboutwebservicesandtheirhosts,aUDDIrepositoryisitselfawebservice.AlthoughorganizationscansetupprivateU

溫馨提示

  • 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

提交評論