iT邦幫忙

4

ASP.NET MVC簡單心得

ASP.NET MVC跟WebForm比較大的差別,
WebForm只要控制項拉一拉就會有一些基本功能可以用,
而且可以事先看到畫面,
(但是如果加入CSS有些美化的部分沒辦法先看到)
MVC的前端主要是以Html的語法為主,
當然也是有一些MVC專用的語法,
不過也可以直接用Html的語法來寫前端,
帶入MVC後端的變數就可以了,

所以有人說反而MVC解放了ASP.NET,
因為不用控制項反而可以相容其他的語言如PHP、JAVA等等,
要換成其他語言前端的部分可以很快就搞定,

其實現在MVC這個詞可以用在各種語言,
只是ASP.NET MVC強制將M(Model)、V(View)、C(Control)分開,
讓你一定要用這個架構去寫網頁,

至於WebForm跟MVC有一個不小的差別,
WebForm是先將控制項做出來,
然後產生PostBack事件來改變控制項,
所以會有Page.IsPostBack等語法,
而MVC是先在後端將所有變數都準備好,
然後將變數傳到前端再Show出來,
每一次都要先經過Controller,
然後才透過View將網頁結果Show出來。

個人心得,
如有謬誤歡迎補充~


1
baida0630
iT邦新手 4 級 ‧ 2017-09-14 16:48:57

最近也是剛學習MVC,結果各種不適導致Javascript的能力直大大的提升了,因為大量使用json/images/emoticon/emoticon04.gif

不過總體來說,確實是方便不少...尤其是javascript在使用的時候不需要特別去指名說他是Client某某物件來講大大減少每次找尋錯誤的困難度...

還有在資料庫的溝通上我個人也覺得方便許多

唯一小小的不習慣就是GridView了吧...
雖然天天都在靠北GridView難用難用,但是在用WebForm的時候還是很愛去用他...

/images/emoticon/emoticon10.gif

看更多先前的回應...收起先前的回應...
小魚 iT邦新手 2 級 ‧ 2017-09-14 19:15:50 檢舉

Javascript的能力值大大的提升是好事,寫網頁不能只靠後端,前端更重要.

小魚 iT邦新手 2 級 ‧ 2017-09-15 12:42:11 檢舉

不過話說回來現在都會要求RWD, GridView要RWD應該有困難吧, 還是因為我沒研究過?

baida0630 iT邦新手 4 級 ‧ 2017-09-15 15:56:58 檢舉

其實就跟TABLE一樣,只是GridView有一些東西可能被訂製了寬度你需要去改成百分比而已。但是在手機或平板看表單本身就是一個很奇怪的事情,你要在一個原本是A4大小呈現的東西縮到5.5吋甚至是更小版面不可以不同要一模模一樣樣的話,我覺得是強人所難了拉,先不說塞不塞的下 就算塞的下那個字估計要用放大鏡看了

小魚 iT邦新手 2 級 ‧ 2017-09-15 19:06:28 檢舉

通常字是不會縮小,
不過我也還在研究表格要怎麼RWD,
雖然有種方式是把寬度拉到100%,
但是看起來就是怪怪的...

baida0630 iT邦新手 4 級 ‧ 2017-09-18 16:03:43 檢舉

字體的話 在css 可以透過 vw 去讓他自適應
font-size: 5vw 類似這樣的用法
效果上還是要自己去抓拉 但是我目前是透過這個方式 畢竟跑版是不能被接受的

0
utopia
iT邦新手 4 級 ‧ 2017-09-15 10:46:49

感謝小魚大大清楚明白的分享,
幫我們這種門外漢補腦!

小魚 iT邦新手 2 級 ‧ 2017-09-15 11:58:12 檢舉

還好啦, 有什麼問題再問吧.

3
fillano
iT邦超人 1 級 ‧ 2017-09-16 12:45:29

WebForm或是Java的Struts、JSF都可以歸類為一種元件化的View框架。這種框架有他方便及不便的地方...我只講不便的地方。

由於每個元件都有狀態要維護,每個元件的狀態都會動態地產生很多額外的資料,這些東西會被加在html以及request中。後端程式有一個階段就是在處理這些狀態,在需要時就會呼叫根據框架規則定好名稱的event,後端程式設計時,通常就是在這些名稱的event中寫程式來處理。由於需要產生這些維護狀態用的資料,html跟request要傳的東西會多很多,效率也會比較不好。

還有,這樣碰到想要用ajax的方式來處理就很麻煩,除非元件架構已經設計好支援的方式,幾乎很難在前端應用ajax。

另外,如果在UI上要做到想要做到的功能,而沒有可以用的元件時,還需要自己寫一個元件,但是撰寫元件需要許多額外的知識,設計View的人通常不太可能做得出來。

結果用比較簡單的MVC架構,反而容易維護跟分工XD(雖然像WebForm、Struts、JSF也算是MVC)

看更多先前的回應...收起先前的回應...
小魚 iT邦新手 2 級 ‧ 2017-09-16 14:32:27 檢舉

我還有一個問題,
最近在寫MVC網站,
發現MVC網站即使使用發行的方式,
要連進去還是需要很多時間,
都會需要很多秒的時間,
(人家說Debug會比較久,但是Release也是很久啊)
不知道這是什麼原因造成的,
是ASP.NET MVC本身就會比較慢嗎?
還是跟寫網頁的方式有關?
像我進來IT邦感覺時間就不會很長。

baida0630 iT邦新手 4 級 ‧ 2017-09-18 16:12:14 檢舉

我遇到這個問題的時候有兩種,第一種是資料庫在loading的時候資料量太龐大導致,個人遇到的問題第二種是 對於$('.class').bind('click', function () {});
不完全了解與濫用的時候,他一直重複去run /images/emoticon/emoticon04.gif
.bind都還蠻容易發生這個問題的
是不是寫法上有問題 其實可以分享看看

fillano iT邦超人 1 級 ‧ 2017-09-19 09:33:20 檢舉

速度慢是因為...IIS每隔一段時間就會自動把處理你的網站的行程關掉,結果有人要連線時,就需要重新啟動,這樣就會花很多時間。

要怎麼調校IIS,網上資料應該蠻多的,可以找找看。

我印象中另外一個影響效能比較大的因素是View,預設View是不會經過處理,要使用時才動態編譯,這樣對效能也會有衝擊。可以透過在發行時把View預編譯成dll,這樣載入跟執行可以更快。(不過會影響彈性,你沒辦法手動去改View,一定要發行,然後覆蓋過bin目錄中對應的dll)

小魚 iT邦新手 2 級 ‧ 2017-09-19 12:45:48 檢舉

感謝分享, 我再試試看

我要留言

立即登入留言