新思想、新技術、新架構——更好更快的開發現代ASP.NET應用程序


在博客園學習很長時間了,今天終於自己也開通了博客,准備分享一些感悟和經驗。首先感謝博客園園主提供了這么好的程序員學習交流平台,也非常感謝張善友dax.netnetfocus司徒正美 等技術大牛的無私分享,從他們身上學到了很多。還有我最近一直關注的田園里的蟋蟀,分享了很多新的技術和思想方法,在此也深深地感謝!

我自己一開始工作(2002年)就從事WEB開發(ASP.NET方向),到現在已經13個年頭了,從初級程序員到技術經理、開發部經理、項目總監,再合伙創業,因缺乏企業經營經驗,創業不算很成功,所以后來轉入到企業管理培訓和咨詢行業工作了5年,以開闊視野、提升全面能力、積累人脈資源。2014年初進入到一家由上市公司投資的移動互聯網創業團隊,作為合伙人。最初主要負責產品設計,但很多設計好的功能和想法,開發團隊的技術無法實現。只好自己研究現代WEB前端技術,做好標准和范例,開發好最難的前端部分,再交給開發團隊實現后端。幾個月后,開發團隊交出來的成果還是差強人意,公司讓我接管開發部,親自領導開發團隊。於是我招聘了其他產品經理分擔一部份產品設計工作,我的精力更多放在了重建開發團隊方面。

我接手開發部時已經招了一些兩、三年工作經驗的和幾個十年左右工作經驗的JAVA開發人員(因為總部公司有十幾年的JAVA開發基因,在成立我們這個創業團隊時,從以前的開發團隊派的技術骨干,所以后端開發也選擇了JAVA技術),我接手后又招了幾個,但無論是開發效率還是質量方面,都很難達到預期。后來在准備一個新的O2O平台產品時,我在考慮了Java、PHP、Node.Js、ASP.NET后,最終選擇了ASP.NET作為新項目的后端開發技術。選擇ASP.NET的原因可以另寫一篇文章,但簡單來說,ASP.NET的新版本,開源和跨平台已不是問題,並且已擁有像Node.Js一樣的全異步機制,C#語法簡潔優秀。

在這段時間的招聘面試過程中發現一個很嚴重的問題,大多數無論是工作2、3年的還是5到10年的程序人員,基礎知識、經驗能力、對新技術的了解和運用,都差得讓我難以理解,幾乎沒有什么技術特長或深入專研的領域。當然,因為我們是創業公司,工資標准受限,很難吸引到優秀人才來應聘,但工作了很多年的程序員,還僅僅只是會簡單三層架構的數據增刪改查,沒什么技術特長和開發思想,連能准確回答“int類型是多少位,能表達最大范圍是什么數量級,或者是2的多少次方”這個問題的面試者都幾乎沒有。對“依賴注入”熟悉的面試者幾乎沒有,應聘高級開發和架構師崗位的人能說得清楚緩存機制的也幾乎沒有。其實,這每一個知識點,在互聯網上都能找到很詳細的資料。我認為只要找到方向並努力學習和運用,半年時間已經可以超過大多數工作2、3年的人,認真努力2年時間可以超過大多數工作5年8年的人,因為大多數工作多年的程序員多數時間都在做重復的、沒有提升性的工作。這段時間實在招不到滿意的有經驗的,所以讓HR多招一些有強烈上進心的應屆畢業生來培養。

我雖然入行的時間比較早,但只有前6年是在具體做技術開發,后邊幾年主要是做管理和為企業提供解決方案,較少具體寫程序。我是從2014年又開始重新學習各類前端、后端技術,所以現在還是算一個新人,願意向各位有經驗的前輩學習,願意與各位新人共同成長。

互聯網上有很多好的經驗分享,有很多好的開源項目,但相對也比較分散,我先列舉一下這幾個月以來學習並運用於項目的知識點,后面在詳細寫文章介紹我是怎么學習和應用的。

 

前端:

思想:響應式布局、單頁面應用、圖標字體、MVVM、JS模塊化、JS模板引擎

技術/框架: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(領域驅動設計)、TDD(測試驅動設計)、DI/AOP(依賴注入/面向切面編程)、模塊化開發、異步編程、分布式架構、敏捷開發之SCRUM

技術/框架: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 補充:

本來想單獨寫一系列文章來分享abp框架,但今天有朋友問到,就提前補充分享一下,先發個git上的鏈接

https://github.com/aspnetboilerplate/aspnetboilerplate

 

順便分享一些其他我認為有使用、學習和研究價值的項目:

https://github.com/OrchardCMS/Brochard   Orchard的vNext版

https://github.com/h5bp/html5-boilerplate   html5頁面的樣板

https://github.com/loresoft/EntityFramework.Extended   EntityFramework的功能增強

https://github.com/HangfireIO/Hangfire    非常短小精悍的后台任務組件

https://github.com/MiniProfiler/dotnet    監測.NET后端和Web前端每一個步驟的耗時毫秒數,可查看EF生成的SQL

https://github.com/JeffreySu/WeiXinMPSDK   微信公眾平台SDK的C#版,包括企業號的SDK

 

2015-3-16 17:40補充

有些朋友在問我們的招聘事宜,我剛在博客園發布了3個招聘崗位:

http://job.cnblogs.com/Enterprise/30971/

 

希望看到這篇博客的朋友多看看下面的評論,我在對評論的回復中寫了很多信息。

感覺用互動的方式,表達起來效率會高很多。

 

 

由於時間關系,今天簡單貼幾張圖,改天重新發布文章詳細介紹開發框架的功能與特性。 

 

項目結構(模塊化開發)


  
 

 

 代碼風格:

Application層的代碼簡單得不需要寫注釋!

權限驗證、數據驗證、異常處理、事務處理、數據轉換等全在基礎架構上完成,模塊開發者不需要寫這些代碼。

Application Service的方法可以自動生成Web Api的方法,客戶端Ajax直接調用,不需要寫Controller。

Application Service的方法都自動應用了UnitOfWork(工作單元)模式,除了以Get開頭的方法,其他方法自動開啟數據庫事務。

 

權限驗證、數據驗證、異常處理、事務處理、數據轉換等全在基礎架構上完成,模塊開發者不需要寫這些代碼。

Application Service的方法都自動應用了UnitOfWork(工作單元)模式,除了以Get開頭的方法,其他方法自動開啟數據庫事務。

 

這段時間一直在優化開發框架、編碼標准和流程,現在已經差不多了,明天開始對這周到崗的新人開始培訓。

如果有正在找工作的朋友,也可以聯系我來公司面試。

 

——————————————————————————————————————————————————————————————————————————

 

再貼一些以前項目中的前端界面截圖(以下不是上面那些后端代碼 所對應的前端,不是同一個項目,但都是我親自做的前端)

 

 

 

 

 

 

 

 

 

 

哇噻,時間已經太晚了,快快睡覺!

改天重新發布文章詳細介紹開發框架的功能與特性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM