02 junio, 2012

Tipos de DLL: Funcionamiento y la importancia de las DLLs

Las DLL (Dynamic Link Library - Librerías de enlace dinámico son librerías o bibliotecas que ejecutan rutinas y funciones necesarias para un correcto funcionamiento del sistema y de las aplicaciones que utilizamos.

Las mayoría de DLLs incluidas en un sistema MS Windows están ubicadas:
C:\Windows\System32 o %SYSTEMROOT%\System32
Cuando se realiza una instalación de OS Windows, este instala las librerías DLL necesarias pasa su uso y otras a mayores y comunes para el uso de aplicaciones, de este modo, para el programador o el desarrollador del software le permite reducir tamaño de peso en su código y así optimizar el rendimiento, el espacio en disco y a veces la sobrecarga de subrutinas de la aplicación. Ya que muchos programas llaman a las DLL que el desarrollador sabe que están predeterminadas en una instalación de Windows genuina o añadidas a posteriori en algún SP (Service Pack) de Windows.

Decir que no todas las extensiones de los ficheros tienen por que ser DLL, sino que también son: OCX (OLE (Object Linking and Embedding) Control Extension), DRV (librearías utilizadas para Drivers), VXD (Virtual Device Driver), un ejecutable .exe, etc.

DLL Compartidas:

Muchos programas ejecutándose al mismo tiempo de manera concurrente, pueden estar utilizando las mismas DLL almacenadas en memoria durante la instancia de ejecución de las aplicaciones, estas logicamente nos se utilizan al mismo tiempo. Es decir, por ejemplo, si una DLL es la que nos permite en un programa visualizar el cuadro desplegable "Opciones" de la barra de herramaientas, y aunque tengamos dos aplicaciones abiertas que utilizen la misma DLL para esto, a la vez en el mismo tiempo, como es lógico solo podemos hacer click en un botón no en dos sitios distintos a la vez ni en el mismo tiempo, por eso cada aplicación administra y gestiona ciertas reglas para el tiempo de ejecuciones de la utilización de la misma librería en diferentes espacios de tiempo y según las necesidades y peticiones del usuario a la aplicación determinada en el momento de uso, estas son: DLL compartidas.

Las DLL Hell (Infierno de las DLL):

Cuando un software gestiona de manera inadecuada sus librerías compartidas, pueden ocurrir errores de fallo con el correcto funcionamiento del software en cuestión.
También se pueden producir errores, al instalar un software que reemplaza a una versión posterior de una DLL del sistema, ya que aplicaciones que pueden utilizar una versión más vieja que la versión más reciente, esta ya no funcionaría de manera adecuada o ciertas opciones del programa fallarían.
Pasa lo mismo al desinstalar un software que use una librería compartida por otras aplicaciones, y estos otros dejen de funcionar o producir errores en alguna de sus funciones, en el momento de no poder encontrar las DLL necesarias.

Un detalle muy importante y a tener en cuenta es que las DLL pueden tener el mismo nombre pero ser de diferentes versiones. Para ver la versión de una DLL podemos hacer:
Clic derecho sobre la DLL en cuestión > Propiedades > Pestaña "Versión".

DLL Protegidas: WFP (Windows FIle Protection - Protección de archivos de Windows)

La tecnología WFP (Windows FIle Protection) evita que se borren, sobreescriban/sustituyan de manera inadecuada los ficheros DLL por medio de los agentes o wizards de instalación de las aplicaciones. Solamente los SP (Service Pack o Paquetes de Servicio, que nos son más que un conglomerado de actulizaciones) pueden actualizar las versiones de las DLL del sistema.
A estas librerías Microsoft les llama: DLL Protegidas.
WFP también intenta eliminar los errores de los archivos DLL y además minimiza los problemas causados por instalación y/o actualización de aplicaciones.

DLL Privadas o Únicas:

Son DLL utilizadas especificamente por la aplicación instalada y que únicamente las puede utilizar dicha aplicación.
Por ejemplo, un software puede que utilize una DLL ya existente en el sistema operativo pero en una versión concreta y otra DLL que sea específica del programa que la utiliza o de terceros (un ejemplo de una DLL de terceros puede ser el uso de las bibliotecas: Winpcap (necesria para interactuar con sockets de red y así poder utilizar rutinas para capturar tráfico de datos a bajos niveles)), por lo que en la instalación de la aplicación este realiza una copia en su direcctorio de instalación por defecto (que la ruta por defecto podría ser algo como: C:\Archivos de programa\APLICACIÓN\ (dependiendo la versión OS Windows que utilicemos)), ya que quizás utilice una versión determinada de la DLL, también otra específica de terceros o inclusive una propia y quiere que cuando se instale un Service Pack NO sustituya la versión de la DLL alamacenada en el sistema.

Para instalar o desinstalar bibliotecas DLL, OCX, etc.
Podemos hacer uso del comando para la consola de Windows: regsvr32. Para ver su ayuda: regsvr32 /?

También podemos simplemente descargar y ubicárlas en el path por defecto donde están almacenadas en Windows (mencionado al principio de esta entrada) y también ubicarla en la aplicación en la que se nos visualiza el mensaje de error por la necesidad de la búsqueda de una versión de una librería DLL determina y que quizás la utilice de manera Privada.

Existen infinadad de websites para descargar DLL. Dejo algunas referencias conocidas y bien posicionadas: es.dll-files.com

Saludos!

No hay comentarios:

Publicar un comentario

Entradas Relacionadas