jueves, 25 de febrero de 2010

Tabla de Mejores Prácticas de codificación del Modelo de Objetos de SharePoint 2007

Resumiendo varias referencias en la red de las mejores prácticas elaboré la siguiente tabla para referencia de los desarrolladores en SharePoint.

Aclaración:

Esta es una guía rápida de referencia.  Si no ha desarrollado con el modelo de objetos de SharePoint le será difícil comprenderlo al inicio.  Le recomiendo lea las referencias y experimente con el modelo de objetos primero.

Mala u Obsoleta Práctica Práctica Recomendada Breve Explicación
SPControl.GetContextSite(context)      SPContext.Current.Site

Para  compatibilidad con versiones anteriores WSS V2.0

SPControl.GetContextWeb(context)    SPContext.Current.Web

Para  compatibilidad con versiones anteriores WSS V2.0

SPList.Items.Count

SPList.ItemsCount

Cargará toda la lista de elementos. En vez de ello utilice la propiedad.

SPList.Items[Guid]

SPList.GetItemByUniqueId(Guid)

Cargará toda la lista de elementos. En de Vez obtendrá el elemento que esta buscando.

SPList.Items[Int32]

SPList.GetItemById(Int32)

Cargará toda la lista de elementos. En de Vez obtendrá el elemento que esta buscando.

SPList.Items.GetItemById(Int32)

SPList.GetItemById(Int32)

Cargará toda la lista de elementos. En de Vez obtendrá el elemento que esta buscando.

for(idx){

SPList.Items[idx]

}

SPListItemCollection oListItems = oList.Items;

for(idx){

oListItems[idx]

}

En el for loop carga los elementos una y otra vez. En vez de ello declare SPListItemCollection y carge solo una vez.
SPWeb.Lists [string] SPWeb.GetList(string) Carga toda las listas del sitio. En vez de ello Obtenga la lista especifica.

SPQuery oQuery = new SPQuery();

SPQuery oQuery = new SPQuery();

oQuery.RowLimit = 2000;

Especifique siempre el limite de filas a retornar.  En vez de obtener una lista de quien sabe cuantos elementos.
SPContext.Current.Site NO EXPLICIT DISPOSE REQUIRED
SPContext.Current.Web NO EXPLICIT DISPOSE REQUIRED
new SPSite(url) using(SPSite s = new SPSite(url)){} Utilice Using para hacer el Dispose
SPSite.OpenWeb() using(SPWeb w = s.OpenWeb()){} Utilice Using para hacer el Dispose
foreach(SPWeb w = SPSite.AllWebs){} foreach(SPWeb w = SPSite.AllWebs){
try{}
finally{
if(w != null)w.Dispose();
}
}
Utilice try finally para hacer el Dispose Explicito.
SPSite.RootWeb NO EXPLICIT DISPOSE REQUIRED
SPWeb.ParentWeb NO EXPLICIT DISPOSE REQUIRED
SPWeb nuevo = SPWeb.Webs.Add(); using(SPWeb nuevo = SPWeb.Webs.Add())
{ …}
Utilice Using para hacer el Dispose
foreach(SPWeb w = SPSite.Webs){} foreach(SPWeb w = SPSite.Webs){
try{}
finally{
if(w != null)w.Dispose();
}
}
Utilice try finally para hacer el Dispose Explicito.

Code4Fun!,

Manolo Herrera

Referencias en la Web:

http://blogs.devhorizon.com/blogs/reza_on_blogging/archive/2006/07/16/414.aspx

http://msdn.microsoft.com/en-us/library/aa973248.aspx

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spcontrol.aspx

http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-2007-and-wss-3-0-dispose-patterns-by-example.aspx

http://blogs.msdn.com/sowmyancs/archive/2008/10/26/best-practices-sharepoint-object-model-for-performance-tuning.aspx

No hay comentarios.: