2ª Edición del Curso de Evolución del Acceso a Datos en Tenerife

La semana del 5 de Julio repetiremos el curso en Tenerife sobre la Evolución de la plataforma de Acceso a Datos en .NET.

curso_evolucion

Algunos se quedaron sin ir a la primera edición y esperamos que esta segunda edición cumpla con las mismas espectativas que el anterior y que sigamos ofreciendo formación en .NET en Tenerife.

Si estáis interesados y necesitáis más información la tenemos en el Centro de Formación de General de Software de Canarias y en el documento del curso.

SharePoint 2010 BCS en Outlook

El Business Connectivity Services (BCS)  de SharePoint 2010, aparte de permitirnos conectar datos externos (SQL Server, .NET, WCF) con nuestras listas (lo pudimos ver en los dos artículos sobre Designer y Visual Studio 2010), tiene la posibilidad de Conectarse con Outlook. Si!!, podemos conectar con nuestro Outlook un External Content Type y poder realizar modificaciones sobre los datos utilizando la infraestructura que SharePoint expone con BCS.

Por ejemplo, si nos hemos creado un External Content Type y en el diseñador le especificamos el Office Item Type a Contact, esto nos va a permitir mapear los campos a los definidos para un contacto en Outlook y además, nos permite visualizar y modificar aquellos campos que sean nuevos y no tenemos mapeados.

BCS_outlook_1

Cuando seleccionamos Conectar a Outlook en este tipo de lista, se genera una solicitud en SharePoint que crea un paquete VSTO para esta lista que se instala en nuestro Windows como un complemento de Outlook.

BCS_outlook_2

Una vez instalado el AddIn de Outlook, podemos abrir un elemento de contacto así como cualquier otro elemento de contacto en Outlook y las propiedades que se han mapeado aparecen en el sitio correspondiente dentro del formulario de contactos de Outlook. Y la información adicional aparece en el mismo formulario de contacto pero en una sección especial para esos campos, dándonos la opción de poder modificar esos datos al cache local de Outlook y así poder sincronizar los cambios con SharePoint, que se encarga de realiza la sincronización con el origen externo.

BCS_outlook_3

Esta opción nos permite conectar un origen externo, a través de SharePoint, con nuestro cliente de Outlook, e incluso, poder ver aquellos campos personalizados que no existen en el formulario estándar de Outlook. Esta característica nos facilita crear implementaciones y poder utilizar las herramientas que un usuario conoce y domina para poder hacer uso de la información disponible.

Pensemos en la posibilidad de conectar la información de Exchange o Active Directory con la aplicación de RRHH de la empresa y que los usuarios pueda visualizar a los empleados de la corporación desde los contactos de Outlook junto con la información pública de la aplicación de RRHH, como por ejemplo, Centro de Trabajo, Vacaciones, etc.

 

Saludos a todos…

SharePoint 2010. No sólo es cuestión de RAM

Hace unos días empezamos un proyecto de BI (Business Intelligence) y para la capa de presentación de los datos vamos a utilizar SharePoint 2010 y el nuevo servicio de PerformancePoint.

Pasadas unas horas de la instalación de SharePoint 2010, en los servidores del cliente, nos encontramos con un error en la nueva sección Revisar problemas y soluciones.

sharepoint2010_errormemoria_1

¿Sin espacio? ¿Cómo que se está quedando sin espacio? Pero si el servidor tiene 80Gb de disco y sólo hemos instalado SharePoint 2010 Enterprise, con lo que nos tiene que quedar unos 40Gb. Vamos a ver el detalle de este mensaje:

sharepoint2010_errormemoria_2 

¿El espacio disponible es dos veces menor que el valor de la memoria física? Cierto, tenemos 20Gb de Memoria RAM (buen servidor) y el espacio disponible en disco, según este umbral de error, debería de ser como mínimo del doble de la memoria RAM.

La página de especificaciones de Microsoft, para un servidor en producción necesitamos dos veces de memoria RAM de espacio libre en disco. Recordemos que SharePoint no deja de ser una aplicación web ASP.NET (con algún que otro añadido) y que se ejecuta en la memoria del IIS, haciendo un intensivo uso de la memoria RAM.

Un ejemplo claro de que tenemos que alinear los recursos físicos de la máquina con las necesidades reales del software, no porque le metamos 20Gb de RAM vamos a tener un servidor plenamente funcional sin tener en cuenta el espacio libre que pueda necesitar en disco duro para manejar esa cantidad de memoria.

 

Saludos a todos…

SharePoint 2010. Save Conflict

Una de las dudas que surgieron en el Webcast de Client Object Model fue sí era posible controlar la concurrencia en las actualizaciones desde el API. La pregunta fue: ¿Al trabajar de manera asíncrona, cómo podemos controlar actualizaciones concurrentes de varios usuarios?

La respuesta fue fácil: Pues me alegra que me hayas hecho esa pregunta, no había reparado en esa posibilidad y no tengo respuesta.

Pues bien, después de algunas indagaciones y de algun que otro ejemplo con SharePoint, he encontrado una respuesta.

Recordemos que estamos trabajando sobre SharePoint y que los conflictos de versiones los resuelve con el siguiente mensaje:

sharepoint2010_saveconflict_1

Esto obliga al usuario a volver a la lista, actualizar el navegador y reescribir los cambios que había realizado en el elemento para actualizarlo. La solución no es mala, pero es un problema que se le deja al usuario para resolver.

Bien, ahora que sabemos como se resuelven los conflictos en SharePoint, nos podemos imaginar como se van a resolver desde el Client Object Model. Si provocamos este tipo de conflicto desde Silverlight, utilizando el Client Object Model, la llamada al ExecuteQueryAsync no se ejecuta satisfactoriamente y se lanza una exception, que capturamos con el ClientRequestFailedEventHandler, que nos cuenta lo siguiente:

sharepoint2010_saveconflict_2

 

Al final tenemos algo parecido a lo que se obtiene si provocamos el conflicto desde la aplicación web de SharePoint, un tipo de error Microsoft.SharePoint.Client.VersionConflictException, que nos obliga a ayudar al usuario a recargar los datos y que vuelva a escribir los cambios para que se produzca la actualización.

Simplemente SharePoint utiliza un control de versiones para identificar que, tanto el Cliente Object Model como el API de servidor, realizan los cambios y las actualizaciones sobre la última versión que se encuentre almacenada en el servidor.

 

Saludos a todos…

[SUGES] Presentación Webcast SharePoint desde cliente

(Actualizado)

Después del Webcast de ayer en Suges sobre el nuevo Client Object Model de SharePoint 2010, y con algunos problemillas con la conexión a internet y el audio, os dejo la presentación y el código que he usado para las demos.

Hay que tener en cuenta que para las demos se ha usado un SharePoint Foundation 2010 y algunas listas con datos, si alguno las quiere que me las pida y se las hago llegar.

Tenemos el contenido en la web de Suges o en mi skydrive:

Saludos a todos…

SharePoint 2010. No se puede cargar el tipo IDataServiceUpdateProvider

Cuando empezamos con el servicio Data Services de SharePoint 2010, navegamos al servicio ListData.svc y obtenemos el siguiente error:

sharepoint2010_error_idataserviceupdateprovider

Lo primero que tenemos que revisar es si existe el ensamblado System.Data.Services en la GAC (Global Assembly Cache). Exista o no el ensamblado en la GAC, posiblemente no sea la última versión de ADO.NET Services 1.5.

Esta versión, que es la que utiliza SharePoint para su servicio REST de listas, se instala con el Update de ADO.NET Data Services para .NET 3.5 SP1.

La actualización la tenemos en dos versiones:

Windows 7 y Windows Server 2008 R2

Windows 2000, Windows XP, Windows Vista, Windows Server 2003 y Windows Server 2008

Una vez instalada la actualización, podremos navegar y hacer uso del servicio REST de listas de SharePoint 2010 (ListData.svc).

sharepoint2010_error_idataserviceupdateprovider_2

 

Saludos a todos…