Tipos de aplicaciones .NET. Comprender los conceptos de .NET Framework ¿Cuál es el propósito de la especificación de lenguaje común (CLS)?

14.09.2022

.NET Framework es un componente integrado de Windows que admite la creación y ejecución de la próxima generación de aplicaciones XML y servicios web. Los siguientes objetivos se tuvieron en cuenta al desarrollar .NET Framework.

· Proporcionar un entorno de programación coherente orientado a objetos para almacenar y ejecutar código de objeto localmente, para la ejecución local de código distribuido a través de Internet o para la ejecución remota.

· Proporcionar un entorno de ejecución de código que minimice los conflictos en la implementación de software y el control de versiones.

· Proporcionar un entorno de ejecución de código que garantice la ejecución segura de código, incluido el código creado por un tercero desconocido o que no sea de total confianza.

· Proporcione un entorno de ejecución de código que elimine los problemas de rendimiento con entornos de secuencias de comandos o código interpretado.

· Garantizar una experiencia de desarrollador coherente en diferentes tipos de aplicaciones, como aplicaciones de Windows y aplicaciones web.

· Desarrollar una interoperabilidad estándar de la industria que integre el código de .NET Framework con cualquier otro código.

Los dos componentes principales de .NET Framework son Common Language Runtime (CLR) y la biblioteca de clases de .NET Framework. El núcleo de .NET Framework es CLR. El tiempo de ejecución se puede considerar como un agente que gestiona el código en tiempo de ejecución y proporciona servicios básicos como gestión de memoria, subprocesos y comunicación remota. Esto impone fuertes condiciones de tipeo y otros tipos de controles de precisión del código que garantizan la seguridad y la confiabilidad. De hecho, la tarea principal del tiempo de ejecución es administrar el código. El código que accede al tiempo de ejecución se denomina código administrado y el código que no accede al tiempo de ejecución se denomina código no administrado. El otro componente central de .NET Framework, la biblioteca de clases, proporciona una colección completa orientada a objetos de tipos que se utilizan para desarrollar aplicaciones que van desde aplicaciones convencionales de línea de comandos o GUI hasta aplicaciones que utilizan las funciones de tecnología ASP.NET más recientes. , como formularios web y servicios web XML.

.NET Framework se puede hospedar en componentes no administrados que cargan Common Language Runtime (CLR) en sus propios procesos y ejecutan código administrado, creando así un entorno de programación que permite herramientas de ejecución administradas y no administradas. .NET Framework no solo proporciona varios tiempos de ejecución base, sino que también admite el desarrollo de tiempos de ejecución base de terceros.


Por ejemplo, ASP.NET aloja el tiempo de ejecución para proporcionar un entorno del lado del servidor escalable para el código administrado. ASP.NET funciona directamente con el tiempo de ejecución para habilitar las aplicaciones ASP.NET y los servicios web XML, los cuales se describen más adelante en este tema.

Internet Explorer es un ejemplo de una aplicación no administrada que aloja el tiempo de ejecución (en forma de extensión de tipo MIME). El uso de Internet Explorer para hospedar el tiempo de ejecución le permite incrustar componentes administrados o controles de Windows Forms en documentos HTML. Alojar el tiempo de ejecución de esta manera hace posible el código móvil administrado (similar a los controles ActiveX® de Microsoft®), pero con mejoras significativas que solo el código administrado puede ofrecer, como la ejecución semi-confiable y el almacenamiento de archivos aislado.

La siguiente ilustración muestra la relación de Common Language Runtime y la biblioteca de clases con sus aplicaciones y con el sistema en general. La ilustración también muestra cómo funciona el código administrado dentro de una arquitectura más grande.

NET Framework en contexto

Las siguientes secciones describen los principales componentes y características de .NET Framework con mayor detalle.


Por ejemplo, ASP.NET aloja el tiempo de ejecución y proporciona un entorno escalable para el código administrado en el lado del servidor. ASP.NET funciona directamente con el tiempo de ejecución para ejecutar las aplicaciones ASP.NET y los servicios web XML que se analizan más adelante en este tema.

Internet Explorer es un ejemplo de una aplicación no administrada que aloja un entorno de tiempo de ejecución (en forma de extensiones de tipo MIME). Alojar el tiempo de ejecución en Internet Explorer le permite incrustar componentes administrados o controles de Windows Forms en documentos HTML. Este alojamiento de entorno permite que se ejecute el código móvil administrado (similar a los controles ActiveX® de Microsoft®), pero con los beneficios significativos del código administrado, como la ejecución de confianza parcial y el almacenamiento de archivos aislado.

La siguiente figura muestra cómo el Common Language Runtime (CLR) y la biblioteca de clases están relacionados con las aplicaciones de usuario y todo el sistema. La figura también muestra cómo funciona el código administrado dentro de la arquitectura más amplia.

NET Framework en contexto

Las siguientes secciones proporcionan una descripción más detallada de los principales componentes y características de .NET Framework.

Es uno de los lenguajes de programación más populares, multifuncionales y en desarrollo activo en este momento. Con él, puede desarrollar casi cualquier software, desde simples formularios de ganancias aplicaciones, a grandes aplicaciones web de cliente/servidor, o incluso aplicaciones móviles y juegos de PC. Y funciona sobre la base de .NET Framework. Averigüemos qué es.

Mire mi video sobre .NET Framework y CLR Runtime para C#

lenguaje de programación c# Está relativamente fresco, pero ya ha logrado ganarse la confianza. El lanzamiento de la primera versión tuvo lugar en febrero de 2002. La última versión del lenguaje en el momento de escribir este artículo es C# 7.2, que se lanzó el 16/08/2017.

La sintaxis del lenguaje C#, como su nombre lo indica, pertenece a la familia de lenguajes similares a C y es similar a otros lenguajes populares de este grupo (C++, Java). Por lo tanto, si ya estás familiarizado con uno de estos lenguajes, te resultará mucho más fácil dominar el lenguaje de programación C#.

Dado que C# es un lenguaje orientado a objetos, admite herencia, polimorfismo, encapsulación, tipado variable fuerte, sobrecarga de operadores y más. Todos estos conceptos serán tratados en detalle en artículos posteriores. Gracias al uso del paradigma del diseño orientado a objetos, utilizando un lenguaje de programación, es bastante fácil desarrollar proyectos a gran escala y al mismo tiempo flexibles. Con todo esto, regularmente se lanzan nuevas versiones del lenguaje C#, agregando nuevas funcionalidades para simplificar la vida de un desarrollador, aumentar la velocidad de desarrollo, mejorar el rendimiento y la confiabilidad de la aplicación.

plataforma .NET

.NET Framework es una plataforma de software de la empresa microsoft permitiendo el desarrollo en varios lenguajes de programación, ya que se utiliza un único entorno de ejecución de lenguaje común para todos los lenguajes Tiempo de ejecución de lenguaje común (CLR). Así, las principales características de la plataforma .NET son:

  • multiplataforma- .NET Framework compatible con la mayoría de los sistemas operativos modernos Windows, así como la capacidad de crear aplicaciones compatibles con los sistemas Linux e incluso aplicaciones móviles.
  • Plurilingüe- dado que el código fuente escrito en el lenguaje de programación utilizado se traduce al lenguaje común Código de lenguaje intermedio común (CIL), es posible desarrollar en cualquier lenguaje de programación compatible e incluso usar diferentes lenguajes de programación en una solución. Los lenguajes admitidos más populares son C#, VB.NET, C++, F#.
  • Amplia biblioteca de clases y tecnologías.- hay una gran cantidad de bibliotecas listas para usar para resolver las tareas necesarias. A menudo, no tiene que implementar la lógica de bajo nivel de la aplicación en absoluto, es suficiente usar una solución lista para usar que se entrega convenientemente a través del administrador de paquetes nuget. Además, la plataforma .NET facilita el desarrollo de casi cualquier tipo de software que necesite.

Código administrado y no administrado. Compilación JAT

código administrado es un código administrado por Common Language Runtime (CLR). Esto significa que el entorno de control tiene la capacidad de pausar la ejecución de la aplicación y obtener información específica sobre el estado de la aplicación en cualquier momento durante su ejecución. El código fuente del lenguaje de programación utilizado se traduce en código CIL administrado (también llamado ensamblador de alto nivel).

Después de crear una biblioteca de clases o una aplicación, el código fuente continúa almacenándose en CIL. Y cuando se inicia la aplicación o se accede a la biblioteca, se realiza Just-In-Time ( JAT) compilación de una aplicación en código de máquina específico para el entorno en el que se ejecuta la aplicación. Al mismo tiempo, una característica importante es que solo se compila la parte de la aplicación o biblioteca a la que se accede (bueno, los enlaces, por supuesto). Esto le permite aumentar el rendimiento del sistema y ahorrar recursos.

Código no administrado- este es el código que se traduce directamente en código ejecutable por máquina y es ejecutado directamente por el sistema operativo.

Además, recomiendo leer el artículo. Y también suscríbase al grupo VKontakte, Telegram y al canal de YouTube. No es aún más útil e interesante para los programadores.

NET Framework sirve como marco para admitir, desarrollar y ejecutar aplicaciones distribuidas que se basan en componentes (controles).

Las aplicaciones (programas) se pueden desarrollar en diferentes lenguajes de programación que soporten esta tecnología.

NET Framework proporciona:

  • compartir diferentes lenguajes de programación;
  • seguridad y portabilidad de programas;
  • modelo de programación común basado en la plataforma Windows.

2. ¿Cuáles son los principales componentes de .NET Framework?

Desde el punto de vista de la programación, .NET Framework consta de dos componentes principales:

  • tiempo de ejecución de lenguaje común CLR (Tiempo de ejecución de lenguaje común);
  • biblioteca de clases base.

Common Language Runtime resuelve los problemas de detección, carga y manipulación automática de tipos .NET. Common Language Runtime maneja la administración de memoria, el mantenimiento de aplicaciones, el manejo de subprocesos e implementa numerosas comprobaciones relacionadas con la seguridad.

La biblioteca de clases base incluye la definición de varias primitivas, que pueden ser: secuencias, API gráficas, implementaciones de bases de datos, E/S de archivos, etc.

3. ¿Cuál es el principio de funcionamiento de Common Language Runtime CLR (Common Language Runtime)?

Common Language Runtime (CLR) administra la ejecución del código .NET.

Después de compilar un programa en C# (u otro lenguaje), se crea un archivo que contiene un tipo especial de pseudocódigo o código de bytes (en lugar de un archivo ejecutable, como ocurría antes). Este pseudocódigo se denomina (MSIL) o Common Intermediate Language (CIL). Este pseudocódigo es el lenguaje intermedio de Microsoft.

El objetivo principal de CLR es convertir el código intermedio de MSIL en código ejecutable durante la ejecución del programa.

Cualquier programa compilado en pseudocódigo MSIL se puede ejecutar en cualquier entorno que contenga una implementación de CLR. Esto hace que los programas sean portátiles en .NET Framework.

Arroz. 1. El proceso de convertir código fuente a código MSIL (CIL o IL) y crear un archivo ensamblador (*.dll o *.exe)

Después de eso, el pseudocódigo se convierte en código ejecutable. Esto lo hace el compilador JIT. La compilación JIT (Just-in-time) es una compilación sobre la marcha.

El Common Language Runtime (CLR) se encarga de determinar la ubicación del ensamblado (assembly).

El tipo solicitado que se hospeda en el ensamblado (por ejemplo, la clase ArrayList u otro tipo) se determina en el archivo binario (*.dll o *.exe) al leer los metadatos de ese archivo.

El CLR luego asigna el tipo leído del ensamblado a la memoria.

El CLR luego convierte el código CIL en instrucciones apropiadas que son específicas de la plataforma (según la PC, el sistema operativo, etc.). Además, en esta etapa se realizan los controles de seguridad necesarios.

El último es la ejecución del código del programa solicitado.

4. ¿Qué es el lenguaje intermedio MSIL ( Idioma intermedio de Microsoft) o CIL (lenguaje intermedio común)?

Al principio, el lenguaje intermedio del pseudocódigo se llamaba Idioma intermedio de Microsoft(MSIL). Más tarde (en versiones recientes de .NET), este nombre se cambió a Common Intermediate Language (CIL). Las abreviaturas MSIL, CIL e IL (Lenguaje Intermedio) significan lo mismo.

