一年開發ASP.NET MVC4項目經驗總結

一年開發ASP.NET MVC4項目所用所學技術經驗總結

閱讀目錄

  • 文章背景
  • 前端所用技術摘要
  • 後端所用技術摘要

1. 文章背景    

  本人2014年從Java轉行到C#從事BS項目的開發,剛開始接觸的是ASP.NET WebForm,結果對於我這種從jsp+servlet時代的人很是的不適應,開發者不能自由的操做HttpContext及其原始的Web命名空間中的類庫來開發,而是所有封裝成基於事件的機制來操做,很是的彆扭。後面就找到了ASP.NET MVC這個框架。發現不錯,並且從Java Web方向轉過來學習ASP.NET MVC仍是容易接受的。 在其的學習上紙質書籍我看了兩本(因爲公司的IDE是VS2010,因此我就用的MVC4啦):
javascript

  1. 《Professional ASP.NET MVC 4》,wrox推薦的,這個感受是一個入門教材,看完了你可能會使用這個框架及其裏面的razor知識等,可是你可能不能所有了解框架內部的相關好比說路由機制的原理,那麼你能夠看第二本書。
  2. 《ASP.NET MVC 4 框架揭祕》,這是博客園大牛Artech寫的書,在首頁的博客推薦榜榜首能夠看到他。看完這本書以後你大體就能夠了解該框架對HttpModule和HttpHandler的封裝和框架各類機制的內部實現原理了。

  注:其實光看書你也看不下去,由於仍是有點枯燥的,尤爲是第二本。可是這個書當你在開發的時候遇到的問題上面有解決方案或者給你思路的時候,你就會豁然開朗,就像本人開發一年ASP.NET MVC項目以後我也沒事就去看看這兩本書,發現都有一番韻味。固然如今技術更新的快,ASP.NET已經到5了,MVC也是6了,可是這個你參透這個MVC 4版本,其餘也好說。css

然而我寫這篇文章的目的不是詳細講解ASP.NET MVC 框架的詳細知識。html

而是總結歸納這一年我開發所用到的比較好的技術和知識,目的是爲了之後我反過頭能夠快速的想起之前的所學知識,加快我開發新項目技術選型的速度。前端

 

2. 總體架構方案    

  因爲本人以前就有相關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

  這裏乃是大體的講解了一下項目的基本架構,固然這篇文章是講解技術選型的,因此在後面將會詳細的涉及到內部所選擇的很好的技術或者工具。

 

