Curso de Capacitacion en Tecnologias de Microsoft, Assemblies en El Framework 4 .Net

download Curso de Capacitacion en Tecnologias de Microsoft, Assemblies en El Framework 4 .Net

of 22

description

capacitacion tecnologica .NET

Transcript of Curso de Capacitacion en Tecnologias de Microsoft, Assemblies en El Framework 4 .Net

  • Curso de capacitacin en tecnologas de Microsoft .NetAssemblies en el Framework 4.0

    Jorge Alejandro Nez Delgado

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Licencia

    This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/.

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Sobre este curso

    El curso esta enfocado a introducir al lector en tecnologas de Microsoft .Net, nos enfocaremosen 3 tecnologas:

    Assemblies EntityFramework Windows Communication Fundation

    En el transcurso del curso explicaremos dichas tecnologas y el uso en el mbito laboral.Se ofrecern herramientas y conocimientos bsicos que nos ayudarn a crear aplicaciones contecnologas de Microsoft y con el Framework 4.0. Estudiaremos los conceptos bsicos y lospondremos en prctica.

    El curso estara dividido en las tres secciones mencionadas, por lo cual tendremos tresarchivos distintos y uno goblal donde explicaremos cada uno de los temas.

    Objetivo

    Dicho curso tiene como objetivo ofrecer una introducin bsica y prctica a las tecnologasmencionadas anteriormente de Microsoft .Net, as como lograr una comprensin de las mismasy poder ponerlas en practica en sus desarrollos laborales.

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Contenido

    1. Assemblies (Ensamblados) .Net1.1. Qu son los Assemblies?1.2. Tipos de Assemblies1.3. Creacin de Assemblies1.5. GAC de .Net Framework 4.0

    1.5.1. Qu es el GAC?1.5.2. El Strong Name1.5.3. Registro de Assemblies en Framework 4.0

    1.6. Consumo de ensamblados tipo Dll privados y pblicos1.7. Versionamiento de un Assembly

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • 1. Assemblies (Ensamblados) .Net

    1.1. Qu son los Assemblies?

    Los ensamblados en .Net son bsicamente una bibilioteca de cdigo compilado, los desarrollosen Microsoft .Net se conforman de ensamblados, los cuales nos ofrecen herramientas para elversionamiento actualizaciones e instalaciones.

    Existen dos variantes de ensamblados:

    Ensamblados Privados. Los ensamblados privados son utilizados nicamente por unaaplicacin, por lo generar estos ensamblados estan ubicados en la carpeta principal de laaplicacin o en sus subcarpetas.

    Ensamblados Pblicos. Los ensamblados pblicos pueden ser utilizados por ms de unaaplicacin simultaneamente, los cuales son localizados en el CAG (Global AssemblyCache) del framework 4.0.

    Bsicamente los ensamblados nos permiten el desarrollo seccionado de las aplicaciones y eluso de ensamblados pblicos para nuestras diversas aplicaciones.

    1.2. Tipos de Assemblies

    Existen dos tipos de ensamblados en Microsoft .Net Framework 4.0 que tienen distintafuncionalidad, los definiremos acontinuacin:

    Ensamblados Dlls. Los ensamblados de tipo Dll son bibliotecas de clases, generalmentecontienen la logica necesaria para el funcionamiento de la aplicacin.

    Ensamblados EXE. Los ensamblados de tipo EXE son los ejecutables que se encargande arrancar nuestras aplicacines en de Microsoft .Net.

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • 1.3. Creacin de Assemblies

    Los ensamblados en Microsoft .Net son creados mediante proyectos de una solucin, los cualespueden ser una libreria de clases, proyectos de windows form o proyectos de consola, acontinuacin explicaremos mediante un ejemplo la creacin de ensambladores con Microsoft Visual Studio 2010.

    Creamos una nueva solucin hacemos click en Archivo>Nuevo>Proyecto Lo cual nos mostrar las herramientas para crear un nuevo proyecto y los tipos de proyecto,como vemos en la imagen:

    En esta ventana tenemos distinas opciones para crear nuestra solucin, la cual nos permite crearun proyecto de Windows Forms, Aplicacin de consola, Bibilioteca de clases, entre otros. Enesta seccin vamos a ver los tres mencionados. En la ventana podemos crear los distintosensamblados que mencionamo;, para crear un ensamblado de tipo Dll creamos un proyecto deBiblioteca de clases, mientras que para crear un ensamblado de tipo EXE creamos una proyectode Windows Forms o de Aplicacin de consola.

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • El primero proyecto que aadiremos a la solucin sera un Windows Forms, lo cual nos crearlo siguiente:

    Dentro de la solucin se ha creado un proyecto de tipo Windows Forms que nos generar unensamblado de tipo EXE. El proyecto contiene varias clases: la clase Form1.cs es una clasepartial y se conforma de dos archivos Form1.cs y Form1.Designer.cs y la clase Program.cscontiene nuestro mtodo Main que es el punto de entrada de nuestra aplicacin, en esta clase sepuede seleccinar qu formulario arrancar al ejecutar el ensamblado EXE (por buenas prcticasremombramos la clase Form1.cs por frmAssembliesExe.cs).

    Vamos a generar un botn en el formulario al cual llamaremos btnHolaMundo, le aadiremosun evento de tipo Click en el cual lanzaremos el letrero Hola Mundo!, el cdigo quedara as:

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Ahora vamos a correr el proyecto, lo podemos hacer de dos formas: una es haciendo con latecla F5 o mediante el botn run, el simbolo de play verde ubicado en la parte superior de laventana nos mostrara nuestro formulario y al hacer click en el botn nos enviara el mensaje deHola mundo!:

    Lo interesante de esto es que nuestra aplicacin se gener mediante la accin de run. Podemosverlo en la carpeta de la solucin en la siguiente ruta:

    c:\TuCarpeta\Projects\CursoNetAssemblies\CursoNetAssemblies\bin\Debug

    Como se muestra en la siguiente imagen:

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • En la imagen vemos 3 nuevos archivos que nos gener Visual Studio, los archivos ProgramDebug y vshost no nos ineresan, nos vamos a concentrar en el archivo EXE llamadoCursoNetAssemblies que como podemos ver tiene el nombre de nuestro proyecto, este esnuestro ensamblado que ejecuta nuestra aplicacin.

    Ahora vamos a agregar un nuevo proyecto a la solucin que ser de tipo Biblioteca de clases.Repetimos los pasos anteriores pero seleccionamos el proyecto de tipo Biblioteca de clases y lollamaremos BibliotecaAssemblies, nos genera lo siguiente:

    Ahora la solucin cuenta con dos proyectos uno de tipo EXE y otro de tipo Dll, nuestro nuevoproyecto creado contiene la clase llamado Class1.cs, a la que renombraremos comoSaludoMundo.cs, dentro de la clase tendremos un mtodo estatico llamado HolaMundo(), quenos devolver un mensaje de saludo, el cdigo es el siguiente:

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Ahora vamos a agregar nuestra Biblioteca de clases a las referencias de WindowsForms, parahacer esto hacemos click derecho en la carpeta de References de nuestro proyecto deWindowsForms y seleccionamos Agregar Referencia, la cual nos abrir la siguiente ventana:

    En esta ventana tenemos 5 pestaanas diferentes que nos permiten agregar distintas referenciasa nuestro proyecto. A nosotros nos interesa la pestaa de Proyectos, la cual nos mostrar losproyectos que tenemos en nuestra solucin, agregamos el proyecto de Biblioteca deAssemblies, sto nos permitira consumir los objetos pblicos del proyecto en nuestro proyectode Windows Forms y nos agregar la referencia dentro de la carpeta References.

    Como nos muestra la imagn anterior hemos agregado nuestro proyecto BibliotecaAssemblie anuestro proyecto CursoNetAssemblies.

    Vamos a editar un poco el cdigo de nuestor botn btnHolaMundo, ahora en vez de mostrar elmensaje directo en el dialog box nos mostrar el mensaje tomado de nuestra proyecto de tipoDll, el cdigo es el siguiente:

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • En este cdigo hemos agregado el objeto SaludoMundo y llamado a su mtodo HolaMundo,pero para poder consumir este objeto dentro de la clase frmAssembliesExe es necesario hacerla llamada a la referencia utilizando la palabra reservada using.

    Si compilamos nuestro proyecto o corremos el mismo nos genera ms archivos dentro denuestra carpeta de bin del proyecto CursoNetAssemblies::

    Ahora tenemos un archivo de tipo dll, que contiene nuestro cdigo del proyectoBibliotecaAssemblies, de igual forma en la carpeta bin del Proyecto BibliotecaAssambliestendremos generado nuestra dll del proyecto.

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Como vimos en los primeros temas de esta seccin del curso este ensamblado creado de tipoDll es un ensamblado Privado, porque de momento se encuentra dentro de nuestra carpeta de laaplicacin, si arrancamos el proyecto y hacemos click en el botn hola mundo suceder lomismo que anterior mente, la diferencia es que nuestra aplicacin esta consumiendo elensamblado creado para hacer la llamada al mtodo HolaMundo de la clase SaludoMundo.

    1.5. GAC de .Net Framework 4.0

    1.5.1. Qu es el GAC?

    El Global Assembly Cache o mejor conocido por sus siglas en ingls GAC de Microsoft .NetFramework 4.0, es una herramienta proporcionada por el Framework para el uso deensmablados pblicos, ste lleg para reemplazar el registro de dll's del Registry.

    El GAC nos ofrece una fuerte herramienta de desarrollo, puesto que podemos registrar en estenuestros ensamblados globales de nuestras distinas aplicaciones, para as poder ser consumidaspor stas. ste nos gestiona el uso de los ensamblados y el uso de estos en memoria.

    1.5.2. El Strong Name

    Existe un requisito para poder hacer uso del GAC y es que nuestros ensamblados debencontener un Strong Name, que es una llave pblica que nos permite darle una identidad anuestro ensamblado, Visual Studio nos permite asignar estos strong name a nuestrosensamblados.

    Para crear un Strong Name es necesaro el uso de la herramienta sn.exe (Herramienta de nombreseguro), sta nos permitir firmar nuestros ensamblados con nombres seguros. Para hacer usode esta herramienta es necesario abrir el smbolo del sistema de visual studio ubicado en Inicio> Todos los Programas > Microsoft Visual Studio 2010 > Visual Studio Tools y ejecutamosSimbolo de sistema de Visual Studio, al ejecutar la herramienta nos mostrar una ventanasimilar al CMD de Windows, como se muestra en la siguiente imagen:

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • En dicha ventana vamos a ejecutar el comando sn, el cual consumir el archivo sn.exe, para vertodas las opciones de este comando visitar la siguiente pagina web:

    http://msdn.microsoft.com/es-es/library/k5b5tt23%28v=vs.110%29.aspx

    Por el momento a nosotros solo nos interesa crear la llave para nuestros ensamblados por lo quetilizaremos el siguiente comando:

    sn -k C:\Users\Chiro\Desktop\Key.snk

    Para efectos prcticos estoy creando la llave en mi escritorio, pero ustedes pueden elegir dondecrear su llave, al ejecutar el comando nos mostrara lo siguiente:

    sto nos indica que las llaves fueron creadas en la ruta seleccionadas, como se muestra en laimagen:

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • La llave fue creada en mi escritorio, para una buena practica he creado dos llaves que se llamanigual al nombre de los proyectos creados anterior mente, como se muestra en la siguienteimagen:

    Para hacer uso de estas Strong Names en nuestros ensamblados debemos arrastrar el archivodentro del proyecto de Visual Studio, y nos mostrar lo siguiente:

    Como podemos observar en la imagen nuestros proyectos ya cuentan con sus respectivosStrong Names.

    Una vez agregado el snk al proyecto hacemos click derecho en el nombre del proyecto yseleccionamos propiedades, en esta ventana nos vamos a Firma y activamos la casilla de Firmarel ensamblado y elegimos el StrongName, como se muestra en la siguiente imagen:

    Tambin es necesario agregar el snk a la carpeta donde se encuentre nuestra dll y exe. Esto nospermitir firmar el ensambado y podremos registrarlo en el GAC.

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • 1.5.3. Registro de Assemblies en Framework 4.0

    Una vez teniendo nuestras Strong Names en nuestros proyectos podemos volver a generar lasolucin y esto nos permitir registrar nuestra Dll en el GAC y con nuestro EXE hacer uso denuestra Dll registrada en el GAC.

    Terminando la generacin de nuestro proyecto ya nos ser posible registrar nuestras Dlls en elGAC, para esto vamos a hacer uso de una herramienta llamada gacutil.exe. Para hacer so deesta herramienta es necesario abrr el Simbolo de Sistema de Visual Studio, para ms referenciavisitar la siguiente pagina web:

    http://msdn.microsoft.com/es-es/library/ex0ss12c%28v=vs.110%29.aspx

    El gacutil.exe nos ofrece herramientas para registrar y quitar ensamblados de nuestro GAC,para esto se utilizn los siguientes comandos:

    Para registrar un nuevo ensamblado podemos hacer so del siguiente comando:

    gacutil /i Ruta\De\la\Dll.dll

    Para eliminar un ensamblado podemos hacer so del siguiente comando:

    gacutil /u NombreEnsamblado

    Vamos a instalar nuestro ensamblado de tipo Dll en el GAC, primero tenemos que generar nuestroproyecto BibliotecaAssemblies en el modo Release, esto se hace en la parte superior del Visual Studiocomo se muestra en la siguiente imagen:

    Despus de esto podemos compilar nuestro proyecto o la solucin completa, para este ejemplovamos a compilar la solucin completa haciendo click derecho en el nombre de la solucindentro del Explorador de soluciones y hacemos click en generar solucin, o de igual formapodemos hacer uso de la tecla F6, una vez terminada la compilacin abrimos el Simbolo deSistema de Visual Studio ejecutado como adminisrador y ponemos el comando gacutil /iRutaDelaDll.dll y lo ejecutamos, lo cual nos mostrar lo siguiente:

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Ntese que la ruta de la Dll ya no es \bin\Debug si no que es \bin\Release, esto es porquecompliamos nuestro proyecto como Release. Para saber si nuestro ensamblado fue registradocorrecamente existe dos formas de hacerlo; la primera es mediante el comando:

    gacutil /lr NombreEnsamblado

    Como se muestra en la siguiente imagen:

    Esto nos indica cuntos elementos encontr y la informacin del ensamblado, como su version,culture, publickeytoken y el processorArchitecture.

    La segunda forma es buscar direcamente en la carpeta del GAC, para el framework 4.0 seencuentra en la siguiente ruta:

    C:\Windows\Microsoft.NET\assembly

    Esta carpeta contiene tres carpetas:

    GAC_32 GAC_64 GAC_MSIL

    Nuestro ensamblado se ecuentra en la carpeta GAC_MSIL, dentro de esta carpeta estarn todoslos ensamblados registrados en nuestro GAC_MSIL, ah podremos encontrar una carpetanombrada como nuestro ensamblado en nuestro caso BibliotecaAssemblies dentro de estacarpeta podremos encontrar una o mas carpetas, las cuales nos indicarn la versin delframework, la versin del ensamblado y la PubliKey el nombre es parecido a este:

    v4.0_1.0.0.0__435f975be93e4147

    Dentro de esta carpeta podremos encontrar nuestra Dll, esto indica que esta registrada en elGAC y podr ser consumido por diversas aplicaciones, como un ensamblado pblico.

    1.6. Consumo de ensamblados tipo Dll privados y pblicos

    Ahora podremos hacer uso de nuestros ensamblados de manera privada y pblico, para mostrarla diferencia entre los ensamblados pblicos y privados, he creado una copia de la solucin quemanejamos en los primeros temas este tema.

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Antes que nada debemos entender como es que nuestra aplicacin busca sus assemblies, elprimero lugar donde va a ir a buscar el assembly es en el GAC, si no encuentra en el GAC elensamblado busca un ensamblado privado dentro de la estructura de carpetas donde seencuentra nuestra aplicacin.

    Como ya tenemos nuestro ensamblado de tipo Dll registrado en el GAC no tenemos que volvera hacerlo, pero si vamos a realizar un cambio a nuestro ensamblado privado, el que est ennuestro proyecto, vamos a cambiar el mensaje que este ensamblado nos provee a HolaMundo!, este es un ensamblado privado, el cdigo quedara as:

    Como podemos ver cambiamos el mensaje que nos retorna, ahora vamos a compilar nuestraaplicacin con la tecla F6, una vez terminado vamos a acceder a la carpeta Bin ya sea a releaseo debug dependiendo de nuestra compilacin, ah vamos a ejecutar nuestro aplicacin con el.exe, y hacemos click en el botn hola mundo, como se muestra en la siguiente imagen:

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Como podemos ver el mensaje nos manda de nuestro ensamblado que se encuentra en el GAC,esto es por lo mencionado al inicio de este subtema, el GAC est buscando los ensambladospblicos y encuentra nuestro emsamblado pblico y lo consume. Ahora vamos a cerrar nuestraaplicacin y a eliminar nuestro ensamblado pblico con el comando gacutil /u, ejecutamosnuevamente nuestra aplicacin y nos muestra lo siguiente:

    Nos manda nuestro mensaje del ensamblado privado, esto es porque no encuentra en el GACnuestra librera y se va a buscar en la rutas donde se est ejecutando la aplicacin.

    1.7. Versionamiento de un Assembly

    Los assemblies de Microsoft .Net nos ofrecen la posibilidad de llevar un versionamiento deestos, lo que nos ayudar a organizar las actualizaciones de nuestros sistemas. Para crear unversionamiento de nuestros ensamblados hay que entender el mtodo de versionamiento deestos, los ensamblados estan versionados en 4 secciones, por ejemplo:

    Major version Minor version Build number Revision1 0 1 7

    Existen dos tipos de versiones en los ensamblados los cuales son:

    Assembly Version. Este es el que nos interesa, ya que es el que indica la versin real denuestro assembly y es tlizado por el CAG.

    Assembly Information Version. Este es solo de tipo informativo, no es utilizado por elsistema, es usado para el nombre comercial de la aplicacin.

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Vamos a explicar las secciones de los versionamientos. Como vimos nos ofrecen 4 campos:

    Major version. El major version es tilizado cuando se realizan cambios muysignificativos en la aplicacin, como cambio de tecnologas o una reestructuracin de laapicacin, por mencionar algunos, esta versin rara vez cambia durante el desarrollo dela aplicacin.

    Minor version. Este campo es tilizado para cambios significativos en la aplicacin, loscuales pueden ser alteraciones en la logica de negocio, modificaciones significativas yreestructuramientos en mdulos de la aplicacin.

    Build number. Este campo es tlizado para cambios menores en la aplicacin, comopuede ser aadir nuevas funcionalidades, cambios menores en los mdulos de laaplicacin.

    Revision. Este campo puede ser tlizado con diversios objetivos, como correciones debugs o el nmero de services pack.

    Vamos a realizar un cambio de versionamiento en nuestros assamblies creados anteriormente,para esto realic una copia del proyecto original que estamos manejando en este curso. Ennuestra solucin contamos con dos proyectos, uno de tipo Dll y otro Exe, ambos sonassemblies, esto quiere decir que pueden ser versionados, para esto hacemos click derecho en elnombre del proyecto y seleccionamos la opcin de propiedades, en la pestaa de Aplicacinhacemos click en el botn de informacin de ensamblado, y nos abre la siguiente ventana:

    Como podemos observar nos muestra informacin del ensamblado, lo que ahorita nos ineresason las versiones del ensamblado y del archivo, la del archivo no la vamos a mover, vamos asuponer que hicimos unas modificaciones en los mdulos y corregimos unos cuantos bugs,entonces nuestra version de ensamblado quedar de la siguiente forma:

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Como vemos hemos corregido 3 bugs y mdificado un mdulo de la aplicacin, nuestra versinde ensamblado quedo 1.0.1.3, hacemos click en aceptar y guardamos el proyecto. Bien, vamosa hacer esto mismo con la version de WindowsForm la cual dejaremos en 1.2.0.1, una vezterminado de mdificar vamos a compilar nuestra solucin, y vamos a registrar nuestra Dll alGAC, con el comando gacutil /i Libreria.dll, si todo sali bien nos informar que el ensambladofue correctamente registrado, ahora realizamos un gacutil /lr Libreria.dll para ver como fueregistrado nuestro ensamblado

    Como podemos observar el GAC nos informa que existen dos versiones de nuestro ensambladoque pueden ser consumidas por nuestras aplicaciones, para ms referencias visitar:

    http://msdn.microsoft.com/en-us/library/dz32563a.aspx

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Por default nuestra aplicacin utlizar la versin ms reciente del GAC, para confirmar estovamos a cambiar el mensaje de retorno el mtodo HolaMudo, el cual dira Hola Mundo!Versin Nueva!!!, compliamos nuestra aplicacin y volvemos a registrar la libreria en el GAC,y corremos la aplicacin, el resultado ser el siguiente:

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado

  • Referencias

    http://www.gavd.net/servers/sharepoint/sps_item.aspx?itm=229&top=2http://msdn.microsoft.com/en-us/library/wd40t7ad%28v=vs.110%29.aspxhttp://msdn.microsoft.com/es-es/library/k5b5tt23%28v=vs.110%29.aspxhttp://msdn.microsoft.com/es-es/library/aa374224%28v=vs.85%29.aspxhttps://msmvps.com/blogs/cwalzer/archive/2007/06/06/versionamiento-de-assemblies.aspx

    Curso de capacitacin en tecnologas de Microsoft .Net Jorge Alejandro Nez Delgado