ASP.NET MVC-zelfstudie voor beginners: wat is, Architectuur

⚡ Slimme samenvatting

ASP.NET MVC is een open source framework. Microsoft Een framework dat een webapplicatie opsplitst in model-, view- en controllerlagen, waardoor ontwikkelaars volledige controle krijgen over HTML, testbare code, overzichtelijke routing en een lichtgewicht alternatief voor klassieke webformulieren.

  • Archistructuur: Het model bevat domeingegevens, de view genereert de gebruikersinterface met Razor en de controller bemiddelt bij elke aanvraag tussen de twee.
  • Waarom MVC? Het lost de ViewState- en prestatieproblemen van webformulieren op en maakt schone routing en testgestuurde ontwikkeling mogelijk.
  • 🔀 routing: Routegebaseerd URLInkomende verzoeken worden gekoppeld aan controlleracties, ter vervanging van de op bestanden gebaseerde .aspx-bestanden. URLmet SEO-vriendelijke paden.
  • 🧪 Testbaarheid: De controller en het model kunnen afzonderlijk getest worden, omdat views geen bedrijfslogica bevatten.
  • Vergelijking van webformulieren: Web Forms maakt gebruik van gebeurtenisgestuurde serverbesturingselementen; MVC maakt gebruik van op verzoeken gebaseerde acties met handmatig statusbeheer.
  • Beste oefening: Houd de bedrijfslogica in het Model, houd de Controllers compact en gebruik gedeeltelijke Views of layouts om markup te hergebruiken.

ASP.NET MVC-zelfstudie

Wat is ASP.NET MVC?

ASP.NET MVC is een open source webontwikkelingsframework van Microsoft ASP.NET MVC biedt een Model-View-Controller-architectuur. Het is een alternatief voor ASP.NET Web Forms voor het bouwen van webapplicaties. Het maakt deel uit van het .NET-platform voor het bouwen, implementeren en uitvoeren van webapps. Je kunt webapps en websites ontwikkelen met behulp van HTML, CSS, jQuery, JavaScript, enz.

Leer MVC met deze ASP.NET MVC-zelfstudie, die alle basisconcepten van MVC voor beginners behandelt:

Waarom ASP.NET MVC?

Hoewel webformulieren zeer succesvol waren, Microsoft bedacht ontwikkelenping ASP.NET MVC. Het grootste probleem met ASP.NET WebForms is de prestatie.

In een webapplicatieEr zijn vier hoofdaspecten die de prestaties bepalen:

  • Problemen met de responstijd
  • Probleem van het testen van eenheden
  • HTML-aanpassing
  • Herbruikbaarheid van de code-behind-klasse

ASP.NET MVC blinkt uit op de bovengenoemde punten.

Versiegeschiedenis van MVC

ASP.NET MVC1

  • Uitgebracht op 13 maart 2009
  • Het draait op .NET 3.5.
  • Visual Studio 2008
  • MVC-patroonarchitectuur met WebForm Engine
  • Belangrijkste kenmerken omvatten HTML en Testen van een eenheid, Ajax Helpers, Routing, etc.

ASP.NET MVC2

  • Deze versie uitgebracht op 10 maart 2010
  • Werkt op .NET 3.5, 4.0 en met Microsoft Visual Studio 2008
  • Voeg functies toe zoals sjabloongebaseerde helpers, UI-helpers met automatische scaffolding en aanpasbare sjablonen.
  • Het ondersteunt DataAnnotations-attributen om modelvalidatie op client- en serverzijde toe te passen

ASP.NET MVC3

  • Het werd uitgebracht op 13 januari 2011
  • Draait op .NET 4.0 en met Microsoft Visual Studio 2010
  • Gebruik van NuGet om software te leveren en stelt u in staat afhankelijkheden op het hele platform te beheren
  • Betere JavaScriptondersteuning met jQuery-validatie en JSON-koppeling.
  • Het biedt functies zoals de Razor-weergave-engine en verbeterde data-annotatie-attributen voor modelvalidatie aan zowel de client- als de serverzijde.

ASP.NET MVC4

  • Deze versie is uitgebracht in augustus 2012
  • Het draait op .NET 4.0, 4.5 en met Visual Studio 2010 & Visual Studio 2012
  • Verbeteringen aan standaardprojectsjablonen
  • Biedt functies zoals een mobiele projectsjabloon met jQuery Mobile, taakondersteuning voor asynchrone controllers, bundeling, minimalisatie, enz.

ASP.NET MVC5

  • Uitgebracht op 17 oktober 2013
  • Werkt met .NET 4.5, 4.5.1 en Visual Studio 2012 & Visual Studio 2013.
  • Ondersteunt attribuutroutering in MVC

