AppCanMAS開(kāi)發(fā)人員參考V2_第1頁(yè)
AppCanMAS開(kāi)發(fā)人員參考V2_第2頁(yè)
AppCanMAS開(kāi)發(fā)人員參考V2_第3頁(yè)
AppCanMAS開(kāi)發(fā)人員參考V2_第4頁(yè)
AppCanMAS開(kāi)發(fā)人員參考V2_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

APPCANMAS開(kāi)發(fā)人員參考V2.0

TOC\o"1-5"\h\z\uAppCan后端服務(wù)集成系統(tǒng)MAS 3MAS–MEAPAdapterSystem 3為什么使用MAS 5MAS系統(tǒng)構(gòu)成 6MAS系統(tǒng)目錄結(jié)構(gòu)分析 7MAS配置文件解析 8service.xml 8interface.xml 11application.xml 12policy_[PolicyName].xml 12Initialize.js 13MAS適配器的實(shí)現(xiàn) 13MAS適配器運(yùn)行環(huán)境 13MAS適配器 13Param對(duì)象 14Robot對(duì)象 14Request對(duì)象 16Response對(duì)象 16IF對(duì)象 16MAS適配器API 16MEAP.AJAX 17函數(shù)Runner(Option,Callback,Robot,Pretreat) 18MEAP.MYSQL 19函數(shù)BuildStatement(sql,params,options,cb) 21函數(shù)Runner(Option,Callback,Robot) 21函數(shù)buildPool(Option) 21MYSQLPOOL對(duì)象 22MEAP.SOAP 22函數(shù)Runner(Option,Callback,Robot) 23函數(shù)Server(Option,Callback) 24MEAP.SFS 25函數(shù)Runner(Option,Callback,Robot) 25MEAP.PARSER 26函數(shù)Runner(Type,SrcData,Callback,XSLT) 26函數(shù)MakeXSL(XSLTString) 27MEAP.MSG 27MEAP.LDAP 29MAS默認(rèn)錯(cuò)誤碼 30

AppCan后端服務(wù)集成系統(tǒng)MASMAS–MEAPAdapterSystemAppCanMEAP的后端集成系統(tǒng)MAS支持對(duì)多系統(tǒng)進(jìn)行整合,使用非侵入式的方式,在一個(gè)應(yīng)用內(nèi)整合不同系統(tǒng)之間的功能。能夠整合各種利用數(shù)據(jù)庫(kù)或面向服務(wù)架構(gòu)(SOA)的應(yīng)用。支持對(duì)IBMCastIron、SAPNetWeaverGateway等提供的服務(wù)進(jìn)行二次封裝整合的集成能力。AppCanMEAP的后端集成系統(tǒng)MAS采用開(kāi)放式的架構(gòu)設(shè)計(jì),支持集群方式部署,動(dòng)態(tài)增加服務(wù)器。并且可以通過(guò)數(shù)據(jù)緩存的方式,極大的緩解服務(wù)壓力。緩存通過(guò)策略配置的方式,在應(yīng)用開(kāi)發(fā)過(guò)程中進(jìn)行指定,并且緩存可以區(qū)分公有緩存與用戶私有緩存,全方位的滿足緩存策略制定的需求。AppCanMEAP的后端服務(wù)集成系統(tǒng)MAS和MAM服務(wù)緊密關(guān)聯(lián)。雙重系統(tǒng)通過(guò)對(duì)移動(dòng)設(shè)備ID、用戶身份的雙重審核與確認(rèn),再為移動(dòng)端提供服務(wù),最大程度上保證服務(wù)的安全性,對(duì)企業(yè)原有信息系統(tǒng)不構(gòu)成潛在威脅。特色支持整合不同系統(tǒng)上的服務(wù),兼容IBM、SAP等第三方廠商方案支持完善的緩存策略,對(duì)緩存內(nèi)容、時(shí)效性、同步等進(jìn)行策略式配置可靠的設(shè)備認(rèn)證與用戶授權(quán)支持用戶請(qǐng)求分發(fā)與集群式動(dòng)態(tài)擴(kuò)展支持SQLAdapter模式,建立安全數(shù)據(jù)庫(kù)連接,兼容主流數(shù)據(jù)庫(kù)完整物理架構(gòu)圖:

為什么使用MASMAS是與APPCANMOBILESDK前端開(kāi)發(fā)套件相對(duì)的面向企業(yè)后端對(duì)接開(kāi)發(fā)的服務(wù)套件。它能夠?qū)悠髽I(yè)現(xiàn)有業(yè)務(wù)系統(tǒng),封裝出不同功能的RESTFUL接口,供應(yīng)用進(jìn)行調(diào)用,完成移動(dòng)終端應(yīng)用與企業(yè)業(yè)務(wù)系統(tǒng)的對(duì)接。在接口內(nèi)部,開(kāi)發(fā)者接收終端應(yīng)用的請(qǐng)求和企業(yè)內(nèi)部業(yè)務(wù)系統(tǒng)的響應(yīng),對(duì)數(shù)據(jù)進(jìn)行分析處理。安全 企業(yè)應(yīng)用中,MAS系統(tǒng)與MAM系統(tǒng)緊密關(guān)聯(lián),所有終端連接必須經(jīng)過(guò)MAM認(rèn)證并發(fā)放授權(quán)碼后才能夠訪問(wèn)對(duì)接接口。但MAS系統(tǒng)也可配置為獨(dú)立運(yùn)行,此時(shí)所有請(qǐng)求必須經(jīng)過(guò)CA認(rèn)證,確認(rèn)訪問(wèn)的客戶端證書(shū)是由MAS系統(tǒng)簽發(fā),并屬于MAS系統(tǒng)認(rèn)證的應(yīng)用才可訪問(wèn)??梢苑乐褂捎诮涌陂_(kāi)放給外網(wǎng),引起的非安全客戶的訪問(wèn),降低系統(tǒng)資源損耗。 開(kāi)發(fā)簡(jiǎn)單 MAS使用JAVASCRIPT作為對(duì)接適配器的開(kāi)發(fā)語(yǔ)言,并提供了強(qiáng)大的對(duì)接接口庫(kù)供開(kāi)發(fā)者調(diào)用,幫助開(kāi)發(fā)者更好的處理系統(tǒng)優(yōu)化和會(huì)話支持。使開(kāi)發(fā)者更專(zhuān)注于業(yè)務(wù)邏輯和數(shù)據(jù)分析的處理。MAS同時(shí)還提供了數(shù)據(jù)分析庫(kù),開(kāi)發(fā)者可以對(duì)返回的數(shù)據(jù)進(jìn)行轉(zhuǎn)換,使用標(biāo)準(zhǔn)HTML/XMLDOM、XSLT、JSON對(duì)數(shù)據(jù)進(jìn)行分析處理 。高性能 MAS提供CACHE對(duì)象可以緩存開(kāi)發(fā)者處理后的數(shù)據(jù),通過(guò)標(biāo)準(zhǔn)CACHE策略來(lái)降低對(duì)后臺(tái)服務(wù)器的壓力,提高業(yè)務(wù)訪問(wèn)效率。壓力緩沖 MAS還提供REQPOOL對(duì)象,通過(guò)限制REQPOOL大小來(lái)控制最大訪問(wèn)數(shù)量降低對(duì)企業(yè)業(yè)務(wù)系統(tǒng)的壓力,并通過(guò)延時(shí)處理,處理瞬時(shí)峰值訪問(wèn)為短時(shí)間高并發(fā)訪問(wèn),最大限度的保證服務(wù)質(zhì)量高擴(kuò)展性MAS支持集群部署,可以根據(jù)業(yè)務(wù)需求動(dòng)態(tài)進(jìn)行服務(wù)器添加。MAS系統(tǒng)運(yùn)行圖MASMAS適配服務(wù)器ApplicationMAS緩存服務(wù)器MAS會(huì)話服務(wù)器企業(yè)后端業(yè)務(wù)系統(tǒng)適配器HTMLDOMPREXMLDOMXSLTJSONLogicCodeREQUESTHTTPS-JSONRESPONSEHTTPS-JSONREQUESTRESPONSEMAS對(duì)接適配器MAS對(duì)接服務(wù)器中,開(kāi)發(fā)者開(kāi)發(fā)不同的對(duì)接適配器,移動(dòng)終端通過(guò)AJAX方式使用HTTP/HTTPS協(xié)議訪問(wèn)適配器。適配器根據(jù)用戶請(qǐng)求參數(shù)和邏輯相企業(yè)后端業(yè)務(wù)系統(tǒng)發(fā)送請(qǐng)求。后端業(yè)務(wù)系統(tǒng)返回響應(yīng)。相應(yīng)數(shù)據(jù)可能是網(wǎng)頁(yè)、JSON、XML等。適配器通過(guò)PRE預(yù)處理器對(duì)數(shù)據(jù)進(jìn)行處理,過(guò)濾掉多余數(shù)據(jù),降低后期數(shù)據(jù)分析時(shí)間適配器根據(jù)返回?cái)?shù)據(jù)類(lèi)型不同,對(duì)數(shù)據(jù)進(jìn)行處理,返回JSON對(duì)象、HTMLDOM對(duì)象、XMLDOM對(duì)象或使用XSLT對(duì)HTML/XML轉(zhuǎn)換為需要的格式。適配器處理解析后的數(shù)據(jù),并根據(jù)業(yè)務(wù)需求緩存數(shù)據(jù)到MAS緩存服務(wù)器。會(huì)話COOKIE保存至MAS會(huì)話服務(wù)器適配器返回?cái)?shù)據(jù)到移動(dòng)終端MAS系統(tǒng)構(gòu)成MAS的目的是為移動(dòng)應(yīng)用提供服務(wù),每一個(gè)應(yīng)用會(huì)調(diào)用MAS的多個(gè)接口。MAS系統(tǒng)中,開(kāi)發(fā)者首先開(kāi)發(fā)一個(gè)一個(gè)適配器,稱(chēng)之為Interface。然后注冊(cè)Interface至MAS接口列表中,并設(shè)定相關(guān)參數(shù),最后在為MAS添加應(yīng)用并為應(yīng)用設(shè)定可訪問(wèn)的接口。MAS系統(tǒng)目錄結(jié)構(gòu)分析上述文件結(jié)構(gòu)圖中RM作為此范例MAS根目錄。config目錄為MAS全局配置文件路徑 config路徑下包含application.xml、interface.xml和service.xml三個(gè)文件service.xml定義了MAS服務(wù)器提供的HTTP/HTTPS服務(wù)器的配置interface.xml定義了MAS服務(wù)器所能夠提供的適配器Interface接口,并配置這些接口由MAS中的那個(gè)HTTP/HTTPS服務(wù)向外提供訪問(wèn)。application.xml定義了MAS服務(wù)器所支持的應(yīng)用信息列表 config路徑下還包含application目錄。此路徑下根據(jù)application.xml文件中定義的支持應(yīng)用列表的應(yīng)用id,為每個(gè)應(yīng)用創(chuàng)建了策略配置路徑。策略路徑下存儲(chǔ)了應(yīng)用的接口訪問(wèn)策略。即此應(yīng)用可以訪問(wèn)哪些接口interface目錄為MAS適配器接口目錄interface目錄中根據(jù)interface.xml中配置的接口名稱(chēng),為每個(gè)接口創(chuàng)建了工作路徑。工作路徑下存儲(chǔ)了接口的代碼文件if.js和相關(guān)輔助或資源文件。例如XSL、ASMX文件等。interface目錄根路徑下有Initialize.js文件,開(kāi)發(fā)者可以在此文件內(nèi)部增加服務(wù)器初始化代碼,例如創(chuàng)建全局請(qǐng)求池或數(shù)據(jù)庫(kù)訪問(wèn)池對(duì)象MAS配置文件解析service.xml<meap> <servicename>ADAPTER</servicename> <serviceinfo>AppCanAdapterServertomanagetheMobileClientrequestanddispatchittocorrespondinginterface</serviceinfo> <cache><host></host><port>6380</port><poolsize>10</poolsize><db>1</db></cache><meap> <servicename>ADAPTER</servicename> <serviceinfo>AppCanAdapterServertomanagetheMobileClientrequestanddispatchittocorrespondinginterface</serviceinfo> <cache><host></host><port>6380</port><poolsize>10</poolsize><db>1</db></cache> <cookie><host></host><port>6380</port><poolsize>10</poolsize><db>0</db></cookie> <authpool><host></host><port>6380</port><poolsize>10</poolsize><db>2</db></authpool> <services> <service> <name>mobile_adapter_service</name> <host></host> <port>8081</port><protocal>HTTPS</protocal> <certificate><key>/MEAP/cert/SERVER.key</key><cert>/MEAP/cert/SERVER.crt</cert> </certificate> <secure>true</secure> <auth><type>ssl</type><username></username><password></password><ca>/MEAP/cert/ca.crt</ca> </auth> <timeout>60</timeout><subservicename>mobileProvider</subservicename> <sessionpool> <switch>false</switch><running>300</running><waiting>300</waiting><timeout>30</timeout> </sessionpool><ip-policy> <type>white</type><host>192.*.*.*</host></ip-policy> </service><service>……<subservicename>InternalProvider</subservicename>……</service> </services></meap>上述模板中展示了一個(gè)完整的MAS工程配置文件。文件中定義了MAS工程運(yùn)行時(shí)的相關(guān)系統(tǒng)參數(shù)和關(guān)聯(lián)服務(wù)的連接參數(shù)等信息。MAS工程配置中主要包含如下六個(gè)部分名稱(chēng)描述ServiceNameMAS工程名稱(chēng)serviceinfoMAS工程描述cacheMAS工程關(guān)聯(lián)Cache服務(wù)器配置cookieMAS工程關(guān)聯(lián)Cookie服務(wù)器配置authpoolMAS工程終端上下文服務(wù)器配置servicesMAS工程包含的服務(wù)配置cacache對(duì)接入請(qǐng)求使用的終端證書(shū)進(jìn)行有效性驗(yàn)證的MAM地址上述六個(gè)部分中,Services中可包含多個(gè)服務(wù)Service。與配置文件相對(duì)應(yīng)的系統(tǒng)結(jié)構(gòu)圖如下。ServiceServiceServiceInterfaceCookieCacheAuth業(yè)務(wù)系統(tǒng)SessionPoolProjectMAM上圖可以看出,一個(gè)MAS工程Project包含很多的接口Interface,同時(shí)向外提供多個(gè)服務(wù)Service。每個(gè)接口從屬于不同的服務(wù)。外部調(diào)用通過(guò)對(duì)應(yīng)的服務(wù)訪問(wèn)接口。MAS工程同時(shí)還需要外部數(shù)據(jù)庫(kù)提供Cache、Cookie和Auth存儲(chǔ)服務(wù)。外部調(diào)用通過(guò)服務(wù)調(diào)用接口訪問(wèn)業(yè)務(wù)系統(tǒng),當(dāng)業(yè)務(wù)系統(tǒng)的承載能力有限時(shí),通過(guò)SessionPool限制此服務(wù)對(duì)后臺(tái)業(yè)務(wù)系統(tǒng)的訪問(wèn)。ServiceName和ServiceInfoServiceName和Service定義了MAS工程的名稱(chēng)和功能描述Cache、Cookie和AuthPoolCache、Cookie和AuthPool定義了MAS工程對(duì)外部數(shù)據(jù)庫(kù)的連接配置。目前支持Redis。配置功能如下名稱(chēng)描述hostMAS服務(wù)器配屬Redis服務(wù)器IP地址默認(rèn)為portMAS服務(wù)器配屬Redis服務(wù)器IP端口默認(rèn)為6379poolsizeMAS服務(wù)器配屬Redis服務(wù)器連接池大小默認(rèn)為10dbMAS服務(wù)器配屬Redis服務(wù)器數(shù)據(jù)庫(kù)索引默認(rèn)為"0"ServicesServices包含MAS工程提供的對(duì)外服務(wù)的配置列表。每一個(gè)Service為一個(gè)對(duì)外服務(wù)。Service配置中包含了如下部分。名稱(chēng)描述nameMAS工程中服務(wù)器對(duì)外的服務(wù)組名稱(chēng)。固定為mobile_adapter_service。不可更改port服務(wù)接受外部訪問(wèn)的端口號(hào)host服務(wù)接受外部訪問(wèn)的IP。protocol服務(wù)對(duì)外提供的接入?yún)f(xié)議。HTTP或HTTPScertificate當(dāng)服務(wù)Protocol為HTTPS時(shí),服務(wù)器端證書(shū)文件和KEY文件存放路徑secure服務(wù)是否需要對(duì)傳入的連接進(jìn)行安全校驗(yàn)(TRUE/FALSE)auth當(dāng)Secure為T(mén)RUE時(shí),校驗(yàn)方式等參數(shù)配置sessionpool服務(wù)訪問(wèn)業(yè)務(wù)系統(tǒng)時(shí)任務(wù)池配置。避免壓力超過(guò)業(yè)務(wù)系統(tǒng)承載能力ip-policy服務(wù)IP策略,確認(rèn)服務(wù)只接收哪些IP的請(qǐng)求subservicename當(dāng)前服務(wù)的名稱(chēng)timeout服務(wù)訪問(wèn)超時(shí)時(shí)間上述部分中,certificate中的參數(shù)意義如下。名稱(chēng)描述key服務(wù)的服務(wù)器證書(shū)的KEY文件路徑。cert服務(wù)的服務(wù)器證書(shū)文件路徑上述證書(shū)必須由MAM的根CA證書(shū)簽發(fā)。上述部分中,auth中的參數(shù)意義如下。名稱(chēng)描述type接入服務(wù)對(duì)接入的請(qǐng)求地校驗(yàn)方式basic和sslusernameBasicAuth方式時(shí)請(qǐng)求包含的用戶名passwordBasicAuth方式時(shí)請(qǐng)求包含的密碼caSSL方式時(shí),用于驗(yàn)證終端證書(shū)身份的CA證書(shū)。此證書(shū)只能夠終端證書(shū)是由其頒發(fā)。但不能驗(yàn)證證書(shū)有效性。需要配合cacache配置的MAM證書(shū)校驗(yàn)地址進(jìn)行有效性驗(yàn)證。上述部分中,sessionpool中的參數(shù)意義如下。名稱(chēng)描述switch服務(wù)是否開(kāi)啟任務(wù)池功能running后端業(yè)務(wù)系統(tǒng)能夠承擔(dān)的最大并發(fā)數(shù)waiting當(dāng)任務(wù)池滿時(shí),等待任務(wù)池空閑的等待任務(wù)數(shù)timeout在等待池中的任務(wù)的等待最大時(shí)間,如果超過(guò)timeout沒(méi)有執(zhí)行。直接向移動(dòng)端返回錯(cuò)誤。上述部分中,ip-policy中的參數(shù)意義如下。名稱(chēng)描述typeIP地址過(guò)濾類(lèi)型white或者blackhostIP過(guò)濾條件。支持多條件。條件間通過(guò)‘;’分割。支持*通配符waiting當(dāng)任務(wù)池滿時(shí),等待任務(wù)池空閑的等待任務(wù)數(shù)timeout在等待池中的任務(wù)的等待最大時(shí)間,如果超過(guò)timeout沒(méi)有執(zhí)行。直接向移動(dòng)端返回錯(cuò)誤。interface.xml<meap> <interfaces> <interface> <meap> <interfaces> <interface> <name>if_login</name> <path>login</path> <subservicename>httpProvider</subservicename> <method>GET</method> </interface> <interface> <name>if_DEMO_tasklist</name> <path>taskListService</path> <subservicename>DEMOProvider</subservicename> <method>ALL</method> <public>true</public> </interface>

