在我們接觸的很多項(xiàng)目中抠璃,如果有一些參考性的項(xiàng)目框架站楚,那么做起開(kāi)發(fā)來(lái),事半功倍搏嗡,一般來(lái)說(shuō)搭建或者積累這些框架性的項(xiàng)目窿春,非一日之功拉一。一般我們可以把具體的項(xiàng)目分為Winfrom、Web旧乞、微信蔚润、或者Socket等方面,具體項(xiàng)目界面表現(xiàn)不同尺栖,但是界面層底下的應(yīng)該都是差不多的結(jié)構(gòu)嫡纠,能夠支持多種數(shù)據(jù)庫(kù)的接入,提供更好的接口封裝延赌,以便重用除盏,實(shí)現(xiàn)最優(yōu)化代碼的處理。
軟件系統(tǒng)隨著業(yè)務(wù)的發(fā)展皮胡,變得越來(lái)越復(fù)雜痴颊,不同領(lǐng)域的業(yè)務(wù)所涉及到的知識(shí)、內(nèi)容屡贺、問(wèn)題非常非常多蠢棱。如果每次都從頭開(kāi)發(fā),那都是一個(gè)很漫長(zhǎng)的事情甩栈,且并不一定能將它做好泻仙。基于穩(wěn)定成熟的框架量没,開(kāi)發(fā)項(xiàng)目玉转,技術(shù)和時(shí)間都有保障,同時(shí)可以利用前人高效的工具進(jìn)行輔助開(kāi)發(fā)殴蹄,從而事半功倍究抓。
1、框架的主要特點(diǎn)和要求
從一些資料來(lái)解讀下開(kāi)發(fā)框架的特點(diǎn)袭灯,如下所示:代碼模板化刺下、重用、高內(nèi)聚(封裝)稽荧、規(guī)范橘茉、可擴(kuò)展、可維護(hù)姨丈、協(xié)作開(kāi)發(fā)畅卓、通用性。
1蟋恬、代碼模板化
框架一般都有統(tǒng)一的代碼風(fēng)格翁潘,同一分層的不同類代碼,都是大同小異的模板化結(jié)構(gòu)歼争,方便使用模板工具統(tǒng)一生成拜马,減少大量重復(fù)代碼的編寫(xiě)箱歧。在學(xué)習(xí)時(shí)通常只要理解某一層有代表性的一個(gè)類,就等于了解了同一層的其他大部分類結(jié)構(gòu)和功能一膨,容易上手呀邢。團(tuán)隊(duì)中不同的人員采用類同的調(diào)用風(fēng)格進(jìn)行編碼,很大程度提高了代碼的可讀性豹绪,方便維護(hù)與管理价淌。
2、重用
開(kāi)發(fā)框架一般層次清晰瞒津,不同開(kāi)發(fā)人員開(kāi)發(fā)時(shí)都會(huì)根據(jù)具體功能放到相同的位置蝉衣,加上配合相應(yīng)的開(kāi)發(fā)文檔,代碼重用會(huì)非常高巷蚪,想要調(diào)用什么功能直接進(jìn)對(duì)應(yīng)的位置去查找相關(guān)函數(shù)病毡,而不是每個(gè)開(kāi)發(fā)人員各自編寫(xiě)一套相同的方法。
3屁柏、高內(nèi)聚(封裝)
框架中的功能會(huì)實(shí)現(xiàn)高內(nèi)聚啦膜,開(kāi)發(fā)人員將各種需要的功能封裝在不同的層中,給大家調(diào)用淌喻,而大家在調(diào)用時(shí)不需要清楚這些方法里面是如果實(shí)現(xiàn)的僧家,只需要關(guān)注輸出的結(jié)果是否是自己想要的就可以了。
4裸删、規(guī)范
框架開(kāi)發(fā)時(shí)八拱,必須根據(jù)嚴(yán)格執(zhí)行代碼開(kāi)發(fā)規(guī)范要求,做好命名涯塔、注釋肌稻、架構(gòu)分層、編碼匕荸、文檔編寫(xiě)等規(guī)范要求爹谭。因?yàn)槟汩_(kāi)發(fā)出來(lái)的框架并不一定只有你自己在用,要讓別人更加容易理解與掌握每聪,這些內(nèi)容是非常重要的旦棉。
5齿风、可擴(kuò)展
開(kāi)發(fā)框架時(shí)必須要考慮可擴(kuò)展性药薯,當(dāng)業(yè)務(wù)邏輯更加復(fù)雜、數(shù)量記錄量爆增救斑、并發(fā)量增大時(shí)童本,能否通過(guò)一些小的調(diào)整就能適應(yīng)?還是需要將整個(gè)框架推倒重新開(kāi)發(fā)脸候?當(dāng)然對(duì)于中小型項(xiàng)目框架穷娱,也不必考慮太多這些內(nèi)容绑蔫,當(dāng)個(gè)人能力和經(jīng)驗(yàn)足夠時(shí)水到渠成,自然就會(huì)注意到很多開(kāi)發(fā)細(xì)節(jié)泵额。
7配深、可維護(hù)
成熟的框架,對(duì)于二次開(kāi)發(fā)或現(xiàn)有功能的維護(hù)來(lái)說(shuō)嫁盲,操作上應(yīng)該都是非常方便的篓叶。比如項(xiàng)目要添加、修改或刪除一個(gè)字段或相關(guān)功能羞秤,只需要簡(jiǎn)單的操作缸托,十來(lái)分鐘或不用花太多的工夫就可以搞定。新增一個(gè)數(shù)據(jù)表和對(duì)應(yīng)的功能瘾蛋,也可以快速的完成俐镐。功能的變動(dòng)修改,不會(huì)對(duì)系統(tǒng)產(chǎn)生不利的影響哺哼。代碼不存在硬編碼等等佩抹,保證軟件開(kāi)發(fā)的生產(chǎn)效率和質(zhì)量。
8取董、協(xié)作開(kāi)發(fā)
有了開(kāi)發(fā)框架匹摇,我們才能組織大大小小的團(tuán)隊(duì)更好的進(jìn)行協(xié)作開(kāi)發(fā),成熟的框架將大大減輕項(xiàng)目開(kāi)發(fā)的難度甲葬,加快開(kāi)發(fā)速度廊勃,降低開(kāi)發(fā)費(fèi)用,減輕維護(hù)難度经窖。
9坡垫、通用性
同一行業(yè)或領(lǐng)域的框架,功能都是大同小異的画侣,不用做太大的改動(dòng)就可以應(yīng)用到類似的項(xiàng)目中冰悠。在框架中,我們一般都會(huì)實(shí)現(xiàn)一些同質(zhì)化的基礎(chǔ)功能配乱,比如權(quán)限管理溉卓、角色管理、菜單管理搬泥、日志管理桑寨、異常處理......或該行業(yè)中所要使用到的通用功能,使框架能應(yīng)用到某一行業(yè)或領(lǐng)域中忿檩,而不是只針對(duì)某公司某業(yè)務(wù)而設(shè)定(當(dāng)然也肯定存在那些特定功能的應(yīng)用框架尉尾,這只是非常少的特殊情況,不在我們的考慮范圍)燥透。
2沙咏、基于Winform混合式開(kāi)發(fā)框架和Bootstrap開(kāi)發(fā)框架的基礎(chǔ)分析
在很多場(chǎng)合辨图,一般如果是做Winform桌面的應(yīng)用,我會(huì)推薦客戶使用《Winform混合式開(kāi)發(fā)框架》肢藐,如果是基于Web的項(xiàng)目開(kāi)發(fā)故河,一般推薦客戶采用《Bootstrap開(kāi)發(fā)框架》。
-
《混合式開(kāi)發(fā)框架》混合了傳統(tǒng)《Winform開(kāi)發(fā)框架》吆豹、《WCF開(kāi)發(fā)框架》和Web API接口框架的特點(diǎn)忧勿,可以在直接訪問(wèn)數(shù)據(jù)庫(kù)、利用WCF服務(wù)獲取數(shù)據(jù)瞻讽、利用Web API服務(wù)獲取數(shù)據(jù)三者之間自由切換鸳吸,統(tǒng)一了系統(tǒng)界面層對(duì)業(yè)務(wù)服務(wù)的調(diào)用模式,所有組件模塊均實(shí)現(xiàn)三種方式的調(diào)用速勇,是一種彈性化非常好的框架應(yīng)用晌砾,既可用于單機(jī)版軟件或者基于局域網(wǎng)內(nèi)的應(yīng)用軟件,也可以用于分布式技術(shù)的互聯(lián)網(wǎng)環(huán)境應(yīng)用烦磁,是一種成熟穩(wěn)定养匈、安全高效的技術(shù)框架。
由于混合型框架都伪,既可以用于傳統(tǒng)Winform系統(tǒng)開(kāi)發(fā)纫塌,也可以用于WCF分布式系統(tǒng)開(kāi)發(fā)戴已,還可以用于輕型高效的Web API的分布式系統(tǒng)開(kāi)發(fā)(目前廣泛應(yīng)用的接口方式),因此環(huán)境適應(yīng)性強(qiáng);而且由于模塊具有這些特點(diǎn)性宏,可重用性更高会通,特別對(duì)于通用性的模塊纸颜,更是具有無(wú)可替代的優(yōu)越性绍绘。
-
基于Metronic的Bootstrap開(kāi)發(fā)框架
該開(kāi)發(fā)框架界面部分采用較新的Bootstrap技術(shù),采用當(dāng)前最新的Bootstrap3.x褐耳,集成了眾多功能強(qiáng)大的Bootstrap插件诈闺。
Bootstrap是一個(gè)前端的技術(shù)框架,很多平臺(tái)都可以采用铃芦,JAVA/PHP/.NET都可以用來(lái)做前端界面雅镊,整合JQuery可以實(shí)現(xiàn)非常豐富的界面效果,目前也有很多Bootstrap的插件能夠提供給大家使用刃滓,本框架集合了眾多最為優(yōu)秀的插件仁烹,能給我們Web的用戶體驗(yàn)提升到一個(gè)前所未有的水平。
Metronic是一個(gè)國(guó)外的基于HTML注盈、JS等技術(shù)的Bootstrap開(kāi)發(fā)框架整合晃危,整合了很多Bootstrap的前端技術(shù)和插件的使用叙赚,是一個(gè)非常不錯(cuò)的技術(shù)框架老客。本框架以這個(gè)為基礎(chǔ)僚饭,結(jié)合我對(duì)MVC的Web框架的研究,整合了基于MVC的Bootstrap開(kāi)發(fā)框架胧砰,使之能夠符合實(shí)際項(xiàng)目的結(jié)構(gòu)需要鳍鸵。
框架后臺(tái)采用基于C#的MVC技術(shù),是目前.NET開(kāi)發(fā)最為成熟流行的技術(shù)尉间,框架后臺(tái)數(shù)據(jù)庫(kù)支持Oracle偿乖、SqlServer、MySql哲嘲、Sqlite贪薪、Access等常規(guī)數(shù)據(jù)庫(kù),可通過(guò)配置進(jìn)行自由切換眠副,使用Enterprise Library模塊進(jìn)行數(shù)據(jù)訪問(wèn)的控制画切,使得數(shù)據(jù)訪問(wèn)更方便輕松。
3囱怕、框架的各個(gè)特點(diǎn)的說(shuō)明
上面介紹了開(kāi)發(fā)框架的一些共性霍弹,概括總結(jié)幾點(diǎn):代碼模板化、重用娃弓、高內(nèi)聚(封裝)典格、規(guī)范、可擴(kuò)展台丛、可維護(hù)耍缴、協(xié)作開(kāi)發(fā)、通用性挽霉。
1)代碼模板化
我們的框架系列私恬,無(wú)論是Winform開(kāi)發(fā)框架,Web開(kāi)發(fā)框架炼吴、Bootstrap開(kāi)發(fā)框架等框架系列本鸣,都是一脈相承的特點(diǎn),所有類代碼都統(tǒng)一的代碼風(fēng)格硅蹦,各個(gè)項(xiàng)目以及分層目錄都是按照統(tǒng)一的命名方式進(jìn)行構(gòu)建荣德,易讀易理解,整個(gè)框架的代碼童芹,包括項(xiàng)目底層BLL涮瞻、DAL、Entity等層的代碼假褪,以及Winform界面層署咽、或者Web界面層,都可以利用工具統(tǒng)一生成(我們根據(jù)項(xiàng)目界面特點(diǎn)構(gòu)建對(duì)應(yīng)的模板文件),減少大量重復(fù)代碼的編寫(xiě)宁否。
這些結(jié)構(gòu)利于使用代碼生成工具(Database2Sharp窒升,我們?yōu)榭蚣芸焖匍_(kāi)發(fā)量身定做的軟件工具)進(jìn)行項(xiàng)目代碼的生成
2) 重用
由于我們?cè)陧?xiàng)目開(kāi)發(fā)中,采用了一些模塊化的方式來(lái)組裝項(xiàng)目慕匠,可以簡(jiǎn)單的理解為積木組合的方式饱须。如權(quán)限管理模塊、字典管理模塊台谊、自動(dòng)更新模塊蓉媳、人員管理模塊、通訊錄管理模塊锅铅、分頁(yè)控件酪呻、公用類庫(kù)等方面,這些可以在項(xiàng)目中根據(jù)情況采用對(duì)應(yīng)的模塊盐须,非常高效号杠,整個(gè)主體框架也有對(duì)應(yīng)接入這些模塊的案例代碼供參考,因此可以更加直觀明了丰歌。
而另一方面姨蟋,我們?cè)趯?duì)類的重用方面,也是精益求精立帖,盡量做到精簡(jiǎn)重復(fù)代碼眼溶,提高開(kāi)發(fā)效率的目的。
界面類提供封裝繼承晓勇,減少界面的一些繁瑣設(shè)置
基礎(chǔ)業(yè)務(wù)類堂飞,我們同樣也是采用重用基類方式,實(shí)現(xiàn)接口函數(shù)的封裝處理绑咱。
以及業(yè)務(wù)類繼承關(guān)系绰筛,當(dāng)然還有其他更多的,基本上都提供一些基類來(lái)處理描融,簡(jiǎn)化代碼铝噩。
3) 高內(nèi)聚(封裝)
從上面小節(jié)可以看出,整個(gè)框架宏觀方面分為多個(gè)功能模塊窿克,可以自由搭配使用骏庸;微觀方面都有一個(gè)繼承關(guān)系的基類來(lái)對(duì)相關(guān)的代碼進(jìn)行封裝處理,這樣開(kāi)發(fā)人員將各種需要的功能封裝在不同的模塊或者基類里面年叮,從而實(shí)現(xiàn)高內(nèi)聚的處理具被。
Web API的控制器設(shè)計(jì)對(duì)象繼承關(guān)系,如下所示:
4) 規(guī)范
我們的整個(gè)框架系列只损,嚴(yán)格執(zhí)行代碼開(kāi)發(fā)規(guī)范要求一姿,做好命名、注釋、架構(gòu)分層叮叹、編碼艾栋、文檔編寫(xiě)等規(guī)范要求,這樣我們只需要了解一個(gè)項(xiàng)目的結(jié)構(gòu)衬横,其他項(xiàng)目依次類推裹粤,就可以明確各個(gè)分層的意義终蒂,一葉知秋蜂林,管中窺豹就是這個(gè)道理,我們可以通過(guò)這些知識(shí)積累拇泣,指導(dǎo)我們其他同事進(jìn)行項(xiàng)目開(kāi)發(fā)噪叙,大家在規(guī)范上統(tǒng)一一致就可以步調(diào)統(tǒng)一,從而在單位內(nèi)部擁有更高的開(kāi)發(fā)效率霉翔。
其他框架的特點(diǎn)睁蕾,如可擴(kuò)展、可維護(hù)债朵、協(xié)作開(kāi)發(fā)子眶、通用性,也就不再贅述序芦,基本上臭杰,整個(gè)框架就是為了方便構(gòu)建項(xiàng)目而搭建,大的方面可以使用開(kāi)發(fā)好的模塊谚中,小的方面可以繼承封裝好的類庫(kù)渴杆,整個(gè)調(diào)用的邏輯過(guò)程也是經(jīng)過(guò)實(shí)踐的考驗(yàn),在眾多國(guó)內(nèi)外公司的項(xiàng)目中使用過(guò)宪塔,同時(shí)也獲得非常多的反饋磁奖,共同促進(jìn)整個(gè)框架體系的發(fā)展。