Programmering

Bedste fremgangsmåder i ASP.Net MVC

Dette er et andet indlæg på artikelserien om bedste praksis. I denne præsenterer jeg de bedste fremgangsmåder, der skal følges, når jeg arbejder med ASP.Net MVC framework.

Hvad handler MVC-designmønsteret om?

Lad os først tage en hurtig rundvisning i det grundlæggende. Hvad handler MVC (Model View Controller) designmønsteret om? Hvorfor er det alligevel nødvendigt? Nå, brugergrænsefladen indeholder ofte en masse rodet kode primært på grund af den komplicerede logik, den har brug for at håndtere. Præsentationsmønstrene er primært designet med et mål i tankerne: at reducere den komplekse kode i præsentationslaget og gøre koden i brugergrænsefladen ren og håndterbar.

MVC-rammen hjælper dig med at opbygge applikationer, der er lettere at teste og vedligeholde. Den består af tre hovedkomponenter, nemlig modellen (repræsenterer applikationens data og forretningslogik), visningen (dette repræsenterer præsentationslaget) og controlleren (dette repræsenterer typisk din applikations forretningslogik). MVC-designmønsteret giver dig mulighed for at isolere bekymringerne og gør din applikations kode lettere at teste og vedligeholde.

Controlleren

Du bør slette demokodefilerne - AccountController.cs-filen, da du alligevel ikke har brug for den. AccountController er oprettet som standard og er ikke nødvendig - bare slet den! Du bør også reducere koblingen mellem dine controllere og andre afhængigheder som dataadgangskomponenter, undtagelses- og logningsblokke osv. Du skal være så slank som muligt og indeholde meget mindre kode. Ideelt set skal du bare delegere kontrolflowet til en forretningslogikomponent inden for din controller-klasse. Controlleren i et ASP.Net MVC-program skal isoleres fra dataadgangslaget - controlleren er ansvarlig for at gengive den passende visning ved kørsel baseret på en bestemt handling.

Bundling og minificering af script- og CSS-filer

Du bør gruppere ressourcer, som din applikation har brug for at bruge som CSS-filer, i en ressource, der kan downloades. Denne proces er også kendt som bundling. Du skal også minimere de scripts og CSS-filer, du vil bruge til at fjerne unødvendige tegn, kommentarer og tegn på mellemrum.

Følgende kodestykke illustrerer, hvordan du kan oprette et bundtobjekt til den CSS, som din applikation skal bruge.

offentligt statisk ugyldigt RegisterBundles (

BundleCollection-bundter)

{

bundles.Add (ny StyleBundle ("~ / Content / Styles")

.Include ("~ / Content / Styles / bootstrap.css",

"~ / Content / Styles / .css"));

}

Den følgende kode viser, hvordan du kan samle de scriptfiler, du skal bruge i din applikation.

.Omfatte(

"~ / Content / Scripts / -1.0.0.js",

"~ / Content / Scripts / knockout-3.0.0.js")

);

Bemærk, hvordan ScriptBundle-klassen bruges til at samle scriptindholdet. Tilsvarende bruges StyleBundle-klassen (som vist i det tidligere eksempel) til at samle det css-indhold, vi diskuterede tidligere.

Du bør også slå kontrol af ruter fra, medmindre det er absolut nødvendigt for at eliminere de involverede unødvendige behandlingsomkostninger.

Visninger

Du bør bruge stærkt typede visninger, hvor det er muligt - jeg vil anbefale at sende POCO'er til visningerne i din ASP.Net MVC-applikation. Du skal udføre al behandling i dine controllere og ikke visningerne - visningerne skal være magre og bør ikke indeholde nogen forretningslogikode. Du skal bruge et minimalt antal TagHelpers i dine Html-hjælpere, og du skal kun huske at bruge HtmlHelpers, når du har brug for betingede beslutninger, der skal tages om dataene gennem visningerne. Hvis der er behov for en betinget erklæring efter din opfattelse, skal du flytte den til en HtmlHelper. HtmlHelpers bør aldrig indeholde kode, der påberåber dataadgangslaget, dvs. du skal afstå fra at skrive dataadgangslogik inde i HtmlHelpers. Du bør ikke placere JavaScript-kode i din visning - adskille dem i forskellige scriptfiler.

Cache dine data

For at forbedre ydeevnen og lydhørheden i din applikation kan du drage fordel af caching. Caching er en teknik, der giver dig mulighed for at gemme relativt uaktuelle data i hukommelsen for at reducere netværksbåndbreddeforbruget. Følgende kodestykke viser, hvordan du kan bruge cache i dine controllere.

public class Controller: Controller

{

[OutputCache (varighed = 3600,

VaryByParam = "ingen")]

offentligt ActionResult-indeks ()

    {

    }

}

Du skal også cache sider med ofte tilgængelige sider, der indeholder delte data og ikke behøver at blive autoriseret. Følgende kodestykke illustrerer, hvordan du kan gøre dette.

[OutputCache (varighed = 3600)]

offentligt ActionResult-indeks ()

{

return View ("Indeks", myDataObject);

}

MVC-designmønsteret hjælper med at håndhæve en ren adskillelse af bekymringer mellem modeller, synspunkter og controllere i din applikation. Dette hjælper din kode til let at blive testet og vedligeholdt. Jeg har diskuteret nogle vigtige punkter, som du kan overveje, når du arbejder med ASP.Net MVC for at opbygge applikationer, der er højtydende, lettere at teste, vedligeholde og skalere. Jeg vil diskutere mere på ASP.Net MVC i de kommende indlæg her. Så hold dig opdateret!