Transcript Slide 1

Kom hurtigere i mål
med ASP.NET MVC
Copenhagen Software
Rune Ibsen
16-07-2015
1
Copenhagen Software
ASP.NET MVC
1. Hvad er ASP.NET MVC?
2. Hvorfor ASP.NET MVC?
3. ASP.NET MVC highlights
4. Lad os se noget kode!
Hvad kommer der til at ske?
16-07-2015
2
Copenhagen Software
ASP.NET MVC
•
Gratis supplement til ASP.NET
•
Frigivet 18. marts 2009 under Ms-PL
•
Integreret i Visual Studio
•
Version 2 er på vej
Hvad er ASP.NET MVC?
16-07-2015
3
Copenhagen Software
ASP.NET MVC
Enhedslisten
Abstraktion
ASP.NET Web Forms
ASP.NET MVC
Intelligens
To veje til produktivitet
16-07-2015
4
Copenhagen Software
ASP.NET
Kontrolbibliotek
ASP.NET MVC
AJAX
HTML
URL håndtering
Caching
Sessionshåndtering
Sikkerhed
Kontrolarkitektur
Databaseadgang
Rettighedsstyring
HTTP abstraktion
Konfiguration
ASP.NET
•Solidt
•Skalerbart
•Omfattende
Hvad er ASP.NET MVC?
16-07-2015
5
Copenhagen Software
200
180-200
180
160-180
160
140-160
140
120
120-140
100
100-120
80
80-100
60
60-80
9
40
6
20
0
0
16-07-2015
1
3
2
3
4
5
6
6
7
8
9
40-60
20-40
0-20
0
10
Copenhagen Software
ASP.NET MVC






Model-view-controller
Kontrol med URL’er
Konventioner
Aspect-oriented programming
Test
Frihed
◦ View engine
◦ Test framework
◦ Valideringsframework
◦ og meget mere...
Hvad handler ASP.NET MVC om?
16-07-2015
7
Copenhagen Software
ASP.NET MVC
Model:
Objekter som
repræsenterer de data
applikationen arbejder
med.
View:
Markup som fortolkes
og vises af klienten
Model
View
Applikation
Controller
Controller:
Håndterer input fra view
og interagerer med
modellen.
Model-view-controller
16-07-2015
8
Copenhagen Software
Traditionel webudvikling
www.domæne.dk/Admin/Edit.aspx?type=customer&id=123
/Admin/Edit.aspx
•
Svært at huske URL’er
•
Ikke godt for søgemaskineoptimering
•
URL’er og filplaceringer bindes sammen
•
Pæne URL’er kræver ekstra software som udrulles separat
Kontrol med URL’er
16-07-2015
9
Copenhagen Software
ASP.NET MVC
www.domæne.dk/Customer/Edit/123
public ActionResult Edit(int id)
{
//Do something clever
}
•
Nemt at huske URL’er
•
Søgemaskiner kan ”forstå” URL’er
•
URL’er konfigureres som en del af applikationen
•
www.domæne.dk/Kunde/Ret/123
Kontrol med URL’er
16-07-2015
10
Copenhagen Software
ASP.NET MVC
[Authorize]
public ActionResult ChangePassword()
{
//Change password
}
[Log]
[Authorize]
public ActionResult Update()
{
//Update something vital
}
[UnitOfWork]
public ActionResult Edit()
{
//Do something to the database
}
Aspect-oriented programming
16-07-2015
11
Copenhagen Software
ASP.NET MVC
EnergyMap.dk
ASP.NET MVC
Stub
Caching
Sessionshåndtering
Sikkerhed
Kontrolarkitektur
Databaseadgang
Rettighedsstyring
HTTP abstraktion
Konfiguration
•Test uden en webserver
•Test uden en database
•Test uden en bruger
Test
16-07-2015
12
Copenhagen Software
ASP.NET MVC
•
Model-view-controller design pattern muliggør test af
komponenter i isolation (unit tests)
•
Visual Studio er forberedt til en række test frameworks
og kan udvides med flere
•
•
MSTest, NUnit, Xunit etc.
Med C#’s generiske typer og lambda-syntaks
er det nemt at konfigurere tests
•
ASP.NETs statiske klasser er pakket væk
(System.Web.Abstractions.dll)
Test
16-07-2015
13
Copenhagen Software
ASP.NET MVC
[Test]
public void Create_WhenFirstNameIsEmpty_ModelShouldHaveError()
{
///Arrange
FormCollection formCollection = new FormCollection();
///Setup test values…
Mock<IService> serviceMock = new Mock<IService>();
serviceMock.Setup(s => s.Save(It.IsAny<Customer>()))
.Returns(new Func<Customer, Customer>(x => x));
CustomerController controller = new CustomerController(serviceMock.Object);
MvcMockHelpers.SetFakeControllerContext(controller);
///Act
ViewResult viewResult = (ViewResult)controller.Create(formCollection);
///Assert
Assert.That(viewResult.ViewData.ModelState.IsValid, Is.False);
}
Test
16-07-2015
14
Copenhagen Software
ASP.NET MVC
Web Forms View Engine
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true"
CodeBehind="List.aspx" Inherits="MvcApplication5.Views.Products.List" Title="Products" %>
<asp:Content ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
<h2><%= ViewData.CategoryName %></h2>
<ul>
<% foreach (var product in ViewData.Products) { %>
<li>
<%= product.ProductName %>
<div class="editlink">
(<%= Html.ActionLink("Edit", new { Action="Edit", ID=product.ProductID })%>)
</div>
</li>
<% } %>
</ul>
<%= Html.ActionLink("Add New Product", new { Action="New" }) %>
</asp:Content>
Frihed
16-07-2015
15
Copenhagen Software
ASP.NET MVC
NHaml View Engine
%h2= ViewData.CategoryName
%ul
- foreach (var product in ViewData.Products)
%li
= product.ProductName
.editlink
= Html.ActionLink("Edit", new { Action="Edit", ID=product.ProductID })
= Html.ActionLink("Add New Product", new { Action="New" })
Frihed
16-07-2015
16
Copenhagen Software
ASP.NET MVC
Udvikling
•
Hent udvidelse til Visual Studio på www.asp.net/mvc
Udrulning
•
ASP.NET MVC består af en række assemblies, som blot
kan bin-deployes
•
ASP.NET MVC kan køre på både IIS 6.0 og IIS 7.0, men
sidstnævnte er mest velegnet
Hvordan kommer jeg igang?
16-07-2015
17
Copenhagen Software
ASP.NET MVC
Officiel hjemmeside og CodePlex
www.asp.net/mvc
aspnet.codeplex.com
Blogs
weblogs.asp.net/Scottgu
www.hanselman.com
www.haacked.com/
Hvordan kommer jeg videre?
16-07-2015
18
Copenhagen Software