Największa zaleta korzystania z ASP.Net MVC w porównaniu z formularzami internetowymi


164

Jakie są zalety używania jednego nad drugim?

Odpowiedzi:


165

Główne zalety ASP.net MVC to:

  1. Umożliwia pełną kontrolę nad renderowanym kodem HTML.

  2. Zapewnia czyste oddzielenie problemów (SoC).

  3. Włącza programowanie sterowane testami (TDD) .

  4. Łatwa integracja z frameworkami JavaScript.

  5. Zgodnie z projektem sieci o bezpaństwowym charakterze.

  6. RESTful URL, które umożliwiają pozycjonowanie.

  7. Brak zdarzeń ViewState i PostBack

Główną zaletą formularza internetowego ASP.net są:

  1. Zapewnia rozwój RAD

  2. Prosty model rozwoju dla programistów wywodzących się z rozwoju winform


32
Jeśli chodzi o SoC, ludzie mogą zepsuć go tak, jak robią to w formularzach internetowych, pisząc „grube” kontrolery z dużą ilością logiki biznesowej lub nawet kodu dostępu do danych. Więc powiedziałbym, że SoC to coś, co musi zapewnić programista, fw nie może pomóc.
rodbv

7
@ rodbv: To prawda, ale MVC w pewnym sensie popycha cię we właściwym kierunku, a przynajmniej nie sprawia, że ​​przeskakujesz przez obręcze, aby to zrobić. Więc może ten punkt powinien brzmieć coś w stylu „ułatwia wdrożenie SoC”
Erik van Brakel

4
W jaki sposób „Włącza programowanie sterowane testami” w porównaniu z jakąkolwiek inną metodą? Jestem również zdezorientowany, w jaki sposób zezwala na adresy URL RESTful, gdy metoda HttpContext.RewritePath (String) istnieje od .NET 2.0?
Mark Broadhurst

2
Chociaż te punkty są w większości dokładne dla strony MVC, wiele z nich jest teraz włączanych do WebForms.
rtpHarry

Link do źródła tej odpowiedzi z dodatkowymi szczegółami: weblogs.asp.net/shijuvarghese/archive/2008/07/09/…
DK.

91

ASP.NET Web Forms i MVC to dwie platformy internetowe opracowane przez firmę Microsoft - obie są dobrym wyborem. Żadna z platform internetowych nie zostanie zastąpiona drugą ani nie ma planów ich „scalenia” w jedną strukturę. Ciągłe wsparcie i rozwój są realizowane równolegle przez Microsoft i żadne z nich nie będzie „odchodzić”.

Każda z tych platform internetowych ma zalety / wady - niektóre z nich należy wziąć pod uwagę podczas tworzenia aplikacji internetowej. Aplikację internetową można opracować przy użyciu dowolnej technologii - może to ułatwić tworzenie konkretnej aplikacji, wybierając jedną technologię z drugiej i odwrotnie.

Formularze sieci Web ASP.NET:

  • Rozwój wspiera stan • Daje złudzenie, że aplikacja internetowa jest świadoma tego, co robił użytkownik, podobnie jak aplikacje Windows. To znaczy sprawia, że ​​funkcjonalność „kreatora” jest nieco łatwiejsza do wdrożenia. Formularze internetowe wykonują świetną robotę, ukrywając przed programistą dużą część tej złożoności.
  • Szybkie tworzenie aplikacji (RAD) • Możliwość „wskoczenia” i rozpoczęcia dostarczania formularzy internetowych. Jest to kwestionowane przez część społeczności MVC, ale forsowane przez firmę Microsoft. Ostatecznie wszystko sprowadza się do poziomu wiedzy programisty i tego, z czym czuje się komfortowo. Model formularzy internetowych jest prawdopodobnie mniej wymagający dla mniej doświadczonych programistów.
  • Większy zestaw narzędzi kontrolnych • ASP.NET Web Forms oferuje znacznie większy i bardziej niezawodny zestaw narzędzi (kontrolki sieci Web), podczas gdy MVC oferuje bardziej prymitywny zestaw kontrolny polegający bardziej na rozbudowanych kontrolkach po stronie klienta za pośrednictwem jQuery (JavaScript).
  • Dojrzała • Istnieje od 2002 roku i jest mnóstwo informacji dotyczących pytań, problemów itp. Zapewnia większą kontrolę stron trzecich - należy wziąć pod uwagę istniejące zestawy narzędzi.

