SSD: el síndrome de la Sharepoint dependencia

Sharepoint me proporciona seguridad y me hace sentir más fuerte. Las 10 cosas que más me gustan de Sharepoint.

10 puntos para entender a Project Server 2010

Microsoft Project es quizá la herramienta de gestión de proyectos más conocida y utilizada por los líderes de proyectos...

Diseño Gráfico en SharePoint

Serie de artìculos que nos ayudan a incorporar diseño gráfico en las implementaciones de SharePoint...

Revista CompartiMOSS

Artículos publicados en la revista especializada en SharePoint: CompartiMOSS.

Contacto

Enviame un correo :-)

Mostrando entradas con la etiqueta Visual Studio 2010. Mostrar todas las entradas
Mostrando entradas con la etiqueta Visual Studio 2010. Mostrar todas las entradas

miércoles, 20 de octubre de 2010

Manejadores de Eventos en SharePoint 2010 con Visual Studio 2010 (screencast para Channel 9)

imageHe tenido el honor de participar con un screencast sobre el tema de referencia para Channel 9. ¿Cómo? Gracias a la iniciativa de SUGES y en particular de Mario Cortes Flores y Juan Carlos González Martin.

imageEspero que les resulte interesante, he intentado ser breve y concreto (12 minutos). Pueden accederlo en este enlace: http://channel9.msdn.com/Blogs/channel9spain/Manejadores-de-Eventos-en-SharePoint-2010-con-Visual-Studio-2010 o verlo más abajo.

Get Microsoft Silverlight

Hasta la próxima!

viernes, 8 de octubre de 2010

Herramienta del día: SPVisualDev - SharePoint Developer Tool

Para todos aquellos que desarrollamos aplicaciones para Sharepoint y no recordamos dónde tenemos que dejar cada archivo, los amigos de CodePlex, nos dejan un muy buen add-in para Visual Studio 2008 y 2010 que facilita esta tarea.

SPVisual Dev – Sharepoint Developer Tool

Además nos permite hacer desarrollo en forma remota e implementar directamente nuestras soluciones sobre el servidor de aplicaciones.

Hasta la próxima entrega!

lunes, 27 de septiembre de 2010

Manejadores de eventos en SharePoint 2010 con Visual Studio 2010 (revista CompartiMOSS)

image Este artículo lo escribí originalmente para la revista CompartiMOSS gracias a una invitación de Fabián Imaz.

Les recomiendo ampliamente esta revista que pueden accederla desde este enlace:

http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx 

o desde su página en Facebook:

http://www.facebook.com/group.php?gid=128911147140492&v=wall&viewas=0#!/group.php?gid=128911147140492&ref=ts.

Que les sea útil!

Introducción

Los manejadores de eventos constituyen una de las tantas características que SharePoint 2010 posee a la hora de extender una aplicación mediante programación. En lo personal, estoy convencido de que la mejor forma de potenciar SharePoint es aprovechando al máximo las funcionalidades que la plataforma nos ofrece out of the box y reservar la programación para los casos en que se justifique. De esta manera obtendremos aplicaciones más robustas, en menos tiempo, con menor costo y menos propensas a errores.

Bajo este punto de vista, considero que los manejadores de eventos nos ofrecen una funcionalidad con una muy buena relación costo-beneficio, ya que son sencillos de programar y a cambio nos ofrecen funcionalidad más que interesante.

¿Para qué necesitamos un manejador de eventos? En principio debemos entender que los manejadores de eventos agregan comportamiento a listas e ítems (entre otras entidades). Se ejecutan automáticamente como respuesta a un evento como agregar una columna en una lista o modificar un ítem en una lista. Los usos más comunes, según mi opinión, son:

1. Validaciones de datos, previas a la transacción de alta o modificación de un ítem (lo que no podemos resolver con la nueva funcionalidad de SharePoint 2010: Custom Validation).

2. Control de integridad para fortalecer las reglas de negocio que no pueden ser manejadas con los campos de búsqueda (lookup).

3. Control de unicidad de columnas o conjunto de columnas (lo que no podemos resolver con la nueva funcionalidad de SharePoint 2010: Enforce unique values ).

4. Ejecución de procesos de negocio, acciones que puedan ser automatizadas y que no necesiten intervención de un usuario (en cuyo caso quizá sea más acertado programar un flujo de trabajo)

Intro

5. Lo que no puede resolver un campo calculado: con eventos disponemos de toda la potencia de .Net para calcular en forma automática el valor de nuestras columnas.

6. Protección de la parametrización, al impedir, por ejemplo, que un usuario con permisos de administración pueda eliminar una columna de una lista.

7. Controles en la seguridad, útil cuando necesitamos aplicar (o controlar) determinados permisos sobre un ítem basados en un elemento dinámico como un dato en una columna (u otra regla de negocio más sofisticada).

Si me permiten la simplificación, creo que la mejor manera que tiene el lector de comprender qué es un manejador de eventos es recordar lo que nos ofrecen los triggers de un sistema de base de datos relacional.

Eventos en SharePoint 2010

En la sección anterior enumeré ideas de problemáticas que podemos resolver con los manejadores de eventos, pero para entender la potencialidad de esta funcionalidad, lo primero que necesitamos es conocer la lista de eventos que soporta SharePoint 2010, que a continuación enumero:

Eventos de lista

· Columnas: creación, eliminación y modificación.

· Listas: creación y eliminación.

Eventos de ítem lista

· Ítem: creación, eliminación, modificación y protección.

· Archivos adjuntos: creación y eliminación.

· Archivos: movimiento y conversión.

· Recepción de un evento de contexto de lista.

Eventos de e-mail

· Recepción de mensaje de e-mail.

Eventos de web

· Colección de sitios: eliminación.

· Sitio: aprovisionamiento, eliminación y movimiento.

Eventos de flujo de trabajo

· Comienzo, suspensión y desactivación.

Eventos de característica

· Activación, desactivación, instalación y desinstalación y modificación.

Intro_After_Before

Tipos de eventos

En casi todos los casos existen dos tipos de eventos, los que se ejecutan antes (before) de que se efectúe la confirmación de la transacción en la base de datos de contenido (terminan en “ing”) y los que se disparan después (after) de que se ejecute la confirmación (terminan en “ed”). Los primeros son sincrónicos y los segundos a-sincrónicos en forma predeterminada.

  • Los eventos after no admiten cancelación por parte del usuario.
  • Los eventos asincrónicos se ejecutan en un thread distinto.
  • SharePoint 2010 posee una nueva propiedad que permite alterar el tipo de sincronización del evento (sólo en los eventos after): eventReceiver.Synchronization.

Ejemplo en Visual Studio 2010

Afortunadamente, Visual Studio 2010 nos ofrece un entorno de desarrollo totalmente integrado con SharePoint 2010. En la versión de 2007, necesitábamos realizar mucho trabajo manual, que ahora se ve reemplazado por un amigable asistente. Nuestro primer paso será crear un proyecto de tipo Event receiver tal como indica la figura:

Visual_New

Luego elegimos nuestro sitio y si se trata de una solución standboxed o farm. La siguiente pantalla nos permite elegir el tipo de evento (ítem de lista en nuestro caso) y la fuente (Anuncios en nuestro caso) tal como muestra la siguiente imagen:

Visual_EventType

Al finalizar el asistente nos genera automáticamente una solución con las referencias y clases correspondientes, quedando de nuestro lado escribir el código personalizado.

using System;

using System.Security.Permissions;

using Microsoft.SharePoint;

using Microsoft.SharePoint.Security;

using Microsoft.SharePoint.Utilities;

using Microsoft.SharePoint.Workflow;

namespace EventReceiverProject1.EventReceiver1

{

    /// <summary>

    /// List Item Events

    /// </summary>

    public class EventReceiver1 : SPItemEventReceiver

    {

       /// <summary>

       /// An item is being updated.

       /// </summary>

       public override void ItemUpdating(SPItemEventProperties properties)

       {

base.ItemUpdating(properties);

       }

    }

}

Ahora que tenemos el esqueleto armado, haremos un ejemplo para entender cómo funciona el manejador de eventos. Vamos a implementar una sencilla regla de negocio: los anuncios de nuestra librería Announcements sólo pueden ser modificados los días miércoles.

Crearemos un evento que valide que la acción de modificación se esté realizando ese día. Para ello agregamos las siguientes líneas de código dentro del esqueleto que nos había construido el asistente de Visual Studio 2010:

DateTime Ahora = DateTime.Now;

string Dia = Ahora.ToString("ddd");

