Tarea 2 - 2 Que es un assemby?
Este también esta chido...
Si queremos hacerlo fácil, un assembly es básicamente el DLL o EXE que se genera del código que se escribe en Visual Studio.
Sin embargo, no queremos hacerlo tan fácil, así que lo vamos a desmenuzar un poco más. Efectivamente, un assembly es el DLL o el EXE, pero puede contener más archivos también, como imágenes, archivos de texto, etc. Un assembly debe contener también información sobre sí mismo (como la versión, la lista de los archivos que lo constituyen, etc.), la cual es llamada Manifiesto, o "Assembly Manifest".
Los assemblies se pueden categorizar en dos tipos: privados (private) o compartidos (shared). La descripción de ambos se encuentran a continuación:
Bueno, entonces como funciona esto ahora??? Como mencionamos anteriormente, cuando un assembly es privado, el DLL será grabado en la misma ubicación de la aplicación. En este esquema, la mayoria de los assemblies serán privados, así que aun cuando dos aplicaciones utilicen un DLL con el mismo nombre, la ubicación física será siempre diferente. Volviendo al ejemplo anterior, la aplicación A tendrá su DLL "myFile.dll" en su ruta particular, y cuando la aplicación B se instale, su DLL "myFile.dll" será en otra ruta diferente, por lo cual ambos archivos "myFile.dll" existirán al mismo tiempo, y serán referenciados por sus "dueños" solamente.
Ahora, en caso de que se este utilizando un assembly compartido, es necesario saber que estos son marcados con un número de versión de la siguiente manera:
Si queremos hacerlo fácil, un assembly es básicamente el DLL o EXE que se genera del código que se escribe en Visual Studio.
Sin embargo, no queremos hacerlo tan fácil, así que lo vamos a desmenuzar un poco más. Efectivamente, un assembly es el DLL o el EXE, pero puede contener más archivos también, como imágenes, archivos de texto, etc. Un assembly debe contener también información sobre sí mismo (como la versión, la lista de los archivos que lo constituyen, etc.), la cual es llamada Manifiesto, o "Assembly Manifest".
Los assemblies se pueden categorizar en dos tipos: privados (private) o compartidos (shared). La descripción de ambos se encuentran a continuación:
- Assembly Privado: Es el assembly que será utilizado solamente por una aplicación en específico. Por ejemplo, supongamos que se desarrolla una aplicación de una casa de cambio, y se desea encapsular la lógica de los procesos de la casa de cambio en un DLL. Solo la aplicación que maneja la casa de cambio va a accesar este DLL, Inclusive, este DLL será instalado en el mismo folder donde se instalará la aplicación.
- Assembly Compartido: Este tipo de assemblies, por lo contrario, son accesados por diversas aplicaciones al mismo tiempo. Un muy buen ejemplo seria encapsular en un DLL el acceso a datos. En este caso, independientemente del tipo de aplicación, todas utilizarán este DLL para accesar los datos, así que se pondrá en el "Global Assembly Cache", el cual es un folder especial, el cual se encuentra físicamente en
:\WinNT\Assembly.
Bueno, entonces como funciona esto ahora??? Como mencionamos anteriormente, cuando un assembly es privado, el DLL será grabado en la misma ubicación de la aplicación. En este esquema, la mayoria de los assemblies serán privados, así que aun cuando dos aplicaciones utilicen un DLL con el mismo nombre, la ubicación física será siempre diferente. Volviendo al ejemplo anterior, la aplicación A tendrá su DLL "myFile.dll" en su ruta particular, y cuando la aplicación B se instale, su DLL "myFile.dll" será en otra ruta diferente, por lo cual ambos archivos "myFile.dll" existirán al mismo tiempo, y serán referenciados por sus "dueños" solamente.
Ahora, en caso de que se este utilizando un assembly compartido, es necesario saber que estos son marcados con un número de versión de la siguiente manera:
major.minor.build.revision
Es decir, cada vez que se genera una nueva versión del assembly, esta es marcada con su número de versión, por lo cual varias versiones del mismo assembly pueden coexistir juntas, y las diferentes aplicaciones que los accesen sabrán accesar la versión correspondiente.
Entonces, cuales son los pasos para crear un assembly???
Entonces, cuales son los pasos para crear un assembly???
- Crear el código fuente del DLL o EXE
- Generar el nombre único del assembly, utilizando SN Utility (SN.exe). Esta utileria generará un par de llaves privadas
- Firmar el DLL/EXE con la llave privada generada anteriormente, modificando el archivo AssemblyInfo. Para esto, es necesario modificar este archivo e incluir la siguiente linea [assembly:AssemblyKeyFile("file_path")]
- Compilar el DLL/EXE
- Copiar el DLL/EXE resultante al "Global Assembly Cache" usando AL Utility
0 Comments:
Post a Comment
<< Home