El lenguaje intermedio CIL (o MSIL) se forma después de compilar un programa en algún lenguaje de programación que admita .NET Framework.

MSIL es pseudocódigo. MSIL define un conjunto de instrucciones que:

  • puede ser portado a diferentes plataformas;
  • no dependen de un procesador en particular.

De hecho, MSIL es lenguaje ensamblador portátil

5. ¿Qué es ensamblar (assembly) en términos de tecnología .NET?

Los ensamblados son archivos *.dll o *.exe que contienen instrucciones independientes de la plataforma .NET en lenguaje intermedio (IL), así como metadatos de tipo.

El ensamblado se crea utilizando el compilador .NET. Un ensamblaje es un blob.

El ensamblado está diseñado para preservar espacios de nombres ( namespaces ). Los espacios de nombres contienen tipos. Los tipos pueden ser clases, delegados, interfaces, enumeraciones, estructuras.

Un ensamblado puede contener cualquier número de espacios de nombres. Cualquier espacio de nombres puede contener cualquier cantidad de tipos (clases, interfaces, estructuras, enumeraciones, delegados).

6. ¿Qué se coloca en las asambleas?

Los ensamblados contienen código CIL (código MSIL o código IL) y metadatos.

El código CIL se compila para una plataforma específica solo si se accede desde el tiempo de ejecución de .NET.

Los metadatos describen en detalle las características de cada tipo que existe dentro de una entidad binaria .NET dada.

Por ejemplo, cuando crea una aplicación de tipo Aplicación de Windows Forms en C#, se crea un archivo Assembly.info. Este archivo se encuentra en la subcarpeta Propiedades relativa a la carpeta principal del programa. Este archivo contiene información general sobre el ensamblaje.

7. ¿Qué es un manifiesto (manifiesto)?

Manifiesto es una descripción del ensamblaje en sí usando metadatos.

El manifiesto contiene la siguiente información:

  • sobre la versión de ensamblaje actual;
  • información sobre cultura (localización de recursos gráficos e inline);
  • una lista de referencias a todos los ensamblajes externos que se necesitan para el correcto funcionamiento.

8. Diagrama de interacción entre código fuente, compilador .NET y motor de ejecución .NET.

