12.31.2011

Windows AppFabric p1–> Instalándolo en Windows 7

He decidido iniciar con una serie de post acerca del Windows AppFabric para crear arquitecturas distribuidas basadas en un servidor de aplicaciones en tecnologías Microsoft. Este es el primer post de la serie y para empezar he decidido utilizar Windows 7 como sistema operativo base.

Instalar el AppFabric en Windows 7

Ya que muchos utilizamos Windows 7 como sistema operativo de trabajo, o incluso existen empresas donde utilizan un pequeño servidor interno para instalar sus aplicaciones con Windows 7 Enterprise o Profesional decidí escribir este post que aunque parece repetido no lo es, ya que el anterior era acerca de instalar el AppFabric en Windows server 2008 R2 – algo mucho más complicado.

El instalador del AppFabric

Aunque podemos descargar e instalar el AppFabric para windows 7 desde el “Web Platform Installer”, yo prefiero descargarlo directamente desde el sitio de Microsoft y ejecutarlo desde mi máquina.

Como podemos ver en el sitio web de Microsoft dependiendo del sistema operativo que tengamos  debemos descargar el ejecutable establecido. En mi caso, estoy utilizando Windows 7 en 64 bits.

image

En la página de descargas procedemos con el archivo señalado en la imagen anterior.

image

Seguidamente procedemos a ejecutar el instalador y luego de la pantalla de bienvenida veremos la siguiente pantalla donde se nos pregunta que componentes deseamos instalar. En mi caso instalaré todos los componentes – por supuesto habrán más post respecto a la función de cada uno de estos componentes.

image

Luego se hará la comprobación de requisitos del sistema, como pueden ver en la siguiente imagen me falta un requisito para poder instalar el AppFabric.

image

Como ven, me falta el administrador remoto para IIS, el cual se puede descargar desde el web platform installer o desde el sitio www.iis.net. Cuando lo instalamos nos aparece el wizard de instalación.

image

Luego de finalizar esta instalación procedemos a darle “actualizar” a wizard del appFabric y ya podemos ver que ya no tenemos advertencias a la hora de continuar con la instalación.

image

Con eso procedemos a la instalación del AppFabric.

image

Una vez finalizada la instalación vamos a ver la pantalla de instalación completa y además una recomendación para instalar las últimas actualizaciones de Windows.

image

En el próximo post vamos a configurar el AppFabric para poder hacer tracking y persistencia de nuestros servicios y workflows.

Etiquetas de Technorati:

12.17.2011

Error TF237162: There is insufficient system memory on the Team Foundation Server SQL Server to run this query

 

El Problema

Trabajando con TFS en un máquina virtual de pruebas, me encontré este error cuando quise generar un Team project en VS 2010 para tener mis proyectos en una colección específica. Sin embargo se me presentaba el error TFS237162 y no me permitía crear los proyectos. Considerando que cuando instalo SQL Server yo le asigno el mínimo de memoria posible me di cuenta que el error podría andar por ahí.

Solución:

Para solucionar el problema solamente tuve que ir a incrementar la memoria máxima del servidor SQL Server que se usa como capa física de datos – La tenía en 64MB y la subí a 128 MB.

image

Luego de esto reinicié el servicio de SQL Server Express en la consola de servicios – accesible desde Windows + R  en services.msc

image

y los proyectos TFS ya pudieron ser creados de manera correcta.

image

Etiquetas de Technorati:

12.11.2011

Error 503 Accediendo TFS

Realizando una instalación básica de TFS 2010 en Windows 7, me encontré con el error 503 "Servicio no disponible” cuando quise acceder al sitio del Team Foundation. Investigando un poco me di cuenta que hay 3 posibilidades principales para que este error este sucediendo cuando queremos acceder a la dirección del servidor.

Errores encontrados y soluciones

En primera instancia resultó que el usuario del TFS no era el mismo usuario que tenía el application pool sobre el cual corría el sitio del TFS por lo que procedí a configurar el mismo usuario para ambas acciones. En la siguiente figura se ve el usuario configurado en el administrador del TFS.

image

Ahora vemos el Application Pool en el IIS con el mismo usuario configurado.

