Añadir dlls en la GAC de las máquinas de Windows Azure

Una de las opciones más sencillas para acondicionar las máquinas en Windows Azure es configurar un startup con los instalables necesarios para frameworks y complementos que utilizamos dentro de nuestra aplicación. La parte negativa de este sistema es que, si necesitamos instalar varios paquetes con el fin de tener varias librerías ubicadas en la GAC de Windows Azure es que  la subida se hace cada vez más lenta debido al peso de cada uno de los instalables.

Si conocemos cuáles son las librerías que necesitamos para que nuestra aplicación funcione correctamente en un entorno que no sea de desarrollo, podemos seguir los siguientes pasos para instalar dichas dll en la GAC sin tener que utilizar un paquete de instalación :)

En este post vamos a añadir dos librerías a través de un startup. Lo primero que necesitamos localizar es la herramienta gacutil.exe. Esta herramienta nos permitirá realizar la instalación de las dll a través de un bat que utilizaremos como startup. La misma se encuentra en %programfiles%Microsoft SDKsWindowsv7.0ABinNETFX 4.0 Tools y debemos añadir dentro de nuestra solución tanto el archivo gacutil.exe como gacutil.exe.config. Ambos archivos deben tener la propiedad Copy Local a True para que sean incluidos dentro del paquete de subida a Windows Azure. Del mismo modo, las DLL que queramos añadir en la GAC deberán tener este mismo atributo a true para asegurarnos que están dentro de la carpeta bin que se incluirá en la subida.

Una vez establecidos estos pasos, debemos crear un .bat con la siguiente información:


%~dp0gacutil.exe /nologo /i %~dp0Microsoft.IdentityModel.dll

%~dp0gacutil.exe /nologo /i %~dp0EntityFramework.dll

exit /b 0

Lo que estamos haciendo en el mismo es invocar a la herramienta gacutil.exe (el prefijo ~dp0 se utiliza para indicar que ese ejecutable o dll está en la misma carpeta donde se encuentra el .bat que estamos ejecutando) para que se añadan las librerías indicadas en la misma línea a la GAC de la máquina virtual que se está configurando.

Definimos el la tarea dentro del apartado startup del archivo ServiceDefinition.csdef y, del mismo modo, ponemos el atributo Copy Local a True para que sea parte de la subida.

 <WebRole name="Web" vmsize="Small">
    <Startup>
      <Task commandLine="RegisterGAC.bat" executionContext="elevated"></Task>
    </Startup>
    <Sites>

De este modo seremos capaces de añadir dichas librerías sin la necesidad de subir los paquetes de instalación y que la subida sea mucho más liviana.

Espero que sea de utilidad :D

¡Saludos!

Error con certificados y Windows Azure Management API: The request was aborted: Could not create SSL/TLS secure channel.

Uno de los requisitos cuando trabajamos con las APIs de administración de Windows Azure es que las peticiones que realicemos utilicen un certificado que anteriormente hayamos subido al portal de Windows Azure. Cuando varias personas trabajan en el mismo proyecto, para no tener que trabajar cada uno con un certificado diferente, lo normal es exportar uno de ellos y que los demás desarrolladores lo importen en sus máquinas para las peticiones a la nube. Llegados a este punto, uno de los problemas que nos podemos encontrar es el siguiente:

Cuando esto ocurre, una de las posibilidades es que, al importar el certificado, el usuario NETWORK SERVICE haya perdido permisos sobre las claves privadas del certificado que permiten firmar la petición (El GUID asignado en cada máquina es diferente). Para solucionar esto, podemos abrir una ventana de Microsoft Management Console (mmc) y añadir el complemento de los Certificates del usuario o del equipo, dependiendo de dónde tengamos importado el mismo. Una vez tengamos localizado el certificado, pulsamos sobre él con el botón derecho y seleccionamos All tasks -> Manage Private Keys…

Dentro de este cuadro de diálogo podremos añadir tanto los grupos y/o usuarios que pueden tener acceso a las claves privadas de este certificado. En el caso de Windows Azure, añadiremos NETWORK SERVICE.

Si ejecutamos de nuevo nuestro código, nuestro emulador tendrá permisos suficientes para poder realizar la petición.

Espero que sea de utilidad :D

¡Saludos!

Aplicaciones imprescindibles en Windows Phone 7

Después de probar varias aplicaciones disponibles actualmente en el marketplace de Windows Phone 7, me gustaría compartir aquellas que creo que son imprescindibles en nuestros dispositivos :)