Kenmerken van MVC

  • Gemakkelijke en wrijvingsloze testbaarheid
  • Volledige controle over uw HTML, JavaScript, en URLs
  • Maak gebruik van bestaande ASP.NET Kenmerken
  • Een nieuwe presentatieoptie voor ASP.NET.
  • Een eenvoudigere manier om ASP.NET te programmeren.
  • Duidelijke scheiding van logica: model, weergave, controller
  • Test gedreven ontwikkeling
  • Ondersteuning voor parallelle ontwikkeling

Dingen om te onthouden bij het maken van een MVC-applicatie

Hier zijn een paar nuttige dingen in deze ASP.NET MVC-tutorial die u moet onthouden voor het maken van een MVC-toepassing:

  • Je moet onthouden dat ASP.NET MVC GEEN vervanging is voor op ASP.NET webformulieren gebaseerde applicaties.
  • De aanpak voor MVC-applicatieontwikkeling moet worden bepaald op basis van de applicatievereisten en de functies die ASP.NET MVC biedt, om zo aan de specifieke ontwikkelingsbehoeften te voldoen.
  • Het applicatieontwikkelingsproces met ASP.NET MVC is complexer dan dat van applicaties die gebaseerd zijn op webformulieren.
  • De onderhoudbaarheid van applicaties is altijd hoger met scheiding van applicatietaken.

MVC architectonisch patroon

MVC architectonisch patroon

MVC is een softwarearchitectuurpatroon dat de methode van scheiding van verantwoordelijkheden volgt. In dit model zijn .NET-applicaties verdeeld in drie onderling verbonden onderdelen: Model, View en Controller.

Het doel van het MVC-patroon is dat elk van deze onderdelen relatief geïsoleerd kan worden ontwikkeld, getest en ook kan worden gecombineerd om een ​​zeer robuuste applicatie te creëren.

Laten we ze allemaal eens nader bekijken:

Modellen

Modelobjecten zijn delen van de applicatie die de logica voor de applicatie implementeren gegevens domein. Het haalt de modelstatus op en slaat deze op in een database. Een productobject kan bijvoorbeeld informatie ophalen uit een databank, ermee werken. Schrijf vervolgens informatie terug naar de products-tabel in de SQL-server.

Weergaves

Views zijn de componenten die worden gebruikt om de gebruikersinterface (UI) van de applicatie weer te geven, ook wel viewmodel genoemd in MVC. Het toont de .NET MVC-applicatie zoals die is opgebouwd uit de modelgegevens.

Het meest voorkomende voorbeeld is een bewerkingsweergave van een Item-tabel. Het toont tekstvakken, pop-ups en selectievakjes op basis van de huidige status van producten en objecten.

Controller

Controllers verwerken gebruikersinteractie, werken met het model en selecteren een view om de gebruikersinterface weer te geven. In een .NET MVC-applicatie toont de view alleen informatie; de ​​controller beheert en reageert op gebruikersinvoer en -interactie met behulp van actiefilters in MVC.

De controller beheert bijvoorbeeld querytekenreekswaarden en geeft deze waarden door aan het model.

Webformulieren versus MVC

Kenmerken Webformulieren MVC
Model ASP.NET Web Forms volgt een gebeurtenisgestuurd ontwikkelingsmodel. ASP.NET MVC maakt gebruik van het op het MVC-patroon gebaseerde ontwikkelingsmodel.
Gebruikt sinds Bestaat al sinds 2002 Het werd voor het eerst uitgebracht in 2009
Ondersteuning voor weergavestatus ASP.NET Web Forms ondersteunt view state voor statusbeheer aan de clientzijde. .NET MVC biedt geen ondersteuning voor view state.
URL type dan: ASP.NET Web Forms maakt gebruik van bestandsgebaseerde functionaliteit. URLs. Dit betekent dat de bestandsnaam bestaat in de URLen ze moeten fysiek bestaan. ASP.NET MVC heeft routegebaseerde architectuur. URLs dat betekent URLdie worden doorgestuurd naar controllers en acties.
Syntaxis ASP.NET Web Forms volgen de Web Forms-syntaxis. ASP.NET MVC maakt gebruik van een aanpasbare syntaxis.
Weergavetype Webformulieren en weergaven zijn nauw met elkaar verbonden. Code achter (ASPX-CS), d.w.z. logica. MVC, Views en logica worden altijd gescheiden gehouden.
Een consistente uitstraling en gevoel. Het heeft basispagina's voor een consistent uiterlijk. ASP.NET MVC maakt gebruik van lay-outs voor een consistente uitstraling.
Code Herbruikbaarheid Webformulier biedt gebruikerscontroles voor herbruikbaarheid van code. ASP.NET MVC biedt gedeeltelijke weergaven voor hergebruik van code.
Controle voor HTML Less controle over weergegeven HTML. Volledige controle over HTML
Staatsbeheer Automatisch statusbeheer van controles. Handmatig statusbeheer.
TDD-ondersteuning Zwakke of aangepaste TDD vereist. Stimuleert en integreert TDD.

