ASP.NET MVC — omówienie

autor: Microsoft

Dowiedz się więcej o różnicach między aplikacją ASP.NET MVC a aplikacjami ASP.NET Web Forms. Dowiedz się, jak zdecydować, kiedy utworzyć aplikację MVC ASP.NET.

Wzorzec architektury MVC (Model-View-Controller) oddziela aplikację od trzech głównych składników: modelu, widoku i kontrolera. Struktura ASP.NET MVC stanowi alternatywę dla wzorca ASP.NET Web Forms tworzenia aplikacji internetowych opartych na wzorcach MVC. Struktura ASP.NET MVC to uproszczona, wysoce testowalna struktura prezentacji, która (podobnie jak w przypadku aplikacji opartych na Web Forms) jest zintegrowana z istniejącymi funkcjami ASP.NET, takimi jak strony wzorcowe i uwierzytelnianie oparte na członkostwie. Struktura MVC jest definiowana w przestrzeni nazw System.Web.Mvc i jest podstawową, obsługiwaną częścią przestrzeni nazw System.Web .

MVC to standardowy wzorzec projektowania, z którego zna wielu deweloperów. Niektóre typy aplikacji internetowych skorzystają z platformy MVC. Inne będą nadal używać tradycyjnego wzorca aplikacji ASP.NET opartego na Web Forms i ogłaszaniu zwrotnym. Inne typy aplikacji internetowych będą łączyć te dwa podejścia; żadne podejście nie wyklucza drugiego.

Struktura MVC zawiera następujące składniki:

Wywoływanie akcji kontrolera, która oczekuje wartości parametru

Rysunek 01. Wywoływanie akcji kontrolera, która oczekuje wartości parametru (kliknij, aby wyświetlić obraz o pełnym rozmiarze)

  • Modele. Obiekty modelu to części aplikacji, które implementują logikę dla domeny danych aplikacji. Często obiekty modelu pobierają i przechowują stan modelu w bazie danych. Na przykład obiekt Product może pobierać informacje z bazy danych, działać na niej, a następnie zapisywać zaktualizowane informacje z powrotem do tabeli Products w SQL Server.

W małych aplikacjach model jest często separacją koncepcyjną, a nie fizyczną. Jeśli na przykład aplikacja odczytuje tylko zestaw danych i wysyła go do widoku, aplikacja nie ma fizycznej warstwy modelu i skojarzonych klas. W takim przypadku zestaw danych przejmuje rolę obiektu modelu.

  • Widoki. Widoki to składniki, które wyświetlają interfejs użytkownika aplikacji. Zazwyczaj ten interfejs użytkownika jest tworzony na podstawie danych modelu. Przykładem może być widok edycji tabeli Products, który wyświetla pola tekstowe, listy rozwijane i pola wyboru na podstawie bieżącego stanu obiektu Products.

  • Kontrolery. Kontrolery to składniki, które obsługują interakcję użytkownika, współpracują z modelem, a ostatecznie wybierają widok do renderowania, który wyświetla interfejs użytkownika. W aplikacji MVC w widoku są wyświetlane tylko informacje; kontroler obsługuje dane wejściowe i interakcje użytkownika oraz reaguje na nie. Na przykład kontroler obsługuje wartości ciągu zapytania i przekazuje te wartości do modelu, który z kolei wykonuje zapytanie względem bazy danych przy użyciu wartości.

Wzorzec MVC ułatwia tworzenie aplikacji, które oddzielają różne aspekty aplikacji (logikę wejściową, logikę biznesową i logikę interfejsu użytkownika), zapewniając jednocześnie luźne sprzężenie między tymi elementami. Wzorzec określa, gdzie powinien znajdować się każda logika w aplikacji. Logika interfejsu użytkownika należy do widoku. Logika wejściowa należy do kontrolera. Logika biznesowa należy do modelu. Ta separacja ułatwia zarządzanie złożonością podczas tworzenia aplikacji, ponieważ umożliwia skupienie się na jednym aspekcie implementacji naraz. Na przykład możesz skupić się na widoku bez względu na logikę biznesową.

Oprócz zarządzania złożonością wzorzec MVC ułatwia testowanie aplikacji niż testowanie aplikacji opartych na Web Forms ASP.NET aplikacji internetowej. Na przykład w aplikacji internetowej Web Forms opartej na ASP.NET Web Forms pojedyncza klasa służy zarówno do wyświetlania danych wyjściowych, jak i reagowania na dane wejściowe użytkownika. Pisanie testów automatycznych dla aplikacji opartych na Web Forms ASP.NET może być złożone, ponieważ w celu przetestowania pojedynczej strony należy utworzyć wystąpienie klasy strony, wszystkich jej kontrolek podrzędnych i dodatkowych klas zależnych w aplikacji. Ponieważ utworzenie wystąpienia tak wielu klas w celu uruchomienia strony może być trudne do napisania testów, które koncentrują się wyłącznie na poszczególnych częściach aplikacji. W związku z tym testy dla aplikacji ASP.NET opartych na Web Forms mogą być trudniejsze do zaimplementowania niż testy w aplikacji MVC. Ponadto testy w aplikacji ASP.NET opartej na Web Forms wymagają serwera sieci Web. Struktura MVC rozdziela składniki i intensywnie wykorzystuje interfejsy, co umożliwia testowanie poszczególnych składników w izolacji od pozostałej części platformy.

Luźne sprzężenie między trzema głównymi składnikami aplikacji MVC promuje również programowanie równoległe. Na przykład jeden deweloper może pracować nad widokiem, drugi deweloper może pracować nad logiką kontrolera, a trzeci deweloper może skupić się na logice biznesowej w modelu.

Podejmowanie decyzji o tym, kiedy utworzyć aplikację MVC

Należy dokładnie rozważyć, czy zaimplementować aplikację internetową przy użyciu platformy ASP.NET MVC lub modelu ASP.NET Web Forms. Struktura MVC nie zastępuje modelu Web Forms; można użyć jednej ze struktur dla aplikacji internetowych. (Jeśli masz istniejące aplikacje oparte na Web Forms, nadal działają dokładnie tak, jak zawsze).

Przed podjęciem decyzji o użyciu platformy MVC lub modelu Web Forms dla określonej witryny sieci Web należy rozważyć zalety każdego podejścia.

Zalety aplikacji internetowej MVC-Based

Struktura ASP.NET MVC oferuje następujące korzyści:

  • Ułatwia zarządzanie złożonością, dzieląc aplikację na model, widok i kontroler.
  • Nie używa on formularzy stanu widoku ani formularzy opartych na serwerze. Dzięki temu platforma MVC jest idealna dla deweloperów, którzy chcą mieć pełną kontrolę nad zachowaniem aplikacji.
  • Używa wzorca kontrolera frontonu, który przetwarza żądania aplikacji internetowej za pośrednictwem jednego kontrolera. Dzięki temu można zaprojektować aplikację, która obsługuje zaawansowaną infrastrukturę routingu. Aby uzyskać więcej informacji, zobacz Kontroler frontu.
  • Zapewnia lepszą obsługę programowania opartego na testach (TDD).
  • Działa dobrze w przypadku aplikacji internetowych, które są obsługiwane przez duże zespoły deweloperów i projektantów sieci Web, którzy potrzebują wysokiego stopnia kontroli nad zachowaniem aplikacji.

Zalety aplikacji internetowej Forms-Based sieci Web

Platforma oparta na Web Forms oferuje następujące korzyści:

  • Obsługuje ona model zdarzeń, który zachowuje stan za pośrednictwem protokołu HTTP, co zapewnia korzyści z tworzenia aplikacji internetowych biznesowych. Aplikacja oparta na Web Forms udostępnia dziesiątki zdarzeń obsługiwanych w setkach kontrolek serwera.
  • Używa wzorca kontrolera strony, który dodaje funkcje do poszczególnych stron. Aby uzyskać więcej informacji, zobacz Kontroler strony.
  • Używa on formularzy stanu widoku lub opartych na serwerze, co ułatwia zarządzanie informacjami o stanie.
  • Działa dobrze w przypadku małych zespołów deweloperów sieci Web i projektantów, którzy chcą korzystać z dużej liczby składników dostępnych do szybkiego tworzenia aplikacji.
  • Ogólnie rzecz biorąc, tworzenie aplikacji jest mniej złożone, ponieważ składniki (klasa strony , kontrolki itd.) są ściśle zintegrowane i zwykle wymagają mniej kodu niż model MVC.

Funkcje platformy ASP.NET MVC

Struktura MVC ASP.NET oferuje następujące funkcje:

  • Rozdzielenie zadań aplikacji (logika wejściowa, logika biznesowa i logika interfejsu użytkownika), testowanie i programowanie oparte na testach (TDD) domyślnie. Wszystkie podstawowe kontrakty w strukturze MVC są oparte na interfejsie i mogą być testowane przy użyciu pozornych obiektów, które są symulowane obiekty, które imitują zachowanie rzeczywistych obiektów w aplikacji. Aplikację można testować jednostkowo bez konieczności uruchamiania kontrolerów w procesie ASP.NET, co sprawia, że testowanie jednostkowe jest szybkie i elastyczne. Możesz użyć dowolnej struktury testów jednostkowych, która jest zgodna z .NET Framework.
  • Rozszerzalna i podłączna struktura. Składniki platformy ASP.NET MVC zostały zaprojektowane tak, aby można je było łatwo wymienić lub dostosować. Możesz podłączyć własny aparat wyświetlania, zasady routingu adresów URL, serializacji parametrów metody akcji i innych składników. Platforma ASP.NET MVC obsługuje również korzystanie z modeli kontenerów iniekcji zależności (DI) i inwersji modelu kontenerów kontroli (IOC). Di umożliwia wstrzykiwanie obiektów do klasy, zamiast polegać na klasie w celu utworzenia samego obiektu. MkOl określa, że jeśli obiekt wymaga innego obiektu, pierwsze obiekty powinny uzyskać drugi obiekt z zewnętrznego źródła, takiego jak plik konfiguracji. Ułatwia to testowanie.
  • Zaawansowany składnik mapowania adresów URL, który umożliwia tworzenie aplikacji, które mają zrozumiałe i możliwe do przeszukiwania adresy URL. Adresy URL nie muszą zawierać rozszerzeń nazw plików i są przeznaczone do obsługi wzorców nazewnictwa adresów URL, które dobrze sprawdzają się w przypadku optymalizacji aparatu wyszukiwania (SEO) i adresowania reprezentacyjnego transferu stanu (REST).
  • Obsługa używania znaczników w istniejących plikach ASP.NET (pliki aspx), kontroli użytkownika (plików ascx) i plików znaczników strony wzorcowej (plików master) jako szablonów widoków. Istniejące funkcje ASP.NET można używać z platformą MVC ASP.NET, takimi jak zagnieżdżone strony wzorcowe, wyrażenia wbudowane (<%= %>), deklaratywne kontrolki serwera, szablony, powiązanie danych, lokalizacja itd.
  • Obsługa istniejących funkcji ASP.NET. ASP.NET MVC umożliwia korzystanie z funkcji, takich jak uwierzytelnianie formularzy i uwierzytelnianie systemu Windows, autoryzacja adresu URL, członkostwo i role, buforowanie danych wyjściowych i danych, zarządzanie stanem sesji i profilu, monitorowanie kondycji, system konfiguracji i architektura dostawcy.