Agenda
1 2 3 4 5 6
Trochę historii OWIN
PodsumowanieASP.NET dzisiaj ASP.NET 5
MVC 6
Trochę historii
Obecnie: .NET 4.5, MVC 5, WebAPI 2
(classic) ASP
ASP.NET 1.0
(WebForms)
ASP.NET MVC
WebAPI
1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014
ASP.NET dzisiaj
• MVC i WebAPI – de facto standard
• Problemy:
– Zduplikowane API
• Routing, DI, filtry…
– Zależność od System.Web
• Framework ma 12 lat
ASP.NET dzisiaj
Request pipeline
• Moduły
– Wpinane w proces przetwarzania żądania
– np. cache, uwierzytelnianie
• Handlery
– Obsługują żądanie
– np. Web Forms, Web Service, itp.
OWIN
Open Web Interface for .NET
„OWIN defines a standard interface between .NET web
servers and web applications. The goal of the OWIN
interface is to decouple server and application,
encourage the development of simple modules for .NET
web development, and, by being an open standard,
stimulate the open source ecosystem of .NET web
development tools.” (http://owin.org)
OWIN
• Niezależność od frameworków, bibliotek, itp.
• Obiekt environment: IDictionary<string, object>
– owin.RequestBody
– owin.RequestMethod
– owin.ResponseBody
– …
• Asynchroniczność
OWIN – Middleware
• Funkcja wpinana w cykl życia żądania
• Można budować łańcuchy middleware’ów
async (env, next) => {
// do sth…
await next();
// do sth more…
}
ASP.NET 5
• Implementacja OWIN
• Uniezależnienie od System.Web
• Nowa struktura projektów
• Zależności do paczek nugeta
• Kompilacja w locie
• Hostowanie poza IIS
• Wieloplatformowość
• Open source
• Narzędzia konsolowe
• Szeroko używany DI
• Entity Framework 7
• MVC 6
Uniezależnienie od System.Web
• Brak handlerów, modułów, Global.asax, itp.
• Obsługa żądań realizowana przez middleware
• Brak obsługi WebForms
• Brak (prawie) plików web.config
• Cały ASP.NET poza corem .NETa
• Serwerowa wersja .NETa - CoreCLR
Nowa struktura projektów
• Project.json
– Konfiguracja zależności
– Ustawienia specyficzne dla frameworków
• Wszystkie pliki są domyślnie w projekcie
• Folder wwwroot
• Bower
• Możliwość dołączenia CLR do projektu
Kompilacja w locie
• Roslyn – nowa platforma kompilatorów C# i Visual
Basic (open source)
• Rekompilacja przy odświeżeniu strony
• Build w Visual Studio jedynie sprawdza poprawność
kodu
• Brak fizycznych DLLek
• Assembly trzymane w pamięci operacyjnej
Hostowanie poza IIS
• Self-hosting
• Custom host
• Kestrel
IIS nadal pozostaje rekomendowanym serwerem
Narzędzia konsolowe
• k – uruchamia polecenia zdefiniowane w project.json
• kpm – (k package manager) umożliwia ściągnięcie
brakujących zależności i budowanie paczki do
publikacji
• kvm – (k version manager) zarządza wersjami
frameworka
Visual Studio nie będzie wymagane do tworzenia
aplikacji
Open source
• Development prowadzony na GitHubie
– Kod i issue tracker
• Otwartość na istniejące narzędzia używane przez
społeczność
– Grunt
– Gulp
– Bower
– Node.js
MVC 6
• Połączone MVC, WebAPI i WebPages
– Zunifikowane typy, routing, DI
• Zgodność z OWIN
• Szerzej wykorzystywane DI
– Brak staticów (RouteTable, GlobalConfiguration, itd.)
• Większa modularność
• Kontrolery niewymagające klasy bazowej
• Wszystko działa asynchronicznie
• Uproszczony routing
• Tag Helpers
@Html.TextBoxFor(m => m.Name, new { @class = ”form-control” })
<input for=”Name” class=”form-control” />
Prosta aplikacja – przykład
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
app.Use(async (ctx, next) =>
{
await ctx.Response.WriteAsync("Hello");
await next();
});
}
}
Do zabawy
Obraz maszyny wirtualnej na Azure
http://blogs.msdn.com/b/visualstudioalm/archive/2014/06/04/visual-studio-14-ctp-
now-available-in-the-virtual-machine-azure-gallery.aspx
Obraz dysku z Visual Studio 2015 Preview
http://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs