Compartir a través de


Microsoft SharePoint 2010: Código para la creación de perfiles y paquetes en espacios aislados

La generación correcta de perfiles y las soluciones de creación de paquetes en un espacio aislado nos brindan un control mayor sobre el uso de los recursos y la escalabilidad.

V. Gnanasekaran

Al crear una solución de nivel empresarial Web basada en SharePoint 2010, rendimiento, optimización y las pruebas es una parte importante del ciclo de desarrollo. Si su solución incluye un montón de código personalizado, no es sólo importante, es esencial.

SharePoint proporciona muchas opciones de personalización, como elementos Web personalizados receptores, acciones personalizadas y así sucesivamente. También dispone de opciones para los modelos de ejecución diferentes para darle un mayor control de rendimiento, seguridad y alta disponibilidad. Una "solución de recinto de seguridad" es un tal modelo de ejecución.

Puede crear un perfil de rendimiento de los bloques de código que construir para ejecutar en un ambiente de entorno utilizando el generador de perfiles de Visual Studio 2010 independiente. Otro factor importante que afectará el rendimiento y la escalabilidad de las soluciones de entorno limitado es la forma de empaquetar y desplegar bloques de código personalizado como elementos Web. Se pueden empaquetar los componentes para aprovechar los servicios de recinto de seguridad que se ejecuta en varios servidores, especialmente en entornos de servidores de clase empresarial.

SharePoint 2010 tiene varias herramientas para ayudarle a identificar posibles cuellos de botella en el código personalizado por investigar el tiempo necesario para la ejecución de código; llama a recursos externos, como servicios Web, bases de datos, consultas de base de datos y número de veces que se dispararon las consultas; y así sucesivamente. Puede utilizar el tablero de mandos de desarrollador para entender los bloques de código diferente tiempo toman para ejecutar. También puede analizar el tiempo de ejecución con los registros de servicio de inicio de sesión unificado (ULS).

Ciertas restricciones

En el caso de las soluciones de entorno limitado, el tablero de mandos de desarrollador no proporciona ninguna información utilizable. Además, no habrá ninguna información de ejecución sobre la solución de recinto de seguridad disponibles en el registro de la ULS. Componentes de recinto de seguridad no están autorizados para registrar información en registros ULS. Porque SharePoint 2010 no ayuda a comprender el comportamiento de los bloques de código personalizado en un entorno de recinto de seguridad, tienen que depender de las capacidades de generación de perfiles de Visual Studio Team System2010.

A la hora de perfilar el código, básicamente tienes dos opciones: rendimiento de pruebas las plantillas de proyecto en Visual Studio 2010 o utilizando a un analizador independiente de Visual Studio Team System. Si las plantillas de proyecto de Visual Studio de pruebas de rendimiento, debe configurar su código fuente con todas las dependencias necesarias en el mismo equipo donde está instalado el sistema de equipo de estudio Visual (VSTS) 20 Ultimate Edition. Sólo podrás utilizar esto en el entorno de desarrollo. Tenga en cuenta que no captura detalles relacionados con la ejecución de código en un entorno de recinto de seguridad, ni funciona con las colecciones de sitios de encabezado de Host.

Si está utilizando a un analizador independiente de Visual Studio Team System, no necesitará el código fuente. Funciona con resultado compilado. Se puede utilizar en entornos ascendentes — como etapa, usuario aceptación Testing (UAT), cerca de la producción y así sucesivamente, donde no está permitido instalar herramientas de desarrollo. Este método también te da cierta flexibilidad, así puede perfilar cualquier proceso aparte de W3WP.exe. Esto le ayuda a extraer detalles relacionados con la ejecución de código en un entorno de ambiente en términos de memoria y tiempo de ejecución.

En el caso de bloques de código en un entorno de recinto de seguridad, la segunda opción funciona bien, como le da la flexibilidad necesaria para cualquier proceso de perfil. En el caso de un analizador independiente, tienes dos opciones:

  1. VSAspNetCmd.exe, que está pensada para perfilar W3WP.exe exclusivamente.
  2. VSPerfCmd.Exe, que puede utilizar para cualquier proceso de perfil.

Los informes de que estos generadores generan voluntad dan información más detallada que el tablero de mandos de desarrollador, incluida la información de "nivel". Se trata de obtener información acerca de las solicitudes de llamada llegando a través de máquinas y redes de recursos externos, como la solución de recinto de seguridad de base de datos.

En el caso de esta solución de recinto de seguridad, puede utilizar dos opciones: Ejecutar el código completo en un proceso de recinto de seguridad, o utilizar a un proxy de plena confianza (híbrido). A veces, para evitar las restricciones del proceso de recinto de seguridad, debe ejecutar el código en un proxy de plena confianza. En cualquier caso, la ejecución de código no sucederá en W3WP.exe, porque eso es lo que ocurre en soluciones basadas en la granja, de la caja y código personalizado. Por lo tanto, perfilar W3WP.exe no resultados cualquier para los bloques de código de recinto de seguridad.

Según la opción que elija, la ejecución de código para la solución de recinto de seguridad ocurrirá en SPUCWorkerProcess.exe o SPUCWorkerProcessProxy.exe. Para un perfil de ejecución de código y comprender el comportamiento del código, estos dos procesos se perfilan basado en el modelo elegido. En el caso de un entorno limitado, te perfil SPUCWorkerProcess.exe. En el caso del enfoque híbrido utilizando a un proxy de plena confianza, te perfil SPUCWorkerProcessProxy.exe.

Como "VSPerCMD.exe" está diseñado para cualquier proceso requerido de perfil, se puede utilizar al perfil de los procesos de SPUCWorkerProcess.exe y SPUCWorkerProcessProxy.exe. Esto generará información detallada que le ayudará a aprender más acerca de la ejecución de código en un entorno de ambiente en términos de memoria y tiempo de ejecución.

Creación de perfiles código Sandbox

Al perfilar código sandbox, tienes dos opciones: el muestreo y la instrumentación. Muestreo le dará detalles en un nivel superior. Instrumentación es preferido cuando se necesita un análisis profundo. Generalmente, muestreo será suficiente para los requerimientos de perfiles de código común.

Aquí es la secuencia de comandos necesarios para ejecutar un perfil. En primer lugar, es necesario configurar las variables de entorno necesarias:

VSPerfClrEnv /globalsampleon

Reinicie el equipo y, a continuación, utilice el siguiente comando:

VSPerfClrEnv /globalinteractionon

El comando "globalsampleon" establece el perfil para realizar el muestreo. El comando "globalinteractionon" permite al analizador de recopilar la información de la interacción de nivel. Después de configurar estas variables de entorno, reinicie el equipo.

El analizador no es consistente en el suministro de información de nivel. Así que cuando el nivel de información no está disponible, necesita configurar estas variables y reiniciar la máquina. Ese es el comportamiento natural de la versión actual de profiler.

En el siguiente paso después de reiniciar el equipo, configurar el generador de perfiles con el nombre de archivo de salida y toma de muestras.

Inicie la aplicación Web respectiva. Identificar el ID de proceso del proceso respectivo para la aplicación de — si se ejecutan varias aplicaciones Web en el equipo, a continuación, aplique el siguiente código:

VSPerfCmd /Start:Sample /Output:<FILE_NAME>.vsp /user:everyone /CrossSession

Siguiente, basado en el modelo de ejecución elige, identificar "SPUCWorkerProcess.exe" o "SPUCWorkerProcessProxy.exe" y el profiler añadirá al proceso elegido:

VSPerfCmd /Attach:<PROCESS-ID>

Realizar las acciones del usuario de la aplicación Web:

VSPerfCmd /Detach:<PROCESS-ID> VSPerfCmd /Shutdown

Si usted enfrenta problemas relacionados con símbolos, luego adjuntar esos símbolos a los informes:

VSPerfReport.exe /summary:all /packsymbols <ReportName.VSP>

Por último, restablecer las variables de entorno:

vsperfclrenv /globaloff

Puede abrir los informes que genera este perfil en Visual Studio 2010 Ultimate edition para identificar las "rutas calientes" y entender el comportamiento del código en un entorno de recinto de seguridad. Esto ayudará a tomar la acción correctiva apropiada para optimizar el rendimiento.

Garantizar que el entorno de Visual Studio está configurado con los símbolos adecuados para abrir el informe sin pérdida de información. En las máquinas con generadores de independiente instalados junto con cualquier edición de Visual Studio 2010 (excepto Ultimate), pueden producirse errores. Es recomendable instalar a generadores independientes.

Embalaje de solución

Cuando se trata de soluciones de entorno limitado de embalaje, debe tener en cuenta las configuraciones de nivel. Niveles en soluciones de recinto de seguridad proporcionan una manera soluciones de recinto de seguridad de grupo basado en las necesidades de recursos. Configurando niveles para ejecutar procesos más, puede ejecutar soluciones sandbox más simultáneamente dentro de una granja. Puede tener un máximo de 20 procesos de trabajo en todos los niveles en un único servidor.

El número de conexiones por proceso debe ser menor o igual al número de dominios de aplicación. Ese número de conexiones también debe ser menor para el nivel donde se establece la propiedad "ResourceMaxValue" a un valor más alto.

Sólo puede ejecutar una solución de entorno limitado en cada dominio de aplicación en cualquier momento. El número de dominios de aplicación representa el número de soluciones de entorno limitado que se puede cargar en cualquier momento. Un solo archivo BPS representa una solución de entorno limitado. Después de subir un paquete de BPS, puede ver lista con otras soluciones de entorno limitado en la Galería de soluciones.

Puede configurar soluciones de recinto de seguridad en modo local o en modo remoto. Sería utilizar modo remoto en escenarios donde la granja ha dedicado para la ejecución de código de recinto de seguridad y escalabilidad de los servidores.

Por lo tanto, si todos los elementos Web y bloques de código personalizado se empaquetan como parte de un paquete único, ese paquete se cargarán en un nivel en un dominio de aplicación. Los otros dominios de aplicación permanecen en el mismo nivel y no ser utilizados, por lo que no habrá ninguna distribución de carga en todos los niveles y servidores. Esto podría provocar en los cuellos de botella de escalabilidad y rendimiento.

Bloques de código Sandbox empaquetados en varios paquetes dará lugar a varias soluciones de recinto de seguridad. Esto proporciona los siguientes beneficios:

  1. Contar con múltiples soluciones de recinto de seguridad ayuda a mejora la vigilancia de recursos. Esto le ayuda a darse cuenta de qué solución de recinto de seguridad es alta en consumo de recursos. A continuación, puede buscar cualquier oportunidad optimizar el consumo de recursos para la solución de ese recinto particular. Esto también ayuda con la planificación de nivel. Tener todos los bloques de código de recinto de seguridad en una sola solución o paquete no darle ningún detalle sobre el uso de recursos de elementos Web particulares o bloques de código de recinto de seguridad.
  2. Puede realizar una configuración de nivel basada en el uso de recursos promedio de las soluciones de recinto de seguridad individuales, por lo que tendrá como resultado una utilización adecuada de los recursos del servidor.
  3. El proceso de implementación será más fácil. Elementos Web individuales y grupos pueden implementar o actualizar fácilmente en lugar de implementar la solución completa para proporcionar una actualización menor para un determinado elemento Web.

Basándose en estos factores, es mejor agrupar lógicamente elementos Web y otros bloques de código a través de múltiples paquetes de soluciones en lugar de empaquetar todo en una solución única sandbox. Código de recinto apropiado bloquear embalaje toda solución diferente paquetes ayudará a darle mayor conocimiento en el uso de recursos para los bloques de código de recinto de seguridad diferentes.

Una vez que tenga una mejor vista de utilización de los recursos, puede utilizar el ejercicio perfilado para identificar posibles áreas de mejora en las diferentes partes de bloques de código (en términos de rendimiento) y realizar actividades de optimización de código. También puede mejorar el rendimiento, la escalabilidad y el uso eficaz de los recursos.

V. Gnanasekaran

V. Gnanasekaran tiene más de 14 años de experiencia como TOGAF 9 Certified Enterprise Architect y parte de Microsoft Consulting Services India, donde ofrece servicios de consultoría de arquitectura a clientes. Sus actuales áreas de enfoque incluyen SharePoint, SQL Server OLAP y OLTP y Windows Azure. Ha publicado artículos sobre tecnología en diversas revistas incluyendo la revista de arquitectura y CodeProject. Blogs de él en gnanasekaran.com.

Contenido relacionado