Análisis de interacción entre capas con VSTS 2010

Actualmente, la gran mayoría de desarrollos (siempre hay excepciones) se desarrollan con arquitecturas de n-capas. Esto nos da muchas ventajas, que no creo que hagan falta ser enumeradas ahora, sin embargo, todas estas interacciones, especialmente capas de servicios y capas de acceso a datos, son un punto susceptible a los cuellos de botella.

Una de las novedades del Code Profiler de Visual Studio Team System 2010, es el análisis de interacción entre capas.

Vamos a hacer un pequeño resumen de como utlizarlo, y un par de conclusiones acerca de el, siempre sin olvidar que estamos ante una Beta 1 ….

Empezemos con el ejemplo más sencillo.

Supongamos una aplicación WPF, que llama a una capa de lógica de negocio (con una referencia directa), que a su vez llama a la capa de datos, que se vale de un nuevo ensamblado con las entidades y el acceso a datos mediante Entity Framework, ¿sencillo no?.

A continuación, con nuestra solución abierta (recordemos que estamos en VSTS 2010), seguimos los siguientes pasos:

  1. En el menú Analyze, seleccionamos Launch Performance Wizard
  2. En la siguiente pantalla siguiente nos preguntará que tipo de profiling queremos hacer, seleccionaremos o bien Sampling  o bien Instrumentation.
  3. Lo siguiente es sobre que proyectos queremos hacer sampling o instrumentación, por ahora, sólo seleccionaremos nuestra aplicación WPF.
  4. Lo último que nos preguntará es si queremos lanzar el profiler cuando cerremos el wizard. Por ahora no queremos ejecutarlo, así que deseleccionamos esta opción.
  5. Ahora vamos a configurar el tier profiling, para esto, pulsaremos botón derecho en la sesión de profiling que hemos creado, y seleccionamos las propiedades:image
  6. Dentro de las propiedades tenemos una nueva opción Tier Interactions , simplemente nos movemos a esa opción y activamos el checkbox.
  7. Ya sólo nos queda pulsar el botón de ejecución de la sesión de profiling: image

Una vez ejecutada la sesión de profiling, al cerrar la aplicación, se nos genera el informe del profiler, en el menú de sub-informes disponibles, nos debería aparecer un nuevo sub-informe Interactions:image

Cuando pulsemos en el, se nos mostrará un informe de las interacciones, en mi caso, este es el resultado (recordad que estamos con 3 capas):

image

Como podéis ver en el informe, vemos que ha habido una única interacción entre capas, correspondiente a una consulta de SQL Server (la consulta se ve en la parte inferior del informe), y los tiempos de ejecución.

Uno de los primeros puntos de feedback (que ya he dado), es que en este caso de varias capas, no me dice que capa ha sido la que ha ejecutado la consula, ni el método ni nada, con lo que, a pesar de ser muy buena información, me faltarían datos para saber donde tengo que atacar.

Vamos a ver el siguiente escenario, este es básicamente igual que el anterior, pero en este caso, entre la capa de presentación WPF, y la capa de negocio, vamos incluir una capa de servicios WCF, simulando un entorno distribuido.

Los pasos de creación de la sesión de profiling son los mismos, pero, en este caso, debemos seleccionar tanto la capa de usuario (WPF), como la de servicios (WCF), en el listado de proyectos que vamos a examinar, durante el wizard de creación de la sesión.

El resto de los pasos son los mismos, sin olvidar de activar el check de interacción entre capas. Además aprovecho para comentaros, que cuando agreguéis a posteriori, a una sesión de profiling, nuevos proyectos, activarlo de nuevo, ya que es una propiedad de cada uno de los ensamblados a examinar.

Ahora, cuando ejecutemos la sesión de profiling, se nos lanzará tanto el interfaz de usuario, como el servicio WCF.

Una vez terminada la sesión de profiling, si nos movemos al sub-informe de interacciones, tendremos la siguiente información:

image

Bueno, lo primero es que me muestra la información de las llamadas a base de datos y al servicio duplicadas (en el código solo hay una a cada capa).

Y básicamente la información es la misma que antes, en este caso además, tenemos información del servicio al que se ha llamado, pero no el método que se ha ejecutado, ni que capa ha hecho la llamada 🙁 cosas de la Beta supongo.

Como podéis ver, esa información, en aplicaciones n-capas, es muy valiosa, esperemos que esos puntos de información que he comentado, cambien en la versión final.

En cualquier caso, es una funcionalidad que me gusta :).

Un comentario en “Análisis de interacción entre capas con VSTS 2010

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *