Beruflich Dokumente
Kultur Dokumente
Mientras que Microsoft y sus socios tienen patentes de CLI y C #, ECMA e ISO requieren que
todas las patentes esenciales para la implementación se efectuará en el "términos razonables y
no discriminatorios". Además de cumplir con estos términos, las compañías han acordado
hacer las patentes disponibles, libre de regalías. Sin embargo, esto no se aplica para la parte de
.NET Framework no comprendidas en las normas ECMA / ISO, que incluyeron Windows Forms,
ADO.NET y ASP.NET. Las patentes que Microsoft tiene en estas áreas pueden haber disuadido
a las implementaciones no son de Microsoft del marco completo. [5]
El 3 de octubre de 2007, Microsoft anunció que el código fuente para .NET Framework 3.5
bibliotecas se convertiría disponible bajo la Licencia Microsoft Referencia (Ms-RSL [a]). [6] El
repositorio de código fuente estaba disponible en línea el 16 de enero de 2008 y incluido BCL,
ASP.NET, ADO.NET, Windows Forms, WPF y XML. Scott Guthrie de Microsoft prometió LINQ,
bibliotecas WCF y WF estaban en proceso de ser añadido. [7]
El 12 de noviembre de 2014, Microsoft anunció .NET Core, en un esfuerzo para incluir soporte
multiplataforma para .NET, la liberación fuente de la implementación de Microsoft CoreCLR,
fuente para el "todo [...] pila biblioteca" para .NET Core, y la adopción de un ("bazar" -como)
convencional modelo de desarrollo de código abierto bajo la dirección del .NET Fundación.
Miguel de Icaza describe .NET Core como una "versión rediseñada de .NET que se basa en la
versión simplificada de la bibliotecas de clases ", [8] y Immo Landwerth de Microsoft explicó
que .NET Core sería" el fundamento de todas las futuras plataformas .NET ". En el momento
del anuncio, la versión inicial del proyecto .NET Core había sido sembrado con un subconjunto
de código fuente de las bibliotecas y coincidió con la renovación de licencias de fuente de
referencia de Microsoft .NET existente fuera de las restricciones de la Ms-RSL. Landwerth
reconoció las desventajas de la licencia de código compartido previamente seleccionado,
explicando que se hizo nombre en clave del rotor ", un non-starter" como un proyecto de
código abierto desarrollado por la comunidad, ya que no cumplía con los criterios de un OSI
licencia con aprobación para. [9] [ 10] [11]
Microsoft también produjo una actualización de sus concesiones de patentes, que se extiende
aún más el alcance más allá de sus compromisos anteriores. Proyectos anteriores como Mono
existían en un legal zona gris porque subvenciones anteriores de Microsoft aplicarán
únicamente a la tecnología en "especificaciones cubiertos", incluyendo estrictamente las 4tas
ediciones cada uno de ECMA-334 y ECMA-335. La nueva promesa de la patente, sin embargo,
no pone límite a la versión de especificación y se extiende incluso a las tecnologías de tiempo
de ejecución de .NET documentados en MSDN que no han sido especificados formalmente por
el grupo ECMA, si un proyecto opta por ponerlas en práctica. Esto permite Mono y otros
proyectos para mantener la paridad de características con las características modernas de .NET
que se han introducido desde la cuarta edición fue publicada sin estar en riesgo de litigios
sobre patentes sobre la aplicación de esas características. La nueva subvención hace mantener
la restricción de que ninguna aplicación debe mantener el cumplimiento mínimo de las partes
obligatorias de la especificación CLI. [12]
Versiones [editar]
Versión
número CLR
versión Lanzamiento
1.1 1.1 04/24/2003 Visual Studio .NET 2003 [17] N/A 2003 1.0 [18]
2.0 2.0 2005-11-07 Visual Studio 2005 [19] N / A 2003, 2003 R2, [20] 2008 SP2,
2008 R2 SP1 N/A
3.0 2.0 2006-11-06 Expression Blend [21] [b] Vista 2008 SP2, 2008 R2 SP1
2.0 [15]
3.5 2.0 11/19/2007 Visual Studio 2008 [22] 7, 8 [c], 8.1 [c], 10 [c] 2008 R2 SP1
2.0, 3.0 [15]
4.5.1 4 10/17/2013 Visual Studio 2013 [25] 8.1 2012 R2 4.0, 4.5 [15]
Notas:
c. ^ ^ ^ .NET Framework 3.5 no se instala automáticamente con Windows 8, 8.1 o 10. Debe
instalarse ya sea desde un disco de instalación de Windows o desde el Internet bajo demanda.
Panel de control siempre intenta la segunda. [27]
Arquitectura [editar]
Common Language Infrastructure (CLI) proporciona una plataforma independiente del idioma
para el desarrollo y ejecución de la aplicación, incluyendo funciones para el manejo de
excepciones, recolección de basura, la seguridad y la interoperabilidad. Mediante la
implementación de los aspectos centrales de .NET Framework en el ámbito de la CLI, esta
funcionalidad no estará atado a un solo idioma, pero estará disponible a través de los muchos
idiomas admitidos por el marco. Implementación de Microsoft de CLI es Common Language
Runtime (CLR). Sirve como el motor de ejecución de .NET Framework. Todos los programas
.NET ejecutan bajo la supervisión de CLR, garantizar determinadas propiedades y
comportamientos en las áreas de gestión de la memoria, la seguridad y el manejo de
excepciones.
Para los programas informáticos se ejecuten en la CLI, que necesitan para ser compilado en
Common Intermediate Language (CIL) - en lugar de ser compilado en código máquina. Tras la
ejecución, una arquitectura específica compilador Just-in-time (JIT) convierte el código CIL en
código máquina. Para mejorar el rendimiento, sin embargo, .NET Framework viene con
Generador de imágenes nativas (NGEN) que realiza la compilación antes de tiempo.
.NET Core es una libre y de código abierto aplicación multiplataforma de .NET Framework.
Consiste en CoreCLR una implementación completa de tiempo de ejecución multiplataforma
de CLR, la máquina virtual que gestiona la ejecución de programas .NET. .Net Core también
incluye CoreFX, que es un parcial tenedor de BCL y apoyará ASP.NET. [29] CoreCLR viene con
un mejorado compilador Just-in-time, llamado RyuJIT. [30] Red Core será capaz de ejecutar la
consola y aplicaciones ASP.NET en Windows, Linux, BSD y Mac OSX. Sin embargo, no
implementa Windows Forms o WPF que son esenciales para las aplicaciones de escritorio GUI
basada.
Asambleas [editar]
Código CIL Compilado se almacena en las asambleas de la CLI. Conforme a lo dispuesto por la
especificación, las asambleas se almacenan en ejecutable portable (PE) formato de archivo,
común en la plataforma de Windows para todos DLL y EXE archivos. Cada conjunto se
compone de uno o varios archivos, uno de los cuales debe contener un manifiesto que lleva el
metadatos para el montaje. El nombre completo de un conjunto (que no debe confundirse con
el nombre del archivo en el disco) contiene su nombre simple texto, número de versión, la
cultura, y la clave pública token. Asambleas se consideran equivalentes si comparten el mismo
nombre completo, excluyendo la revisión del número de versión.
Una clave privada también puede ser utilizado por el creador de la asamblea para el fuerte de
nomenclatura. El símbolo de clave pública identifica qué clave privada una asamblea se firmó
con. Sólo el creador del par de claves (típicamente desarrollador .NET firmar el montaje) puede
firmar asambleas que tienen el mismo nombre seguro como un conjunto versión anterior, ya
que el creador está en posesión de la clave privada. Se requiere Fuerte nombramiento añadir
asambleas para caché de ensamblados global.
C ++ / CLI [editar]
Interoperabilidad [editar]
Debido a que los sistemas informáticos comúnmente requieren la interacción entre las
aplicaciones más recientes y de mayor edad, .NET Framework proporciona medios para
acceder a la funcionalidad implementada en los programas más nuevos y más antiguos que se
ejecutan entorno .NET exterior. El acceso a COM componentes se proporciona en
System.Runtime.InteropServices y System.EnterpriseServices espacios de nombres del marco.
El acceso a otras funciones se logra mediante el / Invoke P característica.
.NET Framework introduce un sistema de tipos común (CTS) que define todos los posibles tipos
de datos y programación construcciones apoyadas por CLR y la forma en que pueden o no
pueden interactuar entre sí conforme a la especificación CLI. Debido a esta característica, .NET
Framework apoya el intercambio de tipos e instancias de objetos entre las bibliotecas y
aplicaciones escritas utilizando cualquier lenguaje .NET conforme.
Portabilidad [editar]
Seguridad [editar]
.NET Framework tiene su propio mecanismo de seguridad con dos características generales:
Código de Acceso de Seguridad (CAS) y la validación y verificación. CAS se basa en pruebas que
se asocia con un conjunto específico. Por lo general la evidencia es la fuente de la asamblea (si
está instalado en el equipo local o se ha descargado desde la intranet o Internet). CAS utiliza
pruebas para determinar los permisos concedidos al código. Otro código puede exigir que
código de llamada se concederá un permiso especificado. La demanda hace que CLR para
realizar un paseo pila de llamadas: todas las asambleas de cada método en la pila de llamadas
está activada para el permiso necesario; si cualquier asamblea no se concede el permiso se
lanza una excepción de seguridad.
Gestionado CIL bytecode es más fácil de realizar ingeniería inversa de código nativo, a menos
ofuscado. [38] [39] NET Decompiler programas permiten a los desarrolladores sin necesidad de
conocimientos de ingeniería inversa para ver el código fuente detrás ensamblados .NET
unobfuscated. Por el contrario, las aplicaciones compilado a código máquina nativo son mucho
más difíciles de realizar 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. [Cita
requerida] Una preocupación es por la posible pérdida de secretos comerciales y la derivación
de los mecanismos de control de licencias. Para mitigar esto, Microsoft ha incluido Dotfuscator
Community Edition con Visual Studio .NET desde el año 2002. [b] herramientas de ofuscación
de terceros también están disponibles de proveedores como VMware, Vi laboratorios,
Xenocode, Red Gate Software. Herramientas de cifrado a nivel de método de código .NET
están disponibles de proveedores como SafeNet.
GC utilizado por .NET Framework también es generacional. [43] Los objetos se asignan a una
generación; objetos recién creados pertenecen a la Generación 0. Los objetos que sobreviven a
una recolección de basura etiquetados como Generación 1, y los objetos Generación 1 que
sobreviven otra colección son Generación 2 objetos. .NET Framework utiliza hasta Generación
2 objetos. [43] los objetos más altos generación son basura recogida con menos frecuencia que
los objetos más bajos generación. Esto ayuda a aumentar la eficiencia de recolección de
basura, como objetos mayores tienden a tener una vida útil más larga que los objetos más
nuevos. [43] Por lo tanto, mediante la eliminación de más edad (y por lo tanto más
probabilidades de sobrevivir una colección) Objetos del alcance de una ejecución de
obtención, menos objetos necesitan ser revisados y compactado. [43]
Rendimiento [editar]
Cuando se lanzó por primera vez una aplicación, el .NET Framework compila el código de CIL
en código ejecutable utilizando su compilador Just-in-time, y almacena en caché el programa
ejecutable en el .NET nativo caché de imágenes. [44] [45] Debido al almacenamiento en caché,
la aplicación se inicia más rápido para los lanzamientos posteriores, aunque el primer
lanzamiento es por lo general más lento. Para aumentar la velocidad de la primera puesta en
marcha, los desarrolladores pueden utilizar el Generador de imágenes nativas utilidad para
compilar manualmente y almacenar en caché cualquier aplicación .NET, por delante de los
tiempos. [45]
El recolector de basura, que está integrado en el medio ambiente, se puede introducir retrasos
imprevistos de ejecución sobre la que el desarrollador tiene poco control directo. "En grandes
aplicaciones, el número de objetos que el recolector de basura tiene que hacer frente a puede
llegar a ser muy grande, lo que significa que puede llevar mucho tiempo para visitar y
reorganizar todos ellos." [46]
.NET Framework proporciona soporte para llamar Streaming SIMD Extensions (SSE) a través de
código administrado a partir de abril de 2014 en Visual Studio 2013 Actualización 2. Sin
embargo, Mono ha prestado apoyo a SIMD Extensiones partir de la versión 2.2 en el espacio
de nombres Mono.Simd; antes de. Desarrollador principal de Mono Miguel de Icaza ha
expresado su esperanza de que este apoyo SIMD será adoptado por estándar ECMA del CLR.
[47] Streaming SIMD Extensions han estado disponibles en x86 CPU 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 carece de soporte para las extensiones, las instrucciones son simuladas
en el software. [Cita requerida]
Licencias [editar]
Componente Licencia
.NET Core
.NET Plataforma Compiler (nombre en clave "Roslyn") Apache License 2.0 [50]
.NET Micro Framework es una plataforma .NET para dispositivos extremadamente limitados
recursos. Incluye una pequeña versión de CLR y apoya el desarrollo en C # (aunque algunos
desarrolladores fueron capaces de utilizar VB.NET, [61] aunque con una cantidad de piratería,
y con todas las funciones limitadas) y la depuración (en un emulador o en el hardware), tanto
utilizando Microsoft Visual Studio. También cuenta con un subconjunto de clases de .NET
Framework Biblioteca (cerca de 70 clases con cerca de 420 métodos), una interfaz gráfica de
usuario marco vagamente basada en WPF, y bibliotecas adicionales específicos para
aplicaciones embebidas.
Microsoft Shared Source Common Language Infrastructure es un no-libre ejecución de CLR. Sin
embargo, la última versión sólo se ejecuta en Microsoft Windows XP SP2, y no ha sido
actualizado desde 2006, por lo que no contiene todas las características de la versión 2.0 de
.NET Framework.
Crossnet [62] es una implementación de CLI y porciones de FCL. Es software libre con el código
abierto licencia MIT.