本人2014年從Java轉行到C#從事BS項目的開發,剛開始接觸的是ASP.NET WebForm,結果對於我這種從jsp+servlet時代的人很是的不適應,開發者不能自由的操做HttpContext及其原始的Web命名空間中的類庫來開發,而是所有封裝成基於事件的機制來操做,很是的彆扭。後面就找到了ASP.NET MVC這個框架。發現不錯,並且從Java Web方向轉過來學習ASP.NET MVC仍是容易接受的。 在其的學習上紙質書籍我看了兩本(因爲公司的IDE是VS2010,因此我就用的MVC4啦):
javascript
注:其實光看書你也看不下去,由於仍是有點枯燥的,尤爲是第二本。可是這個書當你在開發的時候遇到的問題上面有解決方案或者給你思路的時候,你就會豁然開朗,就像本人開發一年ASP.NET MVC項目以後我也沒事就去看看這兩本書,發現都有一番韻味。固然如今技術更新的快,ASP.NET已經到5了,MVC也是6了,可是這個你參透這個MVC 4版本,其餘也好說。css
然而我寫這篇文章的目的不是詳細講解ASP.NET MVC 框架的詳細知識。html
而是總結歸納這一年我開發所用到的比較好的技術和知識,目的是爲了之後我反過頭能夠快速的想起之前的所學知識,加快我開發新項目技術選型的速度。前端
因爲本人以前就有相關Java Web開發經驗,追求完善的項目架構也是我很是感興趣的地方,在準備使用ASP.NET MVC做爲框架來開發項目以前對本身的項目的架構選型和設計上也花了不少功夫。在對本身編程規範上嚴格遵循SOLID原則,詳見SOLID Architecture principles using simple C# examples. 阿九在<讓姑姑再也不划拳 碼農也要有原則 : SOLID via C#>中用中文詳細的對其解釋。java
真正的項目開發中層次化和模塊化的設計要體現出來。園子大牛聖殿騎士在其文章《最近架構隨想》中說過「架構決定項目的成敗以及高度,因此在編碼以前必定要設計好項目的總體規劃和架構。好的架構或者考慮比較全面到位的架構會極大的幫助團隊,對項目起到靈魂的做用;糟糕的設計每每會把整個項目組帶入泥潭或者惡性循環,對項目直接致命打擊!」。jquery
首先簡單的介紹下這個實際項目的內容,該項目是工廠內部實時監控整個工廠全部產線某種類型的工做站臺的生產能力、效能分析、缺陷分析、報表統計、資產統計的解決方案,Web端負責業務邏輯處理以及呈現,Parse端負責機器與中央服務器的數據傳輸和存儲。大體相似於Web端在數據庫中取數據,Parse端在數據庫中存數據。 Parse端用的WCF技術來實現通訊,這裏暫且不去說起。css3
在Web端總體的架構方案以下所示:git
系統採用Bootstrap和ASP.NET MVC with Razor做爲View,KnockoutJs做爲MVVM框架。UI Designer設計好UI,而後由前端工程師綁定相應的UI Model到UI,後端工程師則負責相應的OOAD以及業務處理。這裏所有的角色都是本人來作。。。SQL Server數據庫做爲數據存儲,而且利用了ADO.NET Entity Framework做爲進行數據訪問的ORM框架,DBContext幫助咱們實現與數據庫的交互。我採用Repository模式將單純的數據訪問操做封裝在Repository中,它能夠當作是針對某個Entity Data Model 的DbContext的封裝。程序員
業務邏輯的實如今Service中並以服務的形式暴露出來,Service調用Repository完成針對數據的存取操做,服務的消費者是ASP.NET MVC的Controller。github
這裏乃是大體的講解了一下項目的基本架構,固然這篇文章是講解技術選型的,因此在後面將會詳細的涉及到內部所選擇的很好的技術或者工具。
既然是BS項目,無論這個開發框架對應視圖的語言好比說Razor視圖引擎多麼強大,你也不會所有使用它來渲染你的html,這個多是由於本人原先在CSS和JQuery用的比較多,因此Razor的HTML輔助方法我相對用得少,不習慣在方法的htmlAttribute屬性中輸入CSS style, 更加坑爹的是razor的html輔助方法沒有data-bind參數來嵌入knockoutjs. 因此對razor的使用我只用在一些須要提交併跳轉的表單頁面上面。
本人開發的web項目因爲異步Ajax比較多,有習慣了使用jquery的ajax方法,因此沒有使用razor裏面的Ajax輔助方法。好了不偏題,歸納使用過的比較好的CSS和JS框架: