Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=77d126d2-0d3d-4082-aba3-f5b0602d9491

Qué debe saber un desarrollador .NET en 2017

Nota: este artículo es una traducción de un post de Scott Hanselman, conocido experto y evangelista en tecnologías Microsoft, con su permiso.

Hace muchos muchos años escribí un post en mi blog sobre qué cosas deberían saber los desarrolladores de .NET. Desgraciadamente lo que solo pretendía ser un listado de preguntas fue aprovechado de forma abusiva por gente de recursos humanos y otros que lo usaron como una dura prueba de fuego para candidatos.

Están pasando muchas cosas en torno a .NET así que pensé que sería interesante actualizar aquella idea del post original con una lista más amable que pueda utilizarse más como una guía de estudio y glosario. Jon Galloway y un servidor nos sentamos y elaboramos esta lista de términos y recursos.

Tu primera reacción puede que sea, "¡buff, esto es demasiado, .NET no mola nada!" . La mayoría de las plataformas tienen barreras de entrada similares. Existen ATLs (acrónimos de tres letras) en todos los lenguajes de programación y ecosistemas informáticos. No te sientas abrumado, empieza por lo que Necesitas Saber, y luego progresa lentamente. Además, recuerda que TÚ decides cuándo decir basta. No necesitas saberlo todo. Solo recuerda que bajo cada capa y etiqueta hay todavía más debajo, y que cualquiera que sea el programa que tengas entre manos, puede que esté en un nivel en el que aún tienes que profundizar.

Traza una raya debajo de las cosas que necesitas saber. Apréndete eso, y ten presente que lo demás lo puedes buscar e investigar. Algunos de nosotros queremos conocer todos los detalles, los interiores. Otros no. Quizás quieras aprender del Metal hacia arriba o del Cristal hacia abajo (en inglés).  Conoce tu estilo y diviértete.

Net-Components

Cosas que necesitas saber

  • ¿Qué es .NET? .NET tiene unos cuantos componentes clave. Empezaremos con los entornos de ejecución y los lenguajes de programación.
  • Estos son los tres entornos de ejecución principales:

    • .NET Framework - La plataforma .NET te ayuda a crear aplicaciones web, de escritorio y móviles que se ejecutan en un PC, en dispositivos y servidores Windows.
    • .NET Core - .NET Core te proporciona una plataforma veloz y modular para crear aplicaciones servidor que se ejecutan en Windows, Linux y Mac.
    • Mono para Xamarin - Xamarin lleva .NET a iOS y Android, reutilizando capacidades y código mientras obtienes acceso directo a APIs y rendimiento nativo. Mono es .NET de código abierto, que fue creado antes de que Xamarin y Microsoft se unieran. Mono será compatible con .NET Standard que es otro gran entorno de ejecución de .NET flexible y de código abierto. También podrás toparte con Mono en el entorno de desarrollo de juegos Unity.
  • Estos son los lenguajes de programación principales:

    • C# (pronunciado C-sharp) es simple, potente, ofrece seguridad de tipos, y está orientado a objetos a la par que conserva la expresividad y la elegancia de otros lenguajes estilo C. Cualquiera que esté familiarizado con C o lenguajes de programación similares encontrará pocas dificultades en adaptarse a C#. Échale un ojo a la Guía de C# (en inglés) para aprender más C# o pruébalo en tu navegador (en inglés). Consulta: Pregunta-Trampa: El lenguaje C# y la plataforma .NET no son lo mismo.
    • F# también es un lenguaje de programación multi-plataforma, funcional que también soporta programación orientada a objetos tradicional e imperativa. Puedes ir a la Guía de F# (en inglés) para aprender más o probarlo en tu navegador (en inglés).
    • Visual Basic es un lenguaje fácil de aprender y que puedes utilizar para crear una variedad de aplicaciones para ejecuta en .NET. Yo mismo empecé con VB hace muchos años.

      Consulta también: C# o VB.NET ¿qué lenguaje debo aprender?

  • ¿Por dónde empiezo?

  • Tras los lenguajes y entornos de ejecución, están las plataformas y los frameworks.

    • Los frameworks definen APIs que puedes usar. Tienes el framework .NET 4.6, .NET Standard, etc. A veces te referirás a ellos por su nombre, o en el código y archivos de configuración como un TFM (ver abajo).
    • Plataforma (en el contexto de .NET) - Windows, Linux, Mac, Android, iOS, etc. Esto también incluye la arquitectura, así que Windows x32 (32 bits) no es Windows x64 (64 bits). Cada distribución de Linux supone también su propia plataforma independiente hoy en día.
  • TFMs (Target Framework Moniker) (en inglés) - Un identificador (cadena de caracteres) que te permite hacer referencia a una combinación de framework + versión. Por ejemplo, net462 (.NET 4.6.2), net35 (.NET 3.5), uap (Universal Windows Platform). Para más información, vete a este artículo (en inglés). Elegir un TFM decide qué APIs están a tu disposición, y en qué frameworks puedes ejecutar tu código.

  • NuGet - NuGet es el gestor de paquetes para la plataforma de desarrollo de Microsoft, incluyendo .NET. Las herramientas del cliente NuGet ofrecen la posibilidad de producir y consumir paquetes. La Galería NuGet es el repositorio de paquetes centralizado utilizado por todos los autores y consumidores de paquetes.

  • ¿Qué es un ensamblado? (en inglés) - Un ensamblado es normalmente una DLL o EXE que contiene código compilado. Los ensamblados son los bloques de construcción de las aplicaciones de la plataforma .NET completa (o "tradicional"). Forman la unidad fundamental de despliegue, control de versiones, reutilización, activación de ámbito, y permisos de seguridad. En .NET Core, los bloques de construcción son paquetes de NuGet que contienen ensamblados Y metadatos.

  • .NET Standard o "netstandard" - .NET Standard simplifica las referencias entre frameworks que son compatibles a nivel binario, permitiendo a un único framework de destino referenciar a una combinación de otros. La biblioteca .NET Standard es una especificación formal de APIs .NET que se pretende que estén disponibles en todos los entornos de ejecución de .NET.

    • .NET Framework versus. .NET Core - La plataforma .NET es para sistemas y aplicaciones Windows, mientras que .NET Core es un framework más pequeño, multiplataforma, para aplicaciones servidor, apps de consola, aplicaciones web y sirve también como entorno de ejecución de base desde el que crear otros sistemas.

Cosas que deberías saber

  • CLR – El lenguaje común de entorno de ejecución (CLR), el componente de máquina virtual del framework .NET de Microsoft, que gestiona la ejecución de programas .NET. Un proceso denominado compilación just-in-time (justo a tiempo) convierte código compilado en instrucciones de máquina a bajo nivel que luego son ejecutadas por el ordenador.
  • CoreCLR - Entorno de ejecución .NET, usado por .NET Core.
  • Mono - Entorno de ejecución .NET, usado por Xamarin y otros.
  • CoreFX - Bibliotecas de clase .NET, usadas por .NET Core y hasta cierto punto por Mono vía compartición de código fuente.
  • Roslyn - Compiladores de C# y Visual Basic, usados por la mayoría de las plataformas y herramientas de .NET. Expone APIs para leer, escribir y analizar código fuente.
  • Recolector de Basura - .NET usa para proveer de gestión de memoria automática a los programas. GC opera en base a un enfoque perezoso en relación con la gestión de memoria, optando por el throughput de aplicaciones sobre la colección inmediata de memoria. Para aprender más sobre .NET GC, vete a los Fundamentos de GC.
  • Código Manejado - El código "Manejado" es justo eso: código cuya ejecución se gestionada a través de un entorno de ejecución como CLR.
  • IL – El lenguaje intermedio (Intermediate Language) es el producto de la compilación de código escrito en lenguajes .NET de alto nivel. Por hacer un símil, C# serían las manzanas, IL sería la compota que se saca de estas, y JIT y CLR crearían el zumo de manzana (un nivel aún más bajo) ;-)
  • JIT – Compilador just-in-time (en tiempo real). Toma IL y lo compila en preparación para ser ejecutado como código nativo.
  • ¿Dónde está ubicado .NET en el disco duro? ELa plataforma .NET está en C:\Windows\Microsoft.NET y .NET Core está en C:\Program Files\dotnet. En Mac normalmente acaba en /usr/local/share. .NET Core también puede ser empaquetado con una aplicación y estar bajo el directorio de esa aplicación como una aplicación auto-contenida (en inglés).
  • Frameworks compartidos versus Apps auto-contenidas - .NET Core puede usar un framework compartido (compartido por múltiples apps en la misma máquina) o tu aplicación puede ser auto-contenida y llevar su propia copia del framework. A veces verás xcopy-deployable / bin-deployable que implica que la aplicación está completamente auto-contenida.
  • async y await  (en inglés)– Las palabras clave async y await generan IL (lenguaje intermedio) que liberará un hilo para las llamadas a funciones que tardan mucho en ejecutarse (por ejemplo, consultas a bases de datos o llamadas a servicios web). Esto libera recursos del sistema, para que no estés acaparando memoria, hilos, etc. mientras estás a la espera. Consulta también "Por qué debería importarte la programación paralela".
  • Bibliotecas de Clase Portable (PCLs) (en inglés) - Son las bibliotecas "mínimo común denominador" que permiten compartir código entre las distintas plataformas. Aunque se soportan las PCLs, los autores de paquetes deben soportar el Estándar .NET Platform (.NET Platform Standard), que es una evolución de las PCLs y representa portabilidad binaria a través de diferentes plataformas.
  • .NET Core se compone de las siguientes partes:
    • Un entorno de ejecución .NET, que ofrece un sistema de tipado, carga de ensamblaje, un colector de basura (GC), interoperabilidad nativa y otros servicios básicos.
    • Un conjunto de bibliotecas del framework, que proporciona tipos de datos primitivos, tipos de composición de apps y utilidades básicas.
    • Un conjunto de herramientas del SDK y compiladores de lenguaje que habilitan la experiencia base para poder desarrollar. Disponible en el .NET Core SDK.
    • El "host" de apps ('dotnet'), que se usa para lanzar apps .NET Core. Selecciona el entorno de ejecución y lo aloja, proporciona una política de carga de ensamblajes y lanza la app. El mismo host se usa para lanzar herramientas SDK de forma muy parecida.

Cosas que sería bueno que supieses

  • GAC – La Caché Global de Ensamblados es donde el Framework completo .NET, en Windows, almacena las bibliotecas compartidas por todo el sistema. Puedes listarlo con gacutil /l.
  • Carga y Enlazado de Ensamblados - En apps complejas puedes meterte en escenarios interesantes en torno a cómo los ensamblados se cargan desde disco.
  • Profiling (uso de memoria, GC, etc.) - Hay muchas herramientas que puedes usar para medir - o "perfilar"- tu código C# y .NET. Muchas de estas herramientas las tienes de serie en Visual Studio.
  • LINQ - "Language Integrated Query" es una manera de más alto nivel para consultar objetos y bases de datos de forma declarativa.
  • "Common Type System" y "Common Language Specification" definen cómo se utilizan y se pasan los objetos de forma que funcionen en todos aquellos sitios en los que funciona .NET, o sea, de forma interoperable. El CLS es un subconjunto sobre el que construye CTS.
  • ".NET Nativo" (en inglés) - Un día serás capaz de compilar código nativo en vez de compilar a lenguaje intermedio (IL).
  • ".NET Roadmap" (en inglés) - Estos son los planes de Microsoft para .NET en 2017.
  • C# 7 Moderno (en inglés) – C# tiene nuevas características cada año, más o menos. La última versión es C# 7 y tiene muchísimas novedades molonas a las que merece la pena echarles un ojo.
  • Extensiones Reactivas (en inglés) - "Extensiones Reactivas (Rx) es una biblioteca para componer programas asíncronos y basados en eventos usando secuencias observables y operadores tipo LINQ." Puedes crear programas sofisticados basados en eventos que funcionan de forma limpia y asíncrona al aplicarle operadores tipo LINQ a los flujos de datos.

Nota: Algunos textos fueron extraídos de los respectivos artículos de la Wikipedia sobre cada tema, editándolos para abreviar. Creative Commons Attribution-ShareAlike 3.0. Algunos textos fueron sacados directamente de los excelentes .NET docs. Este post es un link blog y agregado. Algún contenido es original, pero mucho no lo es.

campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP

No te pierdas ningún post

Únete gratis a nuestro canal en Telegram y te avisaremos en el momento en el que publiquemos uno nuevo.

Archivado en: Lenguajes y plataformas

Comentarios (3) -

Muchísimas gracias por esta entrada de gran utilidad. Me ha venido muy bien, ya que estoy empezando a programar en .NET y me venía bien saber como ha avanzado .NET, para así poder empezar a estudiar lo más nuevo.

Responder

Suerte que me gust leer y conozco básicamente todo, incluyendo la programación reactiva con las Reactive Extensions y un poco de F#.

Responder

Hola a todos.

Me gustaría saber si .Net tiene futuro, si vale la pena o si está cayendo en deshuso. Tengo la oportunidad de recibirme de programador con .Net o Genexus gracias a una iniciativa de mi país.

Perdonen la ignorancia, agradecería mucho su ayuda.

Gracias y saludos.

Responder

Agregar comentario