miércoles, 22 de abril de 2015

Tenga cuidado al invocar el objeto SPSite de incluir la zona

SharePoint desde su versión 2007 cuenta con un modelo de objetos para acceder los recursos y servicios de SharePoint vía programación a través de las soluciones de granja y recientemente en 2013 bajo el modelo de Aplicaciones o Apps.

La clase SPSite representa la colección de sitios dentro de una aplicación web de SharePoint.  Los constructores para instanciar en memoria SPSite son 6 el más utlizado es SPSite(string) donde definimos la dirección URL que deseamos invocar.

Para que necesitamos SPSite, pues bueno para programar en SharePoint debemos de respetar las jerarquías y cualquier objeto dentro de un sitio debemos de accederlo a través de su colección de sitios SPSite y luego de su sitio o subsitio con SPWeb.  Echemos un vistazo en la siguiente gráfica de la jerarquía de objetos en SharePoint.

Donde obtenemos vía programación la URL actual de la aplicación.  Pues es a través de la clase SPConext y sus propiedades Current.Web.URL, esta línea de código completa se lee así: SPContext.Current.Web.URL.

Si combinamos las dos clases para instanciar en memoria la clase SPSite se leería de la siguiente forma en C#:

SPSite miSitio = new SPSite(SPContet.Current.Web.URL);

y la forma correcta es utilizando using de la siguiente forma para que podamos eliminar efectivamente de memoria dicho objeto ya que SharePoint tiene aún dependencia de los servicios COM+ de Windows.  Vea las mejores practicas para utilizar los objetos de SharePoint en https://msdn.microsoft.com/en-us/library/aa973248(v=office.12).aspx

using(SPSite miSitio = new SPSite(SPConext.Current.Web.URL) {

//tu codigo…

}

Otra forma de instanciar en memoria este objeto es a través de su Guid o ID.  De la misma forma que obtenemos la URL Actual así obtenemos el Guid de la colección de sitios con la siguiente línea de comando en C#:

SPContext.Current.Site.ID

El código completo sería de la siguiente forma:

using(SPSite miSitio = new SPSite(SPConext.Current.Site.ID) {

//tu codigo…

}

Pero si la solución que estamos ejecutando esta corriendo sobre HTTPS y no es la zona predeterminada ambos código son dispararán error.   Que podemos hacer?… Pues utilizar el constructor donde podemos definir la zona actual con la siguiente línea de código para obtener la zona:

SPContext.Current.Site.Zone

Entonces el código completo combinando nuestros hallazgos sería el siguiente:

SPSite miSitioId = SPContext.Current.Site.ID;

var miZona = SPContext.Current.Site.Zone;

using(SPSite miSitio = new SPSite(miSitioId, miZona) {

//tu codigo…

}

 

 

y una aplicación típica de código para listar por ejemplo los elementos de una lista se vería de la siguiente forma:

SPSite miSitioId = SPContext.Current.Site.ID;

var miZona = SPContext.Current.Site.Zone;

using(SPSite miSitio = new SPSite(miSitioId, miZona) {

using (SPWeb miWeb = miSitio.OpenWeb()) {

SPList miLista = miWeb.Lists["Tasks"];

SPListItemCollection collItem = miLista.GetItems("Title", "Status");

foreach(SPListItem oItem in collItem) {

Response.Write(SPEncode.HtmlEncode(oItem["Title"].ToString()) + " :: " + SPEncode.HtmlEncode(oItem["Status"].ToString()) + "<BR>");

}

}

}

 

Espero haberles ayudado.

SharePoint4Fun!,

Juan Manuel Herrera Ocheita

miércoles, 1 de abril de 2015

Por qué es mejor ejecutar SharePonit en Azure que en su infraestructura local

 

Debido a la diversidad y efectividad de servicios disponibles en Microsoft ejecutar SharePoint Foundation o Server en Azure es estratégicamente mejor por lo siguientes aspectos:

1) Reducción del Costo Total de Propiedad:  Es mucho mas barato pagar una renta reducida al mes, que pagar energía, aire acondicionado, mantenimiento, soporte del equipo y especialización para mantener la infraestructura funcionando.

2) Disponibilidad de Servicios:  Fácilmente podemos habilitar servicios de Backup, Data Recovery, Alta Disponibilidad con un mínimo de esfuerzo y de forma inmediata, esto se traduce en reducciones de riesgo, costos operativos y de implementación. Y ante todo velocidad de respuesta efectiva.  No necesitamos cintas, los medios están almacenados geográficamente separados y los servicios son fáciles de implementar y los costos son relativos al consumo que hagamos de estos servicios.

image

3) Inversión paulatina:  No necesitamos realizar grandes inversiones tecnológicas por el contrario el gasto se va incrementando con el uso y los servicios que se van habilitando.  Por ejemplo las primeras dos semanas se configura la vpn, se crea el DC que se replicará localmente y se inicia la configuración de la granja las siguientes dos semanas.  Luego se puede migrar el contenido una o dos semanas, una vez tengamos el ambiente arriba podemos iniciar el proceso de habilitar el servicio de Backup de Azure.  Por lo que el primer mes consumimos una factura por lo que usamos y configuramos y el siguiente mes la del servicio de Backup un incremento mucho menor que se va sumando.  Luego en el futuro se desea habilitar servicios de alta disponibilidad se incrementará en cuanto a la maquinas virtuales adicionales que se agreguen en su momento.

image

4) Aprovechamiento de la economía a escala:  Esta es la razón por la que Azure es competitiva y una oferta económica viable para las empresas.  Grandes inversiones de infraestructura y desarrollo de software que permite que las empresas de todo tamaño puedan adquirir servicios tecnológicos a bajo costos sin preocuparse por mantener vivo el andamiaje tecnológico ya que es un servicio, el proveedor Microsoft se encarga del resto.

