Diamonds
是一個基於Windows窗體的ERP,我會使用網絡技術,而不是Windows窗體重建它..asp.net web表單VS MVC這是最適合業務應用
,但現在我需要決定這是最好的,ASP.NET webforms
(我認爲)更容易(設計)我的意思是在這裏的用戶界面,但mvc
有更簡單的HTML輸出,和一些其他功能...
你能幫我決定技術使用和爲什麼?
我使用C#,
乾杯
Diamonds
是一個基於Windows窗體的ERP,我會使用網絡技術,而不是Windows窗體重建它..asp.net web表單VS MVC這是最適合業務應用
,但現在我需要決定這是最好的,ASP.NET webforms
(我認爲)更容易(設計)我的意思是在這裏的用戶界面,但mvc
有更簡單的HTML輸出,和一些其他功能...
你能幫我決定技術使用和爲什麼?
我使用C#,
乾杯
我認爲這兩種技術在經過任何基礎知識之後都會變得有些複雜。以下是我在實現必須同時存在於MVC和WebForms主機中的項目時收集的一些簡短意見。
WebForms的肯定:
WebForms的否定:
MVC肯定:
MVC否定:
就我個人而言,我是一個MVC粉絲,因爲控制,靈活性和透明的依賴注入支持。也許你應該用兩種技術做一個小型飛行員,看看你更喜歡哪一個。祝好運並玩得開心點!
如果你關心的可擴展性,易維護性,可擴展性和應用程序的穩健性,以及你的軟件開發技能的開發,然後留遠儘可能遠離網頁表單。
通過在窗體中包裝所有內容來添加一層狀態的想法是錯誤的。 HTTP是無狀態的,並且MVC是圍繞該模型構建的,這很好。
編輯 關於提出的意見。 Web表單應用程序不可擴展,因爲表示層,業務邏輯和數據訪問代碼(數據源)都駐留在代碼後面。 Web表單提供的控件僅適用於Web表單。這意味着您將無法將這些技能轉移到其他Web開發框架。
最後,當然可以使用MVC編寫一個緊密耦合的應用程序 - 總有一種方法可以銷燬某些東西。對此沒有任何爭議。主要的一點是,當網絡形式實際上把你從你身上帶走時,MVC鼓勵分離顧慮和單一責任原則。
你也說過,網頁表單比較容易。如果您一直在使用它,並且與MVC相比更快,但是從長期來看,MVC可能變得「更容易」。在www.asp.net/mvc上觀看一些視頻。另外你可能想看看測試驅動的開發(單元測試)。我不認爲單元測試適用於網頁表單,因爲所有內容都緊密結合在一起。如果我錯了,請糾正我。
我會非常有興趣聽到其他開發人員對使用這兩個框架的經驗有興趣。
這個答案是當場上。你會看到人們支持論證的雙方,但作爲一個很長一段時間webforms開發者誰最近首先進入MVC,我可以誠實地說,我從來不想再寫一個Web表單應用程序:) – stephen776 2011-06-10 11:40:07
恕我直言,MVC顯然更好,但所有您所引用的原因與底層框架無關,而是從開發人員提供的代碼質量中獲得。可伸縮性也與Web前端無關,但始終依賴於基礎數據服務。帶有重載數據庫的MVC站點與webforms數據庫一樣慢。 – jfar 2011-06-10 12:09:44
請參閱編輯。 – 2011-06-10 13:47:35
這是所有關於您的選擇讓Web窗體可以讓您輕鬆設計您的應用程序,因爲現在MVC已經成爲行業標準,甚至MS正在推廣它。如果你想保持你的代碼清潔,毫無疑問MVC是更好的選擇。
儘管我已經完成了大量使用Web表單的項目,但我必須說他們存在的主要原因是通過HTTP提供了一個抽象層,主要是爲了促進基於事件的無狀態協議模型。不幸的是,像大多數MS解決方案一樣,這是有代價的。
從歷史上看,Web表單過去一直困擾着標記生成的問題。其中一些問題今天仍然存在,尤其是涉及到ViewState時。事情現在稍微好一點(你可以在ASP .NET 4.0中管理DOM id),但Web表單仍然會導致你的悲傷。在Web表單項目中你會看到的常見事物是在代碼隱藏中大量的biz邏輯。
MVC並沒有消除這一點,但它提供了一個結構和關注點的分離,使不好的練習變得不太可能。也就是說,儘管從最終用戶的角度來看,默認視圖引擎在生成清晰標記方面效果更好,但視圖中的內聯代碼是對傳統ASP的反撥。
對於它的價值,我已經停止開發web表單項目,並專門轉到MVC進行新的工作。
我認爲this post from Scott Guthrie是非常有趣的閱讀。閱讀後,我認爲你很可能會去ASP.NET MVC。 :-)
「使用依賴注入很難」使用/實現「 - 如何?在'Page'中注入依賴關係非常簡單,類似於設置控制器工廠http://aspnetresources.com/articles/ioc_and_di_with_web_forms – jfar 2011-06-10 15:42:11
對不起,但對我來說,使用nuget將ninject「安裝」到我的mvc中項目(然後使用WebActivator將依賴關係無縫注入到我的控制器中)比實現自定義PageHandlerFactory更直觀。我有一個解決方案,部分在mvc中運行,部分在webforms中運行,並且我最終爲Webforms使用了ServiceLocator模式。我無法將基類更改爲我的控件/頁面,我想簡化它。一個人肯定可以得到它的工作,但我發現MVC更容易設置。 – Jason 2011-06-10 18:43:22
@Jason - 有一個用於webforms的Ninject nuget包。沒有看到這與MVC有何不同或更直觀。 – jfar 2011-06-10 19:08:33