ASP.NET MVC:

  • Separacja problemów (SoC) • Z technicznego punktu widzenia organizacja kodu w MVC jest bardzo przejrzysta, zorganizowana i szczegółowa, co ułatwia (miejmy nadzieję) skalowanie aplikacji internetowej pod względem funkcjonalności. Promuje wspaniały projekt z punktu widzenia rozwoju.
  • Łatwiejsza integracja z narzędziami po stronie klienta (bogate narzędzia interfejsu użytkownika) • Bardziej niż kiedykolwiek, aplikacje internetowe są coraz bogatsze, tak jak aplikacje, które widzisz na swoich komputerach stacjonarnych. Dzięki MVC daje możliwość integracji z takimi zestawami narzędzi (takimi jak jQuery) z większą łatwością i bezproblemową niż w formularzach sieci Web.
  • Search Engine Optimization (SEO) Friendly / Stateless • Adresy URL są bardziej przyjazne dla wyszukiwarek (np. Mywebapplication.com/users/ 1 - pobierz użytkownika o identyfikatorze 1 vs mywebapplication / users / getuser.aspx (identyfikator przekazany w sesji)). Podobnie, ponieważ MVC jest bezstanowy, usuwa to ból głowy użytkowników, którzy uruchamiają wiele przeglądarek internetowych z tego samego okna (kolizje sesji). Idąc tym tropem, MVC przestrzega bezpaństwowego protokołu internetowego, a nie „walczy” z nim.
  • Działa dobrze z programistami, którzy potrzebują wysokiego stopnia kontroli • Wiele formantów w formularzach sieci Web ASP.NET automatycznie generuje większość surowego kodu HTML, który jest wyświetlany podczas renderowania strony. Może to powodować ból głowy dla programistów. Dzięki MVC lepiej radzi sobie z pełną kontrolą nad tym, co jest renderowane i nie ma żadnych niespodzianek. Jeszcze ważniejsze jest to, że formularze HTML są zwykle znacznie mniejsze niż formularze internetowe, co może oznaczać wzrost wydajności - coś, co należy poważnie rozważyć.
  • Test Driven Development (TDD) • Dzięki MVC możesz łatwiej tworzyć testy dla strony internetowej. Dodatkowa warstwa testowania zapewni kolejną warstwę ochrony przed nieoczekiwanym zachowaniem.

Uwierzytelnianie, autoryzacja, konfiguracja, kompilacja i wdrażanie to funkcje współdzielone między dwiema platformami sieciowymi.


27
„Dzięki MVC masz pełną kontrolę nad tym, co jest renderowane” - możesz również mieć pełną kontrolę za pomocą formularzy internetowych, jeśli używasz literałów zamiast etykiet, symboli zastępczych zamiast paneli, repetytorów zamiast datagridów itp. Zbyt wielu programistów czyta takie instrukcje i uwierz, że to prawda. Głos przeciw ..
masty

3
@masty - nie wiem, czy osobiście zagłosowałbym przeciw, ale zgadzam się z resztą tego, co powiedziałeś.
Peter,

4
@masty - Dziękuję za uratowanie świata StackOverflow, szukając dziury w dziobie i prosząc o odrzucenie tego pytania. Zredagowałem moją odpowiedź specjalnie dla Ciebie - więc mam nadzieję, że odzyskam Twój głos wraz ze wszystkimi innymi, których poprosiłeś o jego odrzucenie. Dzięki!
JC

6
@masty Częściowo się zgadzam, ale używając literałów, symboli zastępczych i repetytorów, przenosisz się coraz więcej html za kod. Co może również powodować zamieszanie u projektantów czytających plik .aspx i programistów czytających plik .aspx.cs. Więc tak, jest to możliwe, ale tak, jest to również sprzeczne z celem ASP.Net WebForms. Powiedziałbym, że w tym przypadku ControlAdapters są czystszym rozwiązaniem. Zamiast zastępować kontrolki, zastępujesz sposób ich renderowania.
Aidiakapi,

2
Stwierdzenie „Dzięki MVC masz pełną kontrolę nad tym, co jest renderowane” jest niejasne. Myślę, że lepszym stwierdzeniem byłoby: „Framework MVC wykonuje mniej renderowania, a renderowane elementy są bardziej odchudzone. Masz większą kontrolę nad konkretnym renderowanym HTML / CSS, ale musisz wykonać pracę, aby uzyskać tę kontrolę”.
kingdango

17

Każdy wystarczająco dorosły, by zapamiętać klasyczne ASP, pamięta koszmar otwierania strony z kodem zmieszanym z html i javascript - nawet najmniejsza strona była trudna do zorientowania się, co do cholery robi. Mogę się mylić i mam nadzieję, że tak, ale MVC wygląda jak powrót do tych złych starych czasów.

Kiedy pojawił się ASP.Net, został okrzyknięty wybawcą, oddzielając kod od treści i pozwalając nam projektantom stron internetowych tworzyć HTML, a koderom pracować nad kodem. Jeśli nie chcieliśmy używać ViewState, wyłączyliśmy go. Gdybyśmy z jakiegoś powodu nie chcieli używać kodu z tyłu, moglibyśmy umieścić nasz kod wewnątrz html, tak jak w klasycznej ASP. Jeśli nie chcieliśmy korzystać z PostBack, przekierowywaliśmy na inną stronę do przetworzenia. Jeśli nie chcieliśmy używać kontrolek ASP.Net, używaliśmy standardowych kontrolek HTML. Moglibyśmy nawet przesłuchać obiekt Response, gdybyśmy nie chcieli używać ASP.Net runat = "server" na naszych kontrolkach.

Teraz ktoś w swojej wielkiej mądrości (prawdopodobnie ktoś, kto nigdy nie programował klasycznego ASP) zdecydował, że nadszedł czas, aby cofnąć się do czasów mieszania kodu z treścią i nazwać to „oddzieleniem problemów”. Jasne, możesz stworzyć czystszy HTML, ale możesz to zrobić z klasycznym ASP. Powiedzenie „nie programujesz poprawnie, jeśli masz zbyt dużo kodu w widoku”, jest jak powiedzenie „jeśli napisałeś dobrze skonstruowany i opatrzony komentarzami kod w klasycznym ASP, jest on znacznie czystszy i lepszy niż ASP.NET”

Gdybym chciał wrócić do mieszania kodu z zawartością, przyjrzałbym się programowaniu przy użyciu PHP, które ma znacznie bardziej dojrzałe środowisko do tego rodzaju programowania. Jeśli jest tak wiele problemów z ASP.NET, dlaczego nie rozwiązać tych problemów?

Wreszcie, nowy silnik Razor oznacza, że ​​jeszcze trudniej jest odróżnić html od kodu. Przynajmniej moglibyśmy szukać tagów otwierających i zamykających, tj. <% I%> w ASP, ale teraz jedynym wskazaniem będzie symbol @.

Być może nadszedł czas, aby przejść na PHP i poczekać kolejne 10 lat, aż ktoś ponownie oddzieli kod od treści.


7
+1 na miejscu. Moją pierwszą reakcją na MVC było to, że robiłem od nowa klasyczne ASP; tym razem tylko w C # zamiast VBScript.
DancesWithBamboo

3
Jestem zdumiony, dlaczego ta odpowiedź spotkała się z tyloma pozytywnymi opiniami. Po pierwsze, ASP.NET MVC ma wbudowaną separację MVC. Oczywiście jest to możliwe w ASP. Po drugie, ASP.NET MVC to znacznie więcej niż klasyczny ASP. Oferuje precyzyjną kontrolę nad HTML w połączeniu z mocą .NET i wieloma przydatnymi pomocnikami. Po trzecie, @ to dobra notacja, podobnie jak <%%>. Każdy przyzwoity edytor dla widoków Razor będzie obsługiwał @ -notację. Wreszcie, czy PHP jest dojrzałe? me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design ASP.NET MVC to świetna platforma. Poświęć mu więcej uwagi.
JP ten Berge

Czy ty żartujesz? Używałem PHP z jego notacją „<? ...?>” I stwierdziłem, że jest on całkowicie rozwlekły. Nie rozumiem, dlaczego symbol „@” jest trudniejszy do rozpoznania niż znaczniki „<% ...%>”. Poza tym rzadko używasz symbolu „@” w szablonach HTML.
Exegesis,

Moje oczy mogą spocząć naprawdę lepiej na stronie z brzytwą niż na piekielnych symbolach „<%%>”. Czytanie strony .aspx przyprawia mnie o ból głowy. Wolę też zobaczyć, co jest renderowane. Blok @foreach (..) {<tr> ... </tr>} sprawia, że ​​czuję się bardziej komfortowo niż <abc: MyViewControl ID = "..." runat = "server" DatasourceID = ".... "/>. Robię wiele manipulacji po stronie klienta i muszę dokładnie wiedzieć, co ma być renderowane, gdzie iz jakim identyfikatorem, stylem i klasami. Wolę zrobić to sam, niż pozwolić kontroli robić to w locie. Zwłaszcza, gdy niektóre kontrolki są renderowane inaczej w zależności od ich ustawień.
Thanasis Ioannidis

Jestem zaskoczony, że ma to pozytywne opinie, to kompletne nieporozumienie dotyczące frameworka MVC. Jeśli zauważysz, że mieszasz kod z zawartością w MVC, robisz to źle. Twoje widoki mają zawartość, kontrolery (i klasy, których używają) mają kod. To jedna z podstawowych zasad MVC.
Josh Noe,

14

Jeśli pracujesz z innymi programistami, takimi jak PHP lub JSP (i zgaduję, że rails) - znacznie łatwiej będzie ci konwertować lub współpracować na stronach, ponieważ nie będziesz mieć tych wszystkich „paskudnych” ASP.NET zdarzenia i kontrole wszędzie.


„znacznie łatwiejszy czas”, używając którego?
cregox

5
@cawas - znacznie łatwiejsze dzięki MVC. nie ma żadnych wydarzeń w ASP.NET MVC. w zasadzie masz do czynienia ze standardowym HTML i css, a nie wieloma zdarzeniami i kontrolkami, których programiści PHP / JSP musieliby się nauczyć
Simon_Weaver

ASP.NET jest podstawą zarówno dla WebForms, jak i MVC. Ludzie mylą formularze internetowe z ASP.NET. Nie ma opcji „MVC vs ASP.NET”. Istnieje „ASP.NET MVS” i „ASP.NET WebForms”. I tak naprawdę nie walczą ze sobą. Są po prostu różne sposoby z różnymi zaletami i wadami, aby zbudować stronę internetową
Thanasis Ioannidis 1

13

Problem z MVC polega na tym, że nawet dla „ekspertów” pochłania on dużo cennego czasu i wymaga dużego wysiłku. Firmy kierują się podstawową zasadą „Szybkie rozwiązanie, które działa” niezależnie od technologii. WebForms to technologia RAD, która oszczędza czas i pieniądze. Wszystko, co wymaga więcej czasu, jest nie do przyjęcia przez firmy.


1
+1 dla firm kieruje się podstawową
zasadą

1
Problem polega na tym, że niektóre szybkie rozwiązania po prostu nie działają, ponieważ w pierwszej kolejności miały być szybkie. Niedawne doświadczenie: szybka strona z formularzami internetowymi, aby wykonać podstawowe czynności tworzenia, edycji i aktualizacji. Miał być „szybszy” niż strona ekwiwalentu infopatha, która była trochę powolna. W rzeczywistości nowe rozwiązanie miało prawie taką samą wydajność ze stroną informacyjną, z wyjątkiem tego, że w IE7 było bardzo wolniejsze, aż do tego stopnia, że ​​było bezużyteczne. 5 sekund na otwarcie strony i 5 sekund za każdym razem, gdy kliknięto kombinację ... Wszystko to, tylko dlatego, że musiało być szybkie. Żadnej myśli, żadnego planowania.
Thanasis Ioannidis

1
Następnie usunęliśmy wszystkie kontrolki, aby pozbyć się ich ciężkiego i niepotrzebnego skryptowania po stronie klienta, i skończyło się na renderowaniu ręcznych formantów HTML z danymi i zdarzeniami ładowanymi po załadowaniu oraz kombinacją jQuery i BackBone.js. W rzeczywistości jest to podejście MVC hostowane na stronie formularzy internetowych. Oczywiście, przy dobrym chociaż i planowaniu WebForms i MVC, oba mogą działać naprawdę dobrze, ale WebForms kusi Cię, aby po prostu rzucić kontrolki na swojej stronie tylko po to, aby zobaczyć, jak coś porusza się na ekranie, a następnie spędzasz więcej czasu na poprawianiu, jeśli nie usuwaniu tego w ogóle.
Thanasis Ioannidis,

11
  1. Właściwy AJAX, np. JSONResults, brak częściowego nonsensu ogłaszania zwrotnego strony.
  2. brak stanu wyświetleń +1
  3. Brak zmiany nazw identyfikatorów HTML.
  4. Czysty HTML = bez nadęcia i przyzwoite możliwości renderowania XHTML lub stron zgodnych ze standardami.
  5. Nigdy więcej generowanego javascript AXD.

9

Największą zaletą dla mnie byłby wyraźny podział między warstwami modelu, widoku i kontrolera. Pomaga promować dobry design od samego początku.


4
Zgadzam się, że jest to główny punkt sprzedaży, jeśli nigdy wcześniej nie pracowałeś z tego typu wzorcem, ale możesz zaimplementować swój wzorzec MVC lub MVP w formularzach internetowych. Brawa za skłonienie ludzi do przejścia do wzorca zamiast monolitowania formularza internetowego z zestawami danych, ale nie są to ludzie, których zazwyczaj zatrudniam.
Mark Broadhurst

9

Nie widziałem ŻADNEJ przewagi w MVC nad ASP.Net. 10 lat temu Microsoft wymyślił UIP (User Interface Process) jako odpowiedź na MVC. To była flop. Zrobiliśmy wtedy duży projekt (4 programistów, 2 projektantów, 1 tester) z UIP i był to czysty koszmar.

Nie wskakuj tylko w modę ze względu na Hype. Wszystkie wymienione powyżej zalety są już dostępne w Asp.Net (z większymi ulepszeniami [ Nowe funkcje w Asp.Net 4 ] w Asp.Net 4).

Jeśli Twój zespół programistów lub jedna rodzina programistów korzystająca z Asp.Net, po prostu trzymaj się tego i szybko twórz piękne produkty, aby zadowolić klientów (którzy płacą za godziny pracy). MVC pochłonie Twój cenny czas i da takie same wyniki, jak Asp.Net :-)


1
Domyślne wyłączenie stanu widoku podczas włączania go przy okazjonalnej kontroli, która faktycznie tego potrzebuje, było wielkim krokiem naprzód w ASP.NET 4.
PeteT

Zarówno formularze internetowe, jak i MVC są oparte na platformie ASP.NET.
Thanasis Ioannidis

8

Francis Shanahan,

  1. Dlaczego częściowe ogłaszanie zwrotne nazywasz „bzdurą”? Jest to podstawowa funkcja Ajax i została bardzo dobrze wykorzystana w ramach Atlas i wspaniałych kontrolkach innych firm, takich jak Telerik

  2. Zgadzam się z twoim punktem widzenia dotyczącym stanu widzenia. Ale jeśli programiści ostrożnie wyłączają stan widoku, może to znacznie zmniejszyć rozmiar renderowanego kodu HTML, dzięki czemu strona stanie się lekka.

  3. Tylko kontrolki serwera HTML są zmieniane w modelu formularzy sieci Web ASP.NET, a nie czyste kontrolki HTML. Cokolwiek by to nie było, dlaczego tak się martwisz, jeśli zmiana nazwy zostanie zakończona? Wiem, że chcesz radzić sobie z wieloma zdarzeniami javascript po stronie klienta, ale jeśli elegancko projektujesz swoje strony internetowe, zdecydowanie możesz uzyskać wszystkie identyfikatory, które chcesz

  4. Nawet ASP.NET Web Forms spełnia standardy XHTML i nie widzę żadnego wzdęcia. To nie jest uzasadnienie, dlaczego potrzebujemy wzorca MVC

  5. Ponownie, dlaczego przejmujesz się skryptem AXD Javascript? Dlaczego cię to boli? To znowu nie jest ważne uzasadnienie

Do tej pory jestem fanem tworzenia aplikacji przy użyciu klasycznych formularzy internetowych ASP.NET. Na przykład: jeśli chcesz powiązać listę rozwijaną lub widok siatki, potrzebujesz maksymalnie 30 minut i nie więcej niż 20 linii kodu (oczywiście minimalnie). Ale w przypadku MVC porozmawiaj z programistami, jaki to ból.

Największym minusem MVC jest to, że cofamy się do czasów ASP. Pamiętasz kod spaghetti mieszania kodu serwera i HTML ??? O mój Boże, spróbuj odczytać stronę MVC aspx zmieszaną z javascript, HTML, JQuery, CSS, tagami serwera i co nie ... Każda treść może odpowiedzieć na to pytanie?


6
Częściowe ogłoszenia
zwrotne

3
Jeśli masz dużo kodu w swoich widokach, robisz coś nie tak. Kod w widokach powinien dotyczyć tylko układu.
UpTheCreek

1
Jedynym powodem, dla którego zobaczysz stronę z javascriptem zmieszanym z css i html, jest spojrzenie na pracę leniwego programisty, któremu nie przeszkadzało oddzielanie stylów i skryptów. Może się to zdarzyć w formularzach internetowych ORAZ w MVC. Zgadzam się, że tagi skryptu są brzydkie, ale w przypadku MVC3 na pewno już ich nie ma, a przynajmniej możesz zobaczyć, co się dzieje, bez zaglądania do kodu znajdującego się w pliku i znajdowania punktu, w którym kontrolka znajduje się w pobliżu danych ...
zaglądania otoczona

Również jeśli tworzysz kod spaghetti za pomocą MVC, nie trzymasz się zasady oddzielenia obaw i nie używasz ładnego modelu architektonicznego
jcvandan

1
Używając obu, mogę powiedzieć, że nic nie jest bardziej bałaganiarskie niż formularze internetowe. MVC jest czysty, z wyjątkiem tagów serwera, ale poza tym cały bałagan jest winą złych programistów. MVC został zaprojektowany przez rdzeń, aby oddzielić logikę od projektu. Wspomniałeś też o Teleriku. Telerik dla ASP.Net AJAX powoduje taki niechlujny kod. Nie wspominając o szybkości, sortowanie sieci telerik trwa: 500 ms na 4 strony w ASP.Net WebForms, 200 ms na 84 strony w MVC. (Testowane przy użyciu ich wersji demonstracyjnych i firebuga dla Chrome). Jeśli chodzi o wydajność i separację, MVC zdecydowanie wygrywa.
Aidiakapi,

