Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

556 views

Published on

Slides from the talk I gave at IT Academic Day 2014 in Bielsko-Biała

Published in: Software
  • Be the first to comment

  • Be the first to like this

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

  1. 1. Michał Dudak future-processing.pl ASP.NET 5 Co nowego?
  2. 2. O mnie Technical Advisor & Internal Trainer @doodack github.com/doodack http://blog.dudak.pl
  3. 3. Agenda 1 2 3 4 5 6 Trochę historii OWIN PodsumowanieASP.NET dzisiaj ASP.NET 5 MVC 6
  4. 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. 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. 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.
  7. 7. ASP.NET dzisiaj
  8. 8. ASP.NET dzisiaj Problemy? • Za dużo „magii” • Powiązanie aplikacji i serwera Rozwiązanie? OWIN
  9. 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. 10. OWIN • Niezależność od frameworków, bibliotek, itp. • Obiekt environment: IDictionary<string, object> – owin.RequestBody – owin.RequestMethod – owin.ResponseBody – … • Asynchroniczność
  11. 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… }
  12. 12. OWIN – Middleware chain
  13. 13. OWIN – implementacje • Katana • ASP.NET 5
  14. 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. 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. 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. 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. 18. Hostowanie poza IIS • Self-hosting • Custom host • Kestrel IIS nadal pozostaje rekomendowanym serwerem
  19. 19. Wieloplatformowość • Działa na Mono – Linux, Mac • Kestrel – Serwer oparty o libuv
  20. 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. 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. 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. 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. 24. Aplikacja z MVC 6 app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller}/{action}/{id?}", defaults: new { controller = "Home", action = "Index" }); });
  25. 25. Podsumowanie • Będzie rewolucja • Przewidywany czas wydania: połowa 2015r.
  26. 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. 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. 28. Pytania Rozwiń skrót OWIN Jakie frameworki integruje MVC 6? W jakim formacie jest nowy plik projektu?
  29. 29. Michał Dudak future-processing.pl Dziękuję za uwagę

×