net multiplataforma (windows, linux, os x). ejecutando una aplicación.net en linux

30
.NET Multiplataforma (Windows, Linux, OS X) Andrés G. Vettori [email protected] @andresvettori http://weblogs.asp.net/andre sv

Upload: rodrigo-barbero-pena

Post on 25-Jan-2016

229 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

.NET Multiplataforma(Windows, Linux, OS X)

Andrés G. [email protected]@andresvettorihttp://weblogs.asp.net/andresv

Page 2: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux
Page 3: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

¿Por que?La Web Evoluciona

Page 6: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

¿Por que? Las tecnologías tiene que evolucionar para acompañar

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 7: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 8: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

.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 9: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

.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 10: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

DemoDNX en Linux y OS X

Page 11: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 12: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 13: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

Instalación de .NET en Windows

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

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

Page 14: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 15: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

DemoASP.NET 5 en Linux y OS X

Page 16: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 17: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 18: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

DemoAcceso a Datos

Page 19: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 20: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

DemoScaffold con YeomanVisual Studio Code

Page 21: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 22: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 23: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

Software Containers (simplificado)Un container es una “maquina virtual liviana”

Page 24: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

Docker es la tecnología de containers mas popular

Azure soporta Docker Docker va a soportar “Windows Containers” Visual Studio 2015 provee soporte para publicar y administrar Docker containers

Docker

Page 25: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 26: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

DemoExtern callsRunning in Docker

Page 27: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 28: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

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 29: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

¿Preguntas?

Page 30: NET Multiplataforma (Windows, Linux, OS X). Ejecutando una aplicación.NET en Linux

¡ [email protected]@andresvettorihttp://weblogs.asp.net/andresv