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.

Co nowego w VS 2013 dla programistów ASP.NET?

1,510 views

Published on

Sesja z konferencji Microsoft Technology Summit 2013 na temat nowości, które pojawiły się w ASP.NET 4.5.1 oraz Visual Studio 2013 dla web deweloperów. Poruszane zagadnienia to m.in.: zmiany w IDE / Web Essentials, Web Forms, ASP.NET MVC 5, OWIN, SignalR, Web API 2

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Co nowego w VS 2013 dla programistów ASP.NET?

  1. 1. ASP.NET, jakiego (jeszcze) nie znacie - co nowego dla web developerów? Bartłomiej Zass Senior Technical Evangelist | Microsoft
  2. 2. Cel sesji  Zobaczysz co wydarzyło się przez ostatni rok w ASP.NET i narzędziach  Dowiesz się co nowego dla web deweloperów w Visual Studio 2013  Zrozumiesz czym jest OWIN i Katana  Poznasz podstawy ASP.NET Web API 2 oraz SignalR
  3. 3. Plan prezentacji      Najważniejsze nowości od Visual Studio 2012 Co nowego w Visual Studio 2013? OWIN i Katana ASP.NET Web API v2 SignalR
  4. 4. ASP.NET i Web Tools Release co ok. 6 miesięcy Wrzesień 2012 ASP.NET 4.5 VS2012 Luty 2013 ASP.NET & Web Tools 2012.2 Jesień 2013 VS2013
  5. 5. Web Tools „Labs”  Release co ok. 2 tygodnie  Od lipca otwarty kod
  6. 6. ASP.NET 4.5 (VS 2012)  Wspólne       Biblioteki przez NuGet Optymalizacja transferu Walidacja żądań HTML 5 Web Sockets 30% szybszy start 30% mniej pamięci  MVC  HTML 5  Mobile  Async controller
  7. 7. ASP.NET 4.5 (c.d.)  Web Forms        HTML 5 Szablony projektów Request Validation Silnie typowane kontrolki Model Binders Data Annotations Unobtrusive JS validation  Web API v1  Framework do usług HTTP
  8. 8. Otwarty kod  aspnetwebstack.codeplex.com  ASP.NET MVC, ASP.NET Web API, ASP.NET Web Pages  entityframework.codeplex.com  Entity Framework  github.com/SignalR/SignalR  ASP.NET SignalR
  9. 9. Visual Studio 2012 (web)  Ogólne  Round tripping  Page inspector  Standardy  Wsparcie dla HTML 5  Całkowicie nowy edytor CSS  Całkowicie nowy edytor JavaScript  Edytor Web Forms  Pełne wsparcie dla kontrolek serwerowych w edytorze .ASPX  Publikowanie  Publikowanie na Azure/TFS  Database Migrations
  10. 10. ASP.NET & Web Tools Update 2012.2  Web Forms  Friendly URLs (/page/5 zamiast page.aspx?id=5)  Strony mobilne (page.Mobile.aspx)  MVC  Single Page Applications template  Facebook App template  Web API  Odata  Tracing  Help Page  SignalR v1  Visual Studio  LESS  Podświetlanie składni: CoffeeScript, KnockoutJS, Mustache, Handlebars, JSRender  Mobile Emulator extensibility  Selective Publishing, local/remote diff  Page inspector dla elementów dynamicznych
  11. 11. ASP.NET & Web Tools 2013  One ASP.NET  Nowy interfejs zakładania projektu  Dodawanie dowolnego frameworku do dowolnego projektu  Scaffolding dla wszystkich typów projektów  Konfiguracja uwierzytelnienia  Ogólne  ASP.NET Identity  Szablony z Bootstrap.js  Azure   Server Explorer: Web Sites, Mobile Services, VM’s, filtrowanie MVC 5  Attribute Routing  Authentication filters, filter overrides (wyłączanie per akcja)  Web API v2     CORS Attribute Routing Pełniejsze wsparcie dla OData OAUTH  SignalR  OWIN, PCL, Xamarin  Entity Framework  Async, Stored procs, connection resilency  Visual Studio  Nowy edytor HTML  Live Browser Refresh  AngularJS intellisense R.I.P. Cassini, FrontPage Extensions
  12. 12. Demo One ASP.NET Nowości w narzędziach
  13. 13. OWIN i Katana
  14. 14. Hello, Node.js var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type':'text/plain'}); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1');
  15. 15. Node.js po pewnym czasie…
  16. 16. ASP.NET – trochę historii  Pierwsza wersja w 2002 r. z .NET 1.0  Zoptymalizowany dla deweloperów klasycznego ASP oraz biznesowych aplikacji desktopowych       Monolityczna struktura (System.Web) Zaprojektowany do działania na IIS Część .NET – rzadkie release’y Rozwijany wraz z rosnącymi wymaganiami Wszystkie funkcje domyślnie włączone (trzeba ręcznie wyłączać) Jedyna opcja hostowania - IIS
  17. 17. Rozwiązania  Odłączenie od cyklu produkcji .NET Framework  ASP.NET MVC  Częstsze release’y  Usuwanie zależności z System.Web  Np. ASP.NET Web API  Możliwość self-hostingu  Co z hostingiem?
  18. 18. Self-host  ASP.NET Web API umożliwił self-hosting aplikacji  Inne frameworki tworzyły lub miały własne serwery…  Nowoczesne aplikacje wymagają łączenia wielu frameworków na jednym serwerze  Potrzebny standardowy interfejs komunikacji między hostem i aplikacjami!
  19. 19. „Katana”  Zestaw komponentów do budowania i uruchamiania aplikacji na otwartym interfejsie / abstrakcji hostingu Func<IDictionary<string, object>, Task>; http://owin.org/
  20. 20. Komponenty „Katana” Application Udostępnij model programistyczny przez OWIN pipeline Application Framework Przetwarzaj żądania przez OWIN pipeline Server Uruchom aplikację OWIN na serwerze Host
  21. 21. Komponenty „Katana” (2) Application Application Framework Server Host • SignalR • ASP.NET Web API • SystemWeb • HttpListener • IIS • OwinHost.exe • Custom Process
  22. 22. Ekostystem OWIN Application Application Framework Server Host • • • • • • • • • SignalR ASP.NET Web API NancyFx Fubu MVC Service Stack OpenRasta Simple.Web Gate Custom Framework • SystemWeb • HttpListener • Custom Server • IIS • OwinHost.exe • Custom Process
  23. 23. Demo Katana – Hello, World!
  24. 24. Katana 2.0: middleware do uwierzytelniania        Microsoft.Owin.Security.Cookies Microsoft.Owin.Security.Facebook Microsoft.Owin.Security.Google Microsoft.Owin.Security.MicrosoftAccount Microsoft.Owin.Security.OAuth Microsoft.Owin.Security.Twitter Microsoft.Owin.Security.WindowsAzure
  25. 25. Konfiguracja middleware app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); app.UseExternalSignInCookie(); app.UseMicrosoftAccountAuthentication("Client Id", "Client Secrect"); app.UseTwitterAuthentication("Consumer Key", "Consumer Secret"); app.UseFacebookAuthentication("App ID", "App Secret"); app.UseGoogleAuthentication();
  26. 26. Demo Middleware uwierzytelniający w ASP.NET MVC
  27. 27. Wymiana komponentów Your Application Web API + SignalR + static files SystemWeb IIS Windows (local or remote)
  28. 28. Elastyczność Host/Server Your Application Web API + SignalR + static files HttpListener SystemWeb OwinHost.exe IIS Windows (local or remote)
  29. 29. Do chmury! Your Application Web API + SignalR + static files WebListener OwinHost.exe Windows Azure Worker Role Windows (local or remote)
  30. 30. Demo Self-hosting Katana (OwinHost)
  31. 31. Mono??
  32. 32. ASP.NET Web API
  33. 33. ASP.NET Web API 2  Skalowalna platforma usług HTTP dla stron internetowych, urządzeń, telefonów, tabletów, …  Dystrybucja przez NuGet  Instalowane wraz z Visual Studio 2013  Supportowane na .NET 4.5+  Kod - http://aspnetwebstack.codeplex.com
  34. 34. Demo ASP.NET Web Api - podstawy
  35. 35. Nowości w ASP.NET Web API 2        Attribute Routing Integracja z OWIN Prostsze unit testy (IHttpActionResult) Klient Web API wspierany przez Portable Class Library ODATA: $select, $expand, $batch Request batching Web API security (CORS, OAUTH 2.0)
  36. 36. Attribute routing  Definiowanie tras bliżej zasobów config.Routes.MapHttpRoute( name: “TodosForTodoList", routeTemplate: "api/todolists/{id}/todos", defaults: new { controller = “todolists”, action = “GetTodos” } ); public IEnumerable<TodoItem> GetTodos() { … }
  37. 37. Attribute routing  Definiowanie tras bliżej zasobów config.MapHttpAttributeRoutes(); [HttpGet("api/todolists/{id}/todos")] public IEnumerable<TodoItem> GetTodos(int id) { … }
  38. 38. Attribute routing  Opcjonalne parametry  Domyślne parametry  Constraints [HttpGet(“Demographics/{zipcode?}")] public Demographics Get(int? zipcode) { … } [HttpGet("Demographics/{zipcode=98052}")] public Demographics Get(int zipcode) { … } [HttpGet("people/{id:int}")] public Person Get(int id) { … } [HttpGet("people/{name:alpha}")] public Person Get(string name) { … }
  39. 39. Demo Attribute routing
  40. 40. Unit testing  Miejscami było trudniejsze niż mogło być (np. post)…  Teraz sprowadza się do:  Utworzenie kontrolera  Ustawienie właściwości (Request, Configuration, itp.)  Wywołanie akcji  IHttpActionResult  Wywoływane zaraz po zwróceniu wartości – reszta widzi zwrócony obiekt
  41. 41. Demo Testowanie z IHttpActionResult
  42. 42. Integracja z OWIN  OWIN – Open Web Interface for .NET (http://owin.org)  Wspólny interfejs komunikacji między aplikacjami webowymi a serwerem  Inspirowany przez node.js, Rack, WSGI  Middleware pipeline  Zintegrowany z ASP.NET  np. uwierzytelniane użytkownika  ASP.NET zgodne z OWIN – działa na dowolnym hoście OWIN
  43. 43. Demo Własny host OWIN z ASP.NET Web API
  44. 44. ASP.NET Web API OData  Komponenty do implementacji usług Odata  Model builders, formatery (Atom/JSON/XML), parsery, generator wyrażeń LINQ, itp.  Bazuje na ODataLib  Te same podstawy co WCF Data Services  Pierwsza wersja – VS 2012 Update 2  top, skip, orderby, filter  Wsparcie dla $select, $expand, $batch, $value
  45. 45. Demo ASP.NET Web API Odata v2
  46. 46. Żądania cross-origin  Przeglądarki nie pozwalają na wysyłanie żądań do innych domen  Origin = scheme + host + port  CORS = Cross-Origin Resource Sharing  W3C Candidate Recommendation  Implementowane przez wszystkie nowe przeglądarki  Wspierane przez Web API 2  EnableCorsAttribute
  47. 47. Demo ASP.NET Web API i CORS
  48. 48. Zabezpieczanie usług Web API  Użytkownicy mogą nie ufać aplikacji klienckiej proszącej o hasło  Aplikacje i serwery hostujące nie chcą przechowywać danych logowania  Dostęp powinien być podzielony na zakresy, z możliwością odwołania  Wsparcie dla wielu typów klientów i przeglądarek  Zabezpieczenie przed CSRF
  49. 49. Oauth 2.0  Framework kontrolujący dostęp do określonych chronionych zasobów użytkownika  Standard IETF (RFC 6749, 6750)  Zaprojektowany do pracy z usługami HTTP
  50. 50. OAuth 2.0 Żądanie dostępu Przyznanie dostępu Przyznanie uprawnień Access Token Access Token Chroniony zasób
  51. 51. OAuth 2.0 – przyznanie dostępu Authorization Server user 2 User Browser <Client ID> Authorization Endpoint Token Endpoint CODE 302 3 <Client ID> 302 1 Client Protected Resource
  52. 52. OAuth 2.0 – token request Authorization Server Authorization Endpoint client <Client ID> CODE Client 1 Token Endpoint 2 refresh token access token Protected Resource
  53. 53. OAuth 2.0 – resource request authorization server Authorization Endpoint 1 Token Endpoint Authorization: Bearer refresh token 2 access token Client Protected Resource
  54. 54. OAuth 2.0 – odświeżenie access tokenu Authorization Server Authorization Endpoint Token Endpoint client 2 <Client ID> refresh token 1 access token refresh token Client Protected Resource
  55. 55. OAuth 2.0 – wsparcie dla Bearer token  Autoryzacja przez OAuth 2.0 Bearer tokens  Walidacja i konwersja tokenu na claims Client Protected Resource
  56. 56. ASP.NET Web Api 2 i Bearer token public class Startup { public void ConfigureAuth(IAppBuilder app) { // Włącz wsparcie dla OAuth 2.0 bearer tokens app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); } }
  57. 57. Oauth 2.0 – serwer autoryzacyjny  Własny serwer  Prosty serwer w szablonie Web API 2  W przyszłości – wsparcie przez OWIN middleware  Skorzystaj z istniejącego  Windows Azure Active Directory  Active Directory Federation Services w Windows Server 2012 R2
  58. 58. Demo Zabezpieczanie dostępu do usług ASP.NET Web API
  59. 59. SignalR
  60. 60. SignalR     Prosty sposób na realizację komunikacji real-time po HTTP Instalowane przez NuGet, oficjalne wsparcie (wersja 2.0) Wydajność Skalowalność
  61. 61. Przykładowe scenariusze  Każdy scenariusz, w którym korzystamy z pollingu lub konieczne jest odświeżanie strony  Monitorowanie, dashboardy  Współpraca z innymi  Postęp pracy  Formularze wypełniane w czasie rzeczywistym przez kilka osób  Gry
  62. 62. Demo Podstawy SignalR
  63. 63. SignalR i przeglądarki  SignalR działa zawsze!     Najpierw próba z WebSockets Fallback do Server Sent Events Forever Frame Long Polling
  64. 64. Klienci SignalR  Obecnie         JavaScript (jQuery) .NET 4.0 / 4.5 Silverlight 5 Windows Store apps Windows Phone 8 Portable Class Library MonoTouch MonoDroid  W przyszłości       C++ „Goły” JavaScript (bez jQuery) iOS natywnie Java .NET Micro Framework …
  65. 65. Demo SignalR i WPF
  66. 66. Wydajność i skalowanie  Przepustowość  Bardzo wysoka wydajnośc  Setki tysięcy komunikatów na sekundę  Bardzo niskie zapotrzebowanie na pamięć  Skalowanie  W pełni asynchroniczny  Tysiące połączen per serwer  Skalowanie przez message bus (Azure Service Bus, Redis, SQL)
  67. 67. Skalowanie backplane web nodes clients
  68. 68. Signalr 2 – co nowego?  OWIN – brak zależności z System.Web!  Portable .NET Client Library  .NET 4.5, Silverlight 5, WinRT, Windows Phone 8     CORS Wsparcie dla iOS i Android (MonoTouch, MonoDroid) Komunikaty dla pojedynczego użytkownika Zachowane wsparcie dla starszych klientów
  69. 69. Podsumowanie  „One ASP.NET” – MVC, Web Forms (i inne) razem  Browser Link  OWIN  Luźne wiązanie komponentów  Wymienność  Szybciej i elastyczniej  Nowości w świecie usług ASP.NET  Web API 2  SignalR 2
  70. 70. © 2013 Microsoft Corporation. Wszelkie prawa zastrzeżone. Microsoft, Windows oraz inne nazwy produktów są lub mogą być znakami towarowymi lub zastrzeżonymi znakami towarowymi firmy Microsoft w Stanach Zjednoczonych i innych krajach. Zamieszczone informacje mają charakter wyłącznie informacyjny. FIRMA MICROSOFT NIE UDZIELA ŻADNYCH GWARANCJI (WYRAŻONYCH WPROST LUB DOMYŚLNIE), W TYM TAKŻE USTAWOWEJ RĘKOJMI ZA WADY FIZYCZNE I PRAWNE, CO DO INFORMACJI ZAWARTYCH W TEJ PREZENTACJI.

×