Pasión por la tecnología…

septiembre 22, 2011

SharePoint 2010: ¿Por qué puede ser importante indexar las columnas de una lista?

Archivado en: SharePoint 2010,SharePoint Foundation 2010 — Juan Carlos González Martín @ 10:20

Cuando trabajamos con listas de SharePoint, tenemos la posibilidad de indexar sus columnas como mecanismo para mejorar el rendimiento en el uso de las listas. El concepto de indexación de listas de SharePoint es similar al de indexar columnas en una tabla de base de datos, con la diferencia de qué es SharePoint quien se encarga de realizar el mantenimiento de los índices y no el SQL Server subyacente. Esta indexación puede ser necesarias en situaciones como las siguientes:

  • Estamos utilizando la características de unicidad de columnas de SharePoint 2010, de manera que cada vez que queremos configurar una columna para que tenga valores único será necesario realizar su indexación.
  • Tenemos una columna de tipo lookup en nuestra lista y configuramos el comportamiento referencial de la misma para habilitar la estrategia de borrado (en cascada o no), por lo que será necesario de nuevo indexar esta columna.
  • Optamos por indexar todas o parte de las columnas de la lista.

Por ejemplo, a nivel de lista:

  • A través de la página de configuración de la lista podemos acceder a los índices disponibles actualmente para la lista haciendo clic sobre el enlace “Columnas indizadas”.
  • En la página que se muestra podemos ver los índices disponibles y editarlos.
  • Podremos crear nuevos índices en base a otras columnas de la lista y teniendo en cuenta que no todos los tipos de columna se pueden indizar.
image image image
  image  

Pero, ¿Por qué puede ser importante indexar columnas en una lista de SharePoint? Pues por cuestiones de rendimiento, ya que la indexación de columnas mejora el rendimiento en el caso de consultas que usen la(s) columna(s) indexadas, se realicen joins, operaciones de ordenado, etc. Por ejemplo, si tenemos una lista que contiene unos 20.000 elementos y queremos consultar los primeros 500 elementos de la misma ordenados por la columna Title, que no está indexada, nos encontraremos que SharePoint se recorre los 20.000 elementos de la lista para poder ordenarlos por Title y luego nos devuelve esos 500 primeros elementos, de manera que nos encontraríamos ante una consulta pesada. Si indexamos la columna Title, la consulta es mucho más ligera ya que accedemos de ofrma directa a los 500 primeros elementos ordenados por Title sin necesidad de buscar en el conjunto total de elementos de la lista. Por supuesto, el uso de índices hay que realizarlo con cuidado y no usarlos por sistemas ya que penalizan el rendimiento en operaciones de tipo CRUD y necesitan de almacenamiento. ¿Cuántos índices puedo tener por lista? Un máximo de 20.

septiembre 21, 2011

SharePoint 2010: Concepto de Feature Stapling!

Archivado en: SharePoint 2010,SharePoint Foundation 2010 — Juan Carlos González Martín @ 06:41

Una de las posibilidades que tenemos para extender nuestros sitios de SharePoint es la técnica de Feature Stapling o engrapado de características (la traducción literal es lo que tiene) que permite definir asociaciones de características a plantillas de sitio de manera que podamos agregar desde un “único punto” una seire de características a todas las instancias de sitios que se han creado a una cierta definición de sitio evitando la modificación de esta o la necesidad de crear código personalizado que active estas features en cada sitio. El Feature Stapling se implementa a través de una característica (de ahí lo de “único punto”) diseñada para crear estas asociaciones de características a una o más definiciones de sitios (o a todos). Algunos ejemplos son los siguientes:

  • Para asociar características a sitios basados en definiciones de sitio de tipo STS (SharePoint Team Site), tendríamos que crear una característica inicial que se encargue de realizar el stapling y un archivo elements.xml en el que definamos las asociaciones correspondientes:
   1: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">

   2:    <FeatureSiteTemplateAssociation Id="00BFE171-1B17-4F72-28CB-1171C0140130" TemplateName="STS#0" />

   3:    <FeatureSiteTemplateAssociation Id="00BFE171-1B17-4F72-28CB-1171C0140130" TemplateName="STS#1" />

   4:    <FeatureSiteTemplateAssociation Id="00BFE171-1B17-4F72-28CB-1171C0140130" TemplateName="STS#2" />

   5: </Elements>

  • En el caso de querer realizar la asociación de una Feature de forma global, el contenido del archivo elements.xml sería el siguiente:
   1: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">

   2:    <FeatureSiteTemplateAssociation Id="00BFE171-1B17-4F72-28CB-1171C0140130" TemplateName="GLOBAL" />

   3: </Elements>

 

Finalmente os dejo algunos enlaces relativos a la técnica de Feature Stapling:

septiembre 20, 2011

Office 365: Disponible la versión 3.2 del Toolkit de Soporte MOSDAL!

Archivado en: Office 365 — Juan Carlos González Martín @ 07:04

Tal y como podéis leer en el blog del equipo de Office 365, desde hace varios días tenemos disponible la versión 3.2 del Toolkit de soporte MOSDAL que permite recolectar información diversa sobre configuración de servicio, diagnóstico de red, logs,  etc y otros parámetros relativos a los servicios de Microsoft en la nueva con vistas a averiguar cuál puede ser el origen de problemas que se tengan en el uso de los mismos. Los enlaces relativos a MOSDAL en los que se puede descargar tanto el toolkit como referencias a las novedades y su uso son los siguientes:

image

septiembre 19, 2011

SharePoint 2010: Actualización de tipos de contenidos!

Archivado en: SharePoint 2010,SharePoint Foundation 2010,SharePoint Online — Juan Carlos González Martín @ 18:47

Siguiendo con la serie de artículos en torno a tipos de contenido en SharePoint 2010, en esta ocasión toca hablar sobre el concepto de actualización de tipos de contenido existentes. La pregunta clave aquí es si se pueden actualizar tipos de contenido existentes o no, la respuesta es que sí aunque en función de como se realice la actualización hay que tener en cuenta ciertas cosas:

  • Una primera aproximación de actualización de tipos de contenido pasa por utilizar la interfaz de usuario que nos permite por ejemplo actualizar cambios en columnas del tipo de contenido y reflejar estos cambios en todos aquellos lugares dónde se esté utilizando el tipo de contenido.

image

  • A través de SharePoint Designer 2010 (SPD 2010) y la correspondiente acción disponible en la cinta:

image

  • De forma programática resulta sencillo actualizar tipos de contenido que hayamos creado de esta forma. Un ejemplo de como hacerlo lo podéis encontrar en este enlace de MSDN. Por supuesto, se entiende que vía PowerShell se podrá hacer lo mismo que podemos hacer programática.
  • De forma declarativa, teniendo en cuenta que esta actualización no pasa por modificar la definición en XML del tipo de contenido, sino por aprovechar el concepto de actualización de característica nuevo en SharePoint 2010 y que nos permite añadir nuevos campos a un tipo de contenido dentro de la nueva sección <UpgradeActions>. Podéis ver un ejemplo en este otro enlace de MSDN.

Finalmente, os dejo una referencia final relativa a estrategias y aproximaciones en la actualización de tipos de contenido.

septiembre 18, 2011

SharePoint 2010: ¿Se pueden activar features con el modelo de objetos en cliente?

Archivado en: SharePoint 2010,SharePoint Foundation 2010,SharePoint Online — Juan Carlos González Martín @ 21:09

Esta pregunta es la que me vino a la mente ante una duda que me plantearon hace unos días…mi respuesta fue como en otras ocasiones: “se tiene que poder de alguna forma”…y dicho y hecho, las características se pueden activar de forma programática tanto en el modelo de objetos (MO) en servidor como en cliente:

Si pensamos como activar una feature con el MO Cliente .NET Managed, tendremos que recurrir a la clase FeatureCollection,que nos permite acceder a la colección de características activas en un sitio y activar features existentes que no estén activas de acuerdo al siguiente código:

   1: using System;

   2: using System.Collections.Generic;

   3: using System.Linq;

   4: using System.Text;

   5:  

   6:  

   7: //MO Cliente -> .NET Flavour

   8: using MO_NET = Microsoft.SharePoint.Client;

   9:  

  10: namespace SPFeatureCOMActivation

  11: {

  12:     class Program

  13:     {

  14:         const string sSiteUrl = "http://demo2010a:100/sites/SCR";

  15:         static void Main(string[] args)

  16:         {

  17:             ActivarFeature();

  18:             Console.ReadLine();

  19:         }

  20:         static void ActivarFeature()

  21:         {

  22:             try

  23:             {

  24:                 using (MO_NET.ClientContext ctx =

  25:                     new MO_NET.ClientContext(sSiteUrl))

  26:                 {

  27:                     MO_NET.Web wSite = ctx.Web;

  28:                     MO_NET.FeatureCollection fcFeaturesCollection = wSite.Features;

  29:                     Guid guFeatureGuid = new Guid("bc08fd10-39b5-4a54-b1d9-2eb0aaac47d8");

  30:                     fcFeaturesCollection.Add(

  31:                         guFeatureGuid, true, MO_NET.FeatureDefinitionScope.Site);

  32:  

  33:                     ctx.Load(fcFeaturesCollection);

  34:                     ctx.ExecuteQuery();

  35:  

  36:                     Console.WriteLine("Características instaladas en el sitio: {0}", 

  37:                         fcFeaturesCollection.Count.ToString());

  38:                     foreach (MO_NET.Feature fFeature in fcFeaturesCollection)

  39:                         if (fFeature.DefinitionId == new Guid("bc08fd10-39b5-4a54-b1d9-2eb0aaac47d8"))

  40:                             Console.WriteLine("Feature {0} localizada", fFeature.Tag);                        

  41:                  //       Console.WriteLine("Feature ID: {0}", fFeature.DefinitionId);

  42:                 }

  43:  

  44:             }

  45:             catch (MO_NET.InvalidQueryExpressionException ex)

  46:             {

  47:                 Console.WriteLine("Error: {0}", ex.Message);

  48:             }

  49:             catch (MO_NET.ClientRequestException ex)

  50:             {

  51:                 Console.WriteLine("Error: {0}", ex.Message);

  52:             }

  53:             catch (MO_NET.PropertyOrFieldNotInitializedException ex)

  54:             {

  55:                 Console.WriteLine("Error: {0}", ex.Message);

  56:             }

  57:             catch (MO_NET.ServerUnauthorizedAccessException ex)

  58:             {

  59:                 Console.WriteLine("Error: {0}", ex.Message);

  60:             }

  61:             catch (MO_NET.ServerException ex)

  62:             {

  63:                 Console.WriteLine("Error: {0}", ex.Message);

  64:             }

  65:             catch (Exception ex)

  66:             {

  67:                 Console.WriteLine("Error: {0}", ex.Message);

  68:             }

  69:         }       

  70:     }

  71: }

Como veis, a partir del GUID de la feature resulta muy sencillo su activación sin más que utilizar el método Add() del objeto FeatureCollection definido.

septiembre 17, 2011

SharePoint 2010: Sincronización de contenido con SharePoint WorkSpace 2010!

Archivado en: SharePoint 2010,SharePoint Foundation 2010 — Juan Carlos González Martín @ 10:14

Como sabéis, SharePoint WorkSpace 2010 es el cliente rico para SharePoint 2010 que habilita escenarios de trabajo con SharePoint en modo desconectado y que nos permite sincronizar localmente un sitio completo de SharePoint o únicamente un conjunto de lista y bibliotecas…os recomiendo este post de Mario Cortes respecto a SharePoint WorkSpace en el que podéis ver como realizar la sincronización. Además del post de Mario, en este artículo del sitio de Office podéis encontrar la siguiente información adicional:

Especial atención merece el apartado relativo a las limitaciones en el uso de SharePoint WorkSpace que debemos tener en mente para saber hasta dónde podemos llegar con esta herramienta.

SharePoint2010_thumb

septiembre 16, 2011

Patterns & Practices: Disponible el proyecto Silk para el desarrollo en cliente para navegadores modernos!

Archivado en: Patterns & Practices — Juan Carlos González Martín @ 21:47

De acuerdo a lo que parece que va a ser el presente y futuro en el desarrollo de aplicaciones para la web y el escritorio (Estoy pensando en HTML 5, CSS 33, JavaScript, etc), Microsoft acaba de liberar dentro de la sección Patterns & Practices un nuevo proyecto enfocado a servir inicialmente como guía en el desarrollo de aplicaicones multi-navegador que se caractericen por su diseño adecuado, un interactividad rica, etc aprovechando para ello los últimos estándar web: HTML 5, CSS 3, ECMAScript 5 y también las últimas versiones de tecnologías web como jQuery y ASP.NET MVC. Podéis acceder al proyecto Silk desde este enlace.

image

SharePoint 2010: Jerarquía de tipos de contenido!

Archivado en: SharePoint 2010,SharePoint Foundation 2010 — Juan Carlos González Martín @ 14:02

Cómo ya he comentado en numerosas ocasiones, los tipos de contenido en SharePoint son uno de los elementos clave a la hora de modelar una solución sobre SharePoint. Además de comprender el concepto de tipo de contenido, las posibilidades que tenemos para la creación de los mismos, etc…es importante tener en la plataforma disponemos de serie de una serie de tipos de contenidos que forman parte de una jerarquía de tipos de contenido ya que se aplica el concepto de herencia de manera que todos los tipos de contenido de SharePoint heredan del tipo de contenido primario que es System, del que a su vez deriva el tipo de contenido básico Item. Como podéis ver en esta página de MSDN la jerarquía y herencia se ve de forma muy clara en los IDs que corresponden a los tipos de contenidos disponibles por defecto, de forma que empezamos con 0x (System) para seguir por 0x01 (Item), 0x0101 (Document), 0x0102 (Event), etc. Como veis, los primeros dos dígitos de un cierto tipo de contenido marcan quien es el tipo de contenido del que heredan, y esta es la filosofía que tenemos que seguir cuando creemos nuestros tipos de contenido usando Visual Studio 2010 o PowerShell. Finalmente, os dejo una serie de imágenes que transmiten la idea de jerarquía de tipos de contenido en SharePoint:

Example of default content type ID hierarchy Base content type hierarchy structure image

septiembre 15, 2011

SharePoint 2010: Buenas prácticas y planes de gobernanza (I)!

Archivado en: SharePoint 2010,SharePoint Foundation 2010 — Juan Carlos González Martín @ 07:44

Un factor clave en el éxito de todo proyecto de SharePoint es el de Gobernanza, es decir, una serie de directivas, roles, responsabilidades y procesos que guían, dirigen y controlan la forma en que las divisiones de negocio y equipos de TI de una organización cooperan para lograr objetivos empresariales. Todo estos elementos se reflejan en el denominado plan de gobernanza que tiene que proporcionar una serie de beneficios como:

  • Simplificación de la implementación de productos y tecnologías, como SharePoint Server 2010.
  • Protección de la empresa ante amenazas de seguridad o responsabilidades por incumplimiento.
  • Garantía del mejor rendimiento de la inversión en tecnología, por ejemplo, al aplicar prácticas recomendadas en la administración de contenido o arquitectura de la información.
  • Etc.

Para concebir un plan de gobernanza para proyectos de SharePoint disponemos de una serie de recursos creados por Microsoft entre los que cabe citar:

Otros recursos interesantes sobre gobernanza son los siguientes:

Y hasta aquí llega este primer post sobre gobernanza en SharePoint 2010.

septiembre 14, 2011

SQL Server Denali: VHD para comenzar a probar las novedades!

Archivado en: SQL Server — Juan Carlos González Martín @ 20:03

Como sabéis, desde hace unas semanas tenemos disponible la CT 3 de SQL Server Denali, pues bien, si queréis comenzar a probar rápidamente las novedades de esta CTP podéis descargaros una imagen Hyper-V que Microsoft ha creado y que incluye los siguientes elementos:

  • SQL Server "Denali" CTP3
  • SharePoint 2010
  • Office 2010

Podéis descargaros el VHD desde este enlace.

« Página anteriorPágina siguiente »

El tema Rubric Blog de WordPress.com.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 39 seguidores