To jest stare pytanie z wieloma odpowiedziami, ale żadne nie miało odpowiedzi, której oczekiwałbym na liście.
Krótka odpowiedź brzmi:
- Użyj ASP.NET MVC, jeśli zamierzasz poprawnie zbudować aplikację internetową z nowoczesnymi konwencjami programowymi i wzorcami przyjętymi w branży dla platformy ASP.NET. Z drugiej strony będziesz musiał wiedzieć, jak działają HTML i zasoby po stronie klienta (JavaScript, CSS), a także zwiększyć sposób myślenia programistycznego MVC, który ma stromą krzywą uczenia się, ale po nagłym osiągnięciu nagłego końca.
- Użyj formularzy sieci Web ASP.NET, jeśli używasz lub chcesz użyć koncentrującego się na graficznym interfejsie użytkownika , RAD (Rapid Application Development) , metody „przeciągnij i upuść” do szybkiego tworzenia prototypów czegoś, tj. Zachowania przycisku / siatki danych 15 minut, a rozwiązanie nie jest przeznaczone dla programistów. Lub użyj formularzy sieci Web ASP.NET, jeśli masz doświadczenie w tworzeniu GUI lub Windows Forms i chcesz przenieść swoją wiedzę do sieci.
Ale aby spojrzeć na to właściwie, musisz zrozumieć historię każdego z nich.
Formularze internetowe ASP.NET były odpowiedzią Microsoftu na osoby budujące dynamiczne aplikacje internetowe przy użyciu formantów ActiveX Visual Basic 6, bibliotek DLL VB6 na serwerze i ASP Classic. W tym czasie tworzenie stron internetowych przy użyciu tych narzędzi Microsoft było prawdziwym bałaganem. Wraz z całym programem .NET Framework, który był efektem powrotu Microsoft do tablicy kreślarskiej dotyczącej produktywnego programowania biznesowego na stosie Windows, ASP.NET Web Forms był w swoim czasie niesamowity i piękny.
Całe podejście polegało na tym, aby dać programistom to, co najlepsze z obu światów, w czymś bardzo podobnym do tworzenia aplikacji Windows, ale z mocą usług internetowych. Pomysł polegał na tym, że podobnie jak w „formularzu” VB6 / WinForms (okno), podobnie strona internetowa jest formularzem (podobnie jak okno, patrz) , i na tym formularzu można przeciągać i upuszczać etykiety, pola tekstowe, siatki danych, przyciski i inne rzeczy, do których byli przyzwyczajeni programiści VB / WinForms.
Aby przycisk coś zrobił, po przeciągnięciu go i upuszczeniu wystarczy kliknąć go dwukrotnie w projektancie i wysiąść w edytorze kodu, informując formularz, co zrobić, gdy nastąpi zdarzenie „kliknięcia”. W taki właśnie sposób programiści Windows GUI stworzyli oprogramowanie za pomocą narzędzi GUI VB6 i konkurencyjnych narzędzi, tyle że teraz kod działa na serwerze! Łał!
To była technologia z 2002 roku. Niesamowite i piękne w swoim czasie jako odpowiedź na rozwiązania GUI z dostępem do Internetu do tworzenia aplikacji RAD , wprowadziło poczucie władzy do bałaganu w świecie programistów, którzy mieli cele biznesowe, które musieli osiągnąć.
Niestety, ten model programowania podkreśla tak bardzo metaforę programowania GUI w systemie Windows, że niesie ze sobą ciężar niezbędnych szczegółów implementacyjnych, cały bagaż, który jest niezbędny, aby pomieścić cykle życia zdarzenia i schowanie brzydkich szczegółów prostego HTML i skrypt wygenerowany przez te komponenty i kontrolki przeciągnij i upuść. A pod koniec dnia programiści obsługujący prawdziwe aplikacje nieuchronnie musieli zagłębić się w te komponenty lub napisać własne, w wyniku czego będą walczyć w bitwach z tą infrastrukturą, bitwach, które pozostawiają stosy na stosach cruft, ciągniętych włosów i łzy.
Utworzyć kopię zapasową. Umyj ręce. Spójrzmy jeszcze raz na problem biznesowy. Jakie są nasze cele biznesowe?
Musimy budować i zarządzać aplikacjami internetowymi . Nasze ograniczenia są takie, że mamy sieć WWW, która działa na HTTP, HTML, JavaScript i CSS, a na serwerze mamy reguły biznesowe, bazy danych i kilka świetnych języków programowania (np. C #). Czy naprawdę potrzebujemy tej metafory interfejsu GUI systemu Windows, aby napędzać naszą metodologię programowania? Dlaczego nie możemy skupić się na problemach z aplikacją i pozbyć się metafor GUI?
W tym momencie wkracza ASP.NET MVC. Zaczęło się od buntu programistów, którzy nazwali siebie „Alt.Net”, którzy chcieli wrócić do właściwych i czystych zasad tworzenia oprogramowania. Nigdy więcej kłopotów i kłopotów, po prostu skup się na celach biznesowych i najlepszych praktykach oprogramowania.
To, co tak naprawdę przekłada się w tym przypadku, to:
- Rozdzielenie obaw . Na przykład komponent danych nie musi wiedzieć, w jaki sposób będą renderowane jego dane, ani nie należy obciążać widoku znaczników szczegółami konfiguracji połączenia z bazą danych, dzięki czemu programista może skupić się na swoim obszarze zainteresowania podczas edycji i kod testowy.
- Ekspozycja i pełne wsparcie dla ekspozycji na drobiazgi HTML i powiązanych zasobów . W formularzach internetowych HTML jest schowany, a programiści zniechęcają się do tego. W ASP.NET MVC programiści są raczej zachęcani do zarządzania tymi szczegółami; w rzeczywistości jest to konieczność. Zaletą jest to, że programista może ponownie nauczyć się doceniać czystą semantykę HTML, CSS i skryptu i pracować z nim, a nie z nim.
- Testowalność obiektów biznesowych . Kontrolery i modele są znacznie lepiej przystosowane do programowego testowania jednostkowego, dzięki czemu można zweryfikować implementacje pod kątem realizacji celów biznesowych, a zmiany można zweryfikować, czy się nie złamią. Z Formularzami internetowymi trudno było przetestować, ponieważ komponenty nie zostały zaprojektowane do testowania indywidualnie, a cała twórczość koncentrowała się wokół formularzy stron i cykli życia ich zdarzeń, a logika biznesowa i logika prezentacji były ze sobą ściśle powiązane.
Zauważ, że HTML jest już językiem znaczników wysokiego poziomu, podobnie jak JavaScript jest językiem programowania wysokiego poziomu. Cała historia byłaby inna, gdybyśmy mieli do czynienia z językiem asemblera i C.
Rozwijając się na # 2, kolejnym celem ASP.NET MVC jest umożliwienie programistom zorganizowania szczegółów front-end części „zobacz” swoich rozwiązań i skorzystania z bogatych podstaw, na których reszta branży zbudowała platforma klienta front-end.
Przekonasz się, że programiści ASP.NET MVC czują się jak w domu, korzystając z bogatych bibliotek JavaScript i technik szablonów po stronie klienta, bez walki z architekturą po stronie serwera. Nie było tak pierwotnie w przypadku formularzy internetowych ASP.NET, ponieważ formularze internetowe nie chcą, abyś w ogóle patrzył na HTML lub skrypt, z wyjątkiem sytuacji, gdy naprawdę musisz się wystrzegać, w takim przypadku uważaj, to nie jest dla słabych z serca.