net multiplataforma
TRANSCRIPT
.NET Multiplataforma(Windows, Linux, OS X)
Rodolfo [email protected]@rodolfofhttp://shockbyte.net
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
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
¿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
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
.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
.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
DemoDNX en Linux y OS X
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
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
Instalación de .NET en Windows
• Instalando Visual Studio 2015• Compilando• https://
github.com/dotnet/coreclr/blob/master/Documentation/building/windows-instructions.md
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.
DemoASP.NET 5 en Linux y OS X
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
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
DemoAcceso a Datos
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)
DemoScaffold con YeomanVisual Studio Code
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
Todo lo que e necesita para evaluar .NET en Linux .NET Core ASP.NET 5 Parts Unlimited sample app
Linux VM en Azure Marketplace
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)
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
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?
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
¿Preguntas?