2013-05-14 29 views
2

在過去的幾周裏,我一直在檢查MVC 4.0,並試圖確定是否要從Web表單切換到MVC。我的生產環境中的MVC vs WebForms

我目前的生產環境: 1)一個主數據庫,與它 2)通信。這master數據庫中不包含3個獨立的asp.net web表單應用程序(調度,銷售報告,中央行政)適當的外鍵爲當前應用程序使用了大量的存儲過程,但該結構可能也會使用一些重新設計,但它的'我繼承了一些遺留系統代碼。

當我開始爲改進的銷售報告應用程序創建原型時,我開始遇到需要使用Visual Studio中的遷移工具不斷修改數據庫的問題。我發現表格之間的關係沒有正確建立,所以使用實體框架更具挑戰性。我並不是一個MVC專家和實體框架專家,但我開始質疑我是否應該跳入MVC中,以適應現有的情況。最讓我感到害怕的是我在測試環境中必須爲我的控制器和視圖啓用正確模型的數據庫更改數量。隨着我進行這些更改,我覺得其他3個Web表單應用程序必須進行適當的重新測試,我們沒有資源。在主數據庫或Web表單應用程序中,我們承受不了任何問題,因爲這些都是面向客戶端的。我不介意MVC的學習曲線,我確實發現它很有趣,我的經理並不在乎我使用什麼,也不反對我學習asp.net的擴展。我想有一個時間表,但不是具體的。

我只是向可能遇到類似情況的其他人伸出援助之手。我的顧慮是否有效?我應該堅持使用另一個Web表單應用程序還是應該推進MVC世界?

+0

你的擔憂絕對有效,事實是,無論改變底層框架與之合作將要求更改數據庫結構,至少小數據庫結構。但是,您可以使其工作,但這將是困難和耗時的。這完全取決於您可以使用的資源類型以及您需要如何修改當前的應用程序庫。 – Nomad101 2013-05-14 04:30:01

回答

3

取決於您的應用程序的各層分離程度。如果您擁有可處理所有數據訪問的固定服務層,並且只是來回傳遞域對象,那麼您轉換爲MVC其實並不是那麼糟糕。在標準的ADO.Net後端擁有MVC前端是非常可行的。

根據數據庫的結構,嘗試使用EF將很困難,除非所有適當的約束條件都到位。除非數據庫設置正確,否則EF甚至無法工作。

如果你想轉移到MVC,我會建議分階段進行。

  1. 如果您的服務層還沒有,請將您的UI層分開。
  2. 將您的UI層轉換爲MVC。
  3. 當您對UI感到滿意時,您可以開始進行數據庫更改並將您的數據訪問層轉換爲EF。

在將您的UI轉換爲MVC時,創建模型來複制數據庫表並將其傳遞給UI,而不是直接將其拖回。這樣,當你轉換爲EF時,你將已經擁有正確的模型,你的UI層將不會受到這些變化的影響

+0

現在我創建了我的模型並更新了我的數據庫結構,但是我一直在發現我需要創建另一個類,我稱之爲「ViewModel」,它只包含我想更新的屬性,甚至將多個模型返回到視圖。不太清楚UI層和服務層的分離意味着什麼? – foop 2013-05-14 13:11:47

+0

您希望您的UI層僅以格式化的方式顯示數據。您需要一個服務層來負責處理新/更新項目的驗證以及從數據源獲取所需的數據。在實現這個時,你不希望你的控制器(或者web表單中的代碼隱藏)直接訪問你的數據庫。它會通過一個處理它的服務。根據您的表單設置方式,您可以實際使用表示數據庫表的類作爲視圖模型,然後您不必爲此專門創建模型。 – Slick86 2013-05-14 19:51:53

+0

感謝您的意見 – foop 2013-05-15 14:57:57