El programador crea el código fuente de la aplicación en un lenguaje que soporte la tecnología .NET (C#, C++/CLI, Visual Basic .NET, etc.). La aplicación se crea en algún entorno de programación como Microsoft Visual Studio. El compilador genera un ensamblado, un archivo que contiene instrucciones CIL, metadatos y un manifiesto.

Después de ejecutar esta aplicación en alguna computadora (alguna plataforma), se inicia el motor de tiempo de ejecución .NET. Previamente, una de las versiones (al menos) de .NET Framework debe estar instalada en la computadora.

Si las bibliotecas de clases base se utilizan en el código fuente (por ejemplo, desde el ensamblado mscorlib.dll ), se cargan mediante el cargador de clases.

El compilador JIT compila el ensamblaje teniendo en cuenta (vinculando) las características de hardware y software de la computadora en la que se inicia la aplicación.

Después de eso, se ejecuta la aplicación.

Figura 2. Relación entre el código fuente, el compilador y el motor de tiempo de ejecución de .NET

9. ¿Cuáles son los tipos de montajes?

Hay dos tipos de construcciones:

  • ensamblajes de un solo archivo;
  • ensamblajes de varios archivos.

Un ensamblado que consta de un solo módulo (*.dll o *.exe) se denomina ensamblado de un solo archivo. En los ensamblajes de un solo archivo, todas las instrucciones, metadatos y manifiestos de CIL necesarios se colocan en un solo paquete bien definido.

Un ensamblado que consta de muchos archivos binarios de .NET se denomina ensamblado de varios archivos. Cada uno de estos archivos se denomina módulo.

En un ensamblaje de varios archivos, uno de los módulos es el principal (primario).

10. ¿Qué archivo contiene el ensamblado principal de la biblioteca de MS Visual Studio?

El ensamblaje principal se encuentra en el archivo "mscorlib.dll".

11. ¿Qué es el sistema de tipo común CTS?

CTS (Common Type System) es un sistema de tipos que contiene una descripción completa de todos los posibles tipos de datos y construcciones de programación compatibles con Common Language Runtime CLR. También describe cómo estas entidades pueden interactuar entre sí.

Los tipos pueden ser clases, interfaces, estructuras, enumeraciones, delegados.

12. ¿Cuál es el propósito de la especificación de lenguaje común (CLS)?

Como sabes, no todos los lenguajes de programación que son compatibles con .NET pueden soportar la funcionalidad del sistema tipo CTS. Para ello se utiliza la Common Language Specification (CLS).

El objetivo de CLS es describir solo ese subconjunto de tipos comunes y construcciones de programación que son aceptados por absolutamente todos los lenguajes de programación que admiten .NET.

13. ¿Qué lenguajes de programación soportan la tecnología .NET?

En el sistema de desarrollo de aplicaciones MS Visual Studio, la tecnología .NET es compatible con los siguientes lenguajes de programación: C#, Visual Basic .NET, C++/CLI, JScript .NET, F#, J#.

Para poder utilizar la tecnología .NET, debe instalar un software en su computadora Kit de desarrollo de software de Microsoft .NET Framework(SDK) o Microsoft Visual Studio de cualquier versión.

14. ¿Qué es un espacio de nombres (namespace)?

Un espacio de nombres está destinado a agrupar un grupo de tipos que están relacionados semánticamente. Los tipos se colocan en ensamblajes (assembly). Los tipos se entienden como clases, delegados, interfaces, estructuras, enumeraciones.

Ejemplos de nombres de espacios de nombres:

Sistema Datos de sistema Sistema.IO System.Collections System.Threading.Tasks

Por ejemplo, el espacio de nombres System.Data contiene los tipos básicos para trabajar con bases de datos y el espacio de nombres System.Collections contiene los tipos básicos para trabajar con colecciones.

15. ¿Cómo mostrar el contenido de ensamblados, espacios de nombres y tipos en MS Visual Studio?

El sistema Microsoft Visual Studio tiene la utilidad Examinador de objetos, que se llama desde el menú Ver (Figura 3).

Arroz. 3. Llamar a la Utilidad del Examinador de Objetos

Esto abrirá la ventana Explorador de objetos, que mostrará ensamblajes que se utilizan en una tecnología particular.

La figura 4 muestra una lista de ensamblajes que se muestran en la tecnología ".NET Framework 4". Se seleccionó un ensamblado llamado "mscorlib".

Arroz. 4. Ventana del Explorador de objetos con el ensamblado mscorlib.dll resaltado

Si expande el contenido del ensamblado mscorlib (el " + ”), luego se mostrará una lista de todos los espacios de nombres de este ensamblado (Figura 5). Como puede ver en la figura, el ensamblado incluye los espacios de nombres Microsoft.Win32 , System , System.Collections , System.Collections.Concurrent y muchos más.

Arroz. 5. El ensamblado mscorlib y la lista de espacios de nombres que se incluyen en él

Cualquiera de los espacios de nombres se expande de manera similar. Los espacios de nombres describen tipos. Los tipos describen métodos, propiedades, constantes, etc.

La Figura 6 muestra la clase BinaryReader del espacio de nombres System.IO. Aparentemente, la clase implementa métodos llamados BinaryReader() , Close() , Dispose() , FillBuffer() y otros.

Arroz. 6. El contenido de la clase BinaryReader

16. ¿Cómo incluir un espacio de nombres en un programa C#?

La palabra clave using se usa para incluir un espacio de nombres

Buenos días. Alexey Gulynin está en contacto. En este primer artículo sobre C#, me gustaría hablar sobre la plataforma .NET Framework. El lenguaje C# y la propia plataforma aparecieron por primera vez en 2002. El objetivo principal de su creación fue proporcionar un modelo de programación más simple, escalable y, lo que es más importante, más potente que el modelo de programación COM. Basado en .NET Framework, puede crear aplicaciones para la familia de sistemas operativos Windows, también puede crear aplicaciones para Unix, Linux, Mac OS X. A continuación se muestra un resumen lista de funciones admitidas por .NET Framework:

1) Habilidad para interactuar con el código existente. Esta función le permite compilar componentes COM binarios y componentes .NET, por ejemplo.
2) Soporte para varios lenguajes de programación.. Las aplicaciones .NET se pueden crear usando varios lenguajes de programación, como C#, Visual Basic, F#.
3) Mecanismo general de ejecución. El punto aquí es que .NET tiene un conjunto específico de tipos que todos los lenguajes compatibles con .NET pueden entender.
4) Integración de idiomas. Puede escribir una clase en Visual Basic y luego extenderla en C#.
5) Gran biblioteca de clases base. Gracias a esta biblioteca, podemos olvidarnos de las complejidades de implementar llamadas API de bajo nivel y solo centrarnos en la programación.
6) Modelo de implementación simple. A diferencia de la biblioteca COM, .NET no necesita registrarse en el registro. Puede existir como un ensamblado.dll.

