鍍金池/ 教程/ Java/ 框架2.0的設(shè)計梳理
分布式鎖的簡單實現(xiàn)
關(guān)于框架體系與戰(zhàn)術(shù)的思考
開源與中小型軟件公司的未來趨勢
生態(tài)圈的建立
用200行的DBF解析器來展示良好架構(gòu)設(shè)計
緣起
業(yè)務(wù)流程引擎設(shè)計
軟件開發(fā)雜談
高屋建瓴,理念先行
借船下海還是造船下海
Web界面快速開發(fā)實踐
教計算機(jī)程序解數(shù)學(xué)題
量身定制規(guī)則引擎,適應(yīng)多變業(yè)務(wù)場景
緩存相關(guān)代碼的演變
理想的開源框架與設(shè)計原則
框架2.0的設(shè)計梳理
與屈原對話及開源精神

框架2.0的設(shè)計梳理

前面從各個角度,講了大概11篇了。言歸正傳,這里講解一個完整的框架設(shè)計實例。這里不是一個空白的描述,而是基于V1.0之后的建構(gòu)。因此,整個設(shè)計過程,也會盡量少走一些彎路。一起來看看吧!

方法論

方法論決定了可以達(dá)到的高度 方法論,就是人們認(rèn)識世界、改造世界的根本方法。

它是人們用什么樣的方式、方法來觀察事物和處理問題。概括地說,世界觀主要解決世界“是什么”的問題,方法論主要解決“怎么辦”的問題。

方法論是一種以解決問題為目標(biāo)的體系或系統(tǒng),通常涉及對問題階段、任務(wù)、工具、方法技巧的論述。方法論會對一系列具體的方法進(jìn)行分析研究、系統(tǒng)總結(jié)并最終提出較為一般性的原則。

方法論也是一個哲學(xué)概念。人們關(guān)于“世界是什么、怎么樣”的根本觀點(diǎn)是世界觀。用這種觀點(diǎn)作指導(dǎo)去認(rèn)識世界和改造世界,就成了方法論。 方法論是普遍適用于各門具體社會科學(xué)并起指導(dǎo)作用的范疇、原則、理論、方法和手段的總和。

Tiny框架有著完整的方法論基礎(chǔ),在方法論的基礎(chǔ)上構(gòu)建了完整的框架構(gòu)建、擴(kuò)展、利用體系。

設(shè)計理念

設(shè)計理念決定了設(shè)計的目標(biāo)

使用靈活:可以整個使用它,也可以只用它的一個或幾個部分。Tiny構(gòu)建者認(rèn)為,一個完整的框架可能需要有許許多多個部分組成,但是對于實際應(yīng)用的用戶來說,它可能只需要其中的一部分功能。構(gòu)架一定要有這種能力,可以由使用者進(jìn)行點(diǎn)菜式,使用,避免只要用一點(diǎn)點(diǎn)功能,就要引入許許多多的內(nèi)容。

學(xué)習(xí)成本低、上手容易:框架的學(xué)習(xí)成本必須非常低,這樣才可以讓使用者更容易上手,避免由于學(xué)習(xí)難度大而導(dǎo)致的學(xué)習(xí)曲線太陡、太長。

保持核心的穩(wěn)定性:Tiny框架是立足于在需要穩(wěn)定、安全要求非常高的應(yīng)用環(huán)境中使用的,因此其穩(wěn)定性就是框架構(gòu)建者首要思考目標(biāo),核心部分只使用經(jīng)過充驗證及廣泛應(yīng)用的第三方包。

資產(chǎn)的可積累性:只有易于知識積累,才可以真正做到越用越強(qiáng)。

設(shè)計原則

設(shè)計原則解決目標(biāo)沖突時的解決策略

約定優(yōu)于配置原則-COC

不要重復(fù)你自己原則-DRY

減法原則 :減法原則是我們自己提出的,意思就是給程序員做減法。 模塊化原則 :模塊化對于軟件開發(fā)過程中開發(fā)、高度、集成、發(fā)布、維護(hù)過程中所起的作用及節(jié)省或花費(fèi)的巨大成本。因此提出了Business Unit的概念,使得與模塊相關(guān)的所有內(nèi)容都可以放在一起。

自動組裝原則 :在整個Tiny框架的構(gòu)建過程中,都非常注重集成過程的自動組裝,要求做到扔進(jìn)去不用管,由框架自動集成。

下級服從上級原則 :Tiny框架則從框架層級做了限制,使得下級必須服務(wù)上級。

