.NET Multiplataforma

27
.NET Multiplataforma (Windows, Linux, OS X) Rodolfo Finochietti [email protected] @rodolfof http://shockbyte.net

Transcript of .NET Multiplataforma

Page 1: .NET Multiplataforma

.NET Multiplataforma(Windows, Linux, OS X)

Rodolfo [email protected]@rodolfofhttp://shockbyte.net

Page 2: .NET Multiplataforma
Page 3: .NET Multiplataforma

Ejecutando una aplicación .NET en Linux

Run:./corerun HelloWorld.exe

// corerun es el host nativo que carga y corre la aplicación

// En Windows, el proceso de bootstrapping de una aplicación .NET esta incluido en el OS

Page 4: .NET Multiplataforma

64-bit JIT + SIMDGarbage Collector

Runtime components

Compilers.NET Compiler Platform (Roslyn)

Languages innovation

.NET Framework 4.6 .NET Core 5

Fully-featured and integrated .NET libraries and runtime for Windows

Modular and optimized .NET libraries and runtimes

WPF ASP.NET (4 & 5)

Windows Forms

ASP.NET 5 Universal Windows Apps

CoreCLR .NET Native

Base class librariesNuGet packages

Libraries

Shared

.NET en Linux y OS X

Page 5: .NET Multiplataforma

¿Por que?

Web 1.0Migración Desktop a

Web

Web 2.0Integración con

Estándares y JavaScript

Web Moderna

Integración en el Server y en el Cloud

Page 6: .NET Multiplataforma

Se pueden correr aplicaciones .NET en ambientes Linux para escenarios server/cloud

Soporte en VS para desarrollo y despliegue de aplicaciones .NET en ambientes Linux, incluyendo Docker, y la posibilidad de debug remoto de aplicaciones NET corriendo en Linux

Compilación, edición, y debugging de código .NET en OS X con Visual Studio Code (o cualquier editor).

.NET Core es open source (el código entero esta GitHub)

Beneficios

Page 7: .NET Multiplataforma

.NET Runtimes Full .NET CLR

Incluye toda las APIS, y asegura compatibilidad hacia atrás.

Core CLR (cloud-optimized runtime) Pequeño (11 MB) Compartimentado y distribuido via NuGet Solo uso lo que necesito Side by Side: Se distribuye con la aplicación

Cross-Platform Code CLR Mac, Linux, FreeBSD Ryujit y .NET GC ahora son públicos y OSS

Page 8: .NET Multiplataforma

.NET Execution Enviroment (DNX) Es la infraestructura común que “hostea” el CLR

y provee servicios a las aplicaciones (principalmente carga de DLL y manejos de paquetes y dependencias)

Herramientas multiplataforma DNVM (Version Manager) DNU (Package Manager) DNX (para correr comandos)

Compilación dinámica

ASP.NET 5 esta construido sobre DNX Es la implementación de OWIN de MS Nuevo HTTP Pipeline

Page 9: .NET Multiplataforma

DemoDNX en Linux y OS X

Page 10: .NET Multiplataforma

Instalación de .NET en OS X

// Homebrew es un popular administrador de paquetes para Mac

• Utilizando Homebrew (http://brew.sh):• http://docs.asp.net/en/latest/getting-started/installing-on-mac.html

• Compilando• https://github.com/dotnet/coreclr/blob/master/Documentation/building

/osx-instructions.md

Page 11: .NET Multiplataforma

Instalación de .NET en Linux

• Utilizando Mono• http://docs.asp.net/en/latest/getting-started/installing-on-linux.html

• Utilizando Docker• http://blogs.msdn.com/b/webdev/archive/2015/01/14/running-asp-net-

5-applications-in-linux-containers-with-docker.aspx

• Crear una VM desde Azure Market Place• Compilando• https://github.com/dotnet/coreclr/blob/master/Documentation/building

/linux-instructions.md

Page 12: .NET Multiplataforma

Instalación de .NET en Windows

• Instalando Visual Studio 2015• Compilando• https://

github.com/dotnet/coreclr/blob/master/Documentation/building/windows-instructions.md

Page 13: .NET Multiplataforma

Herramientas de desarrollo

• Visual Studio 2015

• Visual Studio Code

• Visual Studio Code

• Otros editors: Sublime Text, Atom, etc.

• Visual Studio Code

• Otros editores: Vi, Emacs, Atom, etc.

Page 14: .NET Multiplataforma

DemoASP.NET 5 en Linux y OS X

Page 15: .NET Multiplataforma

Ejecutando una aplicaciones ASP.NET 5 en Linux

Para ejecutar la app:dnx . kestrel

Ir al website:http://localhost:5004

// dnx (.NET Execution Environment) contiene el código requerido de bootstrap requerido pata iniciar y correr una aplicación ASP.NET 5

// kestrel es un web server multiplataforma para ASP.NET 5

Page 16: .NET Multiplataforma

Acceso a datos .NET Core en Linux ofrece acceso a datos nativo en: SQL Server (remote access) Azure SQL Database

No hay que hacer cambios en el código de acceso a datos ADO.NET Entity Framework

No hay que migrar datos En el futuro se van a soportar mas data providers

Azure SQL Database

SQL Server

On premiseIn cloud

Page 17: .NET Multiplataforma

DemoAcceso a Datos

Page 18: .NET Multiplataforma

Visual Studio Code 101

• Editor liviano y multiplataforma, para Windows, OS X y Linux

• Provee IntelliSense, colorization, refactoring, etc.

• Edición, compilación, y ejecución local

• Soporte para Debugging de aplicaciones .NET apps (en el futuro)

Page 19: .NET Multiplataforma

DemoScaffold con YeomanVisual Studio Code

Page 20: .NET Multiplataforma

Xcopy deployment On-premise Azure IaaS (Linux VM) Docker container Windows container

Se pueden utilizar cualquiera de las tecnología de deployment disponibles en el OS correspondiente (Windows/Linux/OS X) Se puede incluir .NET Core con la aplicación No se necesita una instalación de .NET a nivel de maquina

Despliegue

Page 21: .NET Multiplataforma

Todo lo que e necesita para evaluar .NET en Linux .NET Core ASP.NET 5 Parts Unlimited sample app

Linux VM en Azure Marketplace

Page 22: .NET Multiplataforma

Un Container es Una VM liviana Una unidad de “software delivery”

Docker es la tecnología de containers mas popular

Visual Studio 2015 provee soporte para publicar y administrar Docker containers

Containers 101 (simplificado)

Page 23: .NET Multiplataforma

Llamadas de APIs nativas desde .NET on Linux

[DllImport("libc")]private static extern int printf(string format);…printf("Hello, World\n");

// Igual que Platform Invoke en Windows

Page 24: .NET Multiplataforma

Mono es un plataformas muy popular para desarrollos móviles multiplataforma en NET

Para escenarios mobiles funciona muy bien pero Mono no esta diseñado pata escenarios server/cloud con calidad productiva High throughput Scale up/out Mean Time To Failure (MTTF)

¿Y Mono?

Page 25: .NET Multiplataforma

Aplicaciones .NET Core apps van a ejecutar en ambientes Linux productivos, incluyendo Docker containers (on-prem y cloud)

Edición, compilación, y debugging de código .NET en Mac OS X usando Visual Studio Code (o cualquier editor).

Aplicaciones que usen características agnósticas a la plataforma van a tener el mismo comportamiento en Windows y Unix

Microsoft va a soportar, y mantener .NET como si fuera cualquier otro producto de Microsoft

Promesas de Microsoft

Page 26: .NET Multiplataforma

¿Preguntas?

Page 27: .NET Multiplataforma

¡ [email protected]@rodolfofhttp://shockbyte.net