Quizás aquí escribí sobre algunas cosas oscuras, por ejemplo, clases, API. No vale la pena la molestia por ahora. En principio se puede programar sin saber todo esto, pero como vamos aprendiendo, diluyamos bastante la práctica con la teoría.
Para terminar completamente con la teoría, te hablaré de los principales bloques de construcción de la plataforma .NET:

1) CLR (Tiempo de ejecución de lenguaje común): tiempo de ejecución de lenguaje común. La tarea principal de este entorno es cargar y administrar objetos .NET (para que el programador no tenga que hacerlo manualmente). Además, CLR se ocupa de una serie de detalles de bajo nivel, como la gestión de la memoria, el diseño de la aplicación y las comprobaciones de seguridad de la aplicación.
2) CTS (Common Type System) - un sistema de tipo común. Todos los tipos de datos posibles admitidos por el entorno de tiempo de ejecución (CLR) se describen aquí. Debe tener en cuenta que es posible que un solo idioma no admita absolutamente todas las características definidas por la especificación CTS. Por lo tanto, hay:
3) CLS (Especificación de lenguaje común). Describe un subconjunto de tipos comunes y construcciones de programación que deben ser compatibles con todos los lenguajes de programación para .NET Framework.

Además de las especificaciones CLR y CTS/CLS, la plataforma .NET proporciona biblioteca de clases base, que está disponible para todos los lenguajes de programación .NET. Esta biblioteca le permite administrar, por ejemplo, E/S de archivos, gráficos, varios dispositivos externos, flujos de datos y varios servicios a un alto nivel (sin pensar en los detalles de implementación).

No soy un maestro en escribir teoría, así que diré que para aquellos que quieran entender la filosofía de .NET en profundidad, recomiendo leer el primer capítulo del libro de Andrew Troelsen "El lenguaje de programación C # 5.0 y el .NET 4.5 Plataforma, publicado en 2013". Este resumen de la plataforma .NET proviene de este libro. El problema que encontré al estudiar este libro es la dificultad de presentar el material para un principiante. Puede que no lo creas, esta es solo mi opinión.

Bueno, mis amigos, ¿aún quieren aprender C#? Luego, avancemos con valentía, prometo que en el futuro habrá un mínimo de artículos teóricos (aunque solo sea al comienzo del aprendizaje de C#), solo una práctica. Si necesita una teoría, "fume" el libro de Andrew Troelsen.
Y así, si necesitas cualquier información sobre una clase o su método, ve directamente a

.NET Framework es uno de los componentes del sistema Windows. Le permite crear y utilizar aplicaciones de próxima generación. Finalidad de la plataforma .NET Framework :

  • creación de un coherente entorno de programación orientado a objetos permitiendo varias opciones de implementación: el código se puede almacenar y ejecutar localmente; ejecutarse localmente y distribuirse a través de Internet; o ejecutar de forma remota
  • proporcionar un entorno de ejecución de código que minimice la implementación de software y los conflictos de versiones;
  • garantizar la seguridad de la ejecución del código en el entorno, incluido el código creado por un desarrollador desconocido o un desarrollador con confianza parcial;
  • proporcionar un entorno de ejecución de código para abordar los problemas de rendimiento en entornos basados ​​en guiones o basados ​​en la interpretación;
  • unificando el trabajo de los desarrolladores en aplicaciones completamente diferentes: tanto en aplicaciones Windows como en aplicaciones web;
  • el uso de estándares de la industria en todas las áreas de intercambio de datos y, como resultado, garantizar la compatibilidad del código creado en .NET Framework con otros programas.