Voordelen van ASP.NET MVC

  • Standaard zeer onderhoudbare applicaties
  • Hiermee kunt u elk onderdeel van de applicatie vervangen.
  • Betere ondersteuning voor Test Driven Development
  • Complexe applicaties zijn eenvoudig te beheren dankzij de indeling in Model, View en Controllers.
  • Biedt een robuust routeringsmechanisme met controllerpatroon aan de voorkant
  • Biedt betere controle over het gedrag van applicaties door de eliminatie van weergavestatus en servergebaseerde formulieren
  • .NET MVC-applicaties worden ondersteund door grote teams van ontwikkelaars en webdesigners.
  • Het biedt meer controle over het gedrag van de applicatie. Het maakt ook gebruik van een geoptimaliseerde bandbreedte voor verzoeken aan de server

Nadelen van ASP.NET MVC

  • Je kunt geen voorbeeld van de ontwerppagina zien, zoals bij een .aspx-pagina.
  • Je moet het programma elke keer uitvoeren om het daadwerkelijke ontwerp te kunnen zien.
  • Het kan een uitdaging zijn om de stroom van de applicatie te begrijpen
  • Het is vrij ingewikkeld om te implementeren, dus het is geen ideale optie voor toepassingen op klein niveau
  • Het is moeilijk om MVC voor ASP.NET te leren, omdat het een goed begrip van het MVC-patroon vereist

Aanbevelingen voor het gebruik van ASP.NET MVC

  • Maak een aparte assembly voor MODEL in geval van grote en complexe code om ongewenste situaties te voorkomen.
  • Het model moet bedrijfslogica, sessieonderhoud, validatiegedeelte en datalogicagedeelte omvatten.
  • VIEW mag geen bedrijfslogica en sessieonderhoud bevatten. Gebruik ViewData om toegang te krijgen tot gegevens in View
  • Bedrijfslogica en gegevenstoegang mogen nooit in de controller plaatsvinden.
  • De verwerkingsverantwoordelijke mag alleen verantwoordelijk zijn voor het voorbereiden en retourneren van een weergave, het aanroepen van het model, het doorverwijzen naar actie, enz.
  • Verwijder de democode uit de applicatie wanneer je deze aanmaakt (Verwijder AccountController).
  • Gebruik alleen een specifieke weergave-engine om HTML-opmaak vanuit uw weergave te maken, aangezien dit de combinatie is van HTML en de programmeercode.

Veelgestelde vragen

Ja. GitHub Copilot kan een Controller-klasse genereren met actiemethoden, route-attributen en bijbehorende Razor-views. RevControleer de gegenereerde code op correcte modelbinding en autorisatie voordat u deze aan het project toevoegt.

Machine learning-assistenten kunnen Web Forms-pagina's koppelen aan controllers en views, code achter de schermen vertalen naar actiemethoden en het gebruik van ViewState signaleren. De ontwikkelaar valideert echter nog steeds de routing, modelbinding en elke gemigreerde bedrijfsregel.

ViewData is een woordenboek met objecten waarvan de sleutel een tekenreeks is en dat één verzoek overleeft. ViewBag is een dynamische wrapper rond ViewData. TempData gebruikt de sessiestatus en overleeft één redirect, waardoor het gebruikt wordt om gegevens tussen twee opeenvolgende verzoeken door te geven.

De routeringsengine koppelt een binnenkomende route aan een inkomende route. URL aan de hand van de sjablonen die zijn geregistreerd in de RouteConfig. Wanneer een sjabloon overeenkomt, selecteert MVC de controller en actie, koppelt eventuele parameters en roept de actie aan om een ​​ActionResult te retourneren.

Razor is een compacte syntaxis voor het insluiten van C# of VB.NET in .cshtml- of .vbhtml-bestanden. Het gebruikt het @-symbool om van HTML naar code over te schakelen, houdt sjablonen leesbaar en compileert tijdens runtime naar snelle, sterk getypeerde klassen.

Klassieke ASP.NET MVC draait op het volledige .NET Framework en Windows Alleen. ASP.NET Core MVC draait op .NET Core. Windows, Linux en macOSHet maakt gebruik van een uniform controllermodel met Web API en biedt ingebouwde dependency injection.

Gebruik ASP.NET Identity of een externe provider zoals Azure Active Directory voor aanmelden. Voorzie een controller of actie van het [Authorize]-attribuut om de toegang te beperken en gebruik rol- of beleidsparameters voor gedetailleerdere regels.

Instantieer de Controller in een testmethode, injecteer nep- of mockservices via de constructor, roep de actie aan en controleer of het geretourneerde ActionResult overeenkomt met de verwachte weergavenaam, het model of het redirectdoel.

Vat dit bericht samen met: