| Microsoft .LIMPIO | |
| |
| Desarrollador | Microsoft
|
|---|---|
| Última versión | [Microsoft 4.0.30319.1 (4.0)] (12 de Abril 2010) [+/-]
|
| Medio ambiente | Windows NT 4.0, Windows 98 y superiores.
|
| Tipo | Plataforma |
| Licencia | MS-EULA, BCL Bajo Microsoft Reference License
|
| Sitio Web | Www.microsoft.com/net | Modificar |
Microsoft .LIMPIO[1] es el nombre dado en un conjunto de productos y de tecnologías informáticas de la empresa Microsoft para devolver aplicaciones fácilmente portátiles sobre Internet. El objetivo es de proporcionar un servidor web local que permite gestionar servicios y evitando de externaliser de los datos privados sobre un servicio web de almacenaje o un alojamiento web tercio.
.LIMPIO se basa en varias tecnologías :
El Framework .LIMPIO ha sido concebido por Anders Hejlsberg, el padre de Delphi . Éste ha desarrollado entre demás el lenguaje C#[2].
Sumario |
System.Runtime.InteropServices Y System.EnterpriseServices . El acceso en las otras funcionalidades es proporcionado gracias a P/Invoke .
El framework .Limpio descansa sobre la Common Lenguaje Infraestructura (o CLI). Su objetivo es de proporcionar un lenguaje independiente de la plataforma, también bien para el desarrollo que para el fusilamiento. Ella inclut de las funciones para gestionar los errores, lo recoge-miettes, la seguridad y la interoperabilidad con los objetos COM. La implementación de la CLI por Microsoft es llamada Common Language Runtime (o CLR).
Ver también : Dynamic Language Runtime y Máquina virtual applicative.
La seguridad es gestionada por el CASO (Código Access Security). CASO es basado en un sistema de pruebas asociadas a una assembly particular. La prueba » es el origen del assembly (Instalación local, descarga a marchar de Internet o de una Intranet, …). CASO utiliza esta prueba para determinar los permisos datos en el código. Un código puede pedir una autorización para el código que llama. La demanda de autorización sabe cuando el CLR recorre la pile de llamada : cada assembly de cada método en la pile es verificada. Si al menos una de estas assembly no es autorizada a tener el permiso pedido una excepción es levantada.
Cuando una assembly es cargada, el CLR efectúa varios tests cuya validación y la comprobación. Durante la validación, el CLR verifica que el assembly contiene un código y de los métadonnées validas. Después, verifica que las mesas internas son correctas. La comprobación verifica que el código no hace nada de dangeureux. El código no-seguro será ejecutado únicamente si el assembly tiene el permiso ‘skip verification’.
L .LIMPIO Framework utiliza de los appdomains (propiedad de aplicación) como mecanismo para aislar el código de un proceso. Uno appdomain puede ser creado y del código cargado o descargado de un appdomain independientemente de los otros appdomain. Los appdomains pueden también ser configurados independientemente con diferentes privilegios de seguridad. Esto puede ayudar a mejorar la seguridad de una aplicación separando el código potencialmente dangeureux del resto. No obstante, el desarrollador tiene que separar la aplicación en varias bajo-propiedades, lo que no es a la carga del CLR.
El CLR toma carga la gestión de la memoria (allocation y liberación). El allocation de la memoria para las instancias de los tipos .LIMPIO (objetos) es efectuada de modo continuo a marchar del montón. Tanto tiempo como hay una referencia hacia un objeto (directa o indirecta vía un graphe), el objeto es considerado como que es utilizado por el CLR. En cuanto ya no hay de referencia sobre un objeto (ie, ya no puede estar ni alcanzado ni utilizado), lo recoge-miettes ( inglés : Garbage Collector), que se ejecuta periódicamente sobre un proceso ligero diferente de aquel de la aplicación, pasa liberar el objeto de la memoria.
Lo recoge-miettes del .LIMPIO es no-déterministe : se ejecuta sólo después de que una cierta cantidad de memoria ha sido concedida o se hay un defecto de memoria. No hay mediano de determinar cuando las condiciones de déclenchement del recoge-miettes son satisfechas. Cada aplicación .LIMPIO posee un conjunto de elementos raíces que están de los pointeurs mantenidos por el CLR y que pointent sobre los objetos de los montones gestionados. Esto inclut de las referencias en los objetos statiques, a aquellos defino como variables locales, a los parámetros definidos en el alcance corriente del código y finalmente a los registros processeurs[3]. Cuando lo recoge-miettes se ejecuta, suspende la aplicación y, para cada objeto référencé en la raíz, enumera récursivement, gracias a los métadonnées .LIMPIO y a la reflexión, todos los objetos que puede alcanzar y la marca. Enumera luego todos los objetos sobre el montón (que eran concedidos inicialmente de modo continuo) que utiliza la reflexión ; todos los objetos que no han sido marcados son considerados entonces como de los residuos. Es la fase de marquage. No obstante, este procedido deja trozos de memoria libre entre los objetos todavía référencés ; estos objetos son luego compactés utilizando memcpy para devolver el espacio memoria utilizada nuevamente continuo. Las direcciones de las pointeurs son actualizadas consecuentemente. Después de estas operaciones, la aplicación retoma su fusilamiento.
En realidad, lo recoge-miettes es basado en un sistema de generación. Cada objeto se ve afectado a una generación ; los objetos nouvellement creas pertenecen en la generación 0. Los objetos que quedan después de la primera pasa del recoge-miettes se ven promovidos a la generación 1 y los objetos que quedan después de una segunda pasa son promovidos en la generación 2 (nivel máximo). Los objetos que tienen un nivel de generación elevada son menos a menudo analizado por lo recoge-miettes que los objetos que tienen un flojo nivel de generación. Este algorithme espera mejorar la eficacia del recoge-miettes, porque los viejos objetos tienen tendencia a tener una duración de vida más larga que los nuevos objetos[4].