ASP .NET MVC – omówienie komponentów aplikacji

Mając podstawy teoretyczne najwyższy czas stworzyć swoją pierwszą aplikację ASP .NET MVC. W tym wpisie pokrótce omówię elementy składowe.

New Project…

Otwórz Visual Studio z którego korzystasz, z menu wybierz File -> New odszukaj Web, znajdziesz tam ASP .Net Web Application (.Net Framework). Nazwij projekt i wybierz dla niego odpowiednią ścieżkę. Zatwierdź operację klikając w przycisk OK.

Pora na wybór odpowiedniego szablonu dla naszej aplikacji – w naszym przypadku będzie to MVC, checkbox MVC dzięki któremu otrzymamy odpowiednie referencje będzie automatycznie zaznaczony. Dodatkowo dołóżmy do naszej aplikacji projekt na testy jednostkowe – Add unit tests.

Wybierzmy rodzaj autentykacji klikając Change Authentication, tam wybierz Individual User Accounts i zatwierdź swój wybór.

Klikamy OK po czym nasz projekt zostanie utworzony. Otrzymamy prostą działającą aplikację wykorzystującą wzorzec architektoniczny Model – View – Controller. Odpowiednia struktura folderów i podstawowe klasy zostaną dla nas utworzone, da to dobre zobrazowanie.

Solucja

Solucja prezentuję się okazale jak kilka kliknięć. Pozwoliłem sobie otworzyć kilka folderów by opowiedzieć Ci nieco więcej o strukturze aplikacji i ich zawartości.

WebApplication1 to wspaniała nazwa aplikacji którą właśnie utworzyliśmy

WebApplication1.Test (na samym dole) – to projekt przeznaczony na testy jednostkowe (jeśli nie wiesz czym są testy jednostkowe odsyłam Cię do mojego wpisu w którym porówuje je z testami integracyjnymi )

O co w tym biega?

Skupmy się na wnętrzu naszej aplikacji webowej przechodząc od głów do stóp poszczególnych plików.

App_Data – folder przeznaczony na lokalną bazę danych / pliki z których chcielibyśmy skorzystać w aplikacji.

App_Start – folder dla plików konfiguracyjnych.

BoundleConfig.cs – klasa przeznaczona do minifikacji plików np. z jQuery. Pozwoli to na złączenie wielu skryptów i usunie z nich znaki białe bez zmiany funkcjonalności. Proces ten ma na celu zmniejszenie kodu źródłowego. Po co to robimy? By zmniejszyć pliki a tymsamym zmniejszyć czas transferu ich do przeglądarki.

FilterConfig.cs – służy do tworzenia i rejestrowania globalnych filtrów błędów, filtrów akcji.

IdentyityConfig.cs – dotyczy logowania (została utworzona po wybraniu opcji Individual User Accounts w Change Authentication.

RouteConfig.cs – klasa używana do konfiguracji routingu aplikacji (ścieżek). Definiujemy tam szablony względem których odpowiednia adresy URL będą trafiały w odpowiednia miejsca (do konkretnych akcji kontrolerów). Kolejność ich zdefiniowania ma znaczenie.

Content – folder w którym będziemy przechowywać pliki o rozszerzeniu .css.

Controllers – znajdują się tu klasy kontrolerów. Trzymając się utartych konwencji nazwy kontrolerów kończymy tym właśnie słowem np. HomeController.cs Klasy te zawierają w sobie metody (akcje) przetwarzające żądania HTTP (request’y) od użytkownika aplikacji.

Fonts – docelowe miejsce na czcionki.

Models – będziemy tu przechowywać całą logikę biznesową naszej aplikacji. Zgodnie z przyjętymi zasadami do nazwy dodajemy końcówkę Models np. IdentityModels.cs

Scripts – docelowe miejsce na pliki o rozszerzeniu .js

Views – folder gromadzący w swoich wnętrznościach pozostałe foldery dla konkretnych widoków odpowiadających konkretnym kontrolerom. Przykładem takiego zagnieżdżonego folderu może być…

Home -znajdują się tu trzy pliki: About.cshtml, Contact.cshtml oraz Index.cshtml. Dlaczego akurat takie i jaki ma to związek z klasą HomeController.cs? Przyjrzyjmy się uważniej jej zawartości.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}

Jak widzisz znalazło się tu miejsce dla trzech akcji przy czym każda z nich zwraca View(), aby wszystko ze sobą współgrało potrzebujemy odpowiadających im widoków. Zwróć uwagę na nazwy i co je ze sobą łączy 🙂

Shared – folder na pliki widoków współdzielone pomiędzy innymi widokami, znajdą się tam np. Layout’y

Global.asax – opcjonalny plik odpowiedzialny za reagowanie na zdarzenia na poziomie aplikacji i sesji. Możemy w nim umieszczać kod uruchamiany przy konkretnych zdarzeniach. Ich przykładami są:

Application_Start
Application_End
Session_Start
Session_End
Application_BeginRequest
Application_AuthenticateRequest
Application_Error

Packages.config – plik w formacie XML zawierający informacje o zainstalowanych rozszerzeniach do aplikacji

Web.config – plik konfiguracyjny, znajdą się tam informacje m.in. O opcjach debugowania, uwierzytelniania, connection string’i do baz danych i wiele innych. Jeśli jesteś ciekaw zajrzyj koniecznie do środka! Plik w formacie XML.

Tak kształtuje się zawartość przykładowego projektu utworzonego w kilka kliknięć myszy. Zapoznaj się z kodem wewnątrz otrzymanych klas. W kolejnym wpisie opowiem o tym jak to wszystko działa od żądania HTTP po otrzymany widok.

Pozdrawiam Wojtek