WebParts 1 – Creando nuestro primer WebPart para Sharepoint Services 3.0

Este pretende ser el primero de varios artículos dedicados a la creación de WebParts para Sharepoint Services 3.0, utilizando Visual Studio 2005 como herramienta y C# como lenguaje de desarrollo. Pero antes de empezar, quiero dar las gracias al colega MVP Carlos Segura (que sabe más que el maestro Yoda y no tiene sus orejas) por su estupendo sitio, que ha sido el culpable de mi adicción a esta estupenda herramienta de colaboración que es Sharepoint.

Empezaremos con la creación un WebPart muy sencillo (el típico “Hola mundo!”), estableceremos los pasos a seguir para su correcta publicación en un Sharepoint, y poco a poco iremos avanzando, ampliando sus funcionalidades:

  • Mostrando la información del usuario autentificado
  • Persistiendo las propiedades del WebPart en Sharepoint Services y permitiendo su exportación.
  • Extendiendo la funcionalidad para acceder a bases de datos
  • Agregando un control de excepciones para obtener información en el servidor de explotación en caso de error.
  • Comunicando con otros WebParts

Realmente la creación y distribución de un WebPart es ahora mucho más sencillo que en versiones anteriores, ya que esta versión está construido sobre ASP.NET 2.0, con lo que se pueden aprovechar todas las nuevas características introducidas.

Así pues para empezar a crear nuestro primer WebPart basta con iniciar un nuevo proyecto “Biblioteca de clases” con Visual Studio 2005, utilizando C# como lenguaje de desarrollo:

Llamaremos a nuestro proyecto MisPrimerosWebParts, y a continuación agegaremos una referencia al ensamblado System.Web, necesario para poder acceder al espacio de nombres WebParts. Esto es de vital importancia ya que todo WebPart que deseemos crear debe heredar de la clase base WebPart.

A continuación, agregaremos los espacios de nombres comentados anteriormente:

using System.Web.UI;
using System.Web.UI.WebControls.WebParts;

Y ya podemos empezar a crear nuestra primera clase derivada de WebPart, destinada a convertirse en el primer WebPart de nuestra colección. Observar que el código resultante queda reducido a la mínima expresión:

namespace MisPrimerosWebParts
{
    public class ElPrimero:WebPart
    {
        protected override void RenderContents(HtmlTextWriter writer)
        {
            writer.Write(“Hola mundo!”);
            base.RenderContents(writer);
        }
    }
}

¿Y esto es todo? Pues en lo referente a código si, eso es todo lo que vamos a codificar para este WebPart. Pero para poder ver publicado finalmente este WebPart hay que seguir a cuidadosamente una serie de pasos:

  1. Firmar el ensamblado: Del mismo modo que en versiones anteriores debemos firmar el ensamblado, sin embargo esto es ahora mucho más sencillo. Basta con ir a a las propiedades del proyecto (pestaña Firma) y seleccionar que vamos a firmar el ensamblado con una clave nueva. Escribiremos el nombre de fichero que almacenará la firma, y (muy recomendado) protegeremos el archivo de clave usando una contraseña segura. De este modo al compilar la aplicación se creará el nuevo fichero generado con extensión *.pfx que podemos abrir desde Visual Studio para ver la clave que contiene.

  2. Generar la solución (Ctrl+Shift+B) para crear el ensamblado MisPrimerosWebParts.dll y el fichero con la firma MisPrimerosWebParts.pfx (que en principio no volveremos a necesitar).
  3. Añadir el ensamblado a la Global Assembly Cache: Para poder utilizar el WebPart desde varios sitios de Sharepoint Services, vamos a instalar este ensamblado en la Global Assembly Cache (en adelante GAC). El primer paso consiste en copiar este ensamblado en una carpeta local del servidor, por ejemplo C:\MisWebParts. A continuación debemos ejecutar la utilidad de línea de comandos Gacutil.exe situada en la ubicación:

    C:\%program files%\Microsoft Visual Studio 8\SDK\v2.0\Bin

    Para ello abriremos una ventana de consola, nos situaremos en esta ubicación y agregaremos el ensamblado a la GAC de este modo:

    Gacutil -I C:\MisWebParts\MisPrimerosWebParts.dll

  4. Registrar esta clase en el web.config como un control seguro: Aunque previamente debemos conocer al public token de nuestro ensamblado, y tal vez el modo más sencillo sea visitando la carpeta dónde se encuentra la GAC (%Windows%\Assembly) y comprobando de paso que el assembly se ha instalado correctamente:

    Una vez disponemos del token de nuestro ensamblado, debemos modificar el fichero web.config de nuestro sitio (os recuerdo que habitualmente se encuentra en: C:\Inetpub\wwwroot\wss\VirtualDirectories\%sitio%\web.config), agregando este control en la sección “SafeControls” para posteriormente agregarlo a la colección de WebParts del site.

  5. Y por fin, la parte más esperada: vamos a agregar nuestro ensamblado a la lista de elementos web de nuestro sitio. Para ello debemos reiniciar los servicios del IIS (¡muy importante y algo de que solemos olvidarnos a menudo!), abrir la página de configuración del sitio y mostrar la lista de elementos web situada en: Configuración del sitio/Galerías/Elementos Web. Aquí encontraremos todos los WebParts disponibles para añadir a las páginas de Sharepoint Services pero sin embargo nuestro nuevo y flamante WebPart no aparece. Para que aparezca hay que añadirlo manualmente a la lista mediante la opción “Nuevo”, que nos mostrará todos los elementos contenidos en los controles de la sección “SafeControls” del web.config, marcar el elemento y también la opción “¿Sobrescribir si el archivo ya existe?” (por si acaso no es la primera vez que lo añadimos), pulsamos el botón “Llenar galería” y ¡voilà!, ¡Hemos terminado!
  6. Ahora ya podemos ir al diseño de la página en la que queramos insertar el WebPart y agregarlo desde la lista de elementos disponibles. El resultado debería ser algo similar a esto:

Bien, la primera conclusión que sacamos es que da bastante más trabajo la publicación de un WebPart que la creación propiamente dicha, no es así? Sin embargo, el resultado obtenido bien merece la pena.

En los próximos artículos iremos extendiendo la funcionalidad de este WebPart para hacerlo más complejo, ¡hasta entonces!

** crossposting desde el blog de Lluís Franco en geeks.ms **

14 thoughts on “WebParts 1 – Creando nuestro primer WebPart para Sharepoint Services 3.0

  1. Hola,estoy empezando en esto de los webparts y no he podido instalar el webpart como control seguro, tal y como lo explicas. También he utilizado la herramienta de lineas de comando Stsadm.exe y me dice version 2.0 no compatible.

    Estoy utilizando win server 2003 y SharePoint Portal Server, saben alguna cosa por lo qeu no me pilla mi webpart.

    Muchas gracias por el tutorial, ha ayudado mucho.

  2. Hola, estoy comenzando a crear un portal el WSPS 3.0 y necesito algunas ayuditas… como por ejemplo tengo levantado el como puedo crear sitios que trabajen con una base de datos personalizada, no con la que crea el programa por default… ???
    mil gracias

    Chello Guerra T.

  3. Hola ¿me podrias ayudar?, soy demasiado nueva en sharepoint e hice una pagina web para enviar correos, pero me pidieron montarla en sharepoint services 3.0, por favor me podrias dar una señal. (pames1985@gmail.com)

  4. Buenas necesito que me ayuden, pues tengo un cliente[Banco] el cual como sabran tiene una cantidad de informacion, bueno ellos actualmente utilizan una carpetas y dentro de ellas otras mas parecido al Explorador de Windows, yo quisiera que me ayudaran a encontrar una solucion para hacer la busqueda de un documento mas amigable y no ir de carpeta en carpeta. Eso es posible con web part se podria. Mil gracias de antemano por sus sugerencias a moisvi@hotmail.com

  5. hola no conosco esto del sharepoint services 3.0, hace algunos dias mi acesor de practcas me dijo que le interesaba implementar esta herramienta, para poner web sites en el intranet de la empresa[lechera], el cual ayudaria a los usuarios a disponer de informacion, ducumentacion etc. alguien me podira ayudar empapandome de informacion para la creacion de web sites, de antemano muchas gracias

  6. HOLA, YO TAMBIEN ESTOY CON LO DE LAS WEB PARTS, MI DUDA ES ,¿Cómo hacer que las web parts sean editables por los usuarios finales ?

    Gracias, Saludos Cordiales

  7. Estimado,

    Primero que todo excelente tu tutorial.
    Lamentablemente he tenido problemas, he logrado ensamblar al GAC mi dll y ademas registrarla en el safecontrol, pero aun no logro verla en Sharepoint.

    Cual será el problema?

  8. Estimado,

    Primero que todo excelente tu tutorial.
    Lamentablemente he tenido problemas, he logrado ensamblar al GAC mi dll y ademas registrarla en el safecontrol, pero aun no logro verla en Sharepoint.

    Cual será el problema?

  9. ei!! esta muy bine esto pero… yo lo de acer la parte del cmd… la ruta no existe el SDK del visual studio 8 no existe!!:S

    podrias ayudarme?

    tengo una carpeta a la misma altura que visual studio 8 que se yama visual studio 9.0 i dentro si hay un SDK
    con una version v3.5
    pero el comando no sirve alli!!:S

Leave a Reply

Your email address will not be published. Required fields are marked *