單一原則 :通過單一原則進(jìn)行強(qiáng)制性的約束,使得一個模塊只解決單一模塊應(yīng)該解決的問題,從而避免不同的問題放在一起解決所導(dǎo)致的胡子眉毛縷不清的問題,同時也避免了不恰當(dāng)?shù)囊蕾嚰澳0逡谩?集中配置原則 :在Tiny框架我們對配置做了大量的工作,一個是COC方式,如果不配,則采用系統(tǒng)默認(rèn)的值;一個是集中原則:把需要人工需要配置的內(nèi)容都集中起來統(tǒng)一配置;一個是對于不需要人工干預(yù)的配置,那就集成在Jar包中,作為發(fā)布者發(fā)布項的一部分。

生態(tài)圈

生態(tài)圈決定了是否可以持續(xù)性發(fā)展 只有形成完整的開源生態(tài)圈,開源才能生存、發(fā)展。

只有輸出沒有輸入的模式不可能得到持續(xù)發(fā)展。

Tiny開源生態(tài)圈,包含了Tiny框架、Tiny開源組件、Tiny商業(yè)組件、Tiny技術(shù)支持、Tiny咨詢、Tiny培訓(xùn)等,具有較強(qiáng)市場競爭力和可持續(xù)發(fā)展的體系,展現(xiàn)了一種新的軟件產(chǎn)業(yè)發(fā)展模式。

不管您處在生態(tài)圈的哪個位置,您都會有所付出有所收獲,這正是生態(tài)圈的意義及可持續(xù)發(fā)展的動力所在。

模塊化

模塊化能力決定了業(yè)務(wù)模塊治理的優(yōu)劣 Tiny框架在模塊化方面進(jìn)行了深入的研究和實踐。

Tiny業(yè)務(wù)開發(fā)過程中的任何內(nèi)容都可以放入Jar包當(dāng)中去,包含Java類,靜態(tài)資源,JSP等等,所以一個業(yè)務(wù)模塊是不是被工程引用,只要引入對應(yīng)的Jar包,就可以引入此業(yè)務(wù)模塊;只要把某個業(yè)務(wù)模塊的Jar包移除就可以徹底移除此業(yè)務(wù)模塊。

Tiny框架的業(yè)務(wù)單元具有非常好的獨(dú)立性、替換性和通用性。

http://wiki.jikexueyuan.com/project/open-source-framework-diy/images/12.1.jpg" alt="" />

熱部署

熱部署可有效幫助提升系統(tǒng)的可用性 所謂熱部署,就是在應(yīng)用正在運(yùn)行的時候軟件升級,卻不需要重新啟動應(yīng)用。

常見的熱部署方案有OSGI等框架,但是這些方案具有侵入性大,開發(fā)調(diào)試?yán)щy,使用方式固定等弊端。

Tiny框架的Bundle與普通的Jar工程沒有本質(zhì)區(qū)別,僅多了一個配置文件。所以,它即可以作為普通的Jar包使用也可以作為熱部署的Bundle來進(jìn)行使用。

流程引擎

流程引擎提供了非編程性開發(fā)的能力 所謂流程引擎,就是對通過流程化的方式來進(jìn)行業(yè)務(wù)、頁面、工作流程的編排支持的開發(fā)框架。

Tiny框架提供了業(yè)務(wù)流、頁面流、工作流(正在實現(xiàn)中)等三種流程編排引擎,可以方便的進(jìn)行業(yè)務(wù)流、頁面流、工作流領(lǐng)域的開發(fā)。

強(qiáng)大的可視化流程設(shè)計工具,可以便捷的進(jìn)行流程設(shè)計。

WEB展現(xiàn)

WEB展現(xiàn)是互聯(lián)網(wǎng)應(yīng)用中重中之重 Web應(yīng)用開發(fā)是J2EE領(lǐng)域的重要問題領(lǐng)域

Tiny框架提供了強(qiáng)大的WEB層的擴(kuò)展和UI組件支持,對于WEB靜態(tài)資源放入Jar包,CSS合并壓縮、JS合并壓縮等方面都有良好支持。對于不同角色的開發(fā)者之也可以進(jìn)行良好角色劃分,使得開發(fā)過程更加高效有序。

領(lǐng)先的模板引擎提供的一些獨(dú)特特性使得可以更便捷的進(jìn)行展現(xiàn)層開發(fā)。

http://wiki.jikexueyuan.com/project/open-source-framework-diy/images/12.2.jpg" alt="" />

http://wiki.jikexueyuan.com/project/open-source-framework-diy/images/12.3.jpg" alt="" />

組件庫

面向組件的開發(fā)是效率與質(zhì)量的保證 組件化編程的關(guān)鍵目的是為了將程序模塊化,使各個模塊之間可以單獨(dú)開發(fā),單獨(dú)測試。組件的提取、管理與利用是面向組件開發(fā)的關(guān)鍵。

Tiny框架中,組件無處不在,有些組件框架中已經(jīng)默認(rèn)嵌入,有些組件就需要自己手工納入。當(dāng)然,一些愿分享組件的同學(xué)也可以發(fā)布自己的組件讓別人使用。

組件化有助于推動企業(yè)資產(chǎn)的積累與高水平開發(fā)人員工作成果的復(fù)用,這個在現(xiàn)在這個講究協(xié)作的競爭體系中尤為重要。

1  ├── org.tinygroup.jquery必須使用的jquery包
2  ├── org.tinygroup.publicComponentTinyUi特有資源(基礎(chǔ)-必須依賴基于bootstrap)
3  ├── /webapp/compatibility(特殊)compatibility針對各瀏覽器兼容性特有資源
4  ├── org.tinygroup.bootstrap使用bootstrap最新v3.3.4
5  ├── org.tinygroup.gridSystems柵格系統(tǒng)(布局)
6  ├── org.tinygroup.compose排版(一般都能用到)
7  ├── org.tinygroup.code代碼
8  ├── org.tinygroup.table表格
9  ├── org.tinygroup.form表單
10 ├── org.tinygroup.button按鈕
11 ├── org.tinygroup.picture圖片
12 ├── org.tinygroup.icon圖標(biāo)
13 ├── org.tinygroup.animation動畫
14 ├── org.tinygroup.buttonGroup按鈕組
15 ├── org.tinygroup.navigation導(dǎo)航
16 ├── org.tinygroup.dropDown下拉菜單
17 ├── org.tinygroup.unslider幻燈片
18 ├── org.tinygroup.tab選項卡
19 ├── org.tinygroup.labelBadge便簽與標(biāo)號
20 ├── org.tinygroup.thumbnails縮略圖
21 ├── org.tinygroup.alert警告
22 ├── org.tinygroup.progress進(jìn)度條
23 ├── org.tinygroup.modal彈出框
24 ├── org.tinygroup.customerService客服
25 ├── org.tinygroup.toTop返回頂部
26 ├── org.tinygroup.example案例
27 ├── org.tinygroup.rolling滾動
28 ├── org.tinygroup.search搜索
29 ├── org.tinygroup.ad廣告
30 ├── org.tinygroup.tags標(biāo)簽
31 ├── org.tinygroup.fold折疊
32 ├── org.tinygroup.maskBar遮罩
33 ├── org.tinygroup.comment評論列表
34 ├── org.tinygroup.syntaxhighlighter代碼高亮
35 ├── org.tinygroup.dataTablesDataTables數(shù)據(jù)表格
36 ├── org.tinygroup.mmGridmmGrid數(shù)據(jù)表格
37 ├── org.tinygroup.superBoxsuperBox圖片列表
38 ├── org.tinygroup.zoomPiczoomPic圖片列表
39 ├── org.tinygroup.Smart-navigation導(dǎo)航集合
40 ├── org.tinygroup.Smart-treeview樹形菜單
41 ├── org.tinygroup.highChartshighCharts圖表
42 ├── org.tinygroup.voteCharts投票圖表
43 ├── org.tinygroup.pieCharts餅狀圖比例分布圖
44 ├── org.tinygroup.bootstrapDate日期控件
45 ├── org.tinygroup.uedTipsUED提示
46 ├── org.tinygroup.loginRegistered登錄注冊
47 ├── org.tinygroup.trumbowygTrumbowyg編輯器
48 ├── org.tinygroup.UEditorUEditor編輯器
49 ├── org.tinygroup.fullCalendarfullCalendar日程表 
50 ├── org.tinygroup.emailTemplate郵件模版
51 ├── org.tinygroup.error404錯誤404
52 ├── org.tinygroup.error500錯誤500
53 ├── org.tinygroup.searchPage搜索頁
54 ├── org.tinygroup.interfaceElements界面元素
55 ├── org.tinygroup.forum論壇頁
56 ├── org.tinygroup.timeline時間軸
57 ├── org.tinygroup.iconTab圖標(biāo)控制選項卡
58 ├── org.tinygroup.userComment用戶評論
59 ├── org.tinygroup.tabShowTabs展示
60 ├── org.tinygroup.viewsControl視圖控制

開發(fā)工具

開發(fā)工具是軟件工程方法的延伸 不用Tiny開發(fā)工具你可以完成所有基于Tiny框架的開發(fā)工作。

用了Tiny開發(fā)工具你可以更快的完成基于Tiny框架的開發(fā)工作,效率提升5倍不是想象。

這,就是開發(fā)工具的意義。

http://wiki.jikexueyuan.com/project/open-source-framework-diy/images/12.4.jpg" alt="" />

模板語言編輯器
流程編輯器

http://wiki.jikexueyuan.com/project/open-source-framework-diy/images/12.5.jpg" alt="" />

可視化界面編輯器

http://wiki.jikexueyuan.com/project/open-source-framework-diy/images/12.6.jpg" alt="" />

還有許多不再一一貼圖。