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

Post on 14-Dec-2014

726 views 0 download

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?

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

Bartłomiej ZassSenior Technical Evangelist | Microsoft

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

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

ASP.NET Web Tools

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

Release co ok. 2 tygodnie Od lipca otwarty kod

Web Tools „Labs”

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

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

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

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)

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

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

DemoOne ASP.NETNowości w narzędziach

OWIN i Katana

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

Node.js po pewnym czasie…

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

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

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

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

„Katana”

http://owin.org/

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

Komponenty „Katana”

Host

Server

Application Framework

Application

Uruchom aplikację OWIN na serwerze

Przetwarzaj żądania przez OWIN pipeline

Udostępnij model programistyczny przez

OWIN pipeline

Komponenty „Katana” (2)

Host

Server

Application Framework

Application

• IIS• OwinHost.exe• Custom Process

• SystemWeb• HttpListener

• SignalR• ASP.NET Web API

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

DemoKatana – Hello, World!

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

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

DemoMiddleware uwierzytelniający w ASP.NET MVC

Wymiana komponentów

IIS

SystemWeb

Web API + SignalR + static files

Your Application

Windows (local or remote)

Elastyczność Host/Server

IIS

SystemWeb

Web API + SignalR + static files

Your Application

Windows (local or remote)

OwinHost.exe

HttpListener

Do chmury!

Web API + SignalR + static files

Your Application

Windows (local or remote)

OwinHost.exe

WebListener

Windows Azure Worker Role

DemoSelf-hosting Katana (OwinHost)

MICROSOFT CONFIDENT IAL – INTERNAL ONLY

Mono??

ASP.NET Web API

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

DemoASP.NET Web Api - podstawy

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

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() { … }

Definiowanie tras bliżej zasobów

Attribute routing

config.MapHttpAttributeRoutes();

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

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) { … }

DemoAttribute routing

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

DemoTestowanie z IHttpActionResult

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

DemoWłasny host OWIN z ASP.NET Web API

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

DemoASP.NET Web API Odata v2

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

DemoASP.NET Web API i CORS

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

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

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.

OAuth 2.0 – przyznanie dostępu

Protected ResourceClient

Authorization ServerAuthorization

EndpointToken

Endpoint

BrowserCOD

E3302

302 1

<Client ID>

2 <Client ID>

user

User

OAuth 2.0 – token request

Protected ResourceClient

Authorization ServerAuthorization

EndpointToken

Endpoint

CODE

2

access token

refresh token

Client

1

<Client ID>

client

OAuth 2.0 – resource request

Protected ResourceClient

authorization serverAuthorization

EndpointToken

Endpoint

1

access token

2

refresh token

Client

Authorization: Bearer

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

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

Walidacja i konwersja tokenu na claims

Protected Resource

Client

BearerAuth

×

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

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

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

SignalR

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

SignalR

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

DemoPodstawy SignalR

SignalR i przeglądarki SignalR działa zawsze!

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

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

DemoSignalR i WPF

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

Skalowanie

web nodes

clients

backplane

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

„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

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