摘要:可以對比某個類庫如包和某個框架如加強理解一框架與類庫的區(qū)別結(jié)構(gòu)上,框架內(nèi)部是高內(nèi)聚的,而類庫內(nèi)部則是相對松散的。下圖描述了類庫框架和應(yīng)用之間的層次關(guān)系。
可以對比某個類庫如utils包和某個框架如mybatis加強理解
一、 框架與類庫的區(qū)別
1、結(jié)構(gòu)上,框架內(nèi)部是高內(nèi)聚的,而類庫內(nèi)部則是相對松散的。
2、框架封裝了處理流程的控制邏輯,而類庫幾乎不涉及任何處理流程和控制邏輯。
正是由于框架對處理流程的控制邏輯進行了封裝,才使得框架成為一個應(yīng)用的骨架??蚣苤械奶幚砹鞒毯涂刂七壿嬓枰?jīng)過精心的設(shè)計,因為所有使用了該框架的應(yīng)用程序都會復(fù)用該設(shè)計。
3、框架具有IOC(控制反轉(zhuǎn))能力,而類庫沒有。
IOC,即俗稱的好萊塢模式(Don’t call us, we will call you)。對于類庫中的元素來說,通常都是由我們的應(yīng)用來調(diào)用它;而框架具有這種能力――在適當(dāng)?shù)臅r候調(diào)用我們應(yīng)用中的邏輯。這種能力是通過框架擴展點(或稱為“插槽”)來做到的――具體的應(yīng)用通過擴展點注入自己的邏輯,而在適當(dāng)?shù)臅r候,框架會調(diào)用這個擴展點中已注冊的邏輯。實際上,.NET中的事件(event)發(fā)布、預(yù)定機制就是IOC的一個代表性例子。
4、框架專注于特定領(lǐng)域,而類庫卻是更通用的。
框架著力于一個特定領(lǐng)域的解決方案的完整表達,而類庫幾乎不針對任何特定領(lǐng)域。比如,本書中提到的通信框架只適用于需要在TCP/UDP基礎(chǔ)上直接構(gòu)建通信的應(yīng)用程序,而像正則表達式這樣的類庫卻可以使用在各種不同的應(yīng)用中。
5、框架通常建立在眾多類庫的基礎(chǔ)之上,而類庫一般不會依賴于某框架。
二、通用框架與應(yīng)用框架
如果要對框架進行進一步分類,則可以根據(jù)框架針對的領(lǐng)域是否具有通用性而將它們分為通用框架(General Framework)和應(yīng)用框架(Application Framework)。通用框架可以在不同類型的應(yīng)用中使用,而應(yīng)用框架只被使用于某一特定類型的應(yīng)用中。、
比如,ORM框架NHibernate就是一個通用框架,該框架可以用于所有需要解決O/R映射的各種類型的應(yīng)用中。而某個金融框架則是一個應(yīng)用框架,它僅僅被用于金融類型的應(yīng)用中。
可以這么說,通用框架所解決的是所有類型的應(yīng)用都關(guān)心的“普遍”問題,而應(yīng)用框架解決的是某一特定類型的應(yīng)用關(guān)心的問題。所以,如果我們需要將某種類型的應(yīng)用的核心業(yè)務(wù)邏輯流程提升到一個框架中,所得到的這個框架就是一個應(yīng)用框架。與通用框架相比,應(yīng)用框架需要了解更多目標業(yè)務(wù)領(lǐng)域內(nèi)的領(lǐng)域知識。
在實現(xiàn)具體的應(yīng)用程序時,可以采用一個應(yīng)用框架與多個通用框架相結(jié)合的方式,這樣有利于快速、高質(zhì)量的應(yīng)用程序開發(fā)。比如,某個金融領(lǐng)域的一個應(yīng)用,可以采用金融框架作為應(yīng)用框架來解決與金融業(yè)務(wù)邏輯相關(guān)的問題,采用Nhibernate解決數(shù)據(jù)訪問,采用ESFramework解決應(yīng)用中各分布式系統(tǒng)之間的通信。
下圖描述了類庫、框架和應(yīng)用之間的層次關(guān)系。
框架和類庫的區(qū)別
當(dāng)然,一個應(yīng)用也可以完全不采用任何框架,而是直接從最基礎(chǔ)的底層API(如.NET Framework)開始構(gòu)建。對于微型的系統(tǒng),這種方式或許可行。但對于復(fù)雜大型的應(yīng)用,困難度就可想而知了。
參考:https://blog.csdn.net/qq_3264...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/75455.html
摘要:簡介注解用于修飾的方法,根據(jù)的的內(nèi)容,通過適當(dāng)?shù)霓D(zhuǎn)換為客戶端需要格式的數(shù)據(jù)并且寫入到的數(shù)據(jù)區(qū),從而不通過視圖解析器直接將數(shù)據(jù)響應(yīng)給客戶端。并且這些解析器都實現(xiàn)了接口,在接口中有四個最為主要的接口方法。 SpringMVC 細節(jié)方面的東西很多,所以在這里做一篇簡單的 SpringMVC 的筆記記錄,方便以后查看。 Spring MVC是當(dāng)前最優(yōu)秀的MVC框架,自從Spring 2.5版本...
摘要:相比于開發(fā)人員的數(shù)量,目前框架類庫和工具的數(shù)量似乎更多一些。本文將會討論目前最為流行的客戶端框架類庫和工具以及它們之間的基本差異。典型的類庫包括字符串處理日期元素事件動畫網(wǎng)絡(luò)請求等功能。所以不需要明確的區(qū)分類庫框架和工具。 相比于JavaScript開發(fā)人員的數(shù)量,目前JavaScript框架、類庫和工具的數(shù)量似乎更多一些。截至2017年5月,GitHub上的快速搜索顯示,有超過110...
摘要:常用的類庫有插件把項目中某一部分進行插件分裝,具備具體的業(yè)務(wù)邏輯,有針對性。常用的組件有組件框架比上面的三個都要龐大。它不僅提供了很多常用的方法,而且也可以支持一些插件的擴展可以把一些插件集成到框架中運行,提供了非常優(yōu)秀的代碼管理設(shè)計思想。 類庫:提供了一些真實項目開發(fā)中常用的方法,這些方法做了一些完善處理,比如兼容處理、細節(jié)優(yōu)化等,方便我們開發(fā)和維護。常用的類庫有:JQuery、Ze...
摘要:目前已經(jīng)在大大小小多個線上產(chǎn)品中使用了,也收集了一些有效的建議好了,該看下一個最簡單的組件長什么樣吧免費領(lǐng)取驗證碼內(nèi)容安全短信發(fā)送直播點播體驗包及云服務(wù)器等套餐更多網(wǎng)易技術(shù)產(chǎn)品運營經(jīng)驗分享請訪問網(wǎng)易云社區(qū)。文章來源網(wǎng)易云社區(qū) 本文由作者鄭海波授權(quán)網(wǎng)易云社區(qū)發(fā)布。 此文摘自regularjs的指南, 目前指南正在全面更新, 把老文檔的【接口/語法部分】統(tǒng)一放到了獨立的 Reference...
閱讀 3097·2021-10-11 10:58
閱讀 2005·2021-09-24 09:47
閱讀 510·2019-08-30 14:19
閱讀 1708·2019-08-30 13:58
閱讀 1449·2019-08-29 15:26
閱讀 647·2019-08-26 13:45
閱讀 2145·2019-08-26 11:53
閱讀 1778·2019-08-26 11:30