</meap>通過(guò)上述模板文件可以看出interface.xml完成MAS工程中所有接口的管理。每個(gè)接口是一個(gè)interface.Interface的配置項(xiàng)如下名稱(chēng)描述name接口實(shí)現(xiàn)文件的存儲(chǔ)路徑。path外部接口訪問(wèn)此接口時(shí)填入的urlPath路徑subservicename此接口從屬于的服務(wù)名稱(chēng)method此接口接受的外部HTTP/HTTPS訪問(wèn)的Method。支持ALL、GET、POST、HEAD等public此接口是否支持外部不經(jīng)過(guò)MAM授權(quán)訪問(wèn)。一般用于接口測(cè)試或內(nèi)部信任系統(tǒng)間連接application.xmlapplication.xml文件配置了MAS服務(wù)器所支持的應(yīng)用列表。只有此表中的應(yīng)用才能夠訪問(wèn)非Public接口例如:<meap><meap> <applications> <application> <name>MOBILEOA</name> <id>11111978</id> <policies> <policy>Default</policy> </policies> </application> </applications></meap>配置文件包含了所有MAS工程支持的應(yīng)用信息。每個(gè)應(yīng)用的參數(shù)說(shuō)明如下名稱(chēng)描述name應(yīng)用的名字id應(yīng)用的appid。對(duì)于外部APP,由AppCanMAM或SDK創(chuàng)建應(yīng)用時(shí)獲得。對(duì)于內(nèi)部信任系統(tǒng),建議采用<10000000的數(shù)值對(duì)內(nèi)部系統(tǒng)進(jìn)行編號(hào)policies應(yīng)用的接口訪問(wèn)策略組。每個(gè)應(yīng)用的各個(gè)功能需要調(diào)用很多接口,但是并不一定所有應(yīng)用的使用者都被允許使用其所有功能。因此對(duì)其可訪問(wèn)的接口也要做相同限制。Policies定義了多個(gè)接口配置策略,通過(guò)與MAM關(guān)聯(lián),為不同用戶提供接口限制。在application.xml中只定義應(yīng)用接口訪問(wèn)策略配置名稱(chēng)。在項(xiàng)目的config目錄下的application目錄中,我們根據(jù)每一個(gè)應(yīng)用的ID建立應(yīng)用接口策略路徑。路徑下根據(jù)在application.xml文件中定義的策略名稱(chēng),編寫(xiě)不同的配置文件。配置文件按照policy_[POLICYNAME].xml的方式命名。policy_[PolicyName].xml<policy> <allow>ALL</allow> <interface> <name>if_login</name> <policy> <allow>ALL</allow> <interface> <name>if_login</name> <name>if_resdown</name> </interface></policy>上述范例設(shè)定此應(yīng)用能夠訪問(wèn)MAS服務(wù)器中除了if_login和if_resdown適配器接口外的所有接口。名稱(chēng)描述allow接口策略類(lèi)型ALL或NONE。代表允許所有和禁止所有Interface禁止或允許訪問(wèn)的接口列表。通過(guò)name字段與interface.xml中的接口關(guān)聯(lián)Initialize.js開(kāi)發(fā)者可以在Initialize.js文件中添加全局配置代碼,例如初始化消息服務(wù)。范例如下:functionrun(Context)functionrun(Context){ MEAP.MSG.Init(“34”,6397);}exports.Runner=run;MAS適配器的實(shí)現(xiàn)MAS適配器運(yùn)行環(huán)境MAS適配器使用JavaScript作為實(shí)現(xiàn)語(yǔ)言,使用基于NODEJS定制擴(kuò)展開(kāi)發(fā)的容器作為代碼運(yùn)行環(huán)境。Node.js是一個(gè)可以快速構(gòu)建網(wǎng)絡(luò)服務(wù)及應(yīng)用的平臺(tái),該平臺(tái)基于V8引擎構(gòu)建。V8引擎本身使用了一些最新的編譯技術(shù),使得用Javascript編寫(xiě)出來(lái)的代碼與用C這類(lèi)高級(jí)語(yǔ)言寫(xiě)出來(lái)的代碼性能相差無(wú)幾。MAS適配器每個(gè)MAS適配器接口都存放在[workpath]/interface/[interface_name]路徑下。適配器的主文件統(tǒng)一命名為if.js。標(biāo)準(zhǔn)的空適配器如下varMEAP=require("meap");varMEAP=require("meap");functionrun(Param,Robot,Request,Response,IF){ //Addyourcodehere}exports.Runner=run;varMEAP=require("meap")引入MAS根對(duì)象MEAPrun為適配器接口進(jìn)入點(diǎn)函數(shù)。 Param為客戶端請(qǐng)求參數(shù)對(duì)象 Robot為終端上下文對(duì)象 Request為NODEJSHTTPRequest對(duì)象 Response為NODEJSHTTPResponse對(duì)象 IF為接口配置對(duì)象exports.Runner=run 引出Runner接口作為適配器進(jìn)入點(diǎn)函數(shù)。Param對(duì)象Param對(duì)象存儲(chǔ)了應(yīng)用此次訪問(wèn)的參數(shù)。屬性說(shuō)明appid應(yīng)用訪問(wèn)URL中攜帶的應(yīng)用ID信息sid應(yīng)用訪問(wèn)URL中攜帶的應(yīng)用訪問(wèn)授權(quán)碼cmd應(yīng)用訪問(wèn)的接口路徑。對(duì)應(yīng)于interfae.xml文件中的pathparams應(yīng)用訪問(wèn)URL中?后攜帶的參數(shù)列表fields應(yīng)用訪問(wèn)HTTPPOST請(qǐng)求中body攜帶的參數(shù)列表files應(yīng)用訪問(wèn)HTTPPOST請(qǐng)求中攜帶的文件對(duì)象Robot對(duì)象Robot對(duì)象是當(dāng)前終端訪問(wèn)的上下文對(duì)象。屬性說(shuō)明ContextMAS服務(wù)器全局上下文對(duì)象Auth終端信息對(duì)象,存儲(chǔ)了當(dāng)前終端的授權(quán)信息和終端信息。若不與MAM系統(tǒng)關(guān)聯(lián),則只存儲(chǔ)APPID和SID。如果與MAM關(guān)聯(lián)且此終端經(jīng)過(guò)授權(quán)認(rèn)證,則會(huì)存儲(chǔ)詳細(xì)信息,例如工號(hào)、部門(mén)、姓名等方法說(shuō)明savePublicCache(URL,Response,Cache)保存URL對(duì)應(yīng)的Cache數(shù)據(jù)到公有CACHE區(qū),使用HTTPResponse中的CacheControl作為Cache控制數(shù)據(jù)savePublicEXPCache(URL,Response,Cache,Expire)保存URL對(duì)應(yīng)的Cache數(shù)據(jù)到公有CACHE區(qū),使用Expire時(shí)間作為Cache控制數(shù)據(jù)。通過(guò)這個(gè)接口開(kāi)發(fā)者可以自定義Cache過(guò)期時(shí)間checkPublicCache(URL,cb)檢查當(dāng)前公有Cache中是否存在于URL相匹配的緩存數(shù)據(jù)。functioncb(mode,data)查詢(xún)回調(diào)函數(shù)當(dāng)有緩存數(shù)據(jù)存在,且滿足Expire屬性,則mode返回"CACHE",data為緩存的數(shù)據(jù)。開(kāi)發(fā)者可以直接返回?cái)?shù)據(jù)到移動(dòng)終端當(dāng)有緩存存在但需要向服務(wù)器檢查狀態(tài)時(shí),mode返回"CHECK",data為保存的CacheControl信息。若無(wú)緩存mode返回"CHECK",data返回{}getPublicCache(URL,cb)直接返回URL匹配的公有緩存數(shù)據(jù),不校驗(yàn)CacheControl。functioncb(mode,data)查詢(xún)回調(diào)函數(shù)同上savePrivateCache(URL,Response,Cache)保存URL對(duì)應(yīng)的Cache數(shù)據(jù)到私有CACHE區(qū),使用HTTPResponse中的CacheControl作為Cache控制數(shù)據(jù)savePrivateEXPCache(URL,Response,Cache,Expire)保存URL對(duì)應(yīng)的Cache數(shù)據(jù)到私有CACHE區(qū),使用Expire時(shí)間作為Cache控制數(shù)據(jù)。通過(guò)這個(gè)接口開(kāi)發(fā)者可以自定義Cache過(guò)期時(shí)間checkPrivateCache(URL,cb)檢查當(dāng)前私有Cache中是否存在于URL相匹配的緩存數(shù)據(jù)。functioncb(mode,data)查詢(xún)回調(diào)函數(shù)當(dāng)有緩存數(shù)據(jù)存在,且滿足Expire屬性,則mode返回"CACHE",data為緩存的數(shù)據(jù)。開(kāi)發(fā)者可以直接返回?cái)?shù)據(jù)到移動(dòng)終端當(dāng)有緩存存在但需要向服務(wù)器檢查狀態(tài)時(shí),mode返回"CHECK",data為保存的CacheControl信息。若無(wú)緩存mode返回"CHECK",data返回{}getPrivateCache(URL,cb)直接返回URL匹配的私有緩存數(shù)據(jù),不校驗(yàn)CacheControl。functioncb(mode,data)查詢(xún)回調(diào)函數(shù)同上setSessionData(key,value)保存應(yīng)用臨時(shí)上下文數(shù)據(jù)。當(dāng)應(yīng)用下一次訪問(wèn)服務(wù)器時(shí),可以通過(guò)Robot.Data[key]獲取上次存儲(chǔ)的valueSet(Key,Value)為終端上下文添加鍵值對(duì)Get(Key)根據(jù)KEY獲取之前設(shè)定的鍵值對(duì)ValueRequest對(duì)象參看"/api/http.html"中的http.ServerRequest對(duì)象Response對(duì)象參看"/api/http.html"中的http.ServerResponse對(duì)象IF對(duì)象IF對(duì)象存儲(chǔ)了此接口在interface.xml文件中的配置信息。name、path、method、public和subservicenameMAS適配器APIMAS提供了服務(wù)器后端接口對(duì)象供開(kāi)發(fā)者調(diào)用。對(duì)象說(shuō)明MEAP.AJAX訪問(wèn)WEBHTTP/HTTPS資源MEAP.MYSQL訪問(wèn)MYSQL服務(wù)器資源。支持創(chuàng)建MYSQL連接池對(duì)象,用于維護(hù)MYSQL服務(wù)器的鏈接,降低由于重連引起的性能損耗,提高數(shù)據(jù)訪問(wèn)效率MEAP.SOAP訪問(wèn)WEBService服務(wù)資源MEAP.SFS文件服務(wù)器靜態(tài)文件訪問(wèn)對(duì)象,支持Cache,支持gzip壓縮MEAP.PARSER數(shù)據(jù)解析對(duì)象,用于處理服務(wù)器相應(yīng)數(shù)據(jù)。數(shù)據(jù)轉(zhuǎn)換類(lèi)型支持: HTMLDOM對(duì)象-與標(biāo)準(zhǔn)W3CHTMLDOM對(duì)象相同,可以使用任何標(biāo)準(zhǔn)DOM對(duì)象接口來(lái)處理數(shù)據(jù)例如element.getElementByID XMLDOM對(duì)象-與標(biāo)準(zhǔn)W3CXMLDOM對(duì)象相同,可以使用任何標(biāo)準(zhǔn)DOM對(duì)象接口來(lái)處理數(shù)據(jù)例如element.getElementByID JSON對(duì)象-直接轉(zhuǎn)換HTML或XML為JSON數(shù)據(jù)格式進(jìn)行處理 XSLTHTML轉(zhuǎn)換-支持使用XSLT對(duì)HTML數(shù)據(jù)進(jìn)行轉(zhuǎn)換,根據(jù)XSLT定義翻譯成用戶需要的數(shù)據(jù)格式 XSLTXML轉(zhuǎn)換-支持使用XSLT對(duì)HTML數(shù)據(jù)進(jìn)行轉(zhuǎn)換,根據(jù)XSLT定義翻譯成用戶需要的數(shù)據(jù)格式MEAP.MSGMEAP消息訂閱發(fā)布服務(wù),幫助開(kāi)發(fā)者實(shí)現(xiàn)業(yè)務(wù)變化時(shí)的接口間信息傳遞等功能MEAP.LDAP實(shí)現(xiàn)與企業(yè)ActiveDirectory或其他LDAP服務(wù)的對(duì)接完成用戶賬號(hào)認(rèn)證等功能。MEAP.AJAXvaroption={ method:"GET", urlvaroption={ method:"GET", url :"/wsyw/wscx/gjjcx-login.jsp", Cookie:true, Headers:{Referer:"/"} }MEAP.AJAX.Runner(option,function(err,res,data){ if(!err) { //AnalyzetheHTMLpagereturnfromWEBServer } else { Response.write("\r\nLoginFailed\r\n"); Response.end(); }},Robot);函數(shù)Runner(Option,Callback,Robot,Pretreat)Option請(qǐng)求參數(shù)屬性說(shuō)明method服務(wù)器HTTP資源訪問(wèn)方法GET或POSTurl服務(wù)器資源URL地址。支持HTTP/HTTPSParams添加在服務(wù)器鏈接地址?后的參數(shù)列表例如"HTTP://localhost/auth?a=1&n=2"Enctype當(dāng)使用POST方式時(shí)的數(shù)據(jù)提交格式"application/x-www-form-urlencoded""multipart/form-data"或其他非表單提交方式Body當(dāng)使用POST方式提交數(shù)據(jù)時(shí)的文本參數(shù)列表Files當(dāng)使用POST方式提交數(shù)據(jù)時(shí)上傳的文件列表Files:{pic:{name:"photo.jpg",path:”/tmp/12a37cb3623acdb”,contentType:”img/jpg”}}Headers開(kāi)發(fā)者自己定義的HEADER信息。例如Headers:{Referer:"/"}CacheControlCache控制信息,會(huì)添加進(jìn)Header中,向服務(wù)器進(jìn)行數(shù)據(jù)有效性校驗(yàn)。BasicAuth服務(wù)器Basic校驗(yàn)參數(shù)。例如BasicAuth:{username:admin,password:admin}ClientAuthentication當(dāng)服務(wù)器需要客戶端證書(shū)認(rèn)證時(shí)提供的證書(shū)文件配置。例如ClientAuthentication:{pfx:'/home/wind/Cert/12112012.p12',pass:'12345'}Cookie是否使用和處理Cookie。如果設(shè)定為true,則AJAX會(huì)自動(dòng)從會(huì)話服務(wù)器獲取當(dāng)前URL匹配的Cookie信息,并自動(dòng)保存收到的回復(fù)中包含的Cookie到會(huì)話服務(wù)器。Cookie信息只在這一次應(yīng)用生存期內(nèi)有效,應(yīng)用關(guān)閉后,Cookie將失效。Stream返回的數(shù)據(jù)直接寫(xiě)入到Stream數(shù)據(jù)流中。經(jīng)常用于獲取服務(wù)器靜態(tài)資源文件Charset返回?cái)?shù)據(jù)的字符編碼。如果指定,AJAX將自動(dòng)轉(zhuǎn)換返回?cái)?shù)據(jù)從此編碼到UTF-8。主要用于服務(wù)器返回?cái)?shù)據(jù)不為UTF-8或返回編碼與返回內(nèi)容編碼不匹配的情況。Callback=function(err,res,data)請(qǐng)求返回回調(diào)函數(shù)參數(shù)說(shuō)明err接口調(diào)用返回狀態(tài)0代表成功-1代表失敗res返回的HTTPResponse對(duì)象data服務(wù)器回復(fù)的響應(yīng)數(shù)據(jù)。如果定義了預(yù)處理函數(shù),則data為返回的處理后數(shù)據(jù)Robot應(yīng)用訪問(wèn)上下文對(duì)象參見(jiàn)Robot對(duì)象Pretreat=function(data)數(shù)據(jù)預(yù)處理回調(diào)函數(shù)在此函數(shù)中,開(kāi)發(fā)者可以去除返回?cái)?shù)據(jù)中的多余數(shù)據(jù),降低下一步數(shù)據(jù)分析占用的系統(tǒng)資源,提高系統(tǒng)性能。參數(shù)說(shuō)明Data服務(wù)器返回的數(shù)據(jù)返回返回處理后的數(shù)據(jù)MEAP.MYSQLvarMEAP=require("meap");functionrun(Param,Robot,Request,Response,IF)varMEAP=require("meap");functionrun(Param,Robot,Request,Response,IF){varoption={host:"sql://2",username:"gh_user",password:"ghpass",dbname:"gh_db",}; varsql="selectcount(*)asnfromuserwhereusername='${username}'&&password='${password}'" MEAP.MYSQL.BuildStatement(sql,Param.params,option,function(a,b){ }); LOG("loginoption",option); MEAP.MYSQL.Runner(option,function(err,rows,cols){ LOG(err,rows,cols); if(rows[0].n){ vartoken=Math.uuid(32,16); Robot.Token=token; Response.write(JSON.stringify({code:'0',result:'LoginSuccess',token:token})); Response.end(); } else { Response.write(JSON.stringify({code:'-1',result:'Loginfailed'}));Response.end(); } },Robot);}exports.Runner=run;方法說(shuō)明BuildStatement(sql,params,options,cb)根據(jù)參數(shù)格式化SQL語(yǔ)句Runner(Option,Callback,Robot)SQL運(yùn)行函數(shù)buildPool(Option)創(chuàng)建MYSQL請(qǐng)求池,此接口一般在Initlizlize.js中調(diào)用,創(chuàng)建MYSQL請(qǐng)求池??梢詣?chuàng)建多個(gè)請(qǐng)求池連接不同的MYSQL服務(wù)器。函數(shù)BuildStatement(sql,params,options,cb)通過(guò)客戶端傳入的參數(shù)配合模板生成SQL查詢(xún)語(yǔ)句。Sql語(yǔ)句模板selectcount(*)asnfromuserwhereusername='${username}'&&password='${password}'通過(guò)${key}的方式對(duì)應(yīng)客戶端傳入的參數(shù)Params存儲(chǔ)了與模板中匹配字段對(duì)應(yīng)的參數(shù)的JSON對(duì)象。例如{username:’xxx’,password:’zzz’}Options用于接收拼裝后的SQL語(yǔ)句的option對(duì)象。當(dāng)語(yǔ)句拼裝結(jié)束后,會(huì)賦值給options.sql屬性Cb當(dāng)模板中設(shè)定了${cb:xxx}類(lèi)型的字段時(shí),會(huì)調(diào)用此回調(diào)函數(shù),開(kāi)發(fā)者可以在此回調(diào)函數(shù)內(nèi)部對(duì)數(shù)據(jù)進(jìn)行自定義格式化處理函數(shù)Runner(Option,Callback,Robot)Option請(qǐng)求參數(shù)屬性說(shuō)明hostMYSQL數(shù)據(jù)庫(kù)的服務(wù)器URL。例如“sql://2”username連接數(shù)據(jù)庫(kù)的用戶帳號(hào)password連接數(shù)據(jù)庫(kù)的用戶密碼dbname將要打開(kāi)的數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)庫(kù)名稱(chēng)sql打開(kāi)數(shù)據(jù)庫(kù)后執(zhí)行的SQL語(yǔ)句。此語(yǔ)句可以通過(guò)BuildStatement進(jìn)行賦值charset數(shù)據(jù)庫(kù)編碼。默認(rèn)utf-8Callback=function(err,rows,cols)請(qǐng)求返回回調(diào)函數(shù)Err為返回的調(diào)用錯(cuò)誤。0代表執(zhí)行SQL成功Rows返回查詢(xún)的數(shù)據(jù)列表Cols返回查詢(xún)的數(shù)據(jù)條目欄目函數(shù)buildPool(Option)用于創(chuàng)建一個(gè)MYSQL連接池。降低大并發(fā)時(shí)對(duì)服務(wù)器的連接壓力。Option請(qǐng)求參數(shù)屬性說(shuō)明hostMYSQL數(shù)據(jù)庫(kù)的服務(wù)器URL。例如“sql://2”username連接數(shù)據(jù)庫(kù)的用戶帳號(hào)password連接數(shù)據(jù)庫(kù)的用戶密碼dbname將要打開(kāi)的數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)庫(kù)名稱(chēng)charset數(shù)據(jù)庫(kù)編碼。默認(rèn)utf-8返回說(shuō)明MYSQLPOOL對(duì)象MYSQL連接池對(duì)象MYSQLPOOL對(duì)象方法說(shuō)明Runner(Option,Callback,Robot)SQL運(yùn)行函數(shù)。與MEAP.MYSQL相同Option請(qǐng)求參數(shù)屬性說(shuō)明sql打開(kāi)數(shù)據(jù)庫(kù)后執(zhí)行的SQL語(yǔ)句。此語(yǔ)句可以通過(guò)BuildStatement進(jìn)行賦值Callback=function(err,rows,cols)請(qǐng)求返回回調(diào)函數(shù)Err為返回的調(diào)用錯(cuò)誤。0代表執(zhí)行SQL成功Rows返回查詢(xún)的數(shù)據(jù)列表Cols返回查詢(xún)的數(shù)據(jù)條目欄目MEAP.SOAPSOAP對(duì)象是為了解決WebSerevice接口服務(wù)整合封裝的SOAP協(xié)議對(duì)接組件。varMEAP=require("meap");

functionrun(Param,Robot,Request,Response,IF)varMEAP=require("meap");

functionrun(Param,Robot,Request,Response,IF)

{

varoption={

wsdl:"/meap/RM/interface/if_soap/WeatherWebService.asmx",

Params:Param.params,

func:"getSupportCity"

};

LOG(JSON.stringify(option));

MEAP.SOAP.Runner(option,function(status,res,data){

Response.setHeader("Content-Type","text/plain;charset=utf-8");

Response.write("["+JSON.stringify(data)+"]");

Response.end();

});

}

exports.Runner=run函數(shù)Runner(Option,Callback,Robot)Option請(qǐng)求參數(shù)屬性說(shuō)明wsdlWEBServiceWSDL文件路徑。支持本地或URL路徑Params用于填充WEBService請(qǐng)求的參數(shù)的JSON對(duì)象。實(shí)際參數(shù)名稱(chēng)要與WSDL文件中需要填入的字段名稱(chēng)保持一致func需要調(diào)用的WSDL文件中定義的接口名稱(chēng)Callback=function(err,res,data)請(qǐng)求返回回調(diào)函數(shù)參數(shù)說(shuō)明err接口調(diào)用返回狀態(tài)0代表成功-1代表失敗res返回的HTTPResponse對(duì)象data服務(wù)器回復(fù)的XML數(shù)據(jù)轉(zhuǎn)換為JSON后的數(shù)據(jù)。函數(shù)Server(Option,Callback)用于構(gòu)建一個(gè)WEBService接口,接收客戶端或其他服務(wù)器的WEBService請(qǐng)求。varServer=null;varoption={varServer=null;varoption={ wsdl:"./wsdl/demo.wsdl", Service:{ Service:{ Port:{ Func:function(args){ return{}; } } } }};MEAP.SOAP.Server(option,function(err,server){ if(!err) Server=server;});functionrun(Param,Robot,Request,Response,IF){ if(Object.keys(Param.params)[0]=="wsdl"){ Response.setHeader("Content-Type","text/xml"); fs.createReadStream("./wsdl/demo.wsdl").pipe(Response,{}); }elseif(Server){ Server.Runner(Request,Response,Param.body,function(err,result){ LOG5("[SINOTaskInfo]result",err,result); if(!err){ Response.setHeader("Content-Type","text/xml"); Response.write(result); } Response.end(); }); }}exports.Runner=run;上述范例中,我們首先構(gòu)建了一個(gè)option對(duì)象,此對(duì)象根據(jù)WSDL的規(guī)定,定義了Service屬性,用于處理客戶端傳入的WEBService請(qǐng)求。定義了WSDL文件路徑。然后使用Option構(gòu)建了Server對(duì)象。當(dāng)客戶端使用GET方式調(diào)用此接口時(shí),且URL中包含wsdl的參數(shù)。例如/11111/public/getTaskList?wsdl則返回WSDL文件內(nèi)容給客戶端。當(dāng)客戶端采用POST方式訪問(wèn)此接口時(shí),通過(guò)Server.Runner函數(shù)對(duì)傳入的XML數(shù)據(jù)進(jìn)行處理,自動(dòng)路由到Option中定義的Func函數(shù)中。MEAP.SFSSFS對(duì)象用于處理服務(wù)器靜態(tài)網(wǎng)頁(yè)或資源文件的下載請(qǐng)求varMEAP=require("meap");functionrun(Param,Robot,Request,Response,IF)varMEAP=require("meap");functionrun(Param,Robot,Request,Response,IF){ varoption={ Request:Request, Response:Response, pathname:Param.params.fid } if(Param.params.fid.indexOf("/tmp/")!=0){ Response.statusCode=404; Response.write(JSON.stringify({code:"-1",result:"Youhavenoaccessforthispath"})); Response.end(); return; } MEAP.SFS.Runner(option,null,Robot);}exports.Runner=run;上述范例中,客戶端向服務(wù)器請(qǐng)求tmp目錄下的一個(gè)文件。SFS對(duì)象自動(dòng)獲取文件并返回給客戶端。上述范例并沒(méi)有對(duì)文件路徑進(jìn)行完全的安全校驗(yàn),僅作為參考。函數(shù)Runner(Option,Callback,Robot)Option請(qǐng)求參數(shù)屬性說(shuō)明Request客戶端請(qǐng)求的Request對(duì)象Response用于處理客戶端數(shù)據(jù)返回的Response對(duì)象pathname需要獲取的文件絕對(duì)路徑Callback保留參數(shù),無(wú)作用MEAP.PARSERParser對(duì)象用于對(duì)服務(wù)器返回的數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理。例如WSDL轉(zhuǎn)換、HTMLDOM轉(zhuǎn)換等MEAP.PARSER.Runner("HTML",MEAP.PARSER.Runner("HTML",res.text,function(err,DOM){ if(DOM) { try{ varwindow=DOM.createWindow(); varlist=window.document.getElementsByTagName("a"); vardata=... Response.setHeader("Content-Type","text/plain;charset=utf-8"); Response.write(JSON.stringify(data)); }catch(e){ ... } } else { ... } Response.end(); });函數(shù)Runner(Type,SrcData,Callback,XSLT)Type數(shù)據(jù)格式轉(zhuǎn)換器類(lèi)型。類(lèi)型說(shuō)明HTML轉(zhuǎn)換HTML網(wǎng)頁(yè)數(shù)據(jù)為HTMLDOM對(duì)象XML轉(zhuǎn)換XML數(shù)據(jù)為JSON對(duì)象XSLT-H采用XSLT轉(zhuǎn)換HTML數(shù)據(jù)XSLT-X采用XSLT轉(zhuǎn)換XML數(shù)據(jù)SrcData傳入的原始XML、HTML數(shù)據(jù)Callback=function(err,data)轉(zhuǎn)換結(jié)束回調(diào)函數(shù)。Err轉(zhuǎn)換返回錯(cuò)誤碼。0代表成功Data轉(zhuǎn)換后的JSON數(shù)據(jù)對(duì)象、DOM對(duì)象等XSLT當(dāng)使用XSLT方式轉(zhuǎn)換數(shù)據(jù)時(shí)的XSLT模板對(duì)象函數(shù)MakeXSL(XSLTString)用于轉(zhuǎn)換一個(gè)XSLT字符串為XSLT對(duì)象。返回的XSLT對(duì)象作為Parser對(duì)象的傳入?yún)?shù)。MEAP.MSGMSG對(duì)象用于實(shí)現(xiàn)信息的監(jiān)聽(tīng)和發(fā)布,實(shí)現(xiàn)不同接口間的合作處理。參見(jiàn)如下范例MEAP.MSG.Subscribe(msgId,function(err,data){ MEAP.MSG.Subscribe(msgId,function(err,data){ LOG5("[MSGMEAP.MSG.Subscribe]",err,data); if(!err){ Response.setHeader("Content-Type","text/plain;charset=utf-8"); Response.write(data); } Response.end(); },function(err,channel,data){ LOG5("[MSG]ready",channel,data); MEAP.AJAX.Runner(option,function(err,res,data){ //LOG5("MEAP.AJAX.RunnerCallBack:",err,res,data); if(!err){ LOG5("requestcallbackok"); } }); }); functionrun(Param,Robot,Request,Response,IF){ MEAP.MSG.Publish(Param.params.msgId,Param.body) Response.end();}上述范例中,我們通過(guò)MSG的Subscribe接口監(jiān)聽(tīng)了一個(gè)頻道m(xù)sgId.當(dāng)監(jiān)聽(tīng)準(zhǔn)備好后,采用AJAX對(duì)象調(diào)用了業(yè)務(wù)系統(tǒng)接口。由于業(yè)務(wù)系統(tǒng)并不通過(guò)AJAX的返回?cái)?shù)據(jù)返回實(shí)際處理結(jié)果,而是由業(yè)務(wù)系統(tǒng)通過(guò)另一個(gè)接口的調(diào)用進(jìn)行返回。因此我們?cè)跇I(yè)務(wù)系統(tǒng)調(diào)用的接口內(nèi)部收到返回?cái)?shù)據(jù)后,通過(guò)MSG的Publish接口發(fā)布數(shù)據(jù)到監(jiān)聽(tīng)器上。監(jiān)聽(tīng)器自動(dòng)調(diào)用回調(diào)函數(shù)返回由Publish接口發(fā)布的數(shù)據(jù)。完

溫馨提示

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

評(píng)論

0/150

提交評(píng)論