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:
- żą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.
- 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];
- 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:
- wejść na stronę [Google Web store] (https://chrome.google.com/webstore) w przeglądarce Chrome;
- wyszukaj aplikację [Advanced Rest Client]:
![]() |
- 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ą:
![]() |











