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

71
ASP.NET, jakiego (jeszcze) nie znacie - co nowego dla web developerów? Bartłomiej Zass Senior Technical Evangelist | Microsoft

description

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

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

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

ASP.NET, jakiego (jeszcze) nie znacie - co nowego dla web developerów?

Bartłomiej ZassSenior Technical Evangelist | Microsoft

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

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

Cel sesji

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

Najważniejsze nowości od Visual Studio 2012 Co nowego w Visual Studio 2013? OWIN i Katana ASP.NET Web API v2 SignalR

Plan prezentacji

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

ASP.NET Web Tools

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

Release co ok. 6 miesięcy

ASP.NET i Web Tools

ASP.NET 4.5 VS201

2

Wrzesień

2012

ASP.NET & Web Tools

2012.2

Luty2013

VS2013

Jesień2013

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

Release co ok. 2 tygodnie Od lipca otwarty kod

Web Tools „Labs”

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

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

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

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

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

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

Otwarty kod

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

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

Visual Studio 2012 (web)

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

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

ASP.NET & Web Tools Update 2012.2

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

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

ASP.NET & Web Tools 2013

R.I.P. Cassini, FrontPage Extensions

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

DemoOne ASP.NETNowości w narzędziach

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

OWIN i Katana

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

var http = require('http');http.createServer(function (req, res) { res.writeHead(200, {'Content-Type':'text/plain'}); res.end('Hello World\n');}).listen(1337, '127.0.0.1');

Hello, Node.js

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

Node.js po pewnym czasie…

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

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

ASP.NET – trochę historii

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

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?

Rozwiązania

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

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!

Self-host

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

Zestaw komponentów do budowania i uruchamiania aplikacji na otwartym interfejsie / abstrakcji hostingu

„Katana”

http://owin.org/

Func<IDictionary<string, object>, Task>;

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

Komponenty „Katana”

Host

Server

Application Framework

Application

Uruchom aplikację OWIN na serwerze

Przetwarzaj żądania przez OWIN pipeline

Udostępnij model programistyczny przez

OWIN pipeline

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

Komponenty „Katana” (2)

Host

Server

Application Framework

Application

• IIS• OwinHost.exe• Custom Process

• SystemWeb• HttpListener

• SignalR• ASP.NET Web API

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

Ekostystem OWIN

Host

Server

Application Framework

Application

• IIS• OwinHost.exe• Custom Process

• SystemWeb• HttpListener• Custom Server

• SignalR• ASP.NET Web API• NancyFx• Fubu MVC• Service Stack• OpenRasta• Simple.Web• Gate• Custom Framework

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

DemoKatana – Hello, World!

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

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

Katana 2.0: middleware do uwierzytelniania

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

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();

Konfiguracja middleware

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

DemoMiddleware uwierzytelniający w ASP.NET MVC

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

Wymiana komponentów

IIS

SystemWeb

Web API + SignalR + static files

Your Application

Windows (local or remote)

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

Elastyczność Host/Server

IIS

SystemWeb

Web API + SignalR + static files

Your Application

Windows (local or remote)

OwinHost.exe

HttpListener

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

Do chmury!

Web API + SignalR + static files

Your Application

Windows (local or remote)

OwinHost.exe

WebListener

Windows Azure Worker Role

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

DemoSelf-hosting Katana (OwinHost)

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

MICROSOFT CONFIDENT IAL – INTERNAL ONLY

Mono??

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

ASP.NET Web API

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

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

ASP.NET Web API 2

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

DemoASP.NET Web Api - podstawy

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

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)

Nowości w ASP.NET Web API 2

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

Definiowanie tras bliżej zasobów

Attribute routing

config.Routes.MapHttpRoute( name: “TodosForTodoList", routeTemplate: "api/todolists/{id}/todos", defaults: new { controller = “todolists”, action = “GetTodos” });

Controller Selector

Action Selector

public IEnumerable<TodoItem> GetTodos() { … }

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

Definiowanie tras bliżej zasobów

Attribute routing

config.MapHttpAttributeRoutes();

[HttpGet("api/todolists/{id}/todos")]public IEnumerable<TodoItem> GetTodos(int id) { … }

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

Opcjonalne parametry

Domyślne parametry

Constraints

Attribute routing

[HttpGet(“Demographics/{zipcode?}")]public Demographics Get(int? zipcode) { … }

[HttpGet("people/{id:int}")]public Person Get(int id) { … }

[HttpGet("people/{name:alpha}")]public Person Get(string name) { … }

[HttpGet("Demographics/{zipcode=98052}")]public Demographics Get(int zipcode) { … }

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

DemoAttribute routing

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

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

Unit testing

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

DemoTestowanie z IHttpActionResult

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

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

Integracja z OWIN

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

DemoWłasny host OWIN z ASP.NET Web API

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

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

ASP.NET Web API OData

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

DemoASP.NET Web API Odata v2

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

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

Żądania cross-origin

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

DemoASP.NET Web API i CORS

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

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

Zabezpieczanie usług Web API

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

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

Oauth 2.0

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

Przyznanie uprawnień

Access Token

Przyznanie dostępu

Chroniony zasób

Access TokenOK, proszę

OAuth 2.0

Serwer autoryzacyjny

Serwer zasobów (Web

API)

Właściciel zasobu(user)

Klient

Żądanie dostępu

Czy mogę uzyskac dostęp do zdjęć?

OKUżytkownik

powiedział, że mogę

Wyglada OK – oto tokenTu jest mój access

token. Poproszę zdjęcia.

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

OAuth 2.0 – przyznanie dostępu

Protected ResourceClient

Authorization ServerAuthorization

EndpointToken

Endpoint

BrowserCOD

E3302

302 1

<Client ID>

2 <Client ID>

user

User

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

OAuth 2.0 – token request

Protected ResourceClient

Authorization ServerAuthorization

EndpointToken

Endpoint

CODE

2

access token

refresh token

Client

1

<Client ID>

client

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

OAuth 2.0 – resource request

Protected ResourceClient

authorization serverAuthorization

EndpointToken

Endpoint

1

access token

2

refresh token

Client

Authorization: Bearer

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

OAuth 2.0 – odświeżenie access tokenu

Protected ResourceClient

Authorization ServerAuthorization

EndpointToken

Endpoint

2

access token

refresh token

refresh token

Client

1

<Client ID>

client

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

OAuth 2.0 – wsparcie dla Bearer token Autoryzacja przez OAuth 2.0 Bearer tokens

Walidacja i konwersja tokenu na claims

Protected Resource

Client

BearerAuth

×

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

public class Startup{ public void ConfigureAuth(IAppBuilder app) { // Włącz wsparcie dla OAuth 2.0 bearer tokens app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); }}

ASP.NET Web Api 2 i Bearer token

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

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

Oauth 2.0 – serwer autoryzacyjny

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

DemoZabezpieczanie dostępu do usług ASP.NET Web API

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

SignalR

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

Prosty sposób na realizację komunikacji real-time po HTTP Instalowane przez NuGet, oficjalne wsparcie (wersja 2.0) Wydajność Skalowalność

SignalR

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

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

Przykładowe scenariusze

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

DemoPodstawy SignalR

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

SignalR i przeglądarki SignalR działa zawsze!

Najpierw próba z WebSockets Fallback do Server Sent Events Forever Frame Long Polling

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

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 …

Klienci SignalR

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

DemoSignalR i WPF

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

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)

Wydajność i skalowanie

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

Skalowanie

web nodes

clients

backplane

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

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

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

„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

Podsumowanie

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

© 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.