[Windows Azure][IIS Express] ¿Por qué los Request se hacen con otro puerto?

Cuando trabajamos con el Windows Azure Compute Emulator (en entornos locales de desarrollo) podemos notar un comportamiento que de entrada puede parecer extraño, si nosotros especificamos un puerto para trabajar con nuestros sitios ¿por qué los Request se realizan con otro?

Sigo sin entender, muéstrame el código

Supongamos que tenemos un proyecto Web trabajando en el puerto 80:

Si revisamos el Request en uno de sus controladores podemos ver lo siguiente:

Ahora entra en juego Windows Azure y agregamos este site como un role para nuestro CloudService, al ejecutar se lanzará el Windows Azure Compute Emulator y veremos algo como lo siguiente:

Pero ¿por qué? Si revisamos el Compute Emulator UI veremos lo siguiente:

Pues parece que si está saliendo por el puerto 80 (esto es porque ese es el endpoint que viene definido en el role):

Pero… si damos un vistazo al IIS Express:

Vemos que ahora el sitio está trabajando en otro puerto 😮 Esto es porque cuando se despliega en el Development Fabric el emulador creara un balanceador para nosotros con el puerto 80 (este es el que se ve en el Detail Service), y se creará un WebSite para cada instancia del rol asignándole una IP con el formato 127.255.0.x, con el puerto inmediatamente disponible, es decir que si agrego otra instancia a mi Cloud Service se debería crear otra aplicación con dirección 127.255.0.1:81 por ejemplo:

Y lo que ocurre entonces es que el Request se hace con el puerto del sitio creado por el emulador (con la dirección del Balanceador), en este caso :81 y no el puerto del balanceador de carga. Si realizo la petición a la dirección que me ha generado el emulador para el Role:

¿Pero por que en la nube no pasa esto?

Este comportamiento solo sucede en el entorno local, porque cuando se despliega el CloudService sobre Windows Azure este corre sobre una Maquina virtual y el balanceador de carga corre en un host distinto a este, es decir, si es posible que los dos atiendan por el mismo puerto porque son host distintos.

Espero sea de utilidad la aclaración.

Hasta el próximo post.

Anuncios
[Windows Azure][IIS Express] ¿Por qué los Request se hacen con otro puerto?

Un comentario en “[Windows Azure][IIS Express] ¿Por qué los Request se hacen con otro puerto?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s