6

Formularze internetowe zyskują również na większej dojrzałości i wsparciu ze strony zewnętrznych dostawców kontroli, takich jak Telerik.


2
Nie mówię, że nie da się tego zrobić z MVC, ponieważ jestem pewien, że tak, ale jeśli chcesz połączyć szybką i brudną aplikację intranetową lub ekstranetową z wieloma błyskotliwymi Telerik i WebForms, trudno jest pokonać. Płonąć, to szczera prawda.
infocyde

Telerik ma również kontrolki MVC (mniej i mniej opcji, ale mimo to mają) i są DUŻO szybsze niż ich warianty WebForm.
Aidiakapi,

5

W formularzach internetowych można również renderować ręcznie prawie cały kod HTML, z wyjątkiem kilku tagów, takich jak stan widoku, walidacja zdarzeń i podobne, które można usunąć za pomocą PageAdapters. Nikt nie zmusza Cię do korzystania z GridView lub innej kontrolki po stronie serwera, która ma złe dane wyjściowe renderowania HTML.

Powiedziałbym, że największą zaletą MVC jest SZYBKOŚĆ!

Następny jest wymuszony rozdział troski. Ale to nie zabrania umieszczania całej logiki BL i DAL w kontrolerze / akcji! To po prostu oddzielenie widoku, co można zrobić również w formularzach internetowych (na przykład wzorzec MVP). Wiele rzeczy, o których ludzie wspominają w przypadku mvc, można wykonać w formularzach internetowych, ale wymaga to dodatkowego wysiłku.
Główną różnicą jest to, że żądanie dociera do kontrolera, a nie do widoku, a te dwie warstwy są oddzielone, a nie połączone za pośrednictwem częściowej klasy, jak w formularzach internetowych (aspx + kod za)


Masz na myśli szybkość rozwoju czy szybkość wykonania?
Jules

1
Zwłaszcza jeśli używasz telerika z MVC. Z ich wersji demonstracyjnych sortowanie siatki trwa: 500 ms dla 4 stron (WebForms), 200 ms dla 84 stron (MVC). Dla mnie preferencja MVC (mimo że używamy WebForms w mojej firmie, myśleliśmy, że rozważamy zmianę) to to, że jest czystszy, masz swoje poglądy, dostosowujesz swoje wyjście, model, gdzie robisz bałagan up the data: P, i twoi administratorzy, którzy to wszystko
złożyli

4

Moje 2 centy:

  • Formularze ASP.net doskonale nadają się do szybkiego tworzenia aplikacji i szybkiego dodawania wartości biznesowej. Nadal używam go w większości aplikacji intranetowych.
  • MVC doskonale nadaje się do optymalizacji pod kątem wyszukiwarek, ponieważ w większym stopniu kontrolujesz adres URL i kod HTML
  • MVC generalnie generuje znacznie odchudzoną stronę - brak stanu widoku i czystszy HTML = szybki czas ładowania
  • MVC łatwe do buforowania fragmenty strony. -MVC fajnie się pisze: - osobista opinia ;-)

3

MVC pozwala mieć więcej niż jeden formularz na stronie. Mała funkcja, którą znam, ale jest przydatna!

Również wzorzec MVC, który moim zdaniem sprawia, że ​​kod jest łatwiejszy w utrzymaniu, szczególnie. kiedy odwiedzasz go ponownie po kilku miesiącach.


2
ASP.NET Webforms pozwala na umieszczenie na stronie dowolnej liczby formularzy. Ograniczeniem jest to, że tylko jeden może mieć atrybut „runat =" server ".
Andrei Rînea