3. 前端所用技術摘要    

  既然是BS項目,無論這個開發框架對應視圖的語言好比說Razor視圖引擎多麼強大,你也不會所有使用它來渲染你的html,這個多是由於本人原先在CSS和JQuery用的比較多,因此Razor的HTML輔助方法我相對用得少,不習慣在方法的htmlAttribute屬性中輸入CSS style, 更加坑爹的是razor的html輔助方法沒有data-bind參數來嵌入knockoutjs. 因此對razor的使用我只用在一些須要提交併跳轉的表單頁面上面。

  本人開發的web項目因爲異步Ajax比較多,有習慣了使用jquery的ajax方法,因此沒有使用razor裏面的Ajax輔助方法。好了不偏題,歸納使用過的比較好的CSS和JS框架:

  •  CSS框架及其新的知識

    • Bootstrap: 其是如今前端開發很是火的一個前端開發框架,是最受歡迎的 HTML、CSS 和 JS 框架,用於開發響應式佈局、移動設備優先的 WEB 項目。選擇Bootstrap,能夠同時兼容移動設備訪問和PC瀏覽器訪問,他內部裏面也有很是好的一些JS插件,CSS組件也設計的很是美觀大方,使用起來也至關簡單,直接附加對應的class名字便可。在中文官網上介紹了相關的CSS&JS庫。同時Bootstrap是能夠定製的。
    • Font Awesome: 是一個專門爲bootstrap設計的圖標字體,Font Awesome 中包含的全部圖標都是矢量的,也就能夠任意縮放,避免了一個圖標作多種尺寸的麻煩。CSS對字體能夠設置的樣式也一樣可以運用到這些圖標上了。
    • animate.css:一個瀏覽器兼容的CSS動畫庫,很是方便使用。
    • CSS3 & HTML5:雖然都在說CSS3和HTML5,可是不少傳統的web開發人員仍是沒有比較系統的看過其中的新的特性,這裏我強烈推薦完整的看看,IE8是會被淘汰的,不少老頁面裏面必需要用JS來處理的效果均可以在在CSS3和HTML5中的新特性中找到。

       

  • JS框架及其插件相關

    •  頁面效果類
      • Bootstrap推薦或者嵌入的JS框架: Click this
      • JQuery.UI: 是在jQuery 基礎上開發的一套界面工具,幾乎包括了網頁上你所能想到和用到的插件以及動畫特效。它是免費開源的,用戶可根據須要自定義甚至從新設計。
      • jQuery.Pin插件:能將任意頁面元素「釘在」某個容器頂部,並且在尺寸小的屏幕上可以自動禁用這種效果。
      • Messenger插件:是一個很是酷的彈框(Alert)組件,可以很是好的與Bootstrap融合,單獨使用效果也很是棒。
      • Buttons: 是一個基於 Sass 和 Compass 構建的CSS按鈕(button)樣式庫,圖標採用的是Font Awesome,能夠和Bootstrap融合使用。
      • DateTime Picker插件:Bootstrap日期時間選擇器(Bootstrap DateTime Picker)是一個Bootstrap組件,可以簡化頁面上日期、時間的輸入。
      • Boostrap-wysiwyg插件:bootstrap-wysiwyg是一個jQuery Bootstrap插件(5KB, < 200 行代碼)能夠將任何一個DIV轉變成一個WYSIWYG富文本編輯器。
      • FullCalendar插件:一款很是實用的日曆頁面開發插件。使用這款插件可以快速幫助你實現基於web的日曆查看功能,相似於outlook的日曆項功能。
      • Nivo-Slider插件:最受歡迎的圖片輪播插件。
      • 3D Gallery插件:3D圖片輪播插件。
      • ScrollUp插件:一個能夠點擊定義區域使得頁面返回頂部的jquery插件。
      • jQuery-Backstretch插件:Backstretch是一個輕簡的jQquery圖片展現插件,它能夠在頁面相關區域增長動態大小的背景圖片,圖片的大小徹底適應於區域的大小。
    •  數據UI雙向綁定
      • Knockoutjs:KO是一個簡約的實現動態UI或者動態數據的雙向綁定的基於MVVM模式的JS庫。若是不瞭解MVVM模式能夠先行學習,KO的雙向綁定可以輔助程序員更少的編寫JS代碼,只須要簡單的data-bind來綁定數據到html元素中就能夠完成綁定。在單頁Web程序中使用ko也更加方便.

 

3. 後臺所用技術摘要    

 

  • 工具(程序建立推薦安裝,均可以在NuGet中獲取呦)

    • ELMAH:錯誤日誌記錄模塊和處理程序,它可以記錄應用程序中出現的全部未處理異常,並在日誌中保存這些未處理異常。
    • MiniProfiler: MiniProfiler會向網站的每一個頁面添加一個小部件,單擊小部件,咱們就能夠獲得當前頁面的性能解析信息如每一個方法的執行時間,Linq to EF的原始SQL內容等。
    • WebBackgrounder:這裏我給了一箇中文的使用示例。WebBackgrounder包能夠安全地運行ASP.NET應用程序中反覆出現的後臺任務,ASP.NET和IIS隨時均可以自由地終止咱們應用程序的AppDomain。ASP.NET提供機制來通知代碼終止時間。WebBackgrounder利用這一點能夠嘗試爲那些反覆出現的運行任務安全的運行一個後臺定時器。
    • JSON.NET:是最流行的高性能的.NET JSON序列化框架,API強大,各類設置可以徹底知足各類序列化場景。這裏是園子的一篇中文部分功能介紹Newtonsoft.Json 的序列化與反序列化
    • Log4net:其是Apache開源組織爲.NET設計的一款開源的日誌記錄庫。相信你們都很是熟悉,這裏是園子裏的一篇中文使用介紹Log4Net使用指南   
  • 框架

    • Entity Framework: 未完待續
相關文章
相關標籤/搜索