image

El siguiente error esta relacionado con SQL Server. En mi caso el TFS no podía ver el servidor de base de datos pese a que estaba en la misma máquina. Para solucionar este problema simplemente vamos a la opción de configuración de SQL Server y habilitamos conectividad vía Pipes para la instancia de la base de datos que estamos utilizando.

image

El último error esta relacionado con el puerto de instalación del TFS. Normalmente este utiliza el puerto 8080 para trabajar en el IIS; sin embargo, si ya tenemos otros sitios web en este servidor IIS el puerto también será utilizado por los otros sitios web que ya fueron creados, con lo cual no puede levantar el servicio del TFS. Para cambiar esto, seleccionamos el sitio web del TFS –> “ Team Foundation Server” y en la opción de enlaces o “Bindings” cambiamos el puerto de 8080 a 8081 – pudiendo ser cualquier otro puerto.

image

Luego de estos tres cambios ya puedo ver el sitio del TFS.

image

Etiquetas de Technorati: ,

12.10.2011

Aprendiendo WF parte 8 – Invocando métodos de otras clases en WF

Quizás la funcionalidad más común a la hora de trabajar con WF en una arquitectura n-layer sea invocar los métodos de los componentes de lógica de negocios. En este post vamos a ver como invocar un método que reside en otro componente.

El método a invocar

En primera instancia vamos a crear un método que recibe una colección de números y me devuelve los números pares. Este método estará en una clase aparte que se llamará MathHelper. El código de esta clase se puede ver en la siguiente figura:

image

El workflow que invoca el método BuscarPares

Ahora vamos a crear un workflow que va a requerir invocar el método BuscarPares de la clase MathHelper recién mostrada. Este workflow simplemente recibe la lista de los números enteros, los procesa – a través de la clase MathHelper – y retorna la lista solamente conteniendo números pares.

En el workflow creado por la aplicación de consola – Workflow Application – procedemos a crear dos argumentos:

  • Lista de entrada: pListaEntrada
  • Lista de Salida: pListaNumerosPares

image

Seguidamente procedemos a agregar una secuencia y luego de esto a agregar la figura que nos va a permitir invocar el método BuscarPares.

image

Como vemos en la figura anterior, nos falta configurar la figura InvokeMethod la cual nos va a permitir invocar el método BuscarPares en la clase MathHelper.

En este caso, tenemos tres parámetros por completar de manera visual los cuales tienen el siguiente significado:

  • TargetType: Este es el tipo de la clase que se va a utilizar en el caso de que se requiera invocar un método estático.
  • TargetObject: Este es el tipo de la clase que se va a utilizar en el caso de que se requiera invocar un método de instancia.
  • MethodName: El nombre del método a invocar.

En nuestro caso, como vamos a trabajar con un método de instancia tenemos que completar los campos TargetObject y MethodName.

Para el caso del targetObject vamos a tener que declarar una variable del tipo MathHelper dentro del workflow e instanciarla.

La creación de la variable se hace seleccionando la secuencia lanzada al workflow y digitando la variable en la parte inferior del workflow. La variable es la siguiente:

image

Para inicializar esta variable – para crear la instancia – procedemos con una figura del tipo Assign tal y como se ve a continuación:

image

Ahora procedemos a  configurar la figura de invocar método con la variable recién creada e inicializada.

image

Todavía nos falta configurar los parámetros de entrada y el retorno del método que vamos a invocar, para esto vamos a las propiedades de la figura InvokeMethod y configuramos ambos ítems. Primero establecemos que el retorno de la función será asignado a la lista pListaNumerosPares.

image

El siguiente paso es configurar los parámetros que debe recibir el método, la lista de los números a procesar. Para esto procedemos a seleccionar la propiedad “Parameters” y le damos click en la “elipsis” –> “…”. En esta pantalla procedemos a configurar el parámetro de envío.

image

Como vemos en la siguiente figura del workflow completo, este ya no tiene errores.

image

Ahora solo nos queda probar el workflow, para esto vamos a escribir el siguiente código en el método Main.

image

El resultado al ejecutar el código anterior es el siguiente:

image

Etiquetas de Technorati: