框架檢視原始碼討論檢視歷史
框架 |
框架 是一個框子--指其約束性,也是一個架子--指其支撐性。是一個基本概念上的結構,用於去解決或者處理複雜的問題。
基本信息
中文名稱 框架[1]
拼音 kuàng jià
釋義 聯結而成的結構
注音 ㄎㄨㄤˋ ㄐㄧㄚˋ
英譯 Framework
應用領域 軟件、機械結構等
釋義
1、釋義:(1)建築工程中,由梁、柱等聯結而成的結構;(2)比喻事物的組織、結構。
2、土木工程中,由梁、柱等構件剛性連結而成的結構體系。
土木工程
(框,讀kuàng,不讀kuāng。)
由梁和柱組成的能承受垂直和水平荷載的結構,梁和柱是剛性連結的。主要要用於工業與民用建築物的承重骨架,橋樑構架或工程構築物。
一般指建築工程中,由梁或尾架和柱聯結而成的結構。由於我國古代家具自宋以後曾吸收古代大木構制的作法,故傳統家具採用框檔、立柱結構形式的即稱框架,並將此類結構形式的家具稱之謂"框架式家具"。
工工藝流程
(1)基礎工程
測量放線→土方開挖→釺探、驗槽→靜壓樁→砼墊層→承台、基礎鋼筋、模板、砼→牆、柱鋼筋→水電預留、預埋→牆柱模板→牆柱砼→拆模養護→梁板模板→梁板鋼筋→水電預留、預埋→梁板砼→養護→外牆防水→防水保護層→基礎土方回填。
(2)主體工程
測量放線→牆柱鋼筋→水電預留、預埋→牆柱模板→牆柱砼→拆模養護→梁板模板→梁板鋼筋→水電預留、預埋→梁板砼→養護
(3)裝飾裝修工程
測量放線→二次結構砌築、隔牆安裝→屋面防水→立門窗框→內牆抹灰→樓地面→牆面踢腳→設備安裝→門窗扇安裝→吊頂→精裝修→油漆、塗料。
軟件工程
什麼是框架
框架( Framework )是構成一類特定軟件可復用設計的一組相互協作的類。框架規定了你的應用的體系結構。它定義了整體結構,類和對象的分割,各部分的主要責任,類和對象怎麼協作,以及控制流程。框架預定義了這些設計參數,以便於應用設計者或實現者能集中精力於應用本身的特定細節
為什麼要用框架
因為軟件系統發展到今天已經很複雜了,特別是服務器端軟件,涉及到的知識,內容,問題太多。在某些方面使用別人成熟的框架,就相當於讓別人幫你完成一些基礎工作,你只需要集中精力完成系統的業務邏輯設計。而且框架一般是成熟,穩健的,他可以處理系統很多細節問題,比如,事務處理,安全性,數據流控制等問題。還有框架一般都經過很多人使用,所以結構很好,所以擴展性也很好,而且它是不斷升級的,你可以直接享受別人升級代碼帶來的好處。
框架一般處在低層應用平台(如J2EE)和高層業務邏輯之間的中間層。
軟件為什麼要分層? 為了實現"高內聚、低耦合"。把問題劃分開來各個解決,易於控制,易於延展,易於分配資源…總之好處很多啦。
框架和設計模式
框架、設計模式這兩個概念總容易被混淆,其實它們之間還是有區別的。構件通常是代碼重用,而設計模式是設計重用,框架則介於兩者之間,部分代碼重用,部分設計重用,有時分析也可重用。在軟件生產中有三種級別的重用:內部重用,即在同一應用中能公共使用的抽象塊;代碼重用,即將通用模塊組合成庫或工具集,以便在多個應用和領域都能使用;應用框架的重用,即為專用領域提供通用的或現成的基礎結構,以獲得最高級別的重用性。
框架與設計模式雖然相似,但卻有着根本的不同。設計模式是對在某種環境中反覆出現的問題以及解決該問題的方案的描述,它比框架更抽象;框架可以用代碼表示,也能直接執行或復用,而對模式而言只有實例才能用代碼表示;設計模式是比框架更小的元素,一個框架中往往含有一個或多個設計模式,框架總是針對某一特定應用領域,但同一模式卻可適用於各種應用。可以說,框架是軟件,而設計模式是軟件的知識。
框架開發
框架的最大好處就是重用。面向對象系統獲得的最大的復用方式就是框架,一個大的應用系統往往可能由多層互相協作的框架組成。
由於框架能重用代碼,因此從一已有構件庫中建立應用變得非常容易,因為構件都採用框架統一定義的接口,從而使構件間的通信簡單。
框架能重用設計。它提供可重用的抽象算法及高層設計,並能將大系統分解成更小的構件,而且能描述構件間的內部接口。這些標準接口使在已有的構件基礎上通過組裝建立各種各樣的系統成為可能。只要符合接口定義,新的構件就能插入框架中,構件設計者就能重用構架的設計。
框架還能重用分析。所有的人員若按照框架的思想來分析事務,那麼就能將它劃分為同樣的構件,採用相似的解決方法,從而使採用同一框架的分析人員之間能進行溝通。
主要特點
領域內的軟件結構一致性好; 建立更加開放的系統;
重用代碼大大增加,軟件生產效率和質量也得到了提高;
軟件設計人員要專注於對領域的了解,使需求分析更充分;
存儲了經驗,可以讓那些經驗豐富的人員去設計框架和領域構件,而不必限於低層編程;
允許採用快速原型技術;
有利於在一個項目內多人協同工作;
大力度的重用使得平均開發費用降低,開發速度加快,開發人員減少,維護費用降低,而參數化框架使得適應性、靈活性增強。
解決問題
框架要解決的最重要的一個問題是技術整合的問題,在J2EE的框架中,有着各種各樣的技術,不同的軟件企業需要從J2EE中選擇不同的技術,這就使得軟件企業最終的應用依賴於這些技術,技術自身的複雜性和技術的風險性將會直接對應用造成衝擊。而應用是軟件企業的核心,是競爭力的關鍵所在,因此應該將應用自身的設計和具體的實現技術解耦。這樣,軟件企業的研發將集中在應用的設計上,而不是具體的技術實現,技術實現是應用的底層支撐,它不應該直接對應用產生影響。 要理解這一點,我們來舉一些例子:
一個做視頻流應用的軟件企業,他為電廣行業提供整體的解決方案。他的優勢在於將各種各樣的視頻硬件、服務器、和管理結合起來,因此他扮演的是一個集成商的角色。因此他的核心價值在於使用軟件技術將不同的硬件整合起來,並在硬件的整合層面上提供一個統一的管理平台。所以他的精力應該放在解決兩個問題:
如何找到一種方法,將不同的硬件整合起來,注意,這裡的整合併不是技術整合,而是一種思路上的整合。首先要考慮的絕對不是要使用什麼技術,而是這些硬件需要提供哪些服務,需要以什麼樣的方式進行管理。因此,這時候做的事情實際上是對領域進行建模。例如,我們定義任何一種硬件都需要提供兩種能力,一種是統一的管理接口,用於對所有硬件統一管理;另一種是服務接口,系統平台可以查詢硬件所能夠提供的服務,並調用這些服務。所以,設計的規範將會針對兩種能力進行。
另一個問題是如何描述這個管理系統的規範。你需要描述各種管理活動,以及管理中所涉及的不同實體。因為管理系統是針對硬件的管理,所以它是構架在硬件整合平台之上的。
在完成業務層面的設計之後,我們再來看看具體的技術實現。光有規範和設計是不夠的,我們還需要選擇一個優秀的技術。由於是對不同硬件的整合,我們想到採用Java提供的JMX技術。JMX技術適合用來進行系統整合,它定義了一個通用的規範,並給出了遠程管理端口的一些默認實現。JMX已經經過了實踐的檢驗,不少的應用服務器都採用了以JMX為基礎的結構,例如有名的JBoss。JMX已經是一個很好的開始了,但是我們還需要在JMX的基礎上再做一些工作。
相關概念
1. 白盒與黑盒框架
框架可分為白盒(White-Box)與黑盒(Black-Box)兩種框架。
基於繼承的框架被稱為白盒框架。所謂白盒即具備可視性,被繼承的父類的內部實現細節對子類而言都是可知的。利用白盒框架的應用開發者通過衍生子類或重寫父類的成員方法來開發系統。子類的實現很大程度上依賴於父類的實現,這種依賴性限制了重用的靈活性和完全性。但解決這種局限性的方法可以是只繼承抽象父類,因為抽象類基本上不提供具體的實現。白盒框架是一個程序骨架,而用戶衍生出的子類是這個骨架上的附屬品。
基於對象構件組裝的框架就是黑盒框架。應用開發者通過整理、組裝對象來獲得系統的實現。用戶只須了解構件的外部接口,無須了解內部的具體實現。另外,組裝比繼承更為靈活,它能動態地改變,繼承只是一個靜態編譯時的概念。
在理想情況下,任何所需的功能都可通過組裝已有的構件得到,事實上可獲得的構件遠遠不能滿足需求,有時通過繼承獲得新的構件比利用已有構件組裝新構件更容易,因此白盒和黑盒將同時應用於系統的開發中。不過白盒框架趨向於向黑盒框架發展,黑盒框架也是系統開發希望達到的理想目標。
2. 熱點、食譜以及好萊塢原則
成功的框架開發需要確定領域專用的熱點 (Hot spot)。應用開發者在框架的基礎上進行開發,只須擴展框架的某些部分,熱點就是在應用領域的一種擴展槽,開發者根據自己的需要填充這些擴展槽。熱點使框架具有靈活性,如在具體的實現中,擴展槽可以被看成是一些抽象類,開發者通過重寫抽象方法獲得具體實現。
食譜 (Cookbook)就是描述如何使用框架方法的文檔。在食譜中包含了許多烹飪方法,這些烹飪方法相當於一些具體的操作步驟,描述了為解決某一專門問題如何使用框架的詳細方法。框架的內部設計和實現細節通常不出現在食譜中。
框架的一個重要特徵就是用戶定義的方法經常被框架自身調用,而不是從用戶的應用代碼中調用。這種機制常稱為"好萊塢原則"(Hollywood Principle)或"別調用我們,我們會調用您"。
JAVA框架
WAF:全稱:WEB APPLICATION FRAMEWORK主要應用方面:EJB層,(WEB層也有,但是比較弱)。主要應用技術:EJB等出處:java.sun. com/blueprints/code/index.html">http://java.sun. com/blueprints/code/index.html簡述:這是SUN在展示J2EE平台時所用的例子PetStore(寵物商店系統)裡面的框架。是SUN藍皮書例子程序中提出的應用框架。它實現了 MVC和其他良好的設計模式。SUN的網站上有技術資料,最好下載PetStore來研究,WEBLOGIC里自帶此系統,源碼在bea\\weblogic700\\samples\\server\\src\\petstore。這是學習了解J2EE的首選框架。免費。
Struts:主要應用方面:WEB層。主要應用技術:JSP,TagLib,JavaBean,XML等出處,這是APACHE的開源項目,應用很廣泛。基於MVC模式,結構很好,基於JSP。Jbuilder8里已經集成了STRUTS1.02的製作。免費。
簡述WAF+STRUTS結合的例子:WEB層用STRUTS,EJB層用WAF:JSP(TagLib)-->ActionForm-->Action --> Event-->EJBAction-->EJB -->DAO-->Database JSP(TagLib) (forward) <--Action <--EventResponse<--
Turbine:主要應用方面:WEB層。主要應用技術:servlet等出處,這是APACHE的開源項目。基於SERVLET。據說速度比較快,基於service(pluggable implementation可插拔的執行組件)的方式提供各種服務。免費。
COCOON:主要應用方面:WEB層。主要應用技術:XML,XSP,servlet等出處:http://cocoon.apache. org/2.0/簡述:這是APACHE的一個開源項目。基於XML,基於XSP(通俗地說,XSP是在XML靜態文檔中加入Java程序段後形成的動態XML文檔。)。特點是可以與多種數據源交互,包括文件系統,數據庫,LDAP,XML資源庫,網絡數據源等。免費。
ECHO:主要應用方面:WEB層。主要應用技術:servlet等出處:http://www.nextapp. com/products/echo/簡述:nextapp公司的一個開源項目。基於SERVLET。頁面可以做的很漂亮,結合echopoint,可以作出很多圖形效果(裡面用了jfreechart包)。使用SWING的思想來作網頁,把HTML當作JAVA的類來做。但是大量使用Session,頁面分幀(Frame)很多,系統資源消耗很大。免費。
JATO:全稱:SUN ONE Application Framework主要應用方面:WEB層。主要應用技術:JSP,TagLib,JavaBean等出處,簡述:這是SUN推出的一個商業性框架,一看名字就知道是結合SUN ONE的平台推出的。我下載了JATO2.0看了一下,感覺有些簡單,使用了JSP+TagLib+JavaBean。如他的DOC所說JATO是適合用在小的WEB應用里。免費。
TCF:全稱:Thin-Client Framework主要應用方面:JAVA GUI。主要應用技術:JAVA application等出處,簡述:這是IBM出的一個框架。基於MVC模式,基於JAVA Application。推薦一篇介紹文章:java/j-tcf1/index.shtml">http://www-900.ibm. com/developerWorks/cn/java/j-tcf1/index.shtml收費:每個企業對象license:2000美元。
應用框架
隨着管理信息應用範圍的拓展,交易類應用為管理對象的電子信息獲取提供了豐富的手段,這些信息的存儲、加工、增值、展現等處理事務,均屬於管理決策類應用系統的範疇。傳統的信息系統通常將這些事務,與交易類應用合併在一個應用系統中實現,隨着一個組織中應用系統不斷地湧現,關聯數據的組織和共享、歷史數據的積累和重用、全面數據的挖掘和增值等需求,促生了基於數據倉庫技術的,面向整個組織,獨立性的管理決策類應用環境的實現。這類應用有一個最大的特點,就是用戶需求是持續發展和不斷完善的,特別是應用的初期,用戶甚至提不出充分和全面的需求。同時,這類應用又存在非常強的應用共性。為此,可以通過一組與業務無關的,產品化的技術支撐環境,去實現對海量數據獲取和儲存的支持能力;去實現描述加工規則發展和完善的能力;去實現提供數據組織訪問和管理的能力;去實現反映結果信息簡潔和人性化的能力,這便是"管理決策框架"的意義。該框架由以下部分構成:
業務架構
所有的應用系統只有在覆蓋了相應的業務以後,才具有應用的實際意義。與業務無關的管理決策框架在沒有加載業務以前,只能稱之為框架,加載業務以後則成為了針對特定業務的管理決策系統了。所謂業務架構一方面是為用戶加載和組織業務提供的一個手段和環境(開始也為用戶加載了一些通用的業務如查詢、報表等);另一方面也是在實際應用時的業務門戶。類似於智能終端的桌面,用戶拿到手的時候桌面是空的,只是有一些通用業務,如時鐘、畫圖、記事簿等,隨着應用的發展,每個人的桌面會呈現出各不相同的個性化業務。管理決策框架中向用戶提供了業務操作和管理的操作2類業務,其中業務操作是面向大眾用戶的,涉及業務管理活動的流程、查詢、分析、決策等日常作業,這些操作絕大多數都需要用戶後續自行加載;管理操作是面向小眾用戶的,涉及對業務管理活動的流程定義、數據組織、分析規則、決策算法、展現效果等定義和描述操作,並對它們進行加載和維護的作業。與傳統的應用系統不同的是,這些作業的形成不是由程序員編碼實現的,而是用戶骨幹或者第三方團隊(小眾用戶),利用管理決策框架提供的管理操作(由應用架構的相關產品提供)加載實現的。加載的結果通常以"方案"的形式打包,每個"方案"對應一個管理活動的過程、規則、算法、結果展現等等。訓練成熟的方案經過該架構的解析和執行,面向用戶提供直觀高效的,可持續發展的,智能化的最佳用戶體驗。該架構涉及的技術包括:統一門戶、統一權限、工作流、商務智能(BI)等等。
應用架構
該架構主要是面向業務架構提供軟件功能的支持,既提供運行時的業務功能支持,又提供加載時的管理功能支持。與傳統的應用架構的最大不同在於,該架構能為整個組織實現業務需求的變化和滿足覆蓋地域的不同,提供可持續發展的支撐能力和具有更長的生命周期。同時,也是確保業務無關性,實現管理決策類應用產品化的關鍵。為此,組成該架構的一系列產品,均以人機交互的模式,將管理決策業務需要實現的數據源獲取、數據口徑描述、數據的組織、加工規則、管理過程、結果展現等進行定義、描述和發布管理;其所涉及的每個定義和描述的結果,均分為2個部分,一是以代碼段或腳本形式保存的,可以由業務架構解析並執行的部分,稱為"方案元";二是對相應的方案元按照標準的元模型,以人工語境描述的數據集合,稱為"元數據"。方案元也作為元數據的一部分一併打包,並加以保存和管理,每項業務所涉及方案元的集合稱為"方案",每個"方案"經過測試和訓練,面向特定的用戶發布。這個過程稱為"主動式元數據管理"。應用架構發布的結果就是業務架構面向大眾用戶提供的"業務功能";使用應用架構所提供產品進行業務實現(加載)的過程,就是小眾用戶在業務架構中使用"管理功能"的過程。該架構涉及的技術包括:元數據標準、元數據管理、方案的形成和管理、知識的形成和管理等等。
數據架構
它面向全局提供統一的數據綜合利用及管理環境。與傳統的數據架構不同,該架構提出了對"數據空間"進行"數據管理"的概念。"數據空間"是整個組織所有管理對象所涉及的數據全集,以及它們所有的數據屬性。傳統的數據架構關注的重點,局限在所有管理對象涉及的實體數據(內容),而"數據空間"關注和管理的對象,還要擴展到:一是以人工語境對"內容"進行解釋性描述的元數據(變化);二是記錄"內容"和"變化"的歸檔數據(歷史);三是反映管理決策框架運行環境的日誌數據(狀態)等。這裡記錄內容、變化、歷史、狀態的數據集合,稱之為"數據全集";"變化"與傳統的只供機器識別的技術元數據(傳統數據屬性),一併稱之為新的"數據屬性"。"數據管理"指的是要對進入管理決策框架的數據源進行完整性、原始性、不可抵賴性的實現管理;要對基礎數據口徑和後續加工規則、算法等進行標準化、規範化、可追溯的描述管理;要對數據空間涉及的所有數據,進行合理組織、物理分區、數據結構的定義,實現全面科學、統分結合、訪問高效的控制管理;要對內容、變化、歷史、狀態等涉及的所有數據增值過程,進行全面質量管理和全過程的生命周期管理。該架構涉及的技術包括:非結構化數據處理、檔案管理、"大數據"技術、數據倉庫(特別是DW2.0)涉及的相關技術等等。
技術架構
該架構是構成信息系統物理環境的產品集合,包括服務器、操作系統、中間件、網絡環境等基礎技術環境。在進行配置管理時,管理決策框架除了要考慮災備的異地支持環境,還要在物理上分為生產環境和訓練環境。生產環境是訓練環境的子集,其主要是將正式發布的"方案"經過加載、解析、執行,針對特定業務提供日常作業的支持服務,從而確保了生產環境的簡化、高效、可靠、穩定;訓練環境除了能模擬實際生產環境,還要提供業務(方案)加載、測試、訓練、維護、發布等管理作業的支持服務,從而確保該框架對業務應用無關性、對業務需求的可持續發展、保證支持環境的長生命周期。該架構涉及的技術包括:虛擬技術、雲計算、容災管理、數據中心監控等等。
安全架構
在最大限度滿足管理決策框架運行的基礎上,構建網絡、硬件和軟件相結合的安全體系,通過監控管理手段來確保系統穩定,削弱高度信息化的應用系統受單點故障的影響程度,使系統能夠將風險分散和具備一定的自救能力。要考慮一體化的,整體安全架構的設計要求;要符合信息安全標準(物理安全、運行安全、數據安全、內容安全等)規定而採取的技術和管理要求;要實現信息安全和數據質量管理的技術環境,能夠提供安全策略的具體管理機制。信息安全不僅體現在物理環境的實現上,更要強調信息安全管理機制的建立和持續完善,並且管理機制要能夠體現在物理環境上,要能夠通過物理環境管理、記錄、分析各類信息安全事件,避免其再次發生。
標準體系
作為與業務無關的應用軟件產品,管理決策框架需要一系列標準,以規範整個框架對外部的銜接、規範框架內各架構間的銜接,以及每個架構內部的,對處理對象的獲取、加工、處理等描述的規範等等。它們涉及到相互銜接、處理對象描述、加工規則描述等等方面的標準化,以及如何對它們進行描述的標準化(元數據標準,即元模型);涉及到包括組織、制定、維護、發布、遵循等內容的標準管理機制;特別是要有一個支撐標準管理機制的技術支持環境,這個環境不僅要提供對每個標準生命周期的管理,還要提供整個框架對標準遵循和使用的一致性和易用性保障和服務。
運維體系
管理決策框架的運維體系分為2類:一類是物理環境運維。即傳統的數據中心環境和設備的運行保障和安全保障;另一類是應用環境運維。它包括涉及業務架構、應用架構、數據架構、標準體系的運維管理。通過這些運維管理活動,實現業務需求的有效支撐和可持續發展;實現管理功能(即整個框架本身)的可靠運行和可持續發展。為了這2類管理活動的有效進行,需要建立一套運維管理機制,包括運維組織、制度、職責等等;同樣,也要有一個支撐運維管理活動的運維技術支持環境,它不僅要提供對運維管理活動的過程和監控提供服務,還要提供對運維事項的發起、發現、定位、預警、處置、恢復等手段提供功能性支持,並且能夠通過對運維事件多角度信息的捕獲、積累、分析、挖掘,實現智能化的運維輔助和事件預測。
網頁設計
框架是網頁中經常使用的頁面設計方式,框架的作用就是把網頁在一個瀏覽器窗口下分割成幾個不同的區域,實現在一個瀏覽器窗口中顯示多個HTML頁面。使用框架可以非常方便的完成導航工作,讓網站的結構更加清晰,而且各個框架之間決不存在干擾問題。利用框架最大的特點就是使網站的風格一致。通常把一個網站中頁面相同的部分單獨製作成一個頁面,作為框架結構的一個子框架的內容給整個網站公用。
一個框架結構有兩部分網頁文件構成:
框架Frame:框架是瀏覽器窗口中的一個區域,它可以顯示與瀏覽器窗口的其餘部分中所顯示內容無關的網頁文件。
框架集Frameset:框架集也是一個網頁文件,它將一個窗口通過行和列的方式分割成多個框架,框架的多少根據具體有多少網頁來決定,每個框架中要顯示的就是不同的網頁文件。
所謂框架就是把網頁分成幾個框窗,同時取得多個 URL。<frameset>用來劃分框窗,每一框窗有一個<frame>,<frame>必須在<frameset>範圍中使用。如:
<frameset cols="50%,*">
<frame name="hello" src="1.html"> <frame name="hi" src="2.html">
</frameset>
此例中 <frameset> 把畫面分成左右兩相等部分,左面顯示 1.html,右面顯示 2.html
程序設計
程序設計中的框架包含DoitPHP(原Tommyframework)是一個基於BSD開源協議發布的輕量級PHP框架,還包含如thinkphp、codeigniter(簡稱CI)、yii framework、doophp、qeephp、等主流的程序設計框架,根據個人習慣和性能要求,其各也有不同的優缺點!
從軟件設計角度,框架是一個可復用的軟件架構解決方案,規定了應用的體系結構,闡明軟件體系結構中各層次間及其層次內部各組件間的毅力關係,責任分配和控制流程,表現為一組接口,抽象類以及實例間協作的方法。
參考來源