




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、軟件體系架構(gòu)模式在J2EE中的應(yīng)用層體系架構(gòu)模式層(layer)體系架構(gòu)模式就是把應(yīng)用系統(tǒng)分解成子任務(wù)組,其中每個(gè)子任務(wù)組處于一個(gè)特定的抽象層次上。 1.1 概述層架構(gòu)模式組織成一個(gè)層次結(jié)構(gòu),每一層為上層服務(wù)(Service Provider),同時(shí)也作為下層的客戶端。在一些層次系統(tǒng)中,除了包含一些輸出函數(shù)外,內(nèi)部的層只對(duì)相鄰的層可見。這樣的系統(tǒng)中構(gòu)件在一些層實(shí)現(xiàn)了虛擬機(jī)(在另一些層次系統(tǒng)中層是部分不透明的)機(jī)制。層的調(diào)用通過決定層間如何交互的協(xié)議來定義。這種風(fēng)格支持基于可增加抽象層的設(shè)計(jì)。這樣,允許將一個(gè)復(fù)雜問題分解成一個(gè)層堆棧的實(shí)現(xiàn)。由于每一層最多只影響兩層,同時(shí)只要給相鄰層提供接口,允許
2、每層用不同的方法實(shí)現(xiàn),因此為軟件重用提供了強(qiáng)大的支持。 1.2 問題層結(jié)構(gòu)是最成熟的軟件體系架構(gòu)模式,它起源于早期的系統(tǒng)設(shè)計(jì),由開始的函數(shù)調(diào)用,作為函數(shù)庫,供其他程序進(jìn)行調(diào)用. 一般在系統(tǒng)設(shè)計(jì)時(shí),由一系列高層模塊和底層模塊處理構(gòu)成,并且高層的模塊依賴于底層.因此為了完成系統(tǒng)的設(shè)計(jì)必須要考慮一下因素: · 源碼的修改會(huì)影響整個(gè)系統(tǒng),應(yīng)該被限定在一個(gè)部件內(nèi)部而不影響其他模塊 · 接口應(yīng)當(dāng)穩(wěn)定,甚至要被規(guī)范化 · 系統(tǒng)的架構(gòu)應(yīng)該靈活,可以更換 · 系統(tǒng)的開發(fā)需要被劃分為多個(gè)部分,比如團(tuán)隊(duì)開發(fā)或者異地開發(fā) 1.3 模式結(jié)構(gòu)從系統(tǒng)高層的觀點(diǎn)來看設(shè)計(jì)方案比較簡單,它
3、把系統(tǒng)進(jìn)行分為幾個(gè)層次并且把它們疊加起來,最下面的抽象層稱為第一層,它是系統(tǒng)基礎(chǔ).依次類推,把n層放在第n-1層上.其結(jié)構(gòu)如下圖: 1.4 非軟件描述層模式在現(xiàn)實(shí)生活中很常見.特別在中國的封建社會(huì)的等級(jí)森嚴(yán)的制度下,把人分為幾個(gè)等級(jí),其實(shí)就是分層,上層可以指示下層.不過現(xiàn)在有的企業(yè)管理制度, 與這種管理理念相適應(yīng)的管理體制是垂直的自上而下的泛官僚體制結(jié)構(gòu)。其結(jié)構(gòu)設(shè)置表現(xiàn)為自上而下的單向?qū)蛹?jí)制,這種結(jié)構(gòu)有利于政令的傳達(dá)和執(zhí)行,保證管理的效率,但是官僚特性也很明顯.如下圖: 層模式在現(xiàn)代物流也很常見,如下圖的,在自行車在運(yùn)輸?shù)倪^程,首先在自行車廠進(jìn)行出廠,有人員進(jìn)行打包,然后進(jìn)行裝運(yùn),最后再有相應(yīng)
4、的分銷商,進(jìn)行組裝銷售. 1.5 優(yōu)點(diǎn)與缺點(diǎn)層架構(gòu)模式是最常用的一種軟件體系架構(gòu)模式。從它的實(shí)現(xiàn)和結(jié)構(gòu)圖中,我們可以得出,該模式具有以下優(yōu)點(diǎn)和缺點(diǎn): 1.5.1 優(yōu)點(diǎn) · 層次的復(fù)用性.如果每個(gè)層次有很好的抽象接口,那么它可以被其他環(huán)境復(fù)用 · 支持基于抽象程度遞增的系統(tǒng)設(shè)計(jì),使設(shè)計(jì)者可以把一個(gè)復(fù)雜系統(tǒng)按遞增的步驟進(jìn)行分解,使系統(tǒng)更容易模塊化 · 支持功能增強(qiáng),因?yàn)槊恳粚又炼嗪拖噜彽纳舷聦咏换?,因此功能的改變最多影響相鄰的上下?· 可替換性.因?yàn)楠?dú)立的層次設(shè)計(jì)很容易被功能相同的模塊替換 但是在實(shí)際的項(xiàng)目中,該模式也有相應(yīng)的不足1.5.2 缺點(diǎn)·
5、; 低效率 分層結(jié)構(gòu)通常要比單層結(jié)構(gòu)的效率低.因?yàn)橛袝r(shí)高層過分依賴底層的服務(wù),因此必須穿過許多中間層進(jìn)行數(shù)據(jù)的傳送,甚至多次. · 改變行為的連鎖反映 層架構(gòu)模式在J2EE中的應(yīng)用2.1 J2EE層架構(gòu)模式的背景也許下圖大家都比較熟悉,它介紹了軟件從兩層體系架構(gòu)方式到三層的架構(gòu)模式.由于2層的架構(gòu)方式,存在以下幾點(diǎn)缺點(diǎn):· 軟件部署開銷很大 每個(gè)客戶端數(shù)據(jù)庫驅(qū)動(dòng)都需要進(jìn)行安裝和設(shè)置,一但程序發(fā)生改變,就需要重新部署,這意味巨大的開銷 · 改變數(shù)據(jù)結(jié)構(gòu)的開銷很大 客戶端應(yīng)用程序一般通過JDBC,ODBC,ADO等直接訪問數(shù)據(jù)庫,這表明客戶程序直接與底層數(shù)據(jù)結(jié)構(gòu)交互。
6、如果改變數(shù)據(jù)結(jié)構(gòu)來處理新的過程,就需要重新部署每個(gè)客戶端。 · 改變數(shù)據(jù)庫的類型的開銷很大 由于客戶端直接使用特定數(shù)據(jù)庫的API,和特定的存輸過程,觸發(fā)器等,因此數(shù)據(jù)庫類型的改變,會(huì)引起很多的修改。 但是通過把業(yè)務(wù)邏輯從存儲(chǔ)過程和本地的業(yè)務(wù)邏輯進(jìn)行分離,獨(dú)立為一層,這樣就是應(yīng)用層架構(gòu)模式最經(jīng)典的應(yīng)用之一. 2.2 J2ee應(yīng)用的概述J2EE平臺(tái)為設(shè)計(jì)、開發(fā)、集成和部署企業(yè)應(yīng)用提供基于組件的方法。這種方法不但能降低成本,還能對(duì)整個(gè)設(shè)計(jì)和實(shí)施過程進(jìn)行快速跟蹤。J2EE平臺(tái)能提供多層分布式應(yīng)用模型,能重用組件,能為用戶提供統(tǒng)一安全模型和靈活的事務(wù)處理控制。在J2EE規(guī)范中進(jìn)行了以下的分層:
7、 · 應(yīng)用客戶端組件 · Servlets和Java Server Pages(JSP)組件(也稱為Web組件) · Enterprise JavaBeans組件 · 基礎(chǔ)服務(wù)和與其他系統(tǒng)(如數(shù)據(jù)庫等)的交互 2.3 Architecture and the Cube軟件體系架構(gòu)研究者,把軟件系統(tǒng)架構(gòu)進(jìn)行總結(jié)和分析,提出了Architecture cube理論.它把一個(gè)軟件系統(tǒng)架構(gòu)進(jìn)行分解成三維進(jìn)行分析,分別從Tier,layer,capabilities角度進(jìn)行考慮. 其中Tiers定義為: A logical or physical organiza
8、tion of components into an ordered chain of service providers and consumers. Components within a tier typically consume the services of those in an "adjacent" provider tier and provide services to one or more "adjacent" consumer tiers. Within a tier, services are grouped to like
9、requirements, such as functionality, security, or load distribution. Layers定義為:The hardware and software stack that hosts services within a given tier. Physical, network, and software platforms and standard API sets support the components that provide a service. Layers, like tiers, represent a well-
10、ordered relationship across boundaries that are mediated by interfaces. Whereas tiers represent processing chains across components, layers represent container/component relationships in implementation and deployment of services. Systemic Qualities定義:The strategies, tools, and practices that deliver
11、 the requisite QoS (such as availability, scalability, security, and manageability) across the tiers and layers.大家都知道,再考慮評(píng)價(jià)一個(gè)軟件體系架構(gòu)是否先進(jìn)時(shí),我們經(jīng)常要從"非功能屬性"的角度去評(píng)審.我們首先進(jìn)行區(qū)分功能屬性和非功能屬性的區(qū)別. 功能屬性(function property) 用來描述整個(gè)系統(tǒng)的功能特性(feature),并且通常與特定的功能需求相關(guān).功能特性可以通過特定的功能使用戶可以直接看到的應(yīng)用功能,可以通過實(shí)現(xiàn)來進(jìn)行描述. 非功能屬性(n
12、on-function property) 定義為解決一個(gè)軟件系統(tǒng)的可靠性,兼容性,性能,易用性,可維護(hù)性等. 我們的開發(fā)者過去習(xí)慣于專心提供功能屬性,然而今天,非功能屬性變得越來越來重要. 在實(shí)際系統(tǒng)架構(gòu)上,可能是每一個(gè)Tier上由不同的layer組成, 或者說每一個(gè)layer都涉及不同的Tier,組成一個(gè)交錯(cuò)的系統(tǒng), 并且Capabilities又和這兩者交織,如下圖: 2.4 J2EE架構(gòu)的Cube2.4.1 Tiers 概述如果按照Cube理論把J2EE進(jìn)行分析,從它的Ties層的角度進(jìn)行考慮,把它分為以下幾個(gè)Tiers:客戶端層,表示層,業(yè)務(wù)邏輯,集成層,資源層.每層
13、都是按系統(tǒng)中業(yè)務(wù)邏輯而劃分的,它具有唯一的職責(zé)。每層與相鄰層都是松散耦合的。還可以把整個(gè)系統(tǒng)表示為層的堆棧。 · 客戶端層 該層代表訪問系統(tǒng)的人員,應(yīng)用程序,或系統(tǒng)的客戶端。它是整個(gè)系統(tǒng)的對(duì)外接口,可以是Web瀏覽器(IE),Java應(yīng)用程序(Swing),Java Applet,WAP,其他設(shè)備或者是批處理程序。 · 表示層 該層封裝了用來服務(wù)訪問本系統(tǒng)的所有客戶端的表示層邏輯。該層解釋客戶端的請(qǐng)求,提供單次登錄,實(shí)現(xiàn)會(huì)話管理,控制對(duì)業(yè)務(wù)的訪問(權(quán)限檢查),構(gòu)造客戶端的回復(fù)(response),以及把回復(fù)傳遞給客戶端。一般Sevlet,JSP駐留在該層。 · 業(yè)
14、務(wù)邏輯層 該層提供業(yè)務(wù)服務(wù),包括業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯。通常應(yīng)用程序的大多數(shù)業(yè)務(wù)處理集中在本層。同時(shí)它管理事務(wù)。EJB駐留在該層。 · 集成層 該層負(fù)責(zé)與外部系統(tǒng)和外部資源通信,它有多種方式,如與數(shù)據(jù)庫連接使用的JDBC等. · 資源層 該層包括業(yè)務(wù)數(shù)據(jù)源和外部系統(tǒng)資源,如Oracle數(shù)據(jù)庫,JMS server,其他遺留系統(tǒng)等. 實(shí)現(xiàn)在實(shí)現(xiàn)上面的Tier時(shí)一般我還需要結(jié)合實(shí)際情況進(jìn)行分解, 如果大家對(duì)熟悉,可以了解到web層我們使用MVC模式,當(dāng)然結(jié)合Filter,FrontControl,ViewHelp等模式,客戶一般訪問JSP(為了進(jìn)行表示和業(yè)務(wù)的分離大
15、多使用Taglib),然后由Control層進(jìn)行處理,如果需要進(jìn)行復(fù)雜的業(yè)務(wù)邏輯處理并且已經(jīng)有后臺(tái)實(shí)現(xiàn)(如EJB等),推薦經(jīng)過Business Delegate層,訪問后端業(yè)務(wù)邏輯(BP),一般業(yè)務(wù)邏輯使用Facade模式進(jìn)行封裝成統(tǒng)一的接口,業(yè)務(wù)邏輯層實(shí)現(xiàn)復(fù)雜的事務(wù)處理,如果需要訪問資源層,再經(jīng)過DAO層訪問資源(目前多數(shù)是RDBMS,有時(shí)是遺留系統(tǒng)如Coraba,JMS,WebService,SAP等).具體見下圖: 關(guān)于Intercepting Filter,Front Controller,View Helper, Business Delegate,Facade模式請(qǐng)參見。 2.4.
16、2 Layers 概述在開發(fā)J2EE應(yīng)用時(shí),我們一般把它縱向分為以下幾個(gè)層,最下層為OS,JVM,network,層,它們負(fù)責(zé)系統(tǒng)的底層操作和網(wǎng)絡(luò)數(shù)據(jù)的傳輸,一般我們開發(fā)人員不用關(guān)心運(yùn)行在什么具體操作系統(tǒng)上,什么樣的網(wǎng)絡(luò)環(huán)境下.它的上層為J2EE服務(wù)層,一般由J2EE服務(wù)器(如WebSphere,WebLogic等)提供各種基礎(chǔ)服務(wù),如事務(wù)的管理(JTS),命名目錄服務(wù)(JNDI),負(fù)載均衡(Load Balancing),容錯(cuò)(failover),安全(security)等,其次是通用業(yè)務(wù)層,它一般完成與具體業(yè)務(wù)無關(guān)的基本操作,包括如基礎(chǔ)的框架(Framework),comm
17、ons組件,如通用的數(shù)據(jù)庫處理組件,系統(tǒng)錯(cuò)誤處理組件,字符處理和數(shù)值處理組件,日志(log)處理,數(shù)據(jù)轉(zhuǎn)化和編碼維護(hù)等核心層.最上層才是我們的具體業(yè)務(wù)邏輯模塊,它完成具體的業(yè)務(wù)邏輯.具體見下圖: 實(shí)現(xiàn)結(jié)合J2EE實(shí)際環(huán)境,最底層一般不需開發(fā)人員關(guān)心的操作系統(tǒng)和網(wǎng)絡(luò)環(huán)境,并且不同J2EE服務(wù)廠商都提供了相應(yīng)J2EE所必須得基礎(chǔ)服務(wù)層,我們開發(fā)人員一般只需關(guān)心上面兩層的實(shí)現(xiàn),應(yīng)用服務(wù)層經(jīng)常使用類似于struts,webwork,waf等的web application framework,log服務(wù)一般選擇mons log等,其他具體的數(shù)據(jù)處理,數(shù)據(jù)的轉(zhuǎn)化等操作我們需要進(jìn)行開發(fā),不
18、過這些一般與具體項(xiàng)目無關(guān),可以在公司內(nèi)部不同的項(xiàng)目之間共享.其實(shí)Jakarta Commons提供的功能一般可以使用在該層. 最上層才是我們的具體業(yè)務(wù)模塊.見下圖: 2.5 層模式實(shí)現(xiàn)討論1. 為把任務(wù)分組成層而定義抽象準(zhǔn)則。 2. 根據(jù)抽象準(zhǔn)則定義抽象層數(shù)。 3. 給每個(gè)層命名并指定它們的任務(wù)。 4. 指定服務(wù) 5. 細(xì)化分層 6. 為每個(gè)層指定一個(gè)接口。 7. 構(gòu)建獨(dú)立層。 8. 指定相鄰層間的通信(或者調(diào)用) Petstore的層架構(gòu)模式3.1 PetStore概述PetStore是Sun公司在J2EE平臺(tái)上開發(fā)的一個(gè)應(yīng)用樣例,是Java軟件在J2EE的藍(lán)圖程序,它示范了如何利用J2EE
19、1.3平臺(tái)的性能去開發(fā)靈活、可升級(jí)的分布式平臺(tái)企業(yè)應(yīng)用系統(tǒng)。PetStore是一個(gè)運(yùn)行在Web上的,為網(wǎng)絡(luò)客戶提供寵物信息瀏覽、網(wǎng)上訂單和管理等功能的網(wǎng)上寵物店,在技術(shù)上使用了J2EE中的大部分企業(yè)組件和優(yōu)秀的設(shè)計(jì)模式,提供了一套有高靈活性擴(kuò)展性和可升級(jí)的完善J2EE開發(fā)框架. PetStore共有4個(gè)子系統(tǒng)組成:· petstore Web Site 該部分是petstore中的核心,客戶登錄系統(tǒng)進(jìn)行選擇,定購,提交定單等。 · petstore admin 該部分是系統(tǒng)的管理功能 · Order processing center 定單調(diào)度中心,對(duì)客戶提交的定
20、單進(jìn)行處理 · PetStore supplier 為產(chǎn)品供應(yīng)者提供的維護(hù)畫面 在這里主要以WebSite為主進(jìn)行分析(以下petstore均指該子系統(tǒng)),它是怎樣進(jìn)行分層處理的. 3.2 Petstore體系架構(gòu)我們按照層的架構(gòu)模式進(jìn)行分析,主要從Tiers和layer角度進(jìn)行考慮.3.2.1 Layer層 概述PetStore是基于Web應(yīng)用系統(tǒng),它的客戶端使用Broswer,然后是Web層的應(yīng)用,業(yè)務(wù)邏輯層(由EJB實(shí)現(xiàn)),資源管理層(包括數(shù)據(jù)庫,JMS,JavaMail等). 具體又細(xì)分為以下幾層. · 客戶請(qǐng)求瀏覽頁面,一般Web層的View由JS
21、P組成,并且使用了大量Taglib · 把每個(gè)請(qǐng)求映射到某個(gè)HTMLAction類,來響應(yīng)它.HTML Action類是一個(gè)標(biāo)準(zhǔn)的類, 執(zhí)行選擇的HTML Action · WCC 是由WebClientController完成(實(shí)現(xiàn)類為WebClientControllerImpl),它實(shí)際是SUN核心模式的Business Delegate層 · ECC 是EJBClientController,它實(shí)際是核心模式Session Facade · EjbAction層執(zhí)行EJB Action,傳送event參數(shù)進(jìn)來.EJB Action讀event里面
22、的參數(shù),并且操縱EJB或者別的數(shù)據(jù)源來執(zhí)行相應(yīng)的商業(yè)操作. · 業(yè)務(wù)集成層,由通過DAO,EntityBean,JMS等訪問相應(yīng)的資源. 具體的詳細(xì)的結(jié)構(gòu)如下: 實(shí)現(xiàn)在Web層它應(yīng)用了著名的MVC模式,V由JSP來實(shí)現(xiàn),為了業(yè)務(wù)邏輯和表示的分離,一般結(jié)合JSPTagLib. 它把請(qǐng)求提交到相應(yīng)的處理MainServelet,然后準(zhǔn)發(fā)到RequestProcessor,他根據(jù)讀取mappings.xml,的配置信息,生成相應(yīng)的處理類Action如 com.sun.j2ee.blueprints.petstore.controller.web.actions.CreateU
23、serHTMLAction 每個(gè)Action一般包括以下幾種方法(doStart, perform, doEnd),如果perform只需對(duì)請(qǐng)求的處理,如果處理的結(jié)果不需調(diào)用EJB的業(yè)務(wù)邏輯,只需返回即可,否則把請(qǐng)求組織成相應(yīng)的Event,通過WCC轉(zhuǎn)發(fā)到后臺(tái)的業(yè)務(wù)邏輯層.代碼見下: public void processRequest(HttpServletRequest request) throws HTMLActionException, EventException, ServletException Event ev = null; String fullURL = request
24、.getRequestURI(); / get the screen name String selectedURL = null; ServiceLocator sl = (ServiceLocator)request.getSession().getAttribute(WebKeys.SERVICE_LOCATOR); WebClientController wcc = sl.getWebClientController(); HTMLAction action = getAction(selectedURL); if (action != null) action.setServletC
25、ontext(context); action.doStart(request); ev = action.perform(request); EventResponse eventResponse = null; if (ev != null) eventResponse = wcc.handleEvent(ev); action.doEnd(request, eventResponse); 通過WCC把Event轉(zhuǎn)發(fā)到EC,這里WC是delegeteBussiness層public class WebClientControllerImpl implements WebClientCont
26、roller public synchronized EventResponse handleEvent(Event ev) throws EventException return ccEcessEvent(ev); EC是Facade層,如下,public class EJBClientControllerEJB implements SessionBean protected StateMachine sm; public EventResponse processEvent(Event ev) throws EventException return (cess
27、Event(ev);然后根據(jù)相應(yīng)的Event的類型使用不同EJBAction來完成相應(yīng)的業(yè)務(wù)邏輯, public EventResponse processEvent(Event ev) throws EventException String eventName = ev.getEventName(); String actionName = null; EventResponse response = null; if (eventName != null) actionName = getActionName(eventName); EJBAction action = null; ac
28、tion = (EJBAction)Class.forName(actionName).newInstance(); if (action != null) action.init(this); / do the magic action.doStart(); response = action.perform(ev); action.doEnd(); return response; 每個(gè)具體的EJBAction完成自己的具體的業(yè)物邏輯,如果處理數(shù)據(jù)對(duì)象,則使用的相應(yīng)的實(shí)體對(duì)象(data module).具體的層次調(diào)用過程,見下圖: 3.2.2 Tier層 概述PetStor
29、e Layer的設(shè)計(jì)分為以下幾層,最底層為操作系統(tǒng)和網(wǎng)絡(luò)服務(wù),然后是基于J2EE服務(wù)器提供的系統(tǒng)服務(wù)層,上面是framework,Component層,包括WebApplicationFrameWork,以及commons業(yè)務(wù)邏輯,工具類等組成. 最上層才是具體的業(yè)務(wù)實(shí)現(xiàn)模塊具體見下圖: 實(shí)現(xiàn)Petstore主要開發(fā)了兩層,其中業(yè)務(wù)核心層,主要有幾部分· WAF (Web Application Framework) · ApplicationControl 和Presentation (主要指JSP TagLib) · Components(如各種實(shí)體對(duì)象如customer,Account,等) · Business Logic Data各種常用的工具類 層的業(yè)務(wù)邏輯包括以下幾個(gè)部分:登錄和注冊(cè),購
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 飛機(jī)用燈具企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 物流地產(chǎn)行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 生石灰企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 鋼筋混凝土井管企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 食品機(jī)械企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 公司上班勞務(wù)合同樣本
- 舉辦火鍋節(jié)合同標(biāo)準(zhǔn)文本
- 公園維護(hù)設(shè)備采購合同樣本
- 伐樹工人勞務(wù)合同樣本
- 農(nóng)村養(yǎng)殖場買地合同標(biāo)準(zhǔn)文本
- Q∕SY 126-2014 油田水處理用緩蝕阻垢劑技術(shù)規(guī)范
- GB∕T 3216-2016 回轉(zhuǎn)動(dòng)力泵 水力性能驗(yàn)收試驗(yàn) 1級(jí)、2級(jí)和3級(jí)
- 電子電氣評(píng)估規(guī)范-最新
- 全國青少年機(jī)器人技術(shù)等價(jià)考試三級(jí)全套課件
- 適老化改造培訓(xùn)課件(PPT 31頁)
- 黑布林繪本 Dad-for-Sale 出售爸爸課件
- 腹腔鏡下肝葉切除術(shù)(實(shí)用課件)
- 三菱M70數(shù)控系統(tǒng)以太網(wǎng)應(yīng)用
- 光伏并網(wǎng)逆變器調(diào)試報(bào)告正式版
- 市政道路大中修工程管理指引
- SF_T 0097-2021 醫(yī)療損害司法鑒定指南_(高清版)
評(píng)論
0/150
提交評(píng)論