Skip to content

1. Wprowadzenie

Plik PDF tego dokumentu jest dostępny |TUTAJ|.

Przykłady zawarte w tym dokumencie są dostępne |TUTAJ|.

W niniejszym dokumencie zamierzamy przedstawić na przykładach istotne pojęcia związane z ASP.NET MVC, frameworkiem internetowym.NET, który zapewnia ramy do tworzenia aplikacji internetowych zgodnie z modelem MVC (Model – Widok – Kontroler).

Zrozumienie przykładów zawartych w niniejszym dokumencie nie wymaga wielu wcześniejszych przygotowań. Wymagana jest jedynie podstawowa znajomość języka C#. Informacje na ten temat można znaleźć w dokumencie „Wprowadzenie do języka C#” w URL [Nauka języka C# w wersji 3.0 z wykorzystaniem platformy .NET 3.5 (2008)]. Aby zastosować w praktyce zdobytą wiedzę, proponujemy studium przypadku dostępne pod adresem ASP.NET MVC. Wykorzystuje ono ORM (Object Relational Mapper) Entity Framework. Ten ORM został przedstawiony w dokumencie „Wprowadzenie do Entity Framework 5 – Code First”, dostępnym pod adresem URL [Wprowadzenie do Entity Framework 5 – Code First na przykładach (2012)].

Różne przykłady zawarte w tym dokumencie są dostępne pod adresem URL [TUTAJ] w postaci pliku zip do pobrania.