5) Pagas por lo que usas:  Esto es también importante, no tienen una fuerte inversión tecnológica que no usas, al contario tienes un entendimiento más claro como estas utilizando la tecnología y cuanto realmente te esta costando, con lo cual puedes hacer ajustes hacia abajo o hacia arriba según las necesidades.  Si tienes picos de carga de trabajo como fin de mes y quincena para tu portal de SharePoint por ejemplo y quieres mejorar el servicio puedes indicar a la infraestructura que se duplique procesamiento, memoria y luego regresar a la configuración anterior, esto lo puedes hacer manual o de forma automática.  Puedes probar un vez y el otro no y no tuviste que pagar una inversión alta de algo que no estabas tan seguro si valía la pena, por ejemplo.

image

6) Proteges la inversión y garantizas la continuidad del negocio: Hablar de Alta disponibilidad en el pasado era un reto técnico y una fuerte inversión que para muchas empresas era prohibitivo.  Con Availability Set en Azure esto es muy simple de configurar y solo te cobran por la máquina virtual en ejecución y no por toda la configuración física y lógica que esta atrás para disponer de alta disponibilidad.   Por diseño los centros de datos están configurados en Clusters y Azure dispone de Failover Host Clustering y Failover Guest Clustering para las Maquinas virtuales.

image

7) Mitigación de la reducción perdida de información: Hoy en día muchas aplicaciones de negocios no tienen ni siquiera un plan de recuperación y tampoco saben en cuanto tiempo ni que cantidad de información puedan perder, esto es una preocupación hoy en día que gracias a Azure disponemos de respuestas efectivas y concretas al tema a bajos costos.  Es tiempo de hacer un plan detallado de como vamos a recuperarlo y con que disponemos incluyamos Azure para este objetivo primordial y de alta prioridad para garantizar la menor perdida de información posible.

image

8) Disponible para todos desde cualquier dispositivo:  Para habilitar una extranet del portal de SharePoint en Internet, tenemos que pensar en un dominio público, una dirección IP Pública, un certificado SSL de terceros, firewall, una DMZ, NAT, Extender la aplicación Web en SharePoint, por lo que contar con esta infraestructura lista para usarse en SharePoint es algo que se agradece y mejora la velocidad con que entregamos una plataforma disponible para cualquier dispositivo desde cualquier lugar con acceso a la red de Internet.

image

image

9) Minimiza los tiempos de implementación:  Azure desde las galerias de imágenes que provisionan el sistema operativo o la aplicación como SharePoint o SQL Server permite que en menos de 5 minutos tengamos una VM disponible para finalizar de configurar.  Esto nos ahorra entre 3 a 5 horas de implementación.

image

image

Con el Nuevo Portal de Azure existe una nueva opción “Granja SharePoint” que permite crear una granja preconfigurada de 3 VMs o en alta disponibilidad de 9 VMs esta opción reduce drasticamente tiempo de instalación y configuración inicial ideal para ambientes de desarrollo y pruebas de concepto.

image

Luego de creada la granja aproximadamente 15 minutos.

image

En este articulo vimos 9 razones porque una granja en SharePoint es más mejor en Azure que en nuestras instalaciones de la red interna.  Reduciremos los costos de propiedad total, aseguraremos la inversión y muy probablemente estaremos listos para escalar, expandir los servicios de IT a través de Azure y estaremos apoyando de forma ágil y efectiva al negocio.

Hasta la próxima!, Azure&SharePoint4Fun!

Juan Manuel Herrera Ocheita