SlideShare a Scribd company logo
1 of 29
Michał Dudak
future-processing.pl
ASP.NET 5
Co nowego?
O mnie
Technical Advisor & Internal Trainer
@doodack
github.com/doodack
http://blog.dudak.pl
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.
ASP.NET dzisiaj
ASP.NET dzisiaj
Problemy?
• Za dużo „magii”
• Powiązanie aplikacji i serwera
Rozwiązanie?
OWIN
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…
}
OWIN – Middleware chain
OWIN – implementacje
• Katana
• ASP.NET 5
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
Wieloplatformowość
• Działa na Mono
– Linux, Mac
• Kestrel
– Serwer oparty o libuv
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();
});
}
}
Aplikacja z MVC 6
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
});
Podsumowanie
• Będzie rewolucja
• Przewidywany czas wydania: połowa 2015r.
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
Do poczytania/obejrzenia
• http://asp.net/vnext
• https://github.com/aspnet/
• http://davidfowl.com/
• http://channel9.msdn.com/events/TechEd/NorthAmerica/2014/DEV-B385
• http://channel9.msdn.com/events/TechEd/NorthAmerica/2014/DEV-B411
• http://owin.org/
Pytania
Rozwiń skrót OWIN
Jakie frameworki integruje MVC 6?
W jakim formacie jest nowy plik projektu?
Michał Dudak
future-processing.pl
Dziękuję za uwagę

More Related Content

What's hot

Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Marek Będkowski
 

What's hot (10)

Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?
 
Jak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzieńJak zostać mobile deweloperem w 1 dzień
Jak zostać mobile deweloperem w 1 dzień
 
Metaprogramowanie w JS
Metaprogramowanie w JSMetaprogramowanie w JS
Metaprogramowanie w JS
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUG
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
 
[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?
[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?
[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?
 
Tomasz Paszkowski - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
Tomasz Paszkowski  - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...Tomasz Paszkowski  - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
Tomasz Paszkowski - Loadbalancing ruchu HTTP w sieciach dostawców treści na ...
 
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
Prezentacja "Praca z Gitem" - Dawid Cieszyński OLMUG 22.01.14
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010
 

Viewers also liked

新加坡组屋计划20150417陳繼鴻工作團隊整理資料
新加坡组屋计划20150417陳繼鴻工作團隊整理資料新加坡组屋计划20150417陳繼鴻工作團隊整理資料
新加坡组屋计划20150417陳繼鴻工作團隊整理資料
Self-Employed
 
Mohamed Nabil Kharoub Resume
Mohamed Nabil Kharoub ResumeMohamed Nabil Kharoub Resume
Mohamed Nabil Kharoub Resume
Mohamed Kharoub
 

Viewers also liked (14)

20150430貧富不均
20150430貧富不均20150430貧富不均
20150430貧富不均
 
陳繼鴻工作團隊提供柯P大巨蛋參考政府採購法
陳繼鴻工作團隊提供柯P大巨蛋參考政府採購法陳繼鴻工作團隊提供柯P大巨蛋參考政府採購法
陳繼鴻工作團隊提供柯P大巨蛋參考政府採購法
 
Types of nouns
Types of nounsTypes of nouns
Types of nouns
 
презинтація
презинтаціяпрезинтація
презинтація
 
Sri lanka
Sri lankaSri lanka
Sri lanka
 
#Countless days of learning math
#Countless days of learning math#Countless days of learning math
#Countless days of learning math
 
新加坡组屋计划20150417陳繼鴻工作團隊整理資料
新加坡组屋计划20150417陳繼鴻工作團隊整理資料新加坡组屋计划20150417陳繼鴻工作團隊整理資料
新加坡组屋计划20150417陳繼鴻工作團隊整理資料
 
Mohamed Nabil Kharoub Resume
Mohamed Nabil Kharoub ResumeMohamed Nabil Kharoub Resume
Mohamed Nabil Kharoub Resume
 
Midterm presentation
Midterm presentationMidterm presentation
Midterm presentation
 
Mba pp part1
Mba pp part1Mba pp part1
Mba pp part1
 
ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015
 
MBA PP
MBA PPMBA PP
MBA PP
 
Lines and angles presentation
Lines and angles presentationLines and angles presentation
Lines and angles presentation
 
Kehys EU-rahoitusinfo 2014-2020
Kehys EU-rahoitusinfo 2014-2020Kehys EU-rahoitusinfo 2014-2020
Kehys EU-rahoitusinfo 2014-2020
 

Similar to ITAD BB 2014 - ASP.NET 5 - What's new?

Delphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaDelphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązania
Wydawnictwo Helion
 
PHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie II
PHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie IIPHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie II
PHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie II
Wydawnictwo Helion
 

Similar to ITAD BB 2014 - ASP.NET 5 - What's new? (20)

SPA i .Net Core
SPA i .Net CoreSPA i .Net Core
SPA i .Net Core
 
Spa i .net core
Spa i .net coreSpa i .net core
Spa i .net core
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
 
Środowisko PWA
Środowisko PWAŚrodowisko PWA
Środowisko PWA
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski
 
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
4Developers 2015: .NET 2015 - co nowego? - Michał Dudak, Future Processing
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
Delphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązaniaDelphi 2005. 303 gotowe rozwiązania
Delphi 2005. 303 gotowe rozwiązania
 
Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)Optimizing Drupal Performance (Polish)
Optimizing Drupal Performance (Polish)
 
Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?Co nowego w ASP.NET MVC 4?
Co nowego w ASP.NET MVC 4?
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
 
Kontenery w Azure
Kontenery w AzureKontenery w Azure
Kontenery w Azure
 
Dobre przepisy na cake php
Dobre przepisy na cake phpDobre przepisy na cake php
Dobre przepisy na cake php
 
Itad 2016 aspnet core.pptx
Itad 2016   aspnet core.pptxItad 2016   aspnet core.pptx
Itad 2016 aspnet core.pptx
 
PHP i microsoft
PHP i microsoftPHP i microsoft
PHP i microsoft
 
PHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubiPHP i Microsoft - kto się lubi, ten się czubi
PHP i Microsoft - kto się lubi, ten się czubi
 
Php i Microsoft
Php i MicrosoftPhp i Microsoft
Php i Microsoft
 
Projektowanie i programowanie aplikacji nowej generacji
Projektowanie i programowanie aplikacji nowej generacjiProjektowanie i programowanie aplikacji nowej generacji
Projektowanie i programowanie aplikacji nowej generacji
 
PHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie II
PHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie IIPHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie II
PHP5. Tworzenie stron WWW. Ćwiczenia praktyczne. Wydanie II
 

ITAD BB 2014 - ASP.NET 5 - What's new?

  • 2. O mnie Technical Advisor & Internal Trainer @doodack github.com/doodack http://blog.dudak.pl
  • 3. Agenda 1 2 3 4 5 6 Trochę historii OWIN PodsumowanieASP.NET dzisiaj ASP.NET 5 MVC 6
  • 4. 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
  • 5. ASP.NET dzisiaj • MVC i WebAPI – de facto standard • Problemy: – Zduplikowane API • Routing, DI, filtry… – Zależność od System.Web • Framework ma 12 lat
  • 6. 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.
  • 8. ASP.NET dzisiaj Problemy? • Za dużo „magii” • Powiązanie aplikacji i serwera Rozwiązanie? OWIN
  • 9. 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)
  • 10. OWIN • Niezależność od frameworków, bibliotek, itp. • Obiekt environment: IDictionary<string, object> – owin.RequestBody – owin.RequestMethod – owin.ResponseBody – … • Asynchroniczność
  • 11. 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… }
  • 13. OWIN – implementacje • Katana • ASP.NET 5
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. Hostowanie poza IIS • Self-hosting • Custom host • Kestrel IIS nadal pozostaje rekomendowanym serwerem
  • 19. Wieloplatformowość • Działa na Mono – Linux, Mac • Kestrel – Serwer oparty o libuv
  • 20. 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
  • 21. 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
  • 22. 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” />
  • 23. 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(); }); } }
  • 24. Aplikacja z MVC 6 app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller}/{action}/{id?}", defaults: new { controller = "Home", action = "Index" }); });
  • 25. Podsumowanie • Będzie rewolucja • Przewidywany czas wydania: połowa 2015r.
  • 26. 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
  • 27. Do poczytania/obejrzenia • http://asp.net/vnext • https://github.com/aspnet/ • http://davidfowl.com/ • http://channel9.msdn.com/events/TechEd/NorthAmerica/2014/DEV-B385 • http://channel9.msdn.com/events/TechEd/NorthAmerica/2014/DEV-B411 • http://owin.org/
  • 28. Pytania Rozwiń skrót OWIN Jakie frameworki integruje MVC 6? W jakim formacie jest nowy plik projektu?

Editor's Notes

  1. - Przedstawić się - Prelekcja miała się nazywać vNext
  2. Webformsy powstały dla devów desktopowych – kładziono większy nacisk na łatwość obsługi niż na wydajność
  3. ASP.NET powstał na podstawie ASPa, który ma już 16 lat
  4. Request – pociąg, handler – stacja docelowa; moduły – stacje po drodze
  5. Moduły i handlery definiowane na poziomie IISa
  6. Nie operujemy na czystych interfejsach owinowych tylko na wrapperach.
  7. Roslyna można używać w projekcie
  8. Self host – idealny do testów
  9. David Fowler używa Maca MS napisał toole do Sublime
  10. K – nazwa kodowa vNexta
  11. Open Web Interface for .NET