1
@AndreiRinea Myślę, że miał na myśli, że: P, nie ma zbyt wiele pożytku z runat="server"tagu innego niż formularz, kiedy nadal chcesz używać formularzy internetowych, a ponieważ nie możesz / nie powinieneś zagnieżdżać formularzy, myślę, że to dość oczywiste, co miał na myśli :)
Aidiakapi,

2

Kontroler MVC:

    [HttpGet]
    public ActionResult DetailList(ImportDetailSearchModel model)
    {
        Data.ImportDataAccess ida = new Data.ImportDataAccess();
        List<Data.ImportDetailData> data = ida.GetImportDetails(model.FileId, model.FailuresOnly);

        return PartialView("ImportSummaryDetailPartial", data);
    }

Widok MVC:

<table class="sortable">
<thead>
    <tr><th>Unique Id</th><th class="left">Error Type</th><th class="left">Field</th><th class="left">Message</th><th class="left">State</th></tr>
</thead>
<tbody>
    @foreach (Data.ImportDetailData detail in Model)
    {
    <tr><th>@detail.UniqueID</th><th class="left">@detail.ErrorType</th><th class="left">@detail.FieldName</th><th class="left">@detail.Message</th><th class="left">@detail.ItemState</th></tr>
    }
</tbody></table>

Czy to jest trudne? Brak ViewState, brak cyklu życia strony BS ... Po prostu czysty, wydajny kod.


1

Widzę jedyne dwie zalety dla mniejszych witryn: 6) RESTful URL, które umożliwiają pozycjonowanie. 7) Brak zdarzeń ViewState i PostBack (i ogólnie większa wydajność)

Testowanie małych witryn nie stanowi problemu, podobnie jak zalety projektowe, gdy witryna i tak jest poprawnie zakodowana, MVC na wiele sposobów zaciemnia i utrudnia wprowadzenie zmian. Nadal zastanawiam się, czy te zalety są tego warte.

Wyraźnie widzę przewagę MVC w większych witrynach dla wielu programistów.


1

Główną korzyścią, jaką uważam, jest to, że wymusza na projekcie bardziej testowalną strukturę. Można to dość łatwo zrobić również za pomocą formularzy internetowych (wzorzec MVP), ale wymaga to od programisty zrozumienia tego, wielu nie.

Formularze internetowe i MVC są użytecznymi narzędziami, które wyróżniają się w różnych obszarach.

Osobiście korzystam z formularzy internetowych, ponieważ tworzymy przede wszystkim aplikacje B2B / LOB. Ale zawsze robimy to ze wzorcem MVP, dzięki któremu możemy osiągnąć 95 +% pokrycia kodu dla naszych testów jednostkowych. Pozwala nam to również zautomatyzować testowanie właściwości webcontrols, wartość właściwości jest eksponowana przez widok np

bool IMyView.IsAdminSectionVisible{
       get{return pnlAdmin.Visible;}
       get{pnlAdmin.Visible=value;}
    }

) Nie sądzę, aby ten poziom testowania był tak łatwy do osiągnięcia w MVC, bez polutowania mojego modelu.


0

Nie czujesz się już źle, używając `` kontrolek innych niż post-back '' - i zastanawiasz się, jak zmusić je do tradycyjnego środowiska asp.net.

Oznacza to, że nowoczesne (swobodnie korzystać) kontrole javascript takie to albo to albo to może być stosowane bez że wszyscy starają się dopasować okrągły kołek w kwadratowej dziury czuję.


0

Nowoczesne kontrolki javascript, a także żądania JSON mogą być łatwo obsługiwane za pomocą MVC. Tam możemy wykorzystać wiele innych mechanizmów do przesyłania danych z jednej akcji do drugiej. Dlatego wolimy MVC od formularzy internetowych. Możemy również tworzyć lekkie strony.


0

Osobiście uważam, że największą wadą korzystania z ASP.Net MVC jest to, że CODE BLOCKSzmieszane z HTML...
piekłem html dla programistów, którzy go utrzymują ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.