Pierwszy dwa pytania jakie przychodzą nam do głowy po przeczytaniu tytułu to, z którego korzystać i czym się różnią.
Zacznijmy od tego, że ASP.net jest rodziną wielu technologii,a trzy wymienione wcześniej są najbardziej znane. Po pierwsze te wszystkie technologie mają wiele elementów wspólnych. Dzięki wspólnej infrastrukturze, w której skład wchodzą m.in. stan, konfiguracja, caching czy bezpieczeństwo możemy śmiało je łączyć, tzn. możemy stworzyć aplikację zrobioną w Web Forms i dodać do niej kawałek MVC i na odwrót. Przejdźmy zatem do ogólnego omówienia.
ASP.net Web Forms
jest to najstarsza z rodziny technologia, przeznaczona jest do szybkiego tworzenia aplikacji biznesowych bazując na RAD (przerzucamy na aplikację kontrolki). Pliki mają końcówkę .aspx oraz .aspx.cs.
Zalety:
- Dedykowane mechanizmy zarządzania stanem,
- Prostota i szybkość tworzenia aplikacji,
- Robi wiele rzeczy za programistę,
Wady:
- Problem z testowaniem kodu,
- Generowany jest automatycznie kod HTML (nie mamy nad nim pełnej kontroli),
- Pozwala na stosowanie mało eleganckich praktyk,
- Tworzy warstwę abstrakcji,
Przykładowym zastosowaniem może być front-end dla bazy danych dla jakiejś sieci komputerowej.
ASP.net Web Pages
przypomina swoim podejściem do pisania w PHP bez dodatkowych frameworków, ponieważ miesza się kod logiki z kodem HTML. Idealnie nadaje się do aplikacji, która nie planuje się rozrastać. Pliki mają końcówkę .cshtml.
Zalety:
- Prosta aktualizacja stron (bez rekompilacji),
- Kontrola nad HTML’em i URL’ami,
- Przyjazna dla osób początkujących,
Wady:
- Brak zaawansowanych mechanizmów developerskich,
- Pomieszane warstwy aplikacji,
Przykładowym zastosowaniem może być prosta strona domowa.
ASP.net MVC
najpopularniejsze dla dużej aplikacji internetowej, którą w łatwo potem można rozwijać.
Zalety:
- separacja warstw wg. wzorca Model-Widok-Kontroler(MVC),
- pełna kontrola nad kodem HTML, URL’ami
- MVC cechuje duży porządek w kodzie,
- łatwość rozbudowy aplikacji, architektura kodu,
- prosta testowalność,
- REST, dobre dla SEO,
- łatwo łączyć technologie,
Wady:
- cięższe pełne zrozumienie technologii z powodu jej dużego rozbudowania,
- dłuższy czas kompilowania aplikacji,
Przykładowym zastosowaniem powinna być większa aplikacja, która w przyszłości planuje rozbudowę, np. sklep internetowy.