El .NET Framework (pronunciado como " punto net" ) es un marco de software desarrollado por Microsoft que se ejecuta principalmente en Microsoft Windows . Incluye una gran biblioteca de clases llamada Framework Class Library (FCL) y proporciona interoperabilidad de lenguajes (cada lenguaje puede usar código escrito en otros lenguajes) en varios lenguajes de programación . Los programas escritos para .NET Framework se ejecutan en un entorno de software (a diferencia de un entorno de hardware ) denominado Common Language Runtime (CLR). El CLR es unmáquina virtual de aplicaciones que proporciona servicios como seguridad, administración de memoria y manejo de excepciones . Como tal, el código de computadora escrito con .NET Framework se denomina " código administrado ". FCL y CLR juntos constituyen .NET Framework.
Desarrollador (es) | Microsoft |
---|---|
Versión inicial | 14 de febrero de 2002 |
Lanzamiento final | 4.8.0 Build 3928/25 de julio de 2019 [1] |
Sistema operativo | Windows 98 o posterior, Windows NT 4.0 o posterior |
Sucesor | .NETO |
Tipo | Marco de software |
Licencia | Mezclado; ver § Licencias |
Sitio web | dotnet |
FCL proporciona la interfaz de usuario , acceso a datos , conectividad de bases de datos , criptografía , desarrollo de aplicaciones web , algoritmos numéricos y comunicaciones de red . Los programadores producen software combinando su código fuente con .NET Framework y otras bibliotecas. El marco está diseñado para ser utilizado por la mayoría de las aplicaciones nuevas creadas para la plataforma Windows. Microsoft también produce un entorno de desarrollo integrado para software .NET llamado Visual Studio .
.NET Framework comenzó como software propietario , aunque la empresa trabajó para estandarizar la pila de software casi de inmediato, incluso antes de su primer lanzamiento. A pesar de los esfuerzos de estandarización, los desarrolladores, principalmente aquellos en las comunidades de software libre y de código abierto , expresaron su malestar con los términos seleccionados y las perspectivas de cualquier implementación libre y de código abierto, especialmente con respecto a las patentes de software . Desde entonces, Microsoft ha cambiado el desarrollo de .NET para seguir más de cerca un modelo contemporáneo de un proyecto de software desarrollado por la comunidad, incluida la publicación de una actualización de su patente que promete abordar las preocupaciones. [2]
En abril de 2019, Microsoft lanzó .NET Framework 4.8, la última versión del marco como oferta propietaria. Desde entonces, solo se han publicado correcciones mensuales de errores de seguridad y confiabilidad para esa versión. No se planean más cambios en esa versión. [3]
Historia
Microsoft comenzó a desarrollar .NET Framework a fines de la década de 1990, originalmente bajo el nombre de Next Generation Windows Services (NGWS), como parte de la estrategia .NET . A principios de 2000, se lanzaron las primeras versiones beta de .NET 1.0.
En agosto de 2000, Microsoft e Intel trabajaron para estandarizar Common Language Infrastructure (CLI) y C # . En diciembre de 2001, ambas normas fueron ratificadas por Ecma International (ECMA). [4] [5] La Organización Internacional de Normalización (ISO) siguió en abril de 2003. La versión actual de las normas ISO son ISO / IEC 23271: 2012 e ISO / IEC 23270: 2006. [6] [7]
Si bien Microsoft y sus socios poseen patentes para CLI y C #, ECMA e ISO requieren que todas las patentes esenciales para la implementación estén disponibles bajo " términos razonables y no discriminatorios ". Las empresas acordaron cumplir con estos términos y hacer que las patentes estuvieran disponibles sin derechos de autor. Sin embargo, esto no se aplica a la parte de .NET Framework no cubierta por los estándares ECMA-ISO, que incluyen Windows Forms , ADO.NET y ASP.NET . Las patentes que posee Microsoft en estas áreas pueden haber disuadido las implementaciones del marco completo que no son de Microsoft. [8]
El 3 de octubre de 2007, Microsoft anunció que el código fuente para las bibliotecas .NET Framework 3.5 estaría disponible bajo la Licencia de origen de referencia de Microsoft (Ms-RSL [a] ). [9] El repositorio de código fuente estuvo disponible en línea el 16 de enero de 2008 e incluía BCL, ASP.NET, ADO.NET, Windows Forms, WPF y XML. Scott Guthrie de Microsoft prometió que se agregarían bibliotecas LINQ, WCF y WF. [10]
Las variantes .NET Compact Framework y .NET Micro Framework del .NET Framework proporcionaron soporte para otras plataformas de Microsoft como Windows Mobile , Windows CE y otros dispositivos integrados con recursos limitados. Silverlight proporcionó soporte para navegadores web a través de complementos.
En noviembre de 2014, Microsoft también presentó una actualización de sus concesiones de patentes, que amplía aún más el alcance más allá de sus compromisos anteriores. Proyectos anteriores como Mono existían en un área gris legal porque las concesiones anteriores de Microsoft se aplicaban solo a la tecnología en "especificaciones cubiertas", incluidas estrictamente las 4ª ediciones de ECMA-334 y ECMA-335. La nueva promesa de patente, sin embargo, no pone límite a la versión de la especificación, e incluso se extiende a cualquier tecnología en tiempo de ejecución .NET documentada en MSDN que no haya sido especificada formalmente por el grupo ECMA, si un proyecto elige implementarlas. Esto permite que Mono y otros proyectos mantengan la paridad de características con las características modernas de .NET que se han introducido desde que se publicó la cuarta edición sin correr el riesgo de un litigio de patentes sobre la implementación de esas características. La nueva subvención mantiene la restricción de que cualquier implementación debe mantener un cumplimiento mínimo de las partes obligatorias de la especificación CLI. [11]
El 31 de marzo de 2016, Microsoft anunció en Microsoft Build que volvería a licenciar por completo Mono bajo una licencia MIT incluso en escenarios donde antes se necesitaba una licencia comercial. [12] Microsoft también complementó su promesa de patente anterior para Mono, indicando que no afirmarán ninguna "patente aplicable" contra las partes que estén "usando, vendiendo, ofreciendo en venta, importando o distribuyendo Mono". [13] [14] Se anunció que el Proyecto Mono se contribuyó a la Fundación .NET. Estos desarrollos siguieron a la adquisición de Xamarin , que comenzó en febrero de 2016 y finalizó el 18 de marzo de 2016. [15]
El comunicado de prensa de Microsoft destaca que el compromiso multiplataforma ahora permite una pila .NET moderna y de código abierto. Microsoft lanzó el código fuente para WPF, Windows Forms y WinUI el 4 de diciembre de 2018. [16]
Arquitectura
Infraestructura de lenguaje común
Common Language Infrastructure (CLI) proporciona una plataforma independiente del lenguaje para el desarrollo y la ejecución de aplicaciones. Al implementar los aspectos centrales de .NET Framework dentro del alcance de la CLI, estas funciones no estarán vinculadas a un idioma, sino que estarán disponibles en los muchos idiomas admitidos por el marco.
Common Language Runtime
.NET Framework incluye Common Language Runtime (CLR). Sirve como motor de ejecución de .NET Framework y ofrece muchos servicios como administración de memoria , seguridad de tipos , manejo de excepciones , recolección de basura , seguridad y administración de subprocesos . Todos los programas escritos para .NET Framework son ejecutados por CLR.
Los programas escritos para .NET Framework se compilan en código de lenguaje intermedio común (CIL), en lugar de compilarse directamente en código de máquina . Durante la ejecución, un compilador justo a tiempo (JIT) específico de la arquitectura convierte el código CIL en código de máquina.
Ensambles
El código CIL compilado se almacena en ensamblados CLI . Como exige la especificación, los ensamblados se almacenan en formato de archivo Portable Executable (PE), común en la plataforma Windows para todas las bibliotecas de vínculos dinámicos (DLL) y archivos EXE ejecutables . Cada ensamblado consta de uno o más archivos, uno de los cuales debe contener un manifiesto con los metadatos del ensamblado. El nombre completo de un ensamblado (que no debe confundirse con el nombre del archivo en el disco) contiene su nombre de texto simple, número de versión, cultura y token de clave pública . Los ensamblados se consideran equivalentes si comparten el mismo nombre completo.
El creador del ensamblado también puede utilizar una clave privada para una nomenclatura segura . El token de clave pública identifica con qué clave privada está firmado un ensamblado. Solo el creador del par de claves (normalmente la persona que firma el ensamblado) puede firmar ensamblados que tienen el mismo nombre seguro que un ensamblado de la versión anterior, ya que el creador posee la clave privada. Se requiere una nomenclatura segura para agregar ensamblados a la caché de ensamblados global .
A partir de Visual Studio 2015, la tecnología de compilación .NET Native permite la compilación de código .NET de aplicaciones de la Plataforma universal de Windows directamente en código máquina en lugar de código CIL, pero la aplicación debe estar escrita en C # o Visual Basic.NET. [17]
Biblioteca de clases
.NET Framework incluye una implementación de las bibliotecas estándar fundamentales de la CLI . La biblioteca de clases de .NET Framework (FCL) está organizada en una jerarquía de espacios de nombres . La mayoría de las interfaces de programación de aplicaciones (API) integradas forman parte de los espacios de nombres de System.*
o Microsoft.*
. Estas bibliotecas de clases implementan muchas funciones comunes, como lectura y escritura de archivos, representación gráfica, interacción con bases de datos y manipulación de documentos XML. Las bibliotecas de clases están disponibles para todos los lenguajes compatibles con CLI . FCL implementa la biblioteca de clases base CLI (BCL) y otras bibliotecas de clases; algunas están especificadas por CLI y otras son específicas de Microsoft.
BCL incluye un pequeño subconjunto de toda la biblioteca de clases y es el conjunto central de clases que sirven como API básica de CLR. [18] Para .NET Framework, la mayoría de las clases consideradas como parte de BCL residen en mscorlib.dll
, System.dll
y System.Core.dll
. Las clases BCL están disponibles en .NET Framework, así como en sus implementaciones alternativas, incluidas .NET Compact Framework , Microsoft Silverlight , .NET Core y Mono .
FCL hace referencia a toda la biblioteca de clases que se envía con .NET Framework. Incluye un conjunto ampliado de bibliotecas, que incluyen BCL, Windows Forms , ASP.NET y Windows Presentation Foundation (WPF), pero también extensiones para las bibliotecas de clases base ADO.NET , Language Integrated Query (LINQ), Windows Communication Foundation (WCF). y Workflow Foundation (WF). FCL tiene un alcance mucho mayor que las bibliotecas estándar para lenguajes como C ++ , y es comparable en alcance a las bibliotecas estándar de Java .
Con la introducción de implementaciones alternativas (por ejemplo, Silverlight), Microsoft introdujo el concepto de Bibliotecas de clases portátiles (PCL) que permiten que una biblioteca consumidora se ejecute en más de una plataforma. Con la mayor proliferación de plataformas .NET, el enfoque PCL no logró escalar (los PCL son intersecciones definidas de la superficie API entre dos o más plataformas). [19] Como siguiente paso evolutivo de PCL, la biblioteca estándar .NET se creó de forma retroactiva basada en las System.Runtime.dll
API basadas en UWP y Silverlight. Se anima a las nuevas plataformas .NET a implementar una versión de la biblioteca estándar que les permita reutilizar las bibliotecas de terceros existentes para ejecutarlas sin nuevas versiones de ellas. La biblioteca estándar .NET permite una evolución independiente de las capas del modelo de la biblioteca y la aplicación dentro de la arquitectura .NET. [20]
NuGet es el administrador de paquetes para todas las plataformas .NET. Se utiliza para recuperar bibliotecas de terceros en un proyecto .NET con una fuente de biblioteca global en NuGet.org. [21] Las fuentes privadas se pueden mantener por separado, por ejemplo, mediante un servidor de compilación o un directorio del sistema de archivos.
C ++ / CLI
Microsoft introdujo C ++ / CLI en Visual Studio 2005, que es un lenguaje y un medio para compilar programas de Visual C ++ para que se ejecuten dentro de .NET Framework. Algunas partes del programa C ++ aún se ejecutan dentro de un tiempo de ejecución de Visual C ++ no administrado , mientras que las partes especialmente modificadas se traducen al código CIL y se ejecutan con CLR de .NET Framework .
Los ensamblados compilados con el compilador C ++ / CLI se denominan ensamblados de modo mixto, ya que contienen código nativo y administrado en la misma DLL. [22] Tales ensamblajes son más complejos de aplicar ingeniería inversa, ya que los descompiladores de .NET como .NET Reflector revelan solo el código administrado.
Principio de diseño
Interoperabilidad
Debido a que los sistemas informáticos generalmente requieren la interacción entre aplicaciones más nuevas y más antiguas, .NET Framework proporciona medios para acceder a las funciones implementadas en programas más nuevos y más antiguos que se ejecutan fuera del entorno .NET. El acceso a objetos componentes Modelo componentes (COM) se proporciona en System.Runtime.InteropServices
y System.EnterpriseServices
espacios de nombres del marco. El acceso a otras funciones se realiza a través de los servicios de invocación de plataforma (P / Invoke). El acceso a las funciones .NET desde aplicaciones nativas se realiza mediante la función P / Invoke inversa.
Independencia del idioma
.NET Framework presenta un Common Type System (CTS) que define todos los posibles tipos de datos y construcciones de programación compatibles con CLR y cómo pueden o no interactuar de acuerdo con la especificación CLI. Debido a esta característica, .NET Framework admite el intercambio de tipos e instancias de objetos entre bibliotecas y aplicaciones escritas con cualquier lenguaje .NET compatible .
Tipo de seguridad
CTS y CLR utilizados en .NET Framework también imponen la seguridad de tipos . Esto evita conversiones mal definidas, invocaciones de métodos incorrectos y problemas de tamaño de la memoria al acceder a un objeto. Esto también hace que la mayoría de los lenguajes CLI se tipeen estáticamente (con o sin inferencia de tipos ). Sin embargo, a partir de .NET Framework 4.0, Dynamic Language Runtime extendió el CLR, permitiendo que los lenguajes escritos dinámicamente se implementaran encima del CLI.
Portabilidad
Si bien Microsoft nunca ha implementado el marco completo en ningún sistema excepto Microsoft Windows, ha diseñado el marco para que sea multiplataforma, [23] y hay implementaciones disponibles para otros sistemas operativos (ver Silverlight y § Implementaciones alternativas ). Microsoft envió las especificaciones para CLI (que incluye las bibliotecas de clases principales, CTS y CIL), [24] [25] [26] C # , [27] y C ++ / CLI [28] tanto a Ecma International (ECMA) como a International Organización de Normalización (ISO), poniéndolos a disposición como estándares oficiales. Esto hace posible que terceros creen implementaciones compatibles del marco y sus lenguajes en otras plataformas.
Seguridad
.NET Framework tiene su propio mecanismo de seguridad con dos características generales: Code Access Security (CAS) y validación y verificación. CAS se basa en evidencia que está asociada con un ensamblaje específico. Normalmente, la evidencia es la fuente del ensamblaje (ya sea que esté instalada en la máquina local o se haya descargado de Internet). CAS usa evidencia para determinar los permisos otorgados al código. Otro código puede exigir que se le otorgue un permiso específico al código de llamada. La demanda hace que CLR realice un recorrido de la pila de llamadas: cada ensamblado de cada método en la pila de llamadas se comprueba para obtener el permiso requerido; si no se concede el permiso a algún ensamblado, se lanza una excepción de seguridad.
El código de bytes CIL administrado es más fácil de aplicar ingeniería inversa que el código nativo, a menos que esté ofuscado . [29] Los programas descompiladores de .NET permiten a los desarrolladores sin conocimientos de ingeniería inversa ver el código fuente detrás de los ensamblajes .NET no confusos. Por el contrario, las aplicaciones compiladas en código de máquina nativo son mucho más difíciles de aplicar ingeniería inversa y el código fuente casi nunca se produce con éxito, principalmente debido a las optimizaciones del compilador y la falta de reflexión . [30] Esto crea preocupación en la comunidad empresarial por la posible pérdida de secretos comerciales y eludir los mecanismos de control de licencias. Para mitigar esto, Microsoft ha incluido Dotfuscator Community Edition con Visual Studio .NET desde 2002. [b] Las herramientas de ofuscación de terceros también están disponibles de proveedores como VMware , Vi Labs , Turbo y Red Gate Software . Las herramientas de cifrado de nivel de método para el código .NET están disponibles de proveedores como SafeNet .
Gestión de la memoria
CLR libera al desarrollador de la carga de administrar la memoria (asignando y liberando cuando termina); maneja la gestión de la memoria por sí mismo al detectar cuándo se puede liberar la memoria de forma segura. Las instancias de tipos .NET (objetos) se asignan desde el montón administrado; un grupo de memoria administrado por CLR. Siempre que exista una referencia a un objeto, que puede ser directa o mediante un gráfico de objetos, se considera que el objeto está en uso. Cuando no existe ninguna referencia a un objeto, y no se puede alcanzar o utilizar, se convierte en basura, elegible para la recolección.
.NET Framework incluye un recolector de basura (GC) que se ejecuta periódicamente, en un hilo separado del hilo de la aplicación, que enumera todos los objetos inutilizables y recupera la memoria asignada a ellos. Es un recolector de basura no determinista, compactador, de marca y barrido . GC se ejecuta solo cuando se ha utilizado una cantidad determinada de memoria o hay suficiente presión para la memoria en el sistema. Dado que no se garantiza cuando se alcanzan las condiciones para recuperar memoria, las ejecuciones de GC no son deterministas . Cada aplicación .NET tiene un conjunto de raíces, que son punteros a objetos en el montón administrado ( objetos administrados ). Estos incluyen referencias a objetos estáticos, objetos definidos como variables locales o parámetros de métodos actualmente en el alcance, y objetos a los que se hace referencia por registros de CPU. [31] Cuando se ejecuta GC, pausa la aplicación y luego, para cada objeto al que se hace referencia en la raíz, enumera de forma recursiva todos los objetos accesibles desde los objetos raíz y los marca como alcanzables. Utiliza la reflexión y los metadatos de la CLI para descubrir los objetos encapsulados por un objeto y luego recorrerlos de forma recursiva. Luego enumera todos los objetos en el montón (que inicialmente se asignaron de forma contigua) mediante la reflexión. Todos los objetos que no estén marcados como accesibles son basura. [31] Esta es la fase de marca . [32] Dado que la memoria contenida en la basura no tiene importancia, se considera espacio libre. Sin embargo, esto deja trozos de espacio libre entre objetos que inicialmente eran contiguos. Luego, los objetos se compactan para hacer que el espacio libre en el montón administrado sea contiguo nuevamente. [31] [32] GC actualiza cualquier referencia a un objeto invalidado al moverlo para reflejar la nueva ubicación. [32] La aplicación se reanuda después de que finaliza la recolección de basura. La última versión de .NET Framework utiliza la recolección de basura concurrente junto con el código de usuario, lo que hace que las pausas sean imperceptibles, ya que se realiza en segundo plano. [33]
El recolector de basura utilizado por .NET Framework también es generacional . [34] A los objetos se les asigna una generación . Los objetos recién creados se etiquetan como Generación 0 . Los objetos que sobreviven a una recolección de basura se etiquetan como Generación 1 . Los objetos de la generación 1 que sobreviven a otra colección son los de la generación 2 . El marco utiliza hasta objetos de Generación 2. [34] Los objetos de generación superior son basura recolectada con menos frecuencia que los objetos de generación inferior. Esto aumenta la eficiencia de la recolección de basura, ya que los objetos más antiguos tienden a tener una vida útil más larga que los objetos más nuevos. [34] Al ignorar los objetos más antiguos en la mayoría de las ejecuciones de recolección, se necesitan menos controles y operaciones de compactación en total. [34]
Actuación
Cuando se inicia una aplicación por primera vez, .NET Framework compila el código CIL en código ejecutable utilizando su compilador Just -In-Time y almacena en caché el programa ejecutable en .NET Native Image Cache. [35] [36] Debido al almacenamiento en caché, la aplicación se inicia más rápido para los lanzamientos posteriores, aunque el primer lanzamiento suele ser más lento. Para acelerar el primer lanzamiento, los desarrolladores pueden usar la utilidad Native Image Generator para compilar y almacenar en caché manualmente y con anticipación cualquier aplicación .NET. [36]
El recolector de basura, que está integrado en el entorno, puede introducir retrasos de ejecución imprevistos sobre los que el desarrollador tiene poco control directo. "En aplicaciones grandes, la cantidad de objetos con los que el recolector de basura necesita trabajar puede llegar a ser muy grande, lo que significa que puede llevar mucho tiempo visitarlos y reorganizarlos todos". [37]
.NET Framework proporciona soporte para llamar a Streaming SIMD Extensions (SSE) a través de código administrado desde abril de 2014 en Visual Studio 2013 Update 2. Sin embargo, Mono ha proporcionado soporte para SIMD Extensions a partir de la versión 2.2 dentro del espacio de nombres Mono.Simd en 2009. [38 ] El desarrollador líder de Mono, Miguel de Icaza, ha expresado su esperanza de que este soporte SIMD sea adoptado por el estándar ECMA de CLR. [39] Streaming SIMD Extensions ha estado disponible en CPU x86 desde la introducción del Pentium III . Algunas otras arquitecturas como ARM y MIPS también tienen extensiones SIMD. En caso de que la CPU no tenga soporte para esas extensiones, las instrucciones se simulan en el software. [ cita requerida ]
Implementaciones alternativas
.NET Framework es la implementación predominante de las tecnologías .NET. Existen otras implementaciones para partes del marco. Aunque el motor de tiempo de ejecución se describe mediante una especificación ECMA-ISO, otras implementaciones del mismo pueden verse obstaculizadas por cuestiones de patentes ; Las normas ISO pueden incluir la exención de responsabilidad, "Se llama la atención sobre la posibilidad de que algunos de los elementos de este documento puedan estar sujetos a derechos de patente. ISO no será responsable de identificar ninguno o todos esos derechos de patente". [40] Es más difícil desarrollar alternativas a FCL, que no está descrito por un estándar abierto y puede estar sujeto a restricciones de derechos de autor. Además, partes de FCL tienen funciones y comportamientos específicos de Windows, por lo que la implementación en plataformas que no son de Windows puede ser problemática.
Aquí se enumeran algunas implementaciones alternativas de partes del marco.
- .NET Micro Framework es una plataforma .NET para dispositivos con recursos extremadamente limitados. Incluye una versión pequeña de CLR y admite el desarrollo en C # (aunque algunos desarrolladores pudieron usar VB.NET , [41] aunque con una cantidad de piratería y con funcionalidades limitadas) y depuración (en un emulador o en hardware), ambos usando Microsoft Visual Studio . También presenta un subconjunto de .NET Framework Class Library (aproximadamente 70 clases con aproximadamente 420 métodos), un marco GUI basado libremente en WPF y bibliotecas adicionales específicas para aplicaciones integradas.
- Mono es una implementación de CLI y FCL y proporciona funciones adicionales. Tiene licencia como software libre bajo la licencia MIT . Incluye soporte para bibliotecas ASP.NET, ADO.NET y Windows Forms para una amplia gama de arquitecturas y sistemas operativos. También incluye compiladores de C # y VB.NET.
- Portable.NET (parte de DotGNU ) proporciona una implementación de CLI, partes de FCL y un compilador de C #. Es compatible con una variedad de CPU y sistemas operativos. El proyecto se suspendió, con la última versión estable en 2009.
- Microsoft Shared Source Common Language Infrastructure es una implementación no gratuita de CLR. Sin embargo, la última versión se ejecuta solo en Windows XP SP2 y no se ha actualizado desde 2006. Por lo tanto, no contiene todas las características de la versión 2.0 de .NET Framework.
- CrossNet [42] es una implementación de CLI y partes de FCL. Es un software gratuito que utiliza una licencia MIT de código abierto .
Licencia
Los marcos de código administrado de Microsoft y sus componentes tienen la siguiente licencia:
Componente | Licencia |
---|---|
.NET Framework (paquete redistribuible) | Software propietario [43] |
Código fuente de referencia de .NET Framework 4.5 y versiones anteriores | Licencia de referencia de Microsoft (Ms-RSL [a] ) [9] [44] |
Código fuente de referencia de .NET Framework 4.6 | Licencia MIT [45] |
Mononucleosis infecciosa | Licencia MIT [46] |
.NET (anteriormente .NET Core) CoreFX, CoreCLR y CLI | Licencia MIT [47] |
.NET Micro Framework | Licencia de Apache 2.0 [48] |
Plataforma del compilador .NET (nombre en clave "Roslyn") | Licencia MIT [49] |
ASP.NET MVC , API web y páginas web ( Razor ) | Licencia de Apache 2.0 [50] |
ASP.NET Core | Licencia de Apache 2.0 [51] |
Kit de herramientas de control ASP.NET Ajax | Licencia BSD [52] |
ASP.NET SignalR | Licencia de Apache 2.0 [53] |
Marco de la entidad | Licencia de Apache 2.0 [54] |
NuGet | Licencia de Apache 2.0 [55] |
Ver también
- Lista de idiomas CLI
- Bibliotecas estándar (CLI) , las bibliotecas estándar de .NET
- Biblioteca de clases base (BCL)
Notas
- ^ a b La licencia se abreviaba anteriormente Ms-RL, pero Ms-RL ahora se refiere a la Licencia recíproca de Microsoft .
- ^ Dotfuscator Community Edition 4.0
Referencias
- ^ "Descargar el instalador sin conexión de .NET Framework 4.8" . Microsoft . Archivado desde el original el 15 de agosto de 2019 . Consultado el 15 de agosto de 2019 .
- ^ "Microsoft se suma al código abierto" . Opensource.com . 19 de noviembre de 2014 . Consultado el 2 de enero de 2020 .
- ^ gewarren. "Versiones del sistema operativo .NET Framework y Windows" . docs.microsoft.com . Consultado el 21 de noviembre de 2020 .
- ^ "Estándar ECMA-335: Common Language Infrastructure (CLI)" . ecma-international.org (6 ed.). ECMA . Junio de 2012. Archivado desde el original el 26 de junio de 2013 . Consultado el 31 de agosto de 2005 .
- ^ "Estándar ECMA-334: Especificación del lenguaje C #" . ecma-international.org (4 ed.). ECMA . Junio de 2006. Archivado desde el original el 31 de octubre de 2010 . Consultado el 31 de agosto de 2005 .
- ^ "ISO / IEC 23271: 2012 Tecnología de la información - Infraestructura de lenguaje común" . iso.org (3 ed.). Organización Internacional de Normalización . 13 de febrero de 2012.
- ^ "ISO / IEC 23270: 2006 - Tecnología de la información - Lenguajes de programación - C #" . iso.org (2 ed.). Organización Internacional de Normalización . 26 de enero de 2012. Archivado desde el original el 6 de diciembre de 2010 . Consultado el 1 de abril de 2008 .
- ^ "Promesa vacía de Microsoft" . Fundación de Software Libre . 16 de julio de 2009. Archivado desde el original el 19 de agosto de 2009 . Consultado el 3 de agosto de 2009 .
Sin embargo, hay varias bibliotecas que se incluyen con Mono, y que son comúnmente utilizadas por aplicaciones como Tomboy, que no son requeridas por el estándar. Y para ser claros, no estamos hablando de bibliotecas específicas de Windows como ASP.NET y Windows Forms. En cambio, estamos hablando de bibliotecas en el espacio de nombres del sistema que brindan la funcionalidad común que los programadores esperan en los lenguajes de programación modernos.
- ^ a b Guthrie, Scott (3 de octubre de 2007). "Liberar el código fuente para NET Framework" . Blog de Scott Guthrie . Microsoft . Archivado desde el original el 7 de septiembre de 2010 . Consultado el 15 de septiembre de 2010 .
- ^ Guthrie, Scott (16 de enero de 2008). "El código fuente de la biblioteca de .NET Framework ya está disponible" . Blog de Scott Guthrie . Microsoft . Consultado el 28 de febrero de 2015 .
- ^ "Promesa de patentes de Microsoft para bibliotecas .NET y componentes en tiempo de ejecución" . Archivado desde el original el 21 de febrero de 2021 . Consultado el 16 de noviembre de 2014 .
- ^ Krill, Paul (1 de abril de 2016). "El tiempo de ejecución Mono de Xamarin obtiene una licencia más flexible" . InfoWorld . IDG .
- ^ Ferraira, Bruno (31 de marzo de 2016). "Xamarin ahora viene gratis con Visual Studio" . El informe técnico . Archivado desde el original el 2 de abril de 2016 . Consultado el 12 de abril de 2016 .
- ^ "Promesa de patente de Microsoft para Mono" . Mono en GitHub . Proyecto Mono. 28 de marzo de 2016. Archivado desde el original el 16 de abril de 2016 . Consultado el 16 de abril de 2016 .
- ^ "Xamarin para todos" . Blog de Xamarin . Xamarin. 31 de marzo de 2016. Archivado desde el original el 12 de abril de 2016 . Consultado el 12 de abril de 2016 .
- ^ "Anuncio de código abierto de WPF, Windows Forms y WinUI en Microsoft Connect 2018" . Blog de desarrolladores de Windows . Microsoft. Archivado desde el original el 15 de diciembre de 2018 . Consultado el 24 de diciembre de 2018 .
- ^ rpetrusha. "Compilación de aplicaciones con .NET Native" . docs.microsoft.com . Archivado desde el original el 3 de diciembre de 2017 . Consultado el 2 de diciembre de 2017 .
- ^ "Biblioteca de clases base" . Consultado el 1 de junio de 2008 .
- ^ "Estándar de la plataforma .NET" . Archivado desde el original el 19 de mayo de 2016 . Consultado el 23 de abril de 2016 .
- ^ "Una actualización en ASP.NET Core 1.0 RC2" . Consultado el 23 de abril de 2016 .
- ^ "Galería NuGet - Inicio" . nuget.org . Archivado desde el original el 21 de febrero de 2021 . Consultado el 21 de febrero de 2021 .
- ^ Ensamblados mixtos (nativos y administrados) archivados el 22 de octubre de 2014 en Wayback Machine , MSDN
- ^ "Scott Guthrie: Silverlight y el CLR multiplataforma" . Canal 9 . 30 de abril de 2007. Archivado desde el original el 25 de marzo de 2015 . Consultado el 16 de abril de 2016 .
- ^ "ECMA 335 - Norma ECMA-335 Common Language Infrastructure (CLI) 4ª edición (junio de 2006)" . ECMA. 1 de junio de 2006. Archivado desde el original el 14 de junio de 2008 . Consultado el 1 de junio de 2008 .
- ^ "ISO / IEC 23271: 2006" . Standards.iso.org. 29 de septiembre de 2006. Archivado desde el original el 1 de julio de 2018 . Consultado el 17 de abril de 2012 .
- ^ "Informe técnico TR / 84 Common Language Infrastructure (CLI) - Información derivada del archivo XML de la partición IV" . ECMA. 1 de junio de 2006. Archivado desde el original el 25 de marzo de 2015 . Consultado el 16 de abril de 2016 .
- ^ "ECMA-334 C # Language Specification" . ECMA. 1 de junio de 2006. Archivado desde el original el 31 de octubre de 2010 . Consultado el 31 de agosto de 2005 .
- ^ "Especificación de lenguaje estándar ECMA-372 C ++ / CLI" . ECMA. 1 de diciembre de 2005. Archivado desde el original el 10 de agosto de 2008 . Consultado el 16 de enero de 2008 .
- ^ Gartner, Inc. como se informa en "Ciclo de bombo para las ciberamenazas, 2006", septiembre de 2006, Neil MacDonald; Amrit Williams y col.
- ^ Cifuentes, Cristina (julio de 1994). "6: Análisis de flujo de control" (PDF) . Técnicas de compilación inversa (tesis). Universidad de Tecnología de Queensland . Archivado desde el original (PDF) el 22 de noviembre de 2016.
- ^ a b c "Recolección de basura: gestión automática de memoria en Microsoft .NET Framework" . Archivado desde el original el 3 de julio de 2007 . Consultado el 1 de junio de 2008 .
- ^ a b c "Recolección de basura en .NET" . Archivado desde el original el 25 de mayo de 2008 . Consultado el 1 de junio de 2008 .
- ^ ".NET Framework 4.5 incluye nuevas mejoras en el recolector de basura para aplicaciones cliente y servidor" . Consultado el 2 de octubre de 2015 .
- ^ a b c d "Recolección de basura — Parte 2: Gestión automática de memoria en Microsoft .NET Framework" . Archivado desde el original el 26 de junio de 2007 . Consultado el 1 de junio de 2008 .
- ^ "Comprensión de la compilación Just-In-Time de .NET" . telerik.com . 28 de mayo de 2013. Archivado desde el original el 11 de junio de 2013 . Consultado el 21 de mayo de 2015 .
- ^ a b Compilación de MSIL en código nativo Archivado el 19 de abril de 2015 en Wayback Machine , MSDN, Microsoft
- ^ "Comprensión de la recolección de basura en .NET" . 17 de junio de 2009.
- ^ "Notas de la versión Mono 2.2 - Mono" . mono-project.com .
- ^ "Soporte SIMD de Mono: Hacer Mono seguro para juegos" . Tirania.org. 3 de noviembre de 2008. Archivado desde el original el 4 de noviembre de 2010 . Consultado el 17 de abril de 2012 .
- ^ ISO 9001: 2008, Prólogo
- ^ "Uso de VB.NET con .NET Micro Framework« / dev / mobile " . Christec.co.nz. 1 de abril de 2008 . Consultado el 17 de abril de 2012 .[ enlace muerto permanente ]
- ^ "CrossNet" . Codeplex.com. Archivado desde el original el 25 de enero de 2010 . Consultado el 17 de abril de 2012 .
- ^ "EULA redistribuible de Microsoft .NET Framework" . MSDN . Microsoft . Archivado desde el original el 2 de abril de 2015 . Consultado el 28 de febrero de 2015 .
- ^ Bray, Brandon (15 de agosto de 2012). "Anuncio del lanzamiento de .NET Framework 4.5 RTM - Producto y código fuente" . Blog de .NET Framework . Microsoft . Archivado desde el original el 4 de octubre de 2016 . Consultado el 18 de agosto de 2016 .
- ^ "Anuncio de la vista previa de .NET 2015: una nueva era para .NET" . Blog de .NET Framework . Microsoft . 12 de noviembre de 2014. Archivado desde el original el 19 de agosto de 2016 . Consultado el 18 de agosto de 2016 .
- ^ "Xamarin para todos" . Blog de Xamarin . Microsoft . 17 de abril de 2016. Archivado desde el original el 12 de abril de 2016 . Consultado el 12 de abril de 2016 .
- ^ ".NET Core 5" . dotnetfoundation.org . Fundación .NET. Archivado desde el original el 17 de febrero de 2015 . Consultado el 17 de febrero de 2015 .
- ^ ".NET Micro Framework" . dotnetfoundation.org . Fundación .NET. Archivado desde el original el 17 de febrero de 2015 . Consultado el 17 de febrero de 2015 .
- ^ "Licencia Roslyn" . GitHub . Fundación .NET. 5 de febrero de 2020. Archivado desde el original el 24 de marzo de 2018 . Consultado el 14 de abril de 2018 .
- ^ "ASP.NET MVC, Web API y páginas web (Razor)" . dotnetfoundation.org . Fundación .NET. Archivado desde el original el 17 de febrero de 2015 . Consultado el 17 de febrero de 2015 .
- ^ "Licencia ASP.NET Core" . GitHub . Fundación .NET. 5 de julio de 2017. Archivado desde el original el 21 de febrero de 2021 . Consultado el 14 de abril de 2018 .
- ^ "Kit de herramientas de control ASP.NET Ajax" . dotnetfoundation.org . Fundación .NET. Archivado desde el original el 17 de febrero de 2015 . Consultado el 17 de febrero de 2015 .
- ^ "ASP.NET SignalR" . dotnetfoundation.org . Fundación .NET. Archivado desde el original el 17 de febrero de 2015 . Consultado el 17 de febrero de 2015 .
- ^ "Entity Framework" . dotnetfoundation.org . Fundación .NET. Archivado desde el original el 18 de abril de 2016 . Consultado el 16 de abril de 2016 .
- ^ "NuGet" . dotnetfoundation.org . Fundación .NET. Archivado desde el original el 17 de febrero de 2015 . Consultado el 17 de febrero de 2015 .
enlaces externos
- Página web oficial
- Descripción general de .NET Framework (MSDN)
- Repositorio .NET Github