天天看點

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

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

我自己一開始工作(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/

希望看到這篇部落格的朋友多看看下面的評論,我在對評論的回複中寫了很多資訊。

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

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

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

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

項目結構(子產品化開發)

 代碼風格:
新思想、新技術、新架構——更好更快的開發現代ASP.NET應用程式
新思想、新技術、新架構——更好更快的開發現代ASP.NET應用程式
新思想、新技術、新架構——更好更快的開發現代ASP.NET應用程式

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

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

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

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

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

這段時間一直在優化開發架構、編碼标準和流程,現在已經差不多了,明天開始對這周到崗的新人開始教育訓練。

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

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

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

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

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

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

繼續閱讀