Lectura pública del tema
1. La plataforma
1. La plataforma
🎯 Idea clave
- La plataforma .NET es un entorno de desarrollo creado por Microsoft para la construcción de aplicaciones multiplataforma.
- Proporciona un marco unificado que integra lenguajes de programación, bibliotecas y herramientas para el desarrollo de software.
- Su arquitectura se basa en un Common Language Runtime (CLR), que gestiona la ejecución del código y ofrece servicios como la gestión de memoria.
- Incluye una Base Class Library (BCL) con funcionalidades predefinidas para tareas comunes, como acceso a datos o manejo de archivos.
- Soporta múltiples lenguajes de programación, como C#, VB.NET y F#, permitiendo interoperabilidad entre ellos.
- Está diseñada para facilitar el desarrollo de aplicaciones seguras, escalables y de alto rendimiento en entornos empresariales.
📚 Desarrollo
Definición y propósito. La plataforma .NET es un framework de desarrollo de software desarrollado por Microsoft que permite crear aplicaciones para diversos entornos, incluyendo escritorio, web, móvil y cloud. Su objetivo principal es proporcionar un entorno unificado que simplifique el desarrollo, la implementación y la ejecución de aplicaciones, independientemente del lenguaje de programación utilizado.
Arquitectura fundamental. El núcleo de .NET se estructura en torno al Common Language Runtime (CLR), un entorno de ejecución que gestiona aspectos críticos como la compilación, la asignación de memoria y la gestión de excepciones. El CLR permite que el código escrito en diferentes lenguajes de programación se compile a un lenguaje intermedio común (CIL o MSIL), lo que garantiza la interoperabilidad entre lenguajes y mejora la portabilidad del código.
Base Class Library (BCL). La BCL es una colección de bibliotecas reutilizables que proporcionan funcionalidades esenciales para el desarrollo de aplicaciones. Incluye clases para el manejo de archivos, acceso a bases de datos, operaciones de red, seguridad, criptografía y manipulación de estructuras de datos. Estas bibliotecas permiten a los desarrolladores evitar la implementación de funcionalidades básicas desde cero, acelerando el proceso de desarrollo.
Soporte multiplataforma. Aunque inicialmente .NET estaba orientado a entornos Windows, su evolución ha permitido la creación de .NET Core y .NET 5/6/7/8, versiones que soportan la ejecución en sistemas operativos como Linux y macOS. Esta capacidad multiplataforma facilita la implementación de aplicaciones en entornos heterogéneos, algo especialmente relevante en la Administración General del Estado, donde coexisten diferentes sistemas operativos.
Integración con herramientas de desarrollo. La plataforma .NET se integra estrechamente con herramientas como Visual Studio, un entorno de desarrollo integrado (IDE) que ofrece funcionalidades avanzadas para la escritura, depuración y despliegue de código. Además, incluye soporte para sistemas de control de versiones, pruebas unitarias y automatización de builds, lo que mejora la productividad y la calidad del software desarrollado.
Seguridad y gestión de recursos. .NET incorpora mecanismos de seguridad integrados, como la gestión automática de memoria mediante el recolector de basura (Garbage Collector), que evita fugas de memoria y optimiza el uso de recursos. También incluye funcionalidades para la autenticación, autorización y cifrado de datos, aspectos críticos en el desarrollo de aplicaciones para la Administración Pública.
Ecosistema y comunidad. La plataforma .NET cuenta con un ecosistema robusto y una comunidad activa de desarrolladores. Esto se traduce en una amplia disponibilidad de documentación, bibliotecas de terceros y frameworks especializados, como ASP.NET para desarrollo web o Entity Framework para acceso a datos. Este ecosistema facilita la adopción de .NET en proyectos de la Administración General del Estado, donde la estandarización y la reutilización de componentes son prioritarias.
🧩 Elementos esenciales
- Common Language Runtime (CLR): Entorno de ejecución que gestiona la compilación, ejecución y servicios básicos del código en .NET.
- Base Class Library (BCL): Conjunto de bibliotecas reutilizables que proporcionan funcionalidades comunes para el desarrollo de aplicaciones.
- Lenguajes soportados: .NET permite el uso de múltiples lenguajes, como C#, VB.NET y F#, con interoperabilidad entre ellos.
- Lenguaje Intermedio (CIL/MSIL): Código intermedio al que se compilan los programas escritos en diferentes lenguajes, garantizando portabilidad.
- Garbage Collector: Mecanismo automático de gestión de memoria que evita fugas y optimiza el uso de recursos.
- Multiplataforma: Capacidad de .NET Core y versiones posteriores para ejecutarse en sistemas operativos como Windows, Linux y macOS.
- Visual Studio: Entorno de desarrollo integrado (IDE) que facilita la escritura, depuración y despliegue de aplicaciones .NET.
- ASP.NET: Framework especializado en el desarrollo de aplicaciones web dentro del ecosistema .NET.
- Entity Framework: Herramienta para el acceso y manipulación de bases de datos en aplicaciones .NET.
- Seguridad integrada: Mecanismos de autenticación, autorización y cifrado incluidos en la plataforma para proteger las aplicaciones.
- Ecosistema robusto: Amplia disponibilidad de documentación, bibliotecas y frameworks que facilitan el desarrollo de software.
🧠 Recuerda
- .NET es un framework de desarrollo creado por Microsoft para aplicaciones multiplataforma.
- El CLR es el núcleo de la plataforma, encargado de gestionar la ejecución del código.
- La BCL proporciona funcionalidades predefinidas para tareas comunes, acelerando el desarrollo.
- .NET soporta múltiples lenguajes de programación, como C#, VB.NET y F#.
- .NET Core y versiones posteriores permiten la ejecución en sistemas operativos distintos a Windows.
- La gestión automática de memoria mediante el Garbage Collector optimiza el uso de recursos.
- Visual Studio es el IDE principal para el desarrollo de aplicaciones .NET.
- La plataforma incluye mecanismos de seguridad integrados para proteger las aplicaciones.
- ASP.NET y Entity Framework son frameworks especializados dentro del ecosistema .NET.
- La comunidad y el ecosistema de .NET facilitan la adopción y el desarrollo de proyectos.
2. NET
2. NET
🎯 Idea clave
- .NET es una plataforma de desarrollo de software creada por Microsoft para construir aplicaciones multiplataforma con un enfoque unificado.
- Su arquitectura se basa en un entorno de ejecución común (CLR) que gestiona la ejecución de código independiente del lenguaje de programación.
- Incluye una biblioteca de clases base (BCL) que proporciona funcionalidades reutilizables para tareas comunes como entrada/salida, manejo de datos o seguridad.
- Permite la interoperabilidad entre lenguajes, facilitando que código escrito en distintos lenguajes (C#, VB.NET, F#) pueda interactuar dentro del mismo proyecto.
- Soporta el desarrollo de aplicaciones web, de escritorio, móviles y en la nube, adaptándose a distintos entornos de ejecución.
- Su modelo de programación se centra en la orientación a objetos y el uso de metadatos para describir tipos y componentes.
📚 Desarrollo
.Plataforma unificada. .NET es un marco de desarrollo que unifica tecnologías previamente dispersas, como ASP.NET para aplicaciones web, Windows Forms para escritorio o Xamarin para móviles. Esta integración permite a los desarrolladores utilizar un único conjunto de herramientas y bibliotecas para distintos tipos de proyectos, reduciendo la complejidad y mejorando la coherencia en el ciclo de vida del software.
Entorno de ejecución (CLR). El Common Language Runtime (CLR) es el componente central de .NET que gestiona la ejecución del código. Actúa como una máquina virtual que compila el código intermedio (CIL) a código nativo en tiempo de ejecución, optimizando el rendimiento y garantizando la portabilidad. Además, el CLR proporciona servicios esenciales como la gestión automática de memoria mediante el recolector de basura (Garbage Collector), el manejo de excepciones o la seguridad basada en permisos.
Biblioteca de clases base (BCL). La Base Class Library (BCL) es un conjunto de clases, interfaces y tipos de valor que ofrecen funcionalidades predefinidas para tareas comunes. Incluye módulos para manipulación de cadenas, colecciones, acceso a archivos, redes, criptografía o interacción con bases de datos. Esta biblioteca está diseñada para ser extensible y compatible con múltiples lenguajes, lo que permite a los desarrolladores reutilizar código y reducir la necesidad de implementar soluciones desde cero.
Interoperabilidad entre lenguajes. .NET soporta la compilación de código escrito en distintos lenguajes de programación a un formato intermedio común (CIL). Esto permite que componentes desarrollados en C#, Visual Basic .NET o F# puedan interactuar sin problemas dentro de una misma aplicación. La interoperabilidad se facilita mediante el uso de un sistema de tipos común (CTS) y un lenguaje de especificación común (CLS), que definen reglas para la compatibilidad entre lenguajes.
Modelo de programación orientado a objetos. .NET promueve un enfoque de programación orientada a objetos (POO), donde los elementos del software se modelan como objetos que encapsulan datos y comportamiento. Este paradigma facilita la modularidad, la reutilización de código y el mantenimiento de aplicaciones complejas. Además, .NET incorpora conceptos avanzados como herencia, polimorfismo, interfaces y delegados, que permiten diseñar arquitecturas flexibles y escalables.
Metadatos y reflexión. Una característica distintiva de .NET es su capacidad para incorporar metadatos en los ensamblados, que describen información sobre tipos, métodos, propiedades y atributos. Estos metadatos son accesibles en tiempo de ejecución mediante técnicas de reflexión, lo que permite inspeccionar y manipular dinámicamente el código. Esta funcionalidad es clave para herramientas de desarrollo, frameworks de pruebas o sistemas de inyección de dependencias.
Soporte multiplataforma. Aunque inicialmente estaba ligado a entornos Windows, .NET ha evolucionado hacia un modelo multiplataforma con .NET Core y su sucesor .NET 5+. Estas versiones permiten desarrollar y ejecutar aplicaciones en sistemas operativos como Linux, macOS o Windows, así como en entornos cloud. La compatibilidad con contenedores Docker y la integración con servicios en la nube, como Azure, amplían su aplicabilidad en entornos empresariales y administrativos.
Integración con herramientas de desarrollo. .NET se integra estrechamente con el entorno de desarrollo integrado (IDE) Visual Studio, que ofrece funcionalidades avanzadas como depuración, refactorización, diseño de interfaces gráficas o gestión de proyectos. Además, incluye herramientas de línea de comandos como dotnet CLI para compilar, ejecutar y publicar aplicaciones, así como soporte para sistemas de control de versiones como Git.
🧩 Elementos esenciales
- CLR (Common Language Runtime): Entorno de ejecución que gestiona la compilación, ejecución y servicios del código .NET, como la gestión de memoria o el manejo de excepciones.
- CIL (Common Intermediate Language): Lenguaje intermedio al que se compila el código fuente, independientemente del lenguaje de programación utilizado.
- BCL (Base Class Library): Biblioteca de clases reutilizables que proporciona funcionalidades para tareas comunes como manejo de archivos, redes o colecciones.
- CTS (Common Type System): Sistema que define cómo se declaran, utilizan y gestionan los tipos de datos en .NET, garantizando la interoperabilidad entre lenguajes.
- CLS (Common Language Specification): Conjunto de reglas que aseguran la compatibilidad entre lenguajes, permitiendo que componentes escritos en distintos lenguajes interactúen sin problemas.
- Ensamblados: Unidades de despliegue en .NET que contienen código compilado (CIL), metadatos y recursos, y pueden ser ejecutables o bibliotecas.
- Garbage Collector (GC): Mecanismo del CLR que gestiona automáticamente la memoria, liberando objetos no utilizados para evitar fugas.
- Reflexión: Capacidad de inspeccionar y manipular metadatos y tipos en tiempo de ejecución, útil para frameworks y herramientas dinámicas.
- ASP.NET: Framework integrado en .NET para el desarrollo de aplicaciones web, que incluye modelos como MVC, Web API o Blazor.
- Xamarin: Tecnología que permite desarrollar aplicaciones móviles para iOS y Android utilizando .NET y C#.
- NuGet: Gestor de paquetes para .NET que facilita la incorporación de bibliotecas y dependencias externas en los proyectos.
- .NET Standard: Especificación que define un conjunto común de APIs para garantizar la compatibilidad entre distintas implementaciones de .NET.
🧠 Recuerda
- .NET es una plataforma unificada que soporta múltiples tipos de aplicaciones, desde web hasta móviles o cloud.
- El CLR es el corazón de .NET, responsable de la ejecución del código y la gestión de recursos.
- La BCL proporciona funcionalidades predefinidas para tareas comunes, acelerando el desarrollo.
- La interoperabilidad entre lenguajes permite combinar C#, VB.NET o F# en un mismo proyecto.
- Los metadatos y la reflexión permiten inspeccionar y manipular código en tiempo de ejecución.
- .NET Core y .NET 5+ han ampliado la compatibilidad multiplataforma, incluyendo Linux y macOS.
- Los ensamblados son las unidades básicas de despliegue en .NET, conteniendo código y metadatos.
- El Garbage Collector libera automáticamente la memoria, reduciendo errores de gestión manual.
- ASP.NET y Xamarin son frameworks clave para desarrollo web y móvil dentro de .NET.
- NuGet facilita la gestión de dependencias y bibliotecas externas en los proyectos.
3. Modelo de programación
3. Modelo de programación
🎯 Idea clave
- El modelo de programación de .NET se basa en un enfoque orientado a objetos y componentes, facilitando la reutilización de código.
- Utiliza un sistema de tipos común (CTS) que garantiza la interoperabilidad entre lenguajes dentro de la plataforma.
- La ejecución de aplicaciones se gestiona mediante el Common Language Runtime (CLR), que proporciona servicios como gestión de memoria y seguridad.
- Incorpora un modelo de programación asíncrona para mejorar la eficiencia en operaciones de entrada/salida.
- Permite la creación de aplicaciones multiplataforma gracias a .NET Core y .NET 5/6+.
- Integra mecanismos de reflexión y atributos para extender la funcionalidad del código en tiempo de ejecución.
📚 Desarrollo
Enfoque orientado a objetos. El modelo de programación de .NET se fundamenta en la programación orientada a objetos (POO), donde los elementos clave son clases, objetos, herencia, polimorfismo y encapsulación. Este paradigma permite estructurar el código en componentes reutilizables y modulares, facilitando el desarrollo de aplicaciones complejas en la Administración General del Estado.
Common Type System (CTS). El CTS define un conjunto de reglas para los tipos de datos que pueden utilizarse en los lenguajes de .NET, asegurando la compatibilidad entre ellos. Esto permite que código escrito en C# pueda interactuar con código en VB.NET o F#, por ejemplo, sin problemas de conversión de tipos, lo que es esencial para proyectos colaborativos en entornos administrativos.
Common Language Runtime (CLR). El CLR actúa como el motor de ejecución de .NET, gestionando aspectos críticos como la asignación de memoria, la recolección de basura (garbage collection) y la seguridad. Además, compila el código intermedio (CIL) a código máquina en tiempo de ejecución, optimizando el rendimiento de las aplicaciones.
Programación asíncrona. .NET incorpora el modelo de programación asíncrona mediante las palabras clave async y await, lo que permite ejecutar operaciones de larga duración, como accesos a bases de datos o llamadas a servicios web, sin bloquear el hilo principal. Esto mejora la capacidad de respuesta de las aplicaciones, un requisito clave en sistemas de la AGE.
Multiplataforma. Con la evolución hacia .NET Core y las versiones posteriores (.NET 5/6+), la plataforma ha adoptado un enfoque multiplataforma, permitiendo el desarrollo y ejecución de aplicaciones en sistemas operativos como Windows, Linux y macOS. Esto facilita la adaptación de soluciones tecnológicas en entornos heterogéneos dentro de la Administración.
Reflexión y atributos. La reflexión en .NET permite inspeccionar y manipular tipos, métodos y propiedades en tiempo de ejecución, lo que es útil para frameworks y herramientas de desarrollo. Los atributos, por su parte, permiten añadir metadatos al código, que pueden ser utilizados por el CLR o por bibliotecas externas para modificar el comportamiento de las aplicaciones.
Interoperabilidad con COM y Win32. Aunque .NET promueve un modelo de programación moderno, mantiene mecanismos para interactuar con componentes COM y APIs de Win32. Esto es relevante en la AGE, donde conviven sistemas heredados con nuevas aplicaciones, permitiendo una migración gradual sin perder funcionalidad.
🧩 Elementos esenciales
- Orientación a objetos: Paradigma de programación basado en clases y objetos, con soporte para herencia, polimorfismo y encapsulación.
- Common Type System (CTS): Sistema unificado de tipos que garantiza la interoperabilidad entre lenguajes de .NET.
- Common Language Runtime (CLR): Motor de ejecución que gestiona memoria, seguridad y compilación en tiempo de ejecución.
- Código intermedio (CIL): Lenguaje intermedio en el que se compila el código fuente antes de ser ejecutado por el CLR.
- Programación asíncrona: Modelo que permite ejecutar operaciones sin bloquear el hilo principal, mejorando la eficiencia.
- Multiplataforma: Capacidad de ejecutar aplicaciones en diferentes sistemas operativos gracias a .NET Core y versiones posteriores.
- Reflexión: Mecanismo para inspeccionar y manipular tipos y miembros en tiempo de ejecución.
- Atributos: Metadatos que pueden añadirse al código para modificar su comportamiento o proporcionar información adicional.
- Interoperabilidad: Capacidad de interactuar con componentes COM y APIs de Win32, facilitando la integración con sistemas heredados.
- Garbage Collection: Proceso automático de liberación de memoria no utilizada, gestionado por el CLR.
- Lenguajes soportados: Incluye C#, VB.NET, F# y otros, todos compilados a CIL para su ejecución en el CLR.
- Bibliotecas base (BCL): Conjunto de clases y APIs proporcionadas por .NET para tareas comunes como manejo de cadenas, colecciones o entrada/salida.
🧠 Recuerda
- El modelo de programación de .NET se basa en la orientación a objetos y componentes reutilizables.
- El CTS garantiza la compatibilidad entre lenguajes dentro de la plataforma.
- El CLR es el motor de ejecución que gestiona memoria, seguridad y compilación en tiempo real.
- La programación asíncrona mejora la eficiencia en operaciones de entrada/salida.
- .NET Core y versiones posteriores permiten el desarrollo multiplataforma.
- La reflexión y los atributos extienden la funcionalidad del código en tiempo de ejecución.
- La interoperabilidad con COM y Win32 facilita la integración con sistemas heredados.
- El garbage collection libera automáticamente la memoria no utilizada.
- Las bibliotecas base (BCL) proporcionan funcionalidades comunes para el desarrollo de aplicaciones.
4. Servicios
4. Servicios
🎯 Idea clave
- Los servicios en la plataforma .NET permiten la creación de componentes reutilizables y modulares para aplicaciones empresariales.
- La arquitectura de servicios en .NET se basa en estándares como Windows Communication Foundation (WCF) y ASP.NET Web API.
- Los servicios web en .NET facilitan la interoperabilidad entre sistemas heterogéneos mediante protocolos como SOAP y REST.
- La implementación de servicios en la AGE sigue principios de seguridad, escalabilidad y reutilización para garantizar la eficiencia operativa.
- Los microservicios en .NET permiten desplegar funcionalidades independientes, mejorando la mantenibilidad y el despliegue continuo.
- La integración de servicios en la AGE se alinea con el Esquema Nacional de Interoperabilidad (ENI) y el Esquema Nacional de Seguridad (ENS).
📚 Desarrollo
Arquitectura de servicios en .NET. La plataforma .NET ofrece un marco robusto para el desarrollo de servicios, destacando Windows Communication Foundation (WCF) para servicios SOAP y ASP.NET Web API para servicios REST. Estos frameworks permiten la creación de servicios escalables y seguros, esenciales para la Administración General del Estado (AGE). WCF, por ejemplo, soporta múltiples protocolos de transporte y formatos de mensaje, lo que facilita la integración con sistemas legacy y modernos.
Protocolos y estándares. Los servicios en .NET utilizan protocolos como SOAP (Simple Object Access Protocol) para comunicaciones estructuradas y REST (Representational State Transfer) para arquitecturas más ligeras y flexibles. SOAP es ampliamente utilizado en entornos empresariales por su capacidad para manejar transacciones complejas y su soporte para estándares de seguridad como WS-Security. REST, en cambio, es ideal para aplicaciones web y móviles debido a su simplicidad y eficiencia en el uso de recursos.
Interoperabilidad en la AGE. La interoperabilidad es un requisito clave en la AGE, y los servicios en .NET se diseñan para cumplir con el Esquema Nacional de Interoperabilidad (ENI). Esto implica el uso de formatos estándar como XML y JSON, así como la adopción de protocolos abiertos para garantizar la comunicación entre diferentes sistemas administrativos. La reutilización de servicios es otro principio fundamental, permitiendo que componentes como autenticación o gestión documental sean compartidos entre distintas aplicaciones.
Microservicios y despliegue. La adopción de microservicios en .NET permite dividir aplicaciones monolíticas en componentes independientes, cada uno con su propia lógica de negocio y base de datos. Esto facilita el despliegue continuo y la escalabilidad horizontal, aspectos críticos en entornos como Cl@ve o Notific@, donde la demanda puede variar significativamente. Herramientas como Docker y Kubernetes se utilizan para orquestar estos microservicios, asegurando su disponibilidad y rendimiento.
Seguridad en servicios. La seguridad es un pilar en el desarrollo de servicios para la AGE, alineándose con el Esquema Nacional de Seguridad (ENS). Los servicios en .NET implementan mecanismos como autenticación basada en tokens (JWT), cifrado de datos y control de acceso basado en roles (RBAC). Además, se emplean firewalls de aplicaciones web (WAF) y protocolos como HTTPS para proteger las comunicaciones entre servicios y usuarios finales.
Integración con sistemas existentes. En la AGE, los servicios en .NET se integran con sistemas legacy mediante adaptadores y middleware. Por ejemplo, la plataforma Cl@ve utiliza servicios .NET para conectar con bases de datos PostgreSQL y sistemas de autenticación federada como SAML 2.0. Esta integración asegura la coherencia de los datos y la continuidad operativa, incluso cuando se migran funcionalidades a arquitecturas más modernas.
Herramientas de desarrollo. El desarrollo de servicios en .NET se apoya en herramientas como Visual Studio y Azure DevOps, que ofrecen entornos integrados para la codificación, pruebas y despliegue. Estas herramientas permiten la automatización de pipelines de CI/CD (Integración y Entrega Continua), esencial para mantener la agilidad en proyectos de la AGE. Además, se utilizan frameworks como Entity Framework para la persistencia de datos y IdentityServer para la gestión de identidades.
🧩 Elementos esenciales
- Windows Communication Foundation (WCF): Framework para servicios SOAP en .NET, con soporte para múltiples protocolos y estándares de seguridad.
- ASP.NET Web API: Framework para servicios REST en .NET, ideal para aplicaciones web y móviles por su ligereza y flexibilidad.
- SOAP: Protocolo para servicios web estructurados, utilizado en entornos empresariales por su robustez y soporte para transacciones complejas.
- REST: Arquitectura para servicios web ligeros, basada en HTTP y formatos como JSON, optimizada para aplicaciones modernas.
- Microservicios: Enfoque arquitectónico que divide aplicaciones en componentes independientes, mejorando la escalabilidad y mantenibilidad.
- Interoperabilidad: Principio clave en la AGE, garantizado mediante el uso de estándares como XML, JSON y protocolos abiertos.
- Seguridad: Implementación de mecanismos como JWT, RBAC y HTTPS para proteger servicios, alineados con el ENS.
- Integración: Conexión de servicios .NET con sistemas legacy mediante adaptadores y middleware, asegurando la coherencia de datos.
- CI/CD: Automatización de pipelines de desarrollo, pruebas y despliegue mediante herramientas como Azure DevOps.
- Cl@ve y Notific@: Ejemplos de plataformas en la AGE que utilizan servicios .NET para autenticación y notificaciones electrónicas.
🧠 Recuerda
- Los servicios en .NET se basan en frameworks como WCF y ASP.NET Web API para SOAP y REST, respectivamente.
- SOAP es ideal para transacciones complejas, mientras que REST es más eficiente para aplicaciones web y móviles.
- La interoperabilidad en la AGE se garantiza mediante estándares como XML, JSON y protocolos abiertos.
- Los microservicios permiten dividir aplicaciones en componentes independientes, mejorando la escalabilidad y el despliegue continuo.
- La seguridad en servicios .NET incluye autenticación JWT, cifrado de datos y control de acceso basado en roles.
- Herramientas como Visual Studio y Azure DevOps son esenciales para el desarrollo y despliegue de servicios en la AGE.
- La integración con sistemas legacy se realiza mediante adaptadores y middleware, asegurando la coherencia operativa.
- Plataformas como Cl@ve y Notific@ son ejemplos reales de servicios .NET en la AGE.
5. Herramientas
5. Herramientas
🎯 Idea clave
- Las herramientas de la plataforma .NET permiten desarrollar, compilar, depurar y desplegar aplicaciones en entornos de la Administración General del Estado.
- Visual Studio es el entorno de desarrollo integrado (IDE) principal para trabajar con .NET, ofreciendo soporte para múltiples lenguajes y frameworks.
- NuGet actúa como gestor de paquetes, facilitando la integración de bibliotecas y dependencias en proyectos .NET.
- ASP.NET Core proporciona herramientas específicas para el desarrollo de servicios web y aplicaciones escalables en la AGE.
- Entity Framework Core es la herramienta de mapeo objeto-relacional (ORM) utilizada para gestionar la persistencia de datos en bases de datos.
- Azure DevOps y GitHub son plataformas empleadas en la AGE para la gestión del ciclo de vida del desarrollo de software en entornos .NET.
📚 Desarrollo
Entorno de desarrollo integrado. Visual Studio es la herramienta principal para el desarrollo de aplicaciones .NET en la Administración General del Estado. Incluye funcionalidades como edición de código, depuración, diseño de interfaces y pruebas unitarias, adaptadas a los requisitos de seguridad y accesibilidad de la AGE. Su integración con otros servicios, como Azure, facilita el despliegue en entornos administrativos.
Gestión de dependencias. NuGet es el gestor de paquetes oficial de .NET, utilizado para incorporar bibliotecas externas y componentes reutilizables en los proyectos. En la AGE, su uso está regulado para garantizar la compatibilidad con los estándares de seguridad y licencias de software público. Permite mantener actualizadas las dependencias y reducir la complejidad en el desarrollo de aplicaciones.
Desarrollo web. ASP.NET Core es el framework de .NET para la creación de servicios web y aplicaciones dinámicas. Proporciona herramientas como Razor para la generación de vistas, middleware para el procesamiento de solicitudes y soporte para autenticación basada en estándares como OAuth 2.0. Su diseño modular lo hace idóneo para entornos administrativos que requieren escalabilidad y rendimiento.
Persistencia de datos. Entity Framework Core es la herramienta de mapeo objeto-relacional (ORM) que permite interactuar con bases de datos mediante modelos de objetos en .NET. En la AGE, se utiliza para garantizar la integridad de los datos y simplificar el acceso a sistemas de almacenamiento, cumpliendo con los requisitos de interoperabilidad y seguridad establecidos en normativas como el Esquema Nacional de Interoperabilidad.
Control de versiones. Git es el sistema de control de versiones empleado en la AGE para gestionar el código fuente de proyectos .NET. Plataformas como Azure DevOps y GitHub facilitan la colaboración entre equipos, el seguimiento de cambios y la integración continua (CI/CD). Estas herramientas son esenciales para mantener la trazabilidad y la calidad del software en entornos administrativos.
Pruebas y calidad. Visual Studio incluye herramientas integradas para la ejecución de pruebas unitarias y de integración, como MSTest y xUnit. En la AGE, estas funcionalidades son clave para validar el cumplimiento de los requisitos funcionales y no funcionales, asegurando que las aplicaciones .NET sean robustas y seguras antes de su despliegue.
Despliegue y monitorización. Azure DevOps y herramientas como Docker permiten automatizar el despliegue de aplicaciones .NET en entornos de la AGE. Además, servicios como Azure Monitor ofrecen capacidades de supervisión en tiempo real, garantizando la disponibilidad y el rendimiento de los sistemas desplegados en la administración pública.
🧩 Elementos esenciales
- Visual Studio: Entorno de desarrollo integrado (IDE) para .NET, con soporte para edición, depuración y diseño de interfaces.
- NuGet: Gestor de paquetes que facilita la incorporación de bibliotecas y dependencias en proyectos .NET.
- ASP.NET Core: Framework para el desarrollo de servicios web y aplicaciones escalables en la AGE.
- Entity Framework Core: Herramienta ORM para gestionar la persistencia de datos en bases de datos relacionales.
- Git: Sistema de control de versiones utilizado en la AGE para gestionar el código fuente de proyectos .NET.
- Azure DevOps: Plataforma para la gestión del ciclo de vida del desarrollo, incluyendo integración y despliegue continuo (CI/CD).
- GitHub: Repositorio de código fuente con funcionalidades para colaboración y revisión de cambios en proyectos .NET.
- Razor: Motor de vistas de ASP.NET Core para la generación dinámica de contenido HTML.
- MSTest/xUnit: Frameworks de pruebas unitarias integrados en Visual Studio para validar aplicaciones .NET.
- Docker: Herramienta para la creación de contenedores que facilita el despliegue de aplicaciones .NET en entornos administrativos.
- Azure Monitor: Servicio de monitorización para supervisar el rendimiento y la disponibilidad de aplicaciones .NET en producción.
🧠 Recuerda
- Visual Studio es el IDE principal para desarrollar aplicaciones .NET en la AGE.
- NuGet gestiona las dependencias y bibliotecas externas en proyectos .NET.
- ASP.NET Core es el framework para el desarrollo de servicios web y aplicaciones dinámicas.
- Entity Framework Core simplifica el acceso a bases de datos mediante mapeo objeto-relacional.
- Git y Azure DevOps son esenciales para el control de versiones y la integración continua en la AGE.
- Las pruebas unitarias con MSTest o xUnit garantizan la calidad del software antes de su despliegue.
- Docker y Azure Monitor facilitan el despliegue y la supervisión de aplicaciones .NET en entornos administrativos.
6. Persistencia
6. Persistencia
🎯 Idea clave
- La persistencia en la plataforma .NET permite almacenar y recuperar datos de forma estructurada en sistemas de almacenamiento duradero.
- Entity Framework Core es el marco de trabajo principal para gestionar la persistencia en aplicaciones .NET dentro de la AGE.
- Los modelos de datos se definen mediante clases que representan entidades y sus relaciones, facilitando el mapeo objeto-relacional (ORM).
- La persistencia en .NET incluye mecanismos para gestionar transacciones, garantizando la integridad y consistencia de los datos.
- Las bases de datos relacionales, como SQL Server o PostgreSQL, son las más utilizadas en la AGE para almacenar datos persistentes.
- La configuración de la persistencia en .NET se realiza mediante archivos de configuración y el uso de migraciones para gestionar cambios en el esquema de datos.
📚 Desarrollo
Marco de persistencia en .NET. En la Administración General del Estado, la persistencia de datos en aplicaciones .NET se gestiona principalmente mediante Entity Framework Core (EF Core), un marco de trabajo de mapeo objeto-relacional (ORM) que permite interactuar con bases de datos relacionales de manera eficiente. EF Core facilita la definición de modelos de datos mediante clases en C#, que representan entidades y sus relaciones, evitando la necesidad de escribir consultas SQL manuales en la mayoría de los casos.
Mapeo objeto-relacional (ORM). El ORM en .NET traduce las operaciones realizadas sobre objetos en C# a consultas SQL optimizadas para la base de datos subyacente. Esto permite a los desarrolladores trabajar con datos como si fueran objetos nativos del lenguaje, mientras que EF Core se encarga de la comunicación con el sistema de almacenamiento. En la AGE, este enfoque se utiliza para garantizar la coherencia entre el modelo de datos y la lógica de negocio de las aplicaciones.
Bases de datos relacionales. Las aplicaciones .NET en la AGE suelen utilizar bases de datos relacionales como SQL Server o PostgreSQL para almacenar datos persistentes. Estas bases de datos ofrecen robustez, escalabilidad y soporte para transacciones ACID (Atomicidad, Consistencia, Aislamiento y Durabilidad), lo que es esencial para sistemas críticos como Cl@ve o Notific@. La elección de la base de datos depende de los requisitos específicos del proyecto y de las directrices técnicas establecidas por la AGE.
Migraciones y gestión de esquemas. EF Core incluye un sistema de migraciones que permite gestionar cambios en el esquema de la base de datos de manera controlada. Las migraciones registran las modificaciones realizadas en el modelo de datos y generan scripts SQL para aplicarlas en la base de datos. Este mecanismo es fundamental en la AGE para mantener la coherencia entre el código y la estructura de la base de datos, especialmente en entornos donde múltiples equipos trabajan en paralelo.
Transacciones y consistencia. La persistencia en .NET incluye mecanismos para gestionar transacciones, asegurando que las operaciones sobre la base de datos se ejecuten de manera atómica. Esto es crucial en aplicaciones de la AGE, donde la integridad de los datos es prioritaria. EF Core permite definir transacciones explícitas o utilizar transacciones implícitas para operaciones individuales, garantizando que los datos se actualicen de forma consistente incluso en caso de fallos.
Configuración y conexión. La conexión a la base de datos en aplicaciones .NET se configura mediante archivos como appsettings.json, donde se especifican parámetros como la cadena de conexión, el proveedor de base de datos y otras opciones de configuración. En la AGE, esta configuración suele estar centralizada y protegida, siguiendo las directrices de seguridad establecidas en el Esquema Nacional de Seguridad (ENS).
Alternativas para datos no relacionales. Aunque las bases de datos relacionales son las más utilizadas, .NET también soporta sistemas de almacenamiento no relacionales como MongoDB o Azure Cosmos DB. En la AGE, estos sistemas se emplean en casos específicos donde se requiere flexibilidad en el esquema de datos o un alto rendimiento en operaciones de lectura/escritura, como en el almacenamiento de documentos adjuntos en Notific@.
🧩 Elementos esenciales
- Entity Framework Core: Marco de trabajo ORM utilizado en .NET para gestionar la persistencia de datos mediante mapeo objeto-relacional.
- Mapeo objeto-relacional (ORM): Técnica que traduce objetos en C# a tablas y relaciones en una base de datos relacional.
- SQL Server y PostgreSQL: Bases de datos relacionales más utilizadas en la AGE para almacenar datos persistentes en aplicaciones .NET.
- Migraciones: Mecanismo de EF Core para gestionar cambios en el esquema de la base de datos de manera controlada y versionada.
- Transacciones ACID: Propiedades que garantizan la atomicidad, consistencia, aislamiento y durabilidad de las operaciones sobre la base de datos.
- Cadena de conexión: Parámetro configurado en appsettings.json que define cómo conectarse a la base de datos, incluyendo credenciales y ubicación.
- Clases de entidad: Clases en C# que representan tablas de la base de datos y sus relaciones, utilizadas por EF Core para el mapeo.
- DbContext: Clase central en EF Core que gestiona la conexión a la base de datos y las operaciones de persistencia.
- LINQ (Language Integrated Query): Lenguaje integrado en C# para consultar datos de manera declarativa, utilizado junto con EF Core.
- Proveedores de base de datos: Componentes que permiten a EF Core interactuar con diferentes sistemas de almacenamiento, como SQL Server o PostgreSQL.
- Datos no relacionales: Sistemas como MongoDB o Azure Cosmos DB, utilizados en la AGE para casos específicos que requieren flexibilidad en el esquema.
- Configuración centralizada: Práctica en la AGE para gestionar parámetros de conexión y configuración de persistencia de manera segura y estandarizada.
🧠 Recuerda
- La persistencia en .NET se gestiona principalmente mediante Entity Framework Core, que simplifica el acceso a bases de datos relacionales.
- Las migraciones en EF Core permiten gestionar cambios en el esquema de la base de datos de forma controlada y versionada.
- Las bases de datos relacionales como SQL Server y PostgreSQL son las más utilizadas en la AGE para aplicaciones .NET.
- Las transacciones ACID garantizan la integridad y consistencia de los datos en operaciones críticas.
- La configuración de la persistencia se realiza mediante archivos como appsettings.json, siguiendo directrices de seguridad.
- .NET también soporta bases de datos no relacionales para casos que requieren flexibilidad en el esquema de datos.
- El DbContext es la clase central en EF Core para gestionar la conexión y las operaciones de persistencia.
- LINQ permite consultar datos de manera declarativa, integrándose con EF Core para generar consultas SQL optimizadas.
- La AGE prioriza la coherencia entre el modelo de datos y la lógica de negocio en sus aplicaciones.
- La persistencia en .NET debe alinearse con los principios de reutilización, interoperabilidad y seguridad establecidos en el ENI y el ENS.
7. Seguridad
7. Seguridad
🎯 Idea clave
- La seguridad en la plataforma .NET se basa en un modelo de permisos y roles integrado en el entorno de ejecución.
- .NET implementa mecanismos de autenticación y autorización para controlar el acceso a recursos y operaciones.
- La gestión de identidades en .NET se apoya en estándares como Windows Identity Foundation (WIF) y ASP.NET Identity.
- La protección de datos en .NET incluye cifrado simétrico y asimétrico, así como la gestión segura de claves.
- La plataforma incorpora herramientas para validar y sanitizar entradas, reduciendo riesgos como inyecciones de código.
- .NET permite configurar políticas de seguridad personalizadas para adaptarse a requisitos específicos de la Administración.
📚 Desarrollo
Modelo de seguridad integrado. La plataforma .NET incorpora un modelo de seguridad basado en el Common Language Runtime (CLR), que gestiona permisos y restricciones durante la ejecución del código. Este modelo permite definir niveles de confianza para ensamblados, limitando su acceso a recursos del sistema según políticas preestablecidas. La Administración puede configurar estos permisos para garantizar que las aplicaciones cumplan con los requisitos de seguridad institucionales.
Autenticación y autorización. .NET ofrece múltiples mecanismos para autenticar usuarios y autorizar accesos. Utiliza ASP.NET Core Identity para gestionar identidades, roles y permisos, facilitando la integración con sistemas de autenticación externos como Active Directory o proveedores de identidad basados en OAuth 2.0 y OpenID Connect. Estos sistemas son esenciales para garantizar que solo usuarios autorizados accedan a servicios y datos sensibles de la Administración.
Protección de datos. La plataforma incluye bibliotecas criptográficas para cifrar datos en tránsito y en reposo. .NET soporta algoritmos como AES para cifrado simétrico y RSA para cifrado asimétrico, así como funciones hash como SHA-256 para garantizar la integridad de la información. Además, proporciona herramientas para gestionar claves de forma segura, evitando su exposición en código fuente o configuraciones no protegidas.
Validación de entradas. Uno de los principales riesgos en aplicaciones web es la inyección de código, como SQL Injection o Cross-Site Scripting (XSS). .NET incluye mecanismos para validar y sanitizar entradas de usuario, como el uso de Entity Framework para consultas parametrizadas o las funciones de escape de Razor en aplicaciones web. Estas herramientas reducen la superficie de ataque y protegen los sistemas de la Administración frente a vulnerabilidades comunes.
Gestión de excepciones y registros. .NET permite configurar sistemas de registro y monitorización para detectar y responder a incidentes de seguridad. Las aplicaciones pueden generar logs detallados de eventos críticos, como intentos de acceso no autorizados o fallos en la autenticación. Estos registros son fundamentales para cumplir con los requisitos de auditoría y trazabilidad establecidos en normativas como el Esquema Nacional de Seguridad (ENS).
Configuración de políticas. La plataforma ofrece flexibilidad para definir políticas de seguridad adaptadas a las necesidades de la Administración. Por ejemplo, se pueden establecer restricciones en el acceso a archivos, redes o bases de datos mediante configuraciones en el archivo app.config o web.config. Estas políticas permiten alinear las aplicaciones con los principios de mínimo privilegio y defensa en profundidad, reduciendo el impacto potencial de brechas de seguridad.
Integración con servicios externos. .NET facilita la integración con servicios de seguridad externos, como sistemas de Single Sign-On (SSO) o plataformas de gestión de identidades. Esto es especialmente relevante en entornos de la Administración, donde es común la interoperabilidad entre distintos sistemas y organismos. La plataforma soporta estándares como SAML 2.0 y WS-Federation, garantizando una comunicación segura entre aplicaciones.
🧩 Elementos esenciales
- CLR (Common Language Runtime): Entorno de ejecución que gestiona permisos y restricciones de seguridad para ensamblados en .NET.
- ASP.NET Core Identity: Framework para gestionar identidades, roles y permisos en aplicaciones web de la Administración.
- Cifrado simétrico (AES): Algoritmo utilizado para proteger datos en reposo y en tránsito mediante claves compartidas.
- Cifrado asimétrico (RSA): Método de cifrado que utiliza pares de claves pública y privada para garantizar la confidencialidad.
- Validación de entradas: Mecanismos para prevenir inyecciones de código, como consultas parametrizadas o sanitización de datos.
- Entity Framework: Herramienta para acceder a bases de datos de forma segura, evitando vulnerabilidades como SQL Injection.
- Razor: Motor de vistas que incluye funciones de escape para prevenir Cross-Site Scripting (XSS).
- Políticas de seguridad: Configuraciones en archivos como app.config para restringir accesos a recursos según el principio de mínimo privilegio.
- Windows Identity Foundation (WIF): Framework para integrar sistemas de autenticación externos en aplicaciones .NET.
- OAuth 2.0 y OpenID Connect: Estándares para autenticación y autorización en servicios web, compatibles con .NET.
- Logs y monitorización: Sistemas para registrar eventos de seguridad y cumplir con requisitos de auditoría del ENS.
- SAML 2.0 y WS-Federation: Protocolos para implementar Single Sign-On (SSO) en entornos de la Administración.
🧠 Recuerda
- La seguridad en .NET se basa en el CLR, que gestiona permisos durante la ejecución del código.
- ASP.NET Core Identity es clave para gestionar identidades, roles y permisos en aplicaciones web.
- El cifrado de datos en .NET incluye algoritmos como AES y RSA para proteger información sensible.
- La validación de entradas es esencial para prevenir vulnerabilidades como SQL Injection o XSS.
- .NET permite configurar políticas de seguridad personalizadas para adaptarse a los requisitos de la Administración.
- Los logs y registros son fundamentales para cumplir con normativas como el Esquema Nacional de Seguridad (ENS).
- La plataforma soporta estándares como OAuth 2.0, OpenID Connect y SAML 2.0 para autenticación y autorización.
- La integración con servicios externos, como Active Directory, facilita la gestión de identidades en entornos institucionales.
- El principio de mínimo privilegio debe guiar la configuración de permisos en aplicaciones .NET.
- La sanitización de datos y el uso de consultas parametrizadas reducen riesgos de inyección de código.