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 cuidadosamente una serie de pasos:
- 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.
- 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).
- 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 8SDKv2.0Bin
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:MisWebPartsMisPrimerosWebParts.dll - 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:InetpubwwwrootwssVirtualDirectories%sitio%web.config), agregando este control en la sección «SafeControls» para posteriormente agregarlo a la colección de WebParts del site. - 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!
- 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!
13 Responsesso far
Muy util y muy bien explicado. Muchas gracias!
Muy interesante… pero… ¡esquirol!, ¡has abandonado VB!… ¡mala pécora, mala persona!. =:-D
Hola Lluís, muy bueno el post…Tb te remito a uno que publicamos en el blog del CIIN, http://geeks.ms/blogs/ciin/archive/2006/12/01/extensiones-de-vs-2005-para-wssv3-creando-web-parts.aspx, y en el que explicabamos como crear web parts con las extensiones de WSSv3 para VS 2005 y que nos facilitan tanto la creación de las web parts en base a una plantilla específica, como el despliegue de las mismas que es automático…sólo otra cosilla, porque en su momento me lo preguntaron en un curso que hicimos de WSSv3, no es necesario que reinicies todo el IIS, sino sólo aquellos sitios de WSSv3 dónde hayas desplegado la web part.
Un saludo
JC
🙂
Gracias!
Muy buenos artículos en tu blog, lo revisaré más a menudo.
Saludos desde Andorra,
Continuando con la serie de artículos acerca de la creación de WebParts para Sharepoint Services 3.0,
Hola…
No se si para que el WebPart se haga visible en la lista de Nuevo WebPart faltaria explicar como se genera el archivo .wsp
To Create a .webpart file for your Web Part
After you have deployed your Web Part and registered it in the Safe Control list, navigate to http://myserver/_layouts/newdwp.aspx, where myserver is the name of the server on which your SharePoint site is deployed.
Select the check box next to MyWebPartLibrary.HelloWorldWebPart.
Click Populate Gallery and the Web Part is added to the Team Site Gallery.
Note:
To create a .webpart file for your Web Part, you can select Edit for the Web Part in the Web Part Gallery, and then click Export. You are prompted to provide a location in which to put the .webpart file.
Saludos y espero que sea de utilidad
CarlosMag
PingBack desde Mi primer WebPart « Sharepoint
Muy util para iniciarse, muchas gracias
Hola…. mi nombre es Luis Echarry y soy de Venezuela, estoy comenzando a trabajar en pag. web con Sharepoints, ASP.net y C# …… sugiero que por favor se cree un video de lo básico para crear webpart….. este articulo esta muy bueno…gracias
Es un excelente articulo, me ha servido. gracias y saludos
Josué Miguez S.
Me manda el mensaje que dice «Failure adding assembly to the cache:Unknown Error», ¿que sera?
ya agregue eso tal y como dice el articulo me aparece en la lista que quiero pero al mandarlo impriminr me aparece el siguiente error Exception from HRESULT: 0x80131047 y ya no se que me falte
Gracia
Vamos a ver, he instalado sharepoint en un windows vista, y con visual studio 2008 he creado un webpart «hola mundo», vs2008 tiene una opcion de implementar, le doy a esa opcion, y la primera vez crea en la carpeta bin del proyecto un .bat y unos xml, ejecuntando como administrador ese setup.bat la primera vez lo «instala», voy a sharepoint y lo puedo seleccionar de la lista de webparts y funciona estupendamente, lo malo, es que cuando modifico y vuelvo a compilar e implementar me da el error «Error 1 Referencia a objeto no establecida como instancia de un objeto.» o si no, un error relacionado con que la carpeta con nombre de webpart ya existe, vamos que me gustaria saber como eliminar un webpart totalmente para poder modificar porque sino voy listo. hablo desde la mas absoluta ignorancia, espero que alguien me rescate de esta ignorancia.
Gracias