if (Dia != "Wed") {

  properties.Status = SPEventReceiverStatus.CancelWithError;

  properties.ErrorMessage = "Los anuncios sólo pueden ser modificados los miércoles";

  properties.Cancel = true;

}

Como nuestro evento es de tipo before la validación se ejecutará antes de que la modificación se confirme en la base de datos de contenido, permitiendo cancelar la operación e informar mediante un error lo sucedido al usuario.

Para desplegar el evento en nuestro ambiente de desarrollo, el siguiente paso es presionar F5. Visual Studio 2010 nos abrirá Internet Explorer con nuestro sitio cargado, herramientas de debug incluidas. J. Buscamos la lista de anuncios, elegimos uno e intentamos la acción de modificación:

Sitio_Update

Como en nuestro ejemplo, la acción se está ejecutando un viernes, el evento cancelará la edición y generará el siguiente mensaje de error:

Error

Conclusión

En este artículo vimos una introducción rápida a la característica de programación de manejadores de eventos en SharePoint 2010 y sus posibles usos.

Luego vimos un ejemplo muy sencillo con el objetivo de transmitir al lector tranquilidad respecto al costo de programación asociado. Además vimos como Visual Studio 2010 nos ayuda notoriamente en el trabajo con SharePoint a través de sus asistentes y facilidades para desplegar.

Espero que esta herramienta sea de utilidad para aquellos que necesiten extender SharePoint, especialmente programando reglas de negocio.

En caso que tu plataforma sea SharePoint 2007, también puedes programar manejadores de eventos con un poco más de esfuerzo y algunas limitaciones en cuanto a los eventos disponibles. Si este es tu caso, te dejo un enlace con un artículo y webcast que dicté sobre eventos en WSS 3.0: http://surpoint.blogspot.com/2009/12/manejadores-de-eventos-en-sharepoint.html.

Como siempre, espero haber sido útil. ¡Hasta la próxima!

lunes, 2 de agosto de 2010

¿UML en Visual Studio 2010?

Gracias al Blog del CIIN y a su autor Juan Carlos González Martín, me entero que Visual Studio 2010 soporta ahora UML. ¿Interesante no?

Juan Carlos nos recomienda una serie de videos de Channel 9. Pueden acceder a partir de este enlace: http://geeks.ms/blogs/ciin/archive/2010/08/01/visual-studio-2010-v-237-deos-en-channel-9-sobre-el-soporte-de-uml-en-el-ide.aspx.

Que los disfruten!

image

domingo, 18 de julio de 2010

Visual Studio 2010 & SharePoint 2007

Vean que interesante este post del Blog de CIIN. Si bien no está soportado, parece que alguien encontró un atajo. Transcribo:

El otro día me preguntaban si era posible utilizar Visual Studio 2010 para desarrollar para SharePoint 2007 y la respuesta rápida y correcta que di es que no, lo cuál no supone un problema ya que podríamos tener una instalación simultanea de Visual Studio 2008 y Visual Studio 2010 de forma que se pudiese desarrollar sin problemas para ambas versiones de la plataforma. Sin embargo, navegando por mis RSS me he encontrado con un workaround no soportado por Microsoft que permite usar las herramientas disponibles en Visual Studio 2010 para desarrollo en SharePoint 207: Using Visual Studio 2010 SharePoint Templates to deploy a web part in SharePoint 2007 .

Fuente: http://geeks.ms/blogs/ciin/archive/2010/07/17/sharepoint-2010-191-se-puede-utilizar-visual-studio-2010-para-desarrollar-para-sharepoint-2007.aspx.

image

lunes, 21 de diciembre de 2009

Lo nuevo de SharePoint 2010 para desarrolladores

image Este es un breve resumen de las novedades de SharePoint 2010 para desarrolladores. Incluye temas como la integración con Visual Studio 2010, SharePoint Designer 2010, LinQ, etc. Está basado en la siguiente clínica de Microsoft, que les recomiendo: Clinic 10277: What's New in Microsoft SharePoint 2010 for Developers.

Creando soluciones desde Visual Studio 2010

image Al crear un proyecto nuevo en Visual Studio, tenemos en forma integrada un conjunto de plantillas que podemos elegir (ver imagen).
Ahora también disponemos de la vista diseño de nuestras weparts (algo muy pedido).
Les recomiendo acceder a la clínica y ver el ejemplo de creación de un definición de lista, este ejemplo muestra como Visual Studio crea los XMLs que necesitamos, el intellisense, etc, realmente 100% integrado, SP ya no es un invitado dentro de Visual Studio :)
Otra de las novedades más comentadas, son las sandboxed solutions, que nos permiten construir aplicaciones sin compromete la seguridad y la escalabilidad de la plataforma. Este se realiza a través de la User Solution gallery. El código de este tipo de soluciones se ejecuta contra un sub-conjunto del modelo de objetos que incluye clases como SPSite, pero excluye clases como SPFarm. Existe una propiedad dentro de nuestro proyecto en Visual Studio, que nos permite identificar si estamos construyendo una aplicación de este tipo. Finalmente, un administrador puede monitorear el uso de recursos de una solución sandboxed y actuar en consecuencia.

Instalando aplicaciones usando Visual Studio 2010

image Visual Studio 2010 construye y empaqueta nuestras features dentro de un paquete de Windows SharePoint (WSP) y lo instala en nuestro sitio (todo esto con un simple botón derecho del mouse y elección de la opción "Deploy"). Realmente muy útil...
Entre las novedades tenemos ahora un diseñador de features y un diseñador de paquetes. Con sólo ver la imagen, entenderán lo útil que puede resultarnos.

Nuevas características de desarrollo en SharePoint 2010

Hay algunas novedades en lo que se refiere a flujos de trabajo, por ejemplo la existencia de flujos de trabajo para sitios, no sólo para listas. SharePoint 2010 proporciona los siguientes eventos para flujos de trabajo:
  • WorkflowStarting
  • WorkflowStarted
  • WorkflowCompleted
  • WorkflowLoading
  • WorkflowUnloading
  • WorkflowPostponed
La clínica nos muestra un ejemplo más que interesante de cómo agregar un botón dentro de la ribbon, pero lo que particularmente más me me impresionó fue el acceso a SharePoint desde el cliente, el Client Objetct Model. En la demo mostraron como cambiar el nombre del sitio desde el cliente, les dejo una imagen más que elocuente...
image
Finalmente, la clínica nos muestra algo de LINQ: la utilización de SPMetal. SPMetal es una utilidad de línea de comandos que nos ayuda a trabajar con soluciones basadas en LINQ. Nos permite crear entidades fuertes, de manera de que podamos detectar los errores en tiempo de compilación (no de ejecución). Vean el ejemplo en la clínica si pueden...

Desarrollando clientes remotos (Modelo de Objetos de Cliente)

image Ahora es más fácil crear aplicaciones de tipo WinForms, Silverlight, Windows Presentation Foudation, JavaScript y ASP.Net que puedan manipular objetos y datos de SharePoint. A modo de ejemplo, las aplicaciones JavaScript utilizan estos archivos para comunicarse con SharePoint:

  • SP.js



  • SPCore.js



  • SP.Runtime.js


  • Con SharePoint 2010 ya no necesitamos usar los webservices de SharePoint, ni desarrollar nuestra propia arquitectura de comunicación desde el cliente. Ahora podemos concentrarnos en nuestros requerimientos de negocio. La programación resulta más familiar. Por ejemplo existen los siguientes objetos en el cliente: Web, Site y List. En la demo se ve un breve ejemplo para crear un sitio desde el cliente. Muy interesante (ver imagen).
    Hay una demo con Silverlight por si necesitan profundizar...

    Accediendo a datos externos desde SharePoint 2010

    image Business Conectivity Services es la evolución de BDC, ahora de lectura y escritura y disponible en SharePoint Foundation (nuevo wss). Una vez que nos conectamos a un origen externo, tenemos la posibilidad de integrarlo en nuestros reportes de BI, tenerlo disponibles para búsqueda, accederlo desde SharePoint Workspace o exportarlo a Outlook. Se pueden crear desde SharePoint Designer, pero también extender desde Visual Studio 2010. Les recomiendo que vean la demo de cómo leer y escribir en un tabla SQL sin escribir nada de código con SharePoint Designer (ver imagen). También hay una demo con Visual Studio.

    Concluyendo...

    Este fue un breve resumen. Hay algunas cositas más que pueden verlas en la misma clínica (es gratis). Si bien la clínica tiene algún error, vale la pena verla (tiene muchas demostraciones), si aún no se han metido con las novedades de desarrollo para SharePoint 2010. Hasta la próxima!