Niniejszy dokument jest pod wieloma względami niekompletny. Aby pogłębić wiedzę na temat ASP.NET MVC, można skorzystać z następujących źródeł:

  • [ref1]: książka „Pro ASP.NET MVC 4” autorstwa Adama Freemana, wydana przez wydawnictwo Apress. Jest to doskonała pozycja. Gdyby była ona dostępna bezpłatnie w Internecie w języku francuskim, niniejszy dokument nie miałby racji bytu. Wszystkim, którzy mają taką możliwość, polecam zapoznanie się z ASP.NET MVC przy pomocy tej książki. Kod źródłowy przykładów zawartych w książce jest dostępny bezpłatnie na stronie URL [http://www.apress.com/9781430242369];
  • [ref2]: stronie frameworku [http://www.asp.net/mvc]. Znajdziecie tam wszystkie materiały niezbędne do samodzielnej nauki. Wersja francuska jest dostępna na stronie URL [http://dotnet.developpez.com/mvc/ ];
  • strona [developpez.com] poświęcona ASP.NET i [http://dotnet.developpez.com/aspnet/ ].

Dokument został napisany w taki sposób, aby można go było czytać bez konieczności korzystania z komputera. Dlatego też zamieszczono w nim wiele zrzutów ekranu.

1.1. Rola ASP.NET i MVC w aplikacji internetowej

Na początek spróbujmy umiejscowić ASP.NET MVC w procesie tworzenia aplikacji internetowej. Najczęściej aplikacja ta będzie oparta na architekturze wielowarstwowej, takiej jak poniższa:

  • warstwa [Web] stanowi warstwę kontaktową z użytkownikiem aplikacji internetowej. Użytkownik ten wchodzi w interakcję z aplikacją internetową za pośrednictwem stron internetowych wyświetlanych w przeglądarce. To właśnie w tej warstwie znajdują się ASP.NET i MVC i wyłącznie w tej warstwie;
  • warstwa [métier] realizuje reguły biznesowe aplikacji, takie jak obliczanie wynagrodzenia lub faktury. Warstwa ta wykorzystuje dane pochodzące od użytkownika za pośrednictwem warstwy [Web] oraz dane z warstw SGBD za pośrednictwem warstwy [DAO];
  • Warstwa [DAO] (Data Access Objects), warstwa [ORM] (Object Relational Mapper) oraz łącznik ADO.NET zarządzają dostępem do danych z warstwy SGBD. Warstwa [ORM] stanowi pomost między obiektami obsługiwanymi przez warstwę [DAO] a wierszami i kolumnami tabel w relacyjnej bazie danych. Na całym świecie powszechnie stosowane są dwa moduły ORM: NET, NHibernate (http://sourceforge.net/projects/nhibernate/) oraz Entity Framework (http://msdn.microsoft.com/en-us/data/ef.aspx);
  • integrację warstw można zrealizować za pomocą kontenera wstrzykiwania zależności (Dependency Injection Container), takiego jak Spring (http://www.springframework.net/);

Większość przykładów podanych poniżej będzie wykorzystywać tylko jedną warstwę, warstwę [Web]:

Niniejszy dokument zakończy się jednak stworzeniem wielowarstwowej aplikacji internetowej:

1.2. Model rozwoju ASP.NET MVC

ASP.NET MVC wdraża model architektury zwany MVC (Model – Widok – Kontroler) w następujący sposób:

Przetwarzanie żądania klienta przebiega w następujący sposób:

  1. żądanie – żądane obiekty URL mają postać http://machine:port/contexte/Controlleur/Action/param1/param2/....?p1=v1&p2=v2&.... [Front Controller] wykorzystuje plik konfiguracyjny do „przekierowania” żądania do właściwego kontrolera i właściwej akcji w ramach tego kontrolera. W tym celu wykorzystuje ścieżkę [Controlleur/Action] z URL. Pozostała część URL i [/param1/param2/...] to parametry opcjonalne, które zostaną przekazane do akcji. Litera „C” w MVC oznacza tutaj ciąg znaków [Front Controller, Contrôleur, Action]. Jeśli ścieżka [Controlleur/Action] nie prowadzi do istniejącego kontrolera lub istniejącej akcji, serwer WWW odpowie, że żądana akcja URL nie została znaleziona.
  1. Przetwarzanie
  • wybrana akcja może wykorzystać parametry parami, które przekazał jej [Front Controller]. Mogą one pochodzić z różnych źródeł:
  • ze ścieżki [/param1/param2/...] akcji URL,
  • z parametrów [p1=v1&p2=v2] z URL,
  • z parametrów przesłanych przez przeglądarkę wraz z żądaniem;
  • podczas przetwarzania żądania użytkownika akcja może wymagać warstwy [métier] [2b]. Po przetworzeniu żądania klienta może ono wywołać różne odpowiedzi. Klasycznym przykładem jest:
  • strona błędu, jeśli żądanie nie mogło zostać poprawnie przetworzone
  • w przeciwnym razie strona potwierdzenia
  • akcja żąda wyświetlenia określonego widoku [3]. Widok ten wyświetli dane, które nazywamy modelem widoku. To właśnie litera M w MVC. Akcja utworzy ten model M [2c] i zażąda wyświetlenia widoku V [3];
  1. odpowiedź – wybrany widok V wykorzystuje model M utworzony przez akcję do zainicjowania dynamicznych części odpowiedzi HTML, którą musi wysłać do klienta, a następnie wysyła tę odpowiedź.

Teraz wyjaśnijmy związek między architekturą internetową MVC a architekturą warstwową. W zależności od definicji modelu te dwie koncepcje mogą być ze sobą powiązane lub nie. Weźmy na przykład aplikację internetową ASP.NET MVC o jednej warstwie:

Jeśli zaimplementujemy warstwę [Web] wraz z ASP.NET i MVC, otrzymamy wprawdzie architekturę internetową MVC, ale nie będzie to architektura wielowarstwowa. W tym przypadku warstwa [Web] zajmie się wszystkim: prezentacją, logiką biznesową oraz dostępem do danych. Zadania te będą realizowane przez akcje.

Rozważmy teraz wielowarstwową architekturę internetową:

Warstwa [Web] może zostać zaimplementowana bez wykorzystania frameworka i bez stosowania się do modelu MVC. Mamy zatem do czynienia z architekturą wielowarstwową, ale warstwa internetowa nie implementuje modelu MVC.

W ten sposób warstwa [Web]może zostać zaimplementowana przy użyciu ASP.NET i MVC, co daje architekturę warstwową z warstwą [Web] typu MVC. Po wykonaniu tej czynności można zastąpić tę warstwę ASP.NET MVC klasyczną warstwą ASP.NET (WebForms), zachowując jednocześnie pozostałe elementy (biznesową, DAO, ORM) bez zmian. Otrzymujemy wówczas architekturę warstwową z warstwą [Web], która nie jest już typu MVC.

W MVC stwierdziliśmy, że model M odpowiada widokowi V, c.a.d, czyli zbiorowi danych wyświetlanych przez widok V. Podano kolejną definicję modelu M dla MVC:

Wielu autorów uważa, że to, co znajduje się po prawej stronie warstwy [Web], tworzy model M dla MVC. Aby uniknąć niejasności, można mówić o:

  • o modelu domeny, gdy mamy na myśli wszystko, co znajduje się po prawej stronie warstwy [Web]
  • o modelu widoku, gdy mamy na myśli dane wyświetlane przez widok V

W dalszej części termin „model M” będzie odnosił się wyłącznie do modelu widoku V.

1.3. Wykorzystane narzędzia

W dalszej części korzystamy (wrzesień 2013 r.) z wersji Express programu Visual Studio 2012:

  • [http://www.microsoft.com/visualstudio/fra/products/visual-studio-express-for-windows-desktop ] dla aplikacji desktopowych;
  • [http://www.microsoft.com/visualstudio/fra/products/visual-studio-express-for-Web ] dla aplikacji internetowych.

Aby zainstalować najnowsze wersje tych produktów, można skorzystać z produktu firmy Microsoft o numerze [Web Platform Installer] (http://www.microsoft.com/Web/downloads/platform.aspx).

Ponadto należy użyć przeglądarki Chrome firmy Google (http://www.google.fr/intl/fr/chrome/browser/). Należy dodać do niej rozszerzenie [Advanced Rest Client] . Można to zrobić w następujący sposób:

 
  • aplikacja jest wtedy dostępna do pobrania:
  • aby ją pobrać, należy utworzyć konto Google. Aplikacja [Google Web Store] prosi następnie o potwierdzenie [1]:
  • W [2] dodane rozszerzenie jest dostępne w opcji [Applications] [3]. Opcja ta jest wyświetlana na każdej nowej karcie, którą tworzysz (CTRL-T) w przeglądarce.

1.4. Przykłady

Większość przykładów szkoleniowych będzie ograniczona wyłącznie do warstwy internetowej:

Po zakończeniu tego samouczka zaprezentujemy wielowarstwową aplikację internetową: