modern apps development by pablo zaidenvoren
DESCRIPTION
TRANSCRIPT
Modern Apps Development
Pablo [email protected]
.NET Framework
Base Class Libraries
The CLRJIT & NGEN Garbage
Collector Security Model Exception Handling
Loader & Binder
WPF Win Forms DLR ASP.NET WCF And
more!LINQ
“Caballitos de Batalla” de la Plataforma
Managed Code
Generics
Language Integrated Query
Dynamic + Language Parity
C# 5.0 + VB 11.0Windows Runtime + Asynchrony
C# 1.0 + VB 7.0
C# 2.0 + VB 8.0
C# 3.0 + VB 9.0
C# 4.0 + VB 10.0
Modern Apps
Personal & contextual
Always evolving
New value
Always connected
Data intensive
Always accessible
Windows reimaginado
La misma experiencia en todos los dispositivos
Tablets to laptops to all-in-ones
Highest power to the most efficient chipset
Touch, mouse, keyboard
Desarrollo de Modern Apps para Windows 8
Windows Core OS Services
JavaScript(Chakra)
CC++
C#VB
Communication & Data
Application Model
Devices & Printing
WinRT APIs
Graphics & Media
XAML HTML / CSS
Ventajas de WinRT
• Es Asincronico• Acceso unico y rico a todos los dispositivos,
SO, y servicios• Sintaxis inspirada en .NET (No mas wrappers
COM de C++!!!)• Codigo nativo para dar la mejor experiencia
Lenguajes
WindowsRuntime
Object(or Component)
Writtenin C++, C#, VB
Windows Metadata
C++ App
Projection
CLR
C#/VB AppProjection
HTML AppChakra
Projection
Process Isolation
Process state transitions
8 rasgos de las aplicaciones Modern UI
Modern UI style designFast and fluidSnap and scale beautifullyUse the right contractsInvest in a great TileFeel connected & aliveRoam to the cloudEmbrace Modern UI principles
Windows RuntimeFor Developers
Windows Runtime desde .NET
• Windows: el mejor amigo del developer.• Para APIs Nativas, .NET no era ciudadano de
primera clase…
[DllImport("avicap32.dll", EntryPoint="capCreateCaptureWindow")]static extern int capCreateCaptureWindow( string lpszWindowName, int dwStyle, int X, int Y, int nWidth, int nHeight, int hwndParent, int nID);
[DllImport("avicap32.dll")] static extern bool capGetDriverDescription( int wDriverIndex, [MarshalAs(UnmanagedType.LPTStr)] ref string lpszName, int cbName, [MarshalAs(UnmanagedType.LPTStr)] ref string lpszVer, int cbVer);
// Infelicidad de código
El código de C# que hoy escribimos
El código que vamos a escribir en Windows 8
using Windows.Media.Capture;
var ui = new CameraCaptureUI();ui.PhotoSettings.CroppedAspectRatio = new Size(4, 3);
var file = await ui.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (file != null) { var bitmap = new BitmapImage() ; bitmap.SetSource(await file.OpenAsync(FileAccessMode.Read)); Photo.Source = bitmap;}
// Felicidad de código
Windows Runtime desde .NET
• Usar Windows Runtime desde C# y Visual Basic se siente natural y familiar.
• La mayoria de las diferencias entre Windows Runtime y.NET estan ocultas
• El uso de Extension methods nos permite cerrar el gap entre Windows Runtime y el código manejado.
Lenguajes
WindowsRuntime
Object(or Component)
Writtenin C++, C#, VB
Windows Metadata
C++ App
Projection
CLR
C#/VB AppProjection
HTML AppChakra
Projection
Windows Runtime desde JS
• WinRT tambien se siente natural para programadores habituados a HTML y JS
• La naturaleza dinamica de JS permite absorber el gap con WinRT de manera natural