淺談ASP.NET MVC

來源:互聯網
上載者:User

在正式的工作中使用ASP.NET MVC也有一陣子了,也看了聽了很多關於ASP.NET MVC別人的想法和代碼,我認為很多人對於它的理解是錯誤的。

在這裡我只談談對ASP.NET MVC我的一些想法,希望大家多多討論。

1. ASP.NET MVC區別於ASP.NET在於設計理念

我聽過的關於ASP.NET  MVC的第一個看法是ASP.NET MVC最大的特點在於Controller和View的分離,當時我還不懂ASP.NET MVC是什麼東西,但是當我第一眼看到這個架構時,我就認為這個觀點是錯誤的,我認為ASP.NET MVC最大的特點,也是最大的優點是由Controller來驅動整個項目的開發進展

我們知道,在一個項目的物件導向分析與設計過程中,我們一直都在圍繞著人,可能是角色,也可能是涉眾來分析和設計整個項目。人,全都是人!站在整個類設計結構最上層的就應該是人,然後我們接下來應該去分析這個人有什麼特徵,我們這個人要做什麼(記住,而不是這個人可以做什麼)。也就是說,除了人之外,接下來的層次就應該是這個人的行為,也就是整個系統中的Action

好,接下來我們可以回想一下我們最初的ASP.NET Webform時代,我們是如何開發一個系統的,我們寫出一堆設計文檔,然後美工給我們頁面,然後就是我們常說的“套頁面”。對於這個做法,也就是我在之前文章中調侃的“PDD”(頁面驅動開發)。缺點我就不說了,在前文中我想我已經說得很清楚了。

那麼我們想想,其實我們會覺得Webform是個天然為了PDD而生的產物。當提及三層架構時,很多人都有一種看法是ASP.NET本身就是三層的,我們暫且不管這個說法對不對,至少可以說明,很多人都天然地把.aspx.cs當成了其中的一層,這就造成了aspx和aspx.cs這兩層的完全耦合性。

但是ASP.NET MVC好在哪裡?一個使用者訪問,並不是在訪問某一個頁面,而是在訪問某一個功能(Action)。這就是物件導向分析的最基礎方法。

那麼我們在開發ASP.NET MVC時就應該先考慮我們需要哪些功能塊,這就是我們的Controller,然後在這個功能塊下,我們都需要哪些功能,這就是我們的Action。至於頁面,應該是應該由功能來驅動我們的頁面開發,這才是Controller驅動整個項目開發的核心!

但是我想仍然有很多公司在用開發ASP.NET時的那一套PDD來開發整個項目,我想,這就是沒有掌握到ASP.NET MVC的精髓之所在吧。

ASP.NET MVC要點一:先開發Controller,頁面完全可是先束之高閣,由Controller而不是Page來驅動整個項目開發。

2. Controller的程式碼群組織

在整體的架構中,個人認為Controller更像一個Facade,他提供給使用者一個提供者,在這個介面背後是複雜的商務邏輯

但是我看到很多公司的代碼都在Controller摻雜進了複雜的商務邏輯,甚至會出現了幾百行,幾千行的Controller,這是我沒辦法理解的。

讓我們想想Facade,他的目的是這樣的:定義一個高層介面,這個介面使這一子系統更加容易使用

在我看來應該注意這樣幾點:

A. Controller中不應該包含任何private和protected方法,一個Facade類只應該由對外暴露的方法,他只是對其他類方法的整合

B. Action不應該處理任何細節方面的邏輯。個人認為,每個方法之中僅應包含他下一抽象層次的方法,而不應該出現抽象層次的雜糅以及抽象的層次跳躍

C. Action本身其實就是一個方法,正如代碼規範上所說的,方法應該只是動詞或者動賓短語,而不應該出現名詞作為方法名的情況。因為使用者是希望做某一項動作,而不是得到某一種東西

3. 最後

本來感覺有好多話想說,可是寫著寫著卻發現不知道該寫什麼了,下次再說吧。

最後,個人建議,學習ASP.NET MVC可以參考一下Java界的一些成熟思路,有些其實和ASP.NET MVC非常像,比如Struts,還有Spring 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.