Adobe Reader: Una de las aplicaciones que no necesita presentación. Gracias a ella podremos disfrutar de nuestros archivos en formato PDF.
Facebook: Aplicación oficial desarrollada por Microsoft Corporation. En una versión anterior presentaba bastantes errores de refresco y en ocasiones se quedaba colgada. Recientemente ha mejorado de forma considerable. Si bien una de las cosas que admiro de Windows Phone 7 es su gran integración con Facebook (permite escribir en muros, imágenes, perfil etcétera desde el propio sistema operativo), si queremos una aplicación exclusiva para esta red social, la versión oficial es altamente recomendable.
Foursquare: Aplicación oficial de foursquare. Para todos aquellos amantes del check in :D
4th & Mayor: Otro cliente para Foursquare, del cual dicen que será el sucesor de la versión oficial. Si bien a día de hoy la versión oficial sólo soporta check-in, con este cliente podremos además la crear y visualizar fotos de los lugares, disfrutar de nuevas features como “explore”, mayor rápidez en la localización de sitios próximos, entre otras.
Flory: Se trata de una aplicación dedicada a la mensajería instantánea. Actualmente nos da soporte para Google Talk y Facebook, aprovechando las notificaciones Push y Tile. Todos los mensajes son securizados y encriptados a 256 bits.
Messenger by Miyowa: Si bien la versión Mango (Windows Phone 7.5)  incorporará Windows Live Messenger, mientras tanto podemos ir abriendo boca con este cliente con notificaciones Tile.
Beez: Cliente para la famosa red social Twitter con notificaciones Tile. Una de las características que más me motivan al utilizar un cliente para esta red social es poder recibir notificaciones de menciones y mensajes privados que recibo a través de la misma. Esta es la aplicación que más se acerca a mis necesidades, aunque las notificaciones llegan en ocasiones con un retardo considerable :(
Twitter: Aplicación oficial para Twitter. Encantada con su interfaz gráfica donde podemos ver claramente toda la información de la plataforma. A diferencia de la anterior no aprovecha las notificaciones Tile… Por el momento espero :)
Birdsong: Otro cliente de Twitter con gran acogida que nos ofrece nuevas características: configuración del timeline con listas, búsquedas guardadas, etcétera, integración de las imágenes twitteadas, tweets mostrados en modo conversación, thread de mensajes privados, integración con Places, etcétera.
Rowi: Cliente de pago para Twitter que nos ofrece notificaciones push y una interfaz limpia. Si bien dispone de una versión free con el inconveniente publicitario :) por $2,99 podemos disfrutar la misma libre de ads.
Shazam: Aplicación conocida por todos aquellos clientes de iPhone, iPad, Android, BlackBerry y Nokia que nos permite detectar información sobre la canción que está sonando.
TextMe: Si bien soy una gran fan de WhatsApp, por el momento no tenemos una versión disponible para Windows Phone 7. Para seguir ahorrando en nuestros SMS, MMS, etcétera podemos hacer uso de TextMe (también disponible para iPhone) el cual nos aporta una función similar a WhatsApp.
Microsoft Tag: Se trata de un lector de tags made in Microsoft :) con el que podremos descifrar y leer el contenido de los mismos.
Amazon Kindle: Otra de las aplicaciones que no podía faltar era el cliente de Amazon para la lectura de nuestros libros comprados en la gran tienda virtual de esta compañía.
WordPress: Gestor de nuestros blogs gestionados con WordPress. Nos permite tanto postear, administrar páginas, comentarios, etcétera.
Ebay: Excelente cliente para la conocida página de subastas donde podremos buscar, seguir, pujar, pagar e incluso enviar mensajes a los vendedores.
AppFinder: Aplicación complementaria para localizar contenido dentro del marketplace de Windows Phone 7. Actualmente el buscador por defecto del sistema operativo no está lo suficientemente optimizado y a veces se complica la localización de algunas aplicaciones.
NextGen Reader: Lector de RSS que nos permite sincronizar con nuestros feeds de Google Reader. Además nos ofrece modo offline, compartir artículos en Twitter, enviar feeds a Instapaper, entre otros.
Fruit Ninja: Juego ya conocido por los usuarios de apple donde debemos cortar todas aquellas frutas que aparezcan en pantalla como un autentico ninja :D ¡Cuidado! ¡Super adictivo! ;)
Shuriken Ninja: Prueba tu destreza como un auténtico ninja :)
Cut it!: Aplicación para acortar URLs y guardarlas en el histórico.
Spotify: Aplicación por escelencia para escuchar música de manera legal en nuestros smartphones. Existe un trial para probar la versión Premium. ¡Altamente recomendable!
WhatsApp: Aplicación disponible para múltiples plataformas (iPhone, Android, Blackberry y Nokia) para enviar mensajes de forma gratuita a través de nuestra conexión de datos. La aplicación es gratuita pero el servicio costará $1.99 dólares a partir del primer año.
Simple Dropbox: Aplicación gratuita para conectarse y compartir archivos a través de Dropbox.
Flickr: Aplicación oficial del servicio de fotos Flickr.
GDocs: Cliente para el acceso a Google Docs desde Windows Phone.
Angry birds: Este es un juego que creo que no necesita presentación :D Ya tenemos la versión disponible de Angry Birds para Windows Phone de unos pollos muuuy cabreados :D
AppFlow: Similar a AppFinder para la búsqueda de nuevas aplicaciones dentro del marketplace de Windows Phone.
Favoritos: Aplicación creada por uno de mis lectores :D la cual permite guardar los contactos más usados como favoritos y tener un acceso más rápido a los mismos para realizar llamadas.
Offline Maps: Si no quieres arruinarte con los cargos de roaming, esta aplicación es más que recomendable para aquellos que viajamos a menudo :D
Tango: Te permite realizar llamadas gratuitas y mantener el contacto con amigos y familia, al estilo WhatsApp. Está disponible también para otras plataformas. Más información.

¿Alguien da más? :D

¡Saludos!