Co nowego w VS 2013 dla programistów ASP.NET?
-
Upload
bartlomiej-zass -
Category
Technology
-
view
726 -
download
0
description
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.