martes, 28 de febrero de 2012

Guardando data de configuración en Sharepoint 2010 (SPPersistedObject)

Como plataforma de desarrollo, SharePoint es muy poderoso.Pero todavía hay algunas desventajas para los desarrolladores, tales como el mal desempeño para operar list items, el almacenamiento de datos personalizados que no es fácil, y así sucesivamente. Si queremos desarrollar un producto que necesita operar datos muy grandes o llevar a cabo cálculos muy complejos,en general, debemos crear una base de datos de asistente para guardar nuestros datos. Pero cuando queremos desarrollar un producto pequeño, SharePoint nos ofrecen varias opciones.

There are four class with a property Properties (hashtable type), they are SPWeb, SPFolder, SPListItem. The property Properties is a hash table, so we can save data with a key value pair, and the value must should be can serialized. When we update the object, the property will be write to database with the object, and you can get the data from the object with a key too. We will not not describe it in detail, Here we will tell you about another kind storing data method, it is the SPPersistedObject.

Una posibilidad es el uso de la propiedad “Properties” (tabla hash), más información en este post: http://todosharepoint.blogspot.com/2012/02/spwebs-propertybag.html

image_thumb27

Hablaré de otro tipo de método de almacenamiento de datos, es el SPPersistedObject.

La clase SPPersistedObject está en el namespaces Microsoft.SharePoint.Administration, por lo que el objeto puede ser utilizado en la gestión, y los datos se almacenará en la base de datos de configuración. Cuando queremos almacenar data de configuración, primero debemos crear una clase que hereda de la clase SPPersistedObject.

   1:  public class MyConfiguration : SPPersistedObject
   2:   {
   3:      [Persisted]
   4:      public string FirstName;
   5:   
   6:      [Persisted]
   7:      public string LastName;
   8:   
   9:      public   MyConfiguration( ) { }
  10:   
  11:      public MyConfiguration( string name, SPPersistedObject parent, Guid id)
  12:           : base( name, parent, id)
  13:      {
  14:      }
  15:  }




Si necesitamos una instancia para almacenar información de configuración, se puede hacer lo siguiente:

   1:  Guid instanceId = Guid.NewGuid();
   2:  MyConfiguration conf = new MyConfiguration("test configure", webApplication, instanceId);
   3:  conf.FirstName = "John";
   4:  conf.LastName = "Young";
   5:  conf.Update();



La data se serializará a xml, y será almacenada y actualizada en la base de datos de configuration,y puedes obtener la data del objeto webApplication mediante el método SPWebApplication.GetChild:

 

   1:  MyConfiguration readed = webApplication.GetChild<MyConfiguration>("test configure");
   2:     readed.FirstName = "Joy";
   3:     readed.Update();



Puede obtener los datos si tiene suficientes permisos. Esto se hará a nivel de farm o a nivel de web application. Puedes obtener el objeto mediante el ID:

farm.GetObject(guid);

Algunas consideraciones:


  • permisos:

  • el atributo “persisted” debe ser usado en los campos (incluso son campos privados)

  • La propiedad “name” y “ID” debe ser único.

 


Más información:


http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.sppersistedobject.aspx


http://www.chaholl.com/archive/2011/01/30/the-skinny-on-sppersistedobject-and-the-hierarchical-object-store-in.aspxhttp://www.chaholl.com/archive/2011/01/30/the-skinny-on-sppersistedobject-and-the-hierarchical-object-store-in.aspx


http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/introduction-of-sppersistedobject-class/


http://joelblogs.co.uk/2010/10/10/persisting-configuration-data-in-sharepoint-2010-with-sppersistedobject/


http://www.mfranc.com/2010/08/15/sptimerjob-parameters-using-the-sppersistedobject/


http://www.sharepointboost.com/blog/save-custom-configuration-data-with-sppersistedobject/

No hay comentarios:

Publicar un comentario