2016-03-31 24 views
1

對不起模糊的標題。我很慚愧地問這個問題,但我現在真的需要我的意識。我無法確定我是否遵循MVC模式或MVVM模式。我正在使用什麼?

在我以前的實習中,我們有C#代碼(.NET),它有一個控制器並直接連接到數據庫(沒有服務層)。控制器將獲取信息,格式化爲JSON並將其提供給Angular的控制器,該控制器將在視圖上顯示它。

在我目前的實習中,我們不使用Angular。我們使用.cshtml文件。服務層將其信息提供給控制器,該控制器對MODEL進行格式化並將其提供給.cshtml視圖並顯示內容。

我的問題:

哪一個是MVC,哪一個是MVVM?請下降到我的水平並解釋。我在網上閱讀的大部分內容似乎讓我更加困惑於我在工作中觀察到的東西。

在工作中的每個人都調用他們兩個MVC,我現在很困惑。如果兩者都是MVC,那麼兩者有什麼區別?

+1

只是谷歌它。 http://stackoverflow.com/questions/667781/what-is-the-difference-between-mvc-and-mvvm或者http://stackoverflow.com/questions/19444431/what-is-difference-between-mvc -mvp-mvvm-design-pattern-in-terms-of-coding-cs和許多其他... –

+0

我有好幾次了。有幾次被問及。人們提供不同的答案。我知道它正在用modelview取代控制器,但是我在這兩種情況下都有一個控制器,而且我發現在完成任務的方式上存在差異。從技術上講,兩者都是MVC,但這些架構有什麼不同?這些差異的名稱是什麼 – Oct8

+0

你知道哪個ASP.NET MVC是吧?這不應該讓人困惑。我不知道角度使用什麼模式,但是如果它在服務器調用和UI之間進行數據綁定,那麼最有可能是MVVM。 – Will

回答

1

Angular絕對是更多的Model-View-ViewModel-ish。而現在你正在做的事絕對聽起來像MVC。

MVVM是一種特殊的模式,UI狀態封裝在ViewModel中,因此最終用戶界面的渲染非常愚蠢,只是數據綁定。狀態邏輯說,顯示這個按鈕,或者隱藏這個區域全部封裝在ViewModel中。一個好處是,這允許構建單元測試來測試ViewModel,從而隱式測試所有的UI行爲。 (請參閱:Wikipedia article on MVVMMartin Fowler's Introduction to Presentation Model其中MVVM是其中的一個變體)。

在MVC中,視圖本身具有控制其行爲的自由度,基於提供的數據來控制其行爲,顯示/隱藏等等,模型。這意味着在MVC中,您無法測試UI行爲(例如,如果某些內容正確顯示或基於數據更改隱藏),而無需測試UI本身。

總而言之,MVVM,ViewModel控制着用戶界面的行爲,用戶界面本身是愚蠢的,只是使用數據綁定,並根據ViewModel中的邏輯做它要求做的事情。

在MVC中,用戶界面是'智能'的,重新塑造和渲染自己,但它感覺它需要基於從模型接收到的數據。

你基本上可以看到UI的渲染方式,如果你看到UI渲染邏輯根據這個決定做出了很多關於如何渲染自己的決定,那麼你幾乎知道你正在使用MVC。如果你只是看到很多數據綁定,其中幾乎每一個行爲都是由一個單獨的類驅動的,它封裝了用於顯示和隱藏UI部分的所有邏輯,並且這些數據通過數據綁定傳遞給UI,那麼它就是可能是MVVM。

我希望有幫助。

+0

非常感謝!清除了我的疑惑 – Oct8

1

在這兩種情況下,您都使用MVC(或至少是MVC-ish模式)。使用.cshtml文件時,您使用的是服務器端MVC。使用Angular時,您使用的是客戶端MVC(可能更像MVVM)。最大的區別在於模型呈現爲HTML元素的地方;在客戶端或服務器上。

在我看來,這是一個更好的方式來查看你所做的不同之處。

相關問題