.NET MVC學習筆記(一)

來源:互聯網
上載者:User

標籤:c   style   class   code   java   a   

看了些關於MVC的資料,做一些MVC的筆記。


分解關注點


在MVC世界裡有個很重要的觀念--“分解關注點”(Separation of Concerns),指的是:當你進行軟體開發時,可一直關注當前的對象,而不會受到同樣的系統中其它對象的幹擾,進而專註於完畢開發工作。如此一來,不但easy提升軟體品質,也能夠加快對代碼的理解速度。

分解關注點觀念的特徵與優勢

  • 簡化複雜度
  • 大幅提升可維護性
  • 更易於測試


對開發ASP.net MVC項目的建議


不要反覆你自己:

      好的軟體不應該有太多反覆的程式碼,所以:Don‘t Repeat Yourself

沒有完美的架構,僅僅有合適的架構

適當的設計模式有助於提升架構的品質

分割你的腦袋,並且至少切成3份:

       至少是Model、View、Controller,有的時候能夠使Service Level,Repository Level、Helper Level等。

建立有責任感的對象:

      MVC中已經分割定義了 Model負責商業邏輯、View負責最上層顯示、Controller負責資料流程式控制制等不同的職責,三者分工合作、嚴守紀律、不得逾越

規範對象合作

相信總會有更好的解決方案

沒有人能夠將軟體一次寫對


ASP.net MVC中常見的問題


MVC的模式彷彿又回到了ASP的年代?

      在ASP年代,沒有合適的模板引擎,全部的程式與視覺邏輯混在了一起,這樣的寫法為“意大利麵式”的寫法。在ASP.net Web Forms年代,有了 CB(Code Behind)的概念,有效分離了HTML代碼和程式碼。而且MS匯入了Windows Form的開發方式,ViewState與事件驅動模型(EventModel)。面對越來越複雜的WEB需求,WEB Form變得異常複雜且難於維護。能把ViewState寫出超過1MB的人大有人在。由此可見,因為對ASP.net頁面生命週期不瞭解而衍生出來的Bug不知道有多少個。在MVC年代,View裡面不應該在又複雜的程式或者是商務邏輯,二十斤留下顯示的部分,如HTML,JavaScript,資料顯示,表單等。然後Controller負責控制其餘部分,由Model負責訪問資料或驗證資料格式----理清彼此之間的責任後才幹編寫出好的“分解關注點”架構,進而提升項目的可維護性。


ASP.net MVC與傳統的ASP.net Web Forms開發有何不同?

ASP.net開發人員都會遇到的惱人問題:

  • 邪惡的ViewState,easy導致超大控制項,使程式失控。
  • 控制群組件對於HTML的控制不夠直接或太過複雜。
  • 不易於採用TDD模式(Test Driven Development 測試驅動開發)進行開發,也不easy編寫單元測試程式。

MVC的長處:

  • 清晰的“分解關注點”架構會強迫你寫出較WebForms更易於維護的程式
  • 開發性與社區支援
  • 可讓你全然控制HTTP的輸出內容
  • 優秀的開發效率
  • 易於測試的架構
  • 易於分工的架構

MVC的缺點:

缺乏工具的支援(和WebForm的那種~~拖的感覺 全然不同)

缺乏成熟的組件化技術的支援(眼下僅僅有ServerControl、HTML Helper)


MVC與Web Forms有哪些同樣之處?


兩者處理網頁的介面事實上都是IhttpHandler,只是WF(WebForm)是IHttpHandler,MVC是當做 MvcHandler類來處理。


必須捨棄WebForm的哪些部分?

MVC中不能使用的技術例如以下:

  • ViewState
  • ASP.net頁面追蹤機制(Page Trace)
  • ASP.net時間驅動模型(EventModel)
  • server控制項(ServerControl)大部分不能使用,但沒用在ViewState中的server控制項還是可以用於顯示
  • Default SiteMap Provider

MVC和WF簡單的功能對比
支援功能 Web Form MVC1.0/2.0
ViewState x
PageTrace x
EventModel x
ServerControl 部分支援
System.Web.SiteMapProvider x
Provider Model
System.Web.Caching命名空間
System.Web.SessionState命名空間
System.web.Security命名空間
Profile,Membership,SiteMap
其它System.Web.*功能














M、V、C真的能夠獨立開發嗎?

能夠,可是不絕對。M是MVC的架構中心,有了M就能夠讓 C和 V參考這些Model,先定義出來全部計劃開發的Controller和Action然後再建立全部的Action和相應的View。這是眼下效率最高的開發方法。

WF項目能夠逐步轉移到MVC項目嗎?

沒辦法。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.