【转】2015-新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序
在博客園學(xué)習(xí)很長時間了,今天終于自己也開通了博客,準(zhǔn)備分享一些感悟和經(jīng)驗。首先感謝博客園園主提供了這么好的程序員學(xué)習(xí)交流平臺,也非常感謝張善友、dax.net、netfocus、司徒正美?等技術(shù)大牛的無私分享,從他們身上學(xué)到了很多。還有我最近一直關(guān)注的田園里的蟋蟀,分享了很多新的技術(shù)和思想方法,在此也深深地感謝!
我自己一開始工作(2002年)就從事WEB開發(fā)(ASP.NET方向),到現(xiàn)在已經(jīng)13個年頭了,從初級程序員到技術(shù)經(jīng)理、開發(fā)部經(jīng)理、項目總監(jiān),再合伙創(chuàng)業(yè),因缺乏企業(yè)經(jīng)營經(jīng)驗,創(chuàng)業(yè)不算很成功,所以后來轉(zhuǎn)入到企業(yè)管理培訓(xùn)和咨詢行業(yè)工作了5年,以開闊視野、提升全面能力、積累人脈資源。2014年初進(jìn)入到一家由上市公司投資的移動互聯(lián)網(wǎng)創(chuàng)業(yè)團(tuán)隊,作為合伙人。最初主要負(fù)責(zé)產(chǎn)品設(shè)計,但很多設(shè)計好的功能和想法,開發(fā)團(tuán)隊的技術(shù)無法實(shí)現(xiàn)。只好自己研究現(xiàn)代WEB前端技術(shù),做好標(biāo)準(zhǔn)和范例,開發(fā)好最難的前端部分,再交給開發(fā)團(tuán)隊實(shí)現(xiàn)后端。幾個月后,開發(fā)團(tuán)隊交出來的成果還是差強(qiáng)人意,公司讓我接管開發(fā)部,親自領(lǐng)導(dǎo)開發(fā)團(tuán)隊。于是我招聘了其他產(chǎn)品經(jīng)理分擔(dān)一部份產(chǎn)品設(shè)計工作,我的精力更多放在了重建開發(fā)團(tuán)隊方面。
我接手開發(fā)部時已經(jīng)招了一些兩、三年工作經(jīng)驗的和幾個十年左右工作經(jīng)驗的JAVA開發(fā)人員(因為總部公司有十幾年的JAVA開發(fā)基因,在成立我們這個創(chuàng)業(yè)團(tuán)隊時,從以前的開發(fā)團(tuán)隊派的技術(shù)骨干,所以后端開發(fā)也選擇了JAVA技術(shù)),我接手后又招了幾個,但無論是開發(fā)效率還是質(zhì)量方面,都很難達(dá)到預(yù)期。后來在準(zhǔn)備一個新的O2O平臺產(chǎn)品時,我在考慮了Java、PHP、Node.Js、ASP.NET后,最終選擇了ASP.NET作為新項目的后端開發(fā)技術(shù)。選擇ASP.NET的原因可以另寫一篇文章,但簡單來說,ASP.NET的新版本,開源和跨平臺已不是問題,并且已擁有像Node.Js一樣的全異步機(jī)制,C#語法簡潔優(yōu)秀。
在這段時間的招聘面試過程中發(fā)現(xiàn)一個很嚴(yán)重的問題,大多數(shù)無論是工作2、3年的還是5到10年的程序人員,基礎(chǔ)知識、經(jīng)驗?zāi)芰Απ录夹g(shù)的了解和運(yùn)用,都差得讓我難以理解,幾乎沒有什么技術(shù)特長或深入專研的領(lǐng)域。當(dāng)然,因為我們是創(chuàng)業(yè)公司,工資標(biāo)準(zhǔn)受限,很難吸引到優(yōu)秀人才來應(yīng)聘,但工作了很多年的程序員,還僅僅只是會簡單三層架構(gòu)的數(shù)據(jù)增刪改查,沒什么技術(shù)特長和開發(fā)思想,連能準(zhǔn)確回答“int類型是多少位,能表達(dá)最大范圍是什么數(shù)量級,或者是2的多少次方”這個問題的面試者都幾乎沒有。對“依賴注入”熟悉的面試者幾乎沒有,應(yīng)聘高級開發(fā)和架構(gòu)師崗位的人能說得清楚緩存機(jī)制的也幾乎沒有。其實(shí),這每一個知識點(diǎn),在互聯(lián)網(wǎng)上都能找到很詳細(xì)的資料。我認(rèn)為只要找到方向并努力學(xué)習(xí)和運(yùn)用,半年時間已經(jīng)可以超過大多數(shù)工作2、3年的人,認(rèn)真努力2年時間可以超過大多數(shù)工作5年8年的人,因為大多數(shù)工作多年的程序員多數(shù)時間都在做重復(fù)的、沒有提升性的工作。這段時間實(shí)在招不到滿意的有經(jīng)驗的,所以讓HR多招一些有強(qiáng)烈上進(jìn)心的應(yīng)屆畢業(yè)生來培養(yǎng)。
我雖然入行的時間比較早,但只有前6年是在具體做技術(shù)開發(fā),后邊幾年主要是做管理和為企業(yè)提供解決方案,較少具體寫程序。我是從2014年又開始重新學(xué)習(xí)各類前端、后端技術(shù),所以現(xiàn)在還是算一個新人,愿意向各位有經(jīng)驗的前輩學(xué)習(xí),愿意與各位新人共同成長。
互聯(lián)網(wǎng)上有很多好的經(jīng)驗分享,有很多好的開源項目,但相對也比較分散,我先列舉一下這幾個月以來學(xué)習(xí)并運(yùn)用于項目的知識點(diǎn),后面在詳細(xì)寫文章介紹我是怎么學(xué)習(xí)和應(yīng)用的。
?
前端:
思想:響應(yīng)式布局、單頁面應(yīng)用、圖標(biāo)字體、MVVM、JS模塊化、JS模板引擎
技術(shù)/框架:HTML5、CSS3、LESS、Jquery、Bootstrap、Framework7
組件:?Webuploader、Ueditor/Umeditor、Highcharts、Jquery.dataTables、Jquery.form、Jquery.validate、Jquery.Jcrop、Jquery.mCustomScrollbar、Spectrum、Toastr、BlockUI、SuperSlide,還有一大堆小的Jquery插件就省略了
?
后端:
思想:?DDD(領(lǐng)域驅(qū)動設(shè)計)、TDD(測試驅(qū)動設(shè)計)、DI/AOP(依賴注入/面向切面編程)、模塊化開發(fā)、異步編程、分布式架構(gòu)、敏捷開發(fā)之SCRUM
技術(shù)/框架:Asp.net MVC5、C# 5.0、Entity Framework 6、xUnit+NSubstitute+Shouldly、aspnetboilerplate
工具:Git、VS2013、Sql Server、MongoDB、Redis
開源組件:AspNet.Identity、AutoMapper、Castle.Windsor、MiniProfiler
?
2015-3-16 16:00 補(bǔ)充:
本來想單獨(dú)寫一系列文章來分享abp框架,但今天有朋友問到,就提前補(bǔ)充分享一下,先發(fā)個git上的鏈接
https://github.com/aspnetboilerplate/aspnetboilerplate
?
順便分享一些其他我認(rèn)為有使用、學(xué)習(xí)和研究價值的項目:
https://github.com/OrchardCMS/Brochard???Orchard的vNext版
https://github.com/h5bp/html5-boilerplate? ?html5頁面的樣板
https://github.com/loresoft/EntityFramework.Extended? ?EntityFramework的功能增強(qiáng)
https://github.com/HangfireIO/Hangfire? ? 非常短小精悍的后臺任務(wù)組件
https://github.com/MiniProfiler/dotnet? ? 監(jiān)測.NET后端和Web前端每一個步驟的耗時毫秒數(shù),可查看EF生成的SQL
https://github.com/JeffreySu/WeiXinMPSDK? ?微信公眾平臺SDK的C#版,包括企業(yè)號的SDK
?
2015-3-16 17:40補(bǔ)充
有些朋友在問我們的招聘事宜,我剛在博客園發(fā)布了3個招聘崗位:
http://job.cnblogs.com/Enterprise/30971/
?
希望看到這篇博客的朋友多看看下面的評論,我在對評論的回復(fù)中寫了很多信息。
感覺用互動的方式,表達(dá)起來效率會高很多。
?
由于時間關(guān)系,今天簡單貼幾張圖,改天重新發(fā)布文章詳細(xì)介紹開發(fā)框架的功能與特性。?
?
項目結(jié)構(gòu)(模塊化開發(fā))
???
?
| ?代碼風(fēng)格: |
| Application層的代碼簡單得不需要寫注釋! 權(quán)限驗證、數(shù)據(jù)驗證、異常處理、事務(wù)處理、數(shù)據(jù)轉(zhuǎn)換等全在基礎(chǔ)架構(gòu)上完成,模塊開發(fā)者不需要寫這些代碼。 Application Service的方法可以自動生成Web Api的方法,客戶端Ajax直接調(diào)用,不需要寫Controller。 Application Service的方法都自動應(yīng)用了UnitOfWork(工作單元)模式,除了以Get開頭的方法,其他方法自動開啟數(shù)據(jù)庫事務(wù)。 ? |
|
|
|
|
| 權(quán)限驗證、數(shù)據(jù)驗證、異常處理、事務(wù)處理、數(shù)據(jù)轉(zhuǎn)換等全在基礎(chǔ)架構(gòu)上完成,模塊開發(fā)者不需要寫這些代碼。 Application Service的方法都自動應(yīng)用了UnitOfWork(工作單元)模式,除了以Get開頭的方法,其他方法自動開啟數(shù)據(jù)庫事務(wù)。 |
?
這段時間一直在優(yōu)化開發(fā)框架、編碼標(biāo)準(zhǔn)和流程,現(xiàn)在已經(jīng)差不多了,明天開始對這周到崗的新人開始培訓(xùn)。
如果有正在找工作的朋友,也可以聯(lián)系我來公司面試。
?
——————————————————————————————————————————————————————————————————————————
?
再貼一些以前項目中的前端界面截圖:(以下不是上面那些后端代碼 所對應(yīng)的前端,不是同一個項目,但都是我親自做的前端)
?
?
*()()無關(guān)圖片()()
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
哇噻,時間已經(jīng)太晚了,快快睡覺!
改天重新發(fā)布文章詳細(xì)介紹開發(fā)框架的功能與特性。
總結(jié)
以上是生活随笔為你收集整理的【转】2015-新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win7系统评分机制回来了:Win11/
- 下一篇: [你必须知道的.NET]第二十六回:认识