MSDN Blogs
  • WarNov Developer Evangelist

    Las cartas sobre la mesa: HTML5 vs. Silverlight

    • 18 Comments

    Es preocupante ver como ciertos periodistas y no solo ellos sino en general la gente en medios de divulgación siempre aprovecha ciertos acontecimientos para “acomodarlos” de manera tal que parezcan una chiva sin importar las implicaciones sociales que esto pueda llegar a tener.

    Es el caso a mi modo de ver de una señora periodista muy bloguera ella, quien hizo unas conclusiones en su blog a raíz de unas declaraciones de Bob Muglia, presidente de la división de Server and Tools en Microsoft.

    Muglia le afirmó: “Silverlight is our development platform for Windows Phone … Silverlight also has some “sweet spots” in media and line-of-business applications”

    Esta sumada a otras frases desafortunadamente extraídas del contexto hizo parecer el artículo como una clara afirmación del presidente, en la que se indicaba que básicamente Silverlight entraba en decadencia. Sin mencionar que el PDC estuvo muy concentrado en la novedad IE9+HTML5.

    A partir de entonces se inició una revolución en el social media que durante todo este tiempo ha estado precedida por aquellos que de un modo u otro sienten amenazada a la plataforma Silverlight por el advenimiento de HTML5 y el fuerte apoyo demostrado abiertamente por Microsoft a esta tecnología. En esta euforia los desertores de Silverlight comenzaron a publicar por los cuatro vientos que era el fin de la plataforma y demás…

    Ya en varios medios menos formales que este, yo había comentado el total desacuerdo con todas esas opiniones y enumerado ciertos motivos para estas afirmaciones.

    Hoy Bob Muglia anunció oficialmente cual es nuestra postura al respecto y por ende me permito hacer más públicas y formales mis apreciaciones al respecto que como es de esperarse van en favor del futuro de Silverlight, de la mano de los intensos avances que hemos tenido en HTML5 tras la persecución de nuestra meta de ser los mejores implementadores de HTML5 en el mercado; cosa que ya estamos logrando con resultados muy positivos aún en pruebas tan estrictas y objetivas como la de W3C en la cual estamos en el primer lugar con Internet Explorer 9 en el Platform Preview número 6.

    1. Primero comencemos por lo sucedido en el PDC:

    No se mencionó mucho, la verdad… pero son de esas cosas que pasan. Silverlight va por su buen camino al éxito y para este evento desafortunadamente no hubo un nuevo release. Pero señores: En qué tecnología se hizo el streaming del evento? No fue exitosa esta transmisión? Todo el mundo pudo estar siguiéndolo en tiempo real gracias a Silverlight. Con un reproductor inigualable que difícilmente se puede lograr usando mero HTML5 en el cual podíamos ecoger hasta el audio de la traducción simultánea o intercambiar entre la presentación y el speaker para ver a uno u otro más grande. Todo esto apoyado por el Smooth Streaming de IIS7 que nos permite ver videos Silverlight aún en dispositivos que no aceptan ni siquiera Flash como el IPhone (si tienes IPhone chequea: http://iis.net/iphone para comprobarlo). Si quieren crear reproductores tan avanzados como este lo pueden hacer sin ningún problema gracias a que hay todo un framework gratuito y disponible para generarlos muy fácilmente: Silverlight Media Framework 2.0

    image

    2. Cuál es la experiencia de cliente más enriquecida posible?

    Es Silverlight. Microsoft que es quien ha avanzado más en el tema de HTML5, aún no logra toda la versatilidad que tiene Silverlight y de hecho no lo hará, porque HTML5 siempre tendrá la desventaja de tener que reducir sus funcionalidades a un mínimo común denominador, para permanecer estándar. Y esto sucederá con todos los proveedores de HTML5.

    Hoy en día. Silverlight provee experiencias Premium en cuanto al manejo multimedia que difícilmente se podrán encontrar en HTML5 como estándar pasados varios años:

    • Teleconferencia con webcam/micrófono
    • Aplicaciones de Video por demanda con funcionalidad DVR y protección de contenido (Netflix servicio del que soy asiduo y feliz usuario ya que me deja ver todas las películas que quiero como si estuviera alquilando DVDs, pero a través de Internet usando Silverlight)
    • Transmisión completa de eventos masivos como el PDC o los Olímpicos de Invierno en 2010 que soportaron hasta 130.000 usuarios concurrentes viendo en promedio 111 minutos de video High Definition de 720p en vivo y en directo por visita., sumando un total de 4.8 millones de visitas durante las transmisiones y todo esto desarrollado solo en dos semanas… podrá HTML5 llegar a esto poniendo de acuerdo a todos los participantes de la industria? De hecho no se de un caso similar a este logrado con Flash… ustedes sí? Les agradecería me informen…
    • Por si fuera poco, estas transmisiones se pueden emitir a computadores de escritorio como aplicaciones únicas o como embebidas en el browser, a WP7, a IPhone y IPads y hasta a la XBOX, en el caso de Netflix. (HTML5 por definición nunca se acercará a eso)


      • Otros elementos no contemplados en el road map de HTML5 y que Silverlight sí soporta:
        • Video de Alta definición (HD) H.264 and VC-1
        • Protección de contenidos con DRM
        • Video estereoscópico 3D (con el que se transmitió la Nascar Sprint Cup Series de este año en compañía de los desarrollos tecnológicos de NVIDIA 3D Vision) y a través del cual lo usuarios pudieron experimentar video 3D real dentro de su browser, abriendo una posibilidad sin precedentes a nuevos canales y formas de transmisión.
        • Multicast
        • Soporte a broadcasting en vivo
        • Smooth Streaming (transmisión de video que se adapta a las condiciones de red para no producir cortes en los videos)
        • Picture in Picture
        • Soporte a herramientas de análisis que permiten integrar inteligencia de negocio dentro de las aplicaciones Silverlight gracias al Silverlight Analytics Framework

    • Multi hilos para el manejo de la respuesta de interfaz de usuario
    • 3D en perspectiva
    • Los mejores diseñadores y herramientas: Expression Blend, Visual Studio.

    • Para aplicaciones empresariales:
      • Más de 60 controles pre construidos
      • Herramientas y frameworks de productividad (RIA Services)
      • Aprovechamiento del gran performance de .NET y C#
      • Controles de visualización de datos súper avanzados como el Silverlight PivotViewer
      • Soporte flexible a datos: Databinding a objetos de memoria, XML, XML binario, LINQ, Storage Local

    • Impresión Virtualizada
    • Manejo de COM!!!

    Otros escenarios más simples sí son soportados por ambas tecnologías sin problemas… pero que hay del rendimientos y la calidad?

    Rendimiento:

    clip_image001

    Silverlight es el runtime más veloz en la web gracias a estar basado en el CLR.

    Calidad:

    Miren como se ve la misma figura trazada con HTML5 en varios browsers

    clip_image002

    Tiempo:

    clip_image004

    En mucho menos tiempo del que HTML5 ha estado en desarrollo sin ni siquiera la primera versión, Silverlight ha sacado a flote 4 versiones y aún hoy en día sigue sin conocerse cuando se oficializará HTML5 y de acuerdo a todo lo que se necesita para lograrlo, todavía falta más que un poco.. mientras tanto Silverlight seguirá en producción activo en los sistemas operativos y browsers más populares y progresando cada vez más.

    Más allá del Browser:

    Silverlight no es solo un plugin… es todo un concepto y una plataforma para lograr interoperabilidad no solo a nivel de sistemas operativos o browser, sino de dispositivos también. Silverlight se puede hospedar en el browser o fuera de él como una aplicación de escritorio no solo en Windows sino en MAC o Linux. Soporta todos los browsers más populares y por si fuera poco, es la plataforma de desarrollo para el Windows Phone 7 y el futuro es muy prometedor para otras plataformas, como los mismos dispositivos para nuestras salas de estar, por no decir televisores que reproducirán contenido Silverlight gracias a tecnologías ya existentes como Systems-on-a-chip (SoC) que nos han permitido generar demos completamente funcionales con TVs, BluRay y otros dispositivos de consumidor final.

    Así que si como desarrollador tú aprendes Silverlight, de inmediato de conviertes en un desarrollador para móviles y para electrodomésticos de consumo masivo, uniéndote a los más de 600.000 desarrolladores en el mundo que saben programar con esta tecnología que ya está en cerca del 65% (a pesar de su corto tiempo de vida) de las máquinas en el mundo: 600.000.000.

    Si todo esto es tan maravilloso, entonces por qué nos enfocamos en HTML5?

    La cantidad de dispositivos diversos en el mundo está creciendo exponencialmente. Así que tener una implementación “propietaria” en todos es casi imposible. En este caso es mucho más conveniente que todos esos dispositivos estén preparados para ejecutar un estándar global como lo pretende ser HTML5. Como tarde o temprano esto va a suceder, Microsoft se ha propuesto ser el mejor implementador de este estándar para cuando esto suceda; pero recordemos que alcanzar un nivel de estandarización tan alto requiere que la tecnología se baje a un mínimo común denominador… que en el caso de HTML5 no es tan mínimo pues la idea es que soporte muchas funcionalidades de presentación gráfica avanzada, pero que comparadas con las que tiene Silverlight, son muy difíciles de igualar.

    En palabras de Muglia “Silverlight nunca ha querido reemplazar a HTML en ninguna de sus versiones, pero su objetivo sí es hacer las cosas que no puede hacer HTML y otras tecnologías y hacerlo en una manera que es muy fácil e implementar para los desarrolladores. Hoy en día está instalado en 2/3 de los computadores del mundo y 600.000 desarrolladores la usan actualmente. No se equivoquen, nosotros continuaremos invirtiendo en Silverlight y habilitando a los desarrolladores para construir aplicaciones grandiosas con esta tecnología en el futuro… bob”.

    Go Silverlight, go! ( hand in hand with HTML5 Winking smile)

  • WarNov Developer Evangelist

    Windows Azure Storage Tools: Programa en Azure más fácil con herramientas de terceros

    • 0 Comments

    A continuación un compilado de las herramientas que uso a diario para manejar el Storage de Windows Azure, así como un diagnóstico de lo que me han parecido has ahora:

    Gladinet Cloud Desktop (Free Edition):

    Esta herramienta permite mapear a una unidad de red nuestro Blob Storage en Azure. Es bastante útil para hacer backups, o subir archivos para nuestras aplicaciones directamente desde nuestro Windows Explorer. Permite conectarse a otros servicios de storage además como FTPs, Skydrive (súper útil), Amazon y Google. Sencillamente nos pide el endpoint y el Primary Key y listo. Se crea un directorio virtual dentro de un drive llamado Gladinet. En este drive quedan todos los servicios de storage configurados.
    Una de las cosas más interesantes que hace, es abstraer el hecho de que en los blobs de Azure no tenemos un manejo de carpetas como en el sistema de archivos al cual estamos acostumbrados. (Detalles aquí). Así que automáticamente renombra los blobs de manera que imitan una estructura de carpetas y de igual manera, cuando se extraen del blob storage hacia las carpetas locales, crea una jerarquía a partir del nombre extendido.
    Por ejemplo estos blobs en una cuenta de storage de Windows Azure llamada warstorage en nuestro explorador de archivos con Gladinet se muestran así:

    clip_image002
    Las rutas rest de estos blobs serían:
    http://warstorage.blob.core.windows.net/thecloudware/Level1/Level2/Koala.jpg
    http://warstorage.blob.core.windows.net/thecloudware/Level1/Level2/Desert.jpg
    http://warstorage.blob.core.windows.net/thecloudware/Level1/Level2/Tulips.jpg

    Para finalizar, Gladinet permite copiar carpetas completas aún desde dentro del storage en la nube; cosa supremamente útil. No soporta el Developer Storage.

    Mi calificación: StarStarStarStar

    Windows Azure Blob Storage Client

    Es una de las primeras herramientas surgidas para esta tarea. Creada con WPF, se encuentra en Codeplex, así que es Open Source. Es muy básica. Útil para pequeñas tareas rutinarias o para aprender a manejar el API examinando el código. Tal como Gladinet solo permite manejar Blobs; pero a diferencia de este, solo permite manejar una cuenta a la vez. Permite subir varios archivos a la vez, pero no carpetas (no puede hacer la abstracción). Además he detectado problemas para subir archivos Silverlight (.xap). Soporta el Developer Storage. Es muy inestable. Para fines educativos está bien.

    Y viendo ya los blobs sin la abstracción de jerarquía de carpetas con una herramienta como Windows Azure Blob Storage Client, veríamos:

    clip_image004
    Como se aprecia, los blobs sencillamente han sido renombrados representando la jerarquía de carpetas.

    Mi Calificación: StarStar

    myazurestorage.com

    Es una herramienta web basada en MVC creada por Microsoft y de uso gratuito que permite explorar todos los elementos del storage de Windows Azure para una cuenta determinada. Es así como podemos interactuar con los blobs, tablas y colas. Es una gran aplicación disponible en todo lado, gracias a que es Web. Las credenciales no se guardan en el servidor y sólo se almacenan en una cookie cifrada en el equipo. Observemos como se ve nuestro ejemplo en esta herramienta:

    clip_image006


    Como se aprecia, si establecemos un delimitador de carpetas simulado (en este caso “/”) la página nos muestra correctamente la jerarquía. Si lo omitimos, lo veríamos de esta manera:

    clip_image007

    Esta herramienta solo permite subir de a un archivo; pero también permite crear tablas, nuevas entidades dentro de esas tablas, ejecutar consultas sobre las tablas y el mismo manejo con las colas. Maneja correctamente el Root Container. Obviamente al ser web, no soporta el Developer Storage.

    Mi calificación: StarStarStar

    Azure Storage Explorer

    Esta es una grandiosa herramienta también OpenSource (en Codeplex) que ha sido una donación de la compañía NEUDESIC un partner gold de Microsoft que la desea dejar abierta para la comunidad. Al día de hoy va en su versión 4 liberada el mes pasado. Así que se mantiene constantemente con innovaciones y correcciones. En esta versión por ejemplo permite manejar varias cuentas separadas por los tabs de una bella aplicación creada en WP usando el patrón MVVM. Permite CRUD con blobs, tablas y colas. Además permite reproducir los blobs de media (imagen, video, audio). Como cosa curiosa, no hace la abstracción de jerarquías en Azure (ahora mismo les estoy enviando el feedback, pues sería cool) Aquí les muestro cómo se ve nuestro ejemplo:

    clip_image009
    No permite subir carpetas completas, pero sí múltiples archivos.

    Mi calificación: StarStarStarStar

    Cerebrata Cloud Storage Studio

    Esta es la herramienta PRO para manejar el Storage de Azure. No es free (la única versión free es la Developer que solo se conecta al Development Storage). Tiene un trial e 30 días. No solo administra el storage, sino que también sirve para administrar los servicios de hosting (eliminar deployments, etc. Aunque no logré conectarme con el servicio de hosting desde este tool). Está construido nuevamente sobre WPF y abstrae correctamente la jerarquía de directorios, chequeando los nombres de los blobs. De una manera poco intuitiva, permite subir correctamente toda una carpeta con subdirectorios. En este sentido Gladinet hace un trabajo más transparente y lo mejor de todo, gratis. Tiene un muy buen manejo para CRUD de tablas y colas. Y sobretodo un muy buen query builder para las tablas. Los menús contextuales son bastantes ricos, por lo que operaciones frecuentes son muy fáciles de ejecutar. Por ejemplo creación de snapshots, modificación de propiedades, obtención de urls, etc. Para un ambiente profesional, vale pagar los cerca de US$70 que vale, aunque no es indispensable. Para finalizar un vistazo de nuestro ejemplo:

    clip_image011

    Mi calificación: StarStarStarStar

     

    Windows Azure Cmdlets:

    Son un conjunto de scripts diseñados específicamente para PowerShell. Fueron creados y publicados por Microsoft y en muchas ocasiones son base para construir otras aplicaciones más gráficas que no requieren el uso de la consola para funcionar. Aunque no manejan directamente operaciones CRUD sobre el storage, si nos permiten ejecutar operaciones administrativas como manejo de las llaves de acceso, del estado de publicación de los servicios de storage, del api de diagnósticos, etc. Es free.

    Mi calificación: StarStar

    Windows Azure MMC Snap In

    Este snap in fue creado por Microsoft usando los cmdlets mencionados anteriormente y es genial porque se integra a la consola MMC así que el uso es bastante intuitivo. Permite ejecutar tareas administrativas ( a través de los cmdlets ) y tareas operativas con el storage. Todo esto está implementado usando MEF, de manera que si lo deseamos, podemos modificar cualquier parte de este snapin, poniendo la funcionalidad que queramos. También es Free, y el ejemplo de nuestro storage se vería así:


    clip_image013

    No hay abstracción de jerarquía, pero lo interesante es que podemos subir un container completo. Entonces escogemos una carpeta en nuestro sistema de archivos y ésta se sube con todos sus contenidos como un nuevo container a Windows Azure. Si ese folder tiene subcarpetas, entonces renombra los archivos con la estructura. Desafortunadamente tiene un pequeño bug, y es que antes de comenzar con la jerarquía pone un “/” adicional:

    clip_image014

    Que obviamente no está de acuerdo con el formato convencional. Sin embargo el código fuente está disponible y se puede corregir. Tampoco nos permite subir múltiples archivos, y el refresh como siempre en MMC solo ocurre tras oprimir F5 (no es automático). Sin embargo, para administradores de IT lo veo perfecto pues está más enfocado a diagnóstico y servicios y con un soporte moderado a storage.

    Veredicto:

    En conclusión, Windows Azure tiene un gran set de tools para manejar su storage. Además como lo pueden ver, es una gran oportunidad de negocio también volverse productor de herramientas para aplicaciones de Azure. Azure nos da la bienvenida a todo un mundo de nuevos negocios.

  • WarNov Developer Evangelist

    Y llegó el WebCamp Colombia 2010 #WebCamp10

    • 20 Comments

    image

    El nivel técnico y de “coolness”  de este evento,  hizo que durante la primera noche se agotaron todas las boletas!
    (Si no clasificaste, tenemos sesiones en vivo con LiveMeeting)

    Si fuiste uno de los afortunados en lograr un cupo, te cuento algunas condiciones especiales para el día del evento:

    1. A pesar de ser un Campamento, no tienes que traer botas pantaneras ni ropa de cambio… es en el cool piso 15 de Microsoft Bogotá.
      • Tampoco necesitarás fiambre ni malvaviscos, pues te daremos dos breaks y un almuerzo en la mitad
      • Ni linternas ni leños son requeridos
      • Un internet portable nos ayudaría a que la red corporativa no se sobrecargue… entonces es recomendado.
    2. Instalaré un Kinect con su XBOX en los pasillos para que cuando se estresen o sientan que se están durmiendo en la charla, puedan ir a estirar el esqueleto.
    3. Habrán inscripciones para muchos de nuestros programas:
      • Podrán inscribirse en planes de emprendimiento para hacer empresa con la ayuda de Microsoft.
      • Habrán registros para el concurso de Windows Azure en MVA con el cual solo haciendo una aplicación en Azure, puedes participar en el concurso para ganar uno de 30 combos XBOX+Kinect.
      • También podrán inscribirse en planes gratuitos para probar Windows Azure. Estos planes, a pesar de ser gratuitos, requieren Tarjeta de Crédito para verificar identidad y en caso de ser necesario, ofrecer servicios adicionales a la oferta gratuita. Así que vengan preparados. Nosotros les ayudamos!

    Pero qué gracia tiene inscribirse a esos programas en el WebCamp, si es posible hacerlo también cuando y desde donde lo queramos? Para todos los inscritos en programas Microsoft, estaremos rifando Hardware Microsoft + Libros. Además, el 30 de Noviembre, día del WebCamp, es el último día para adquirir la promoción de Azure. Así que si hay suficientes inscritos, hasta de pronto me anime y rife de inmediato el Kinect con la XBOX!!!

    Qué debes traer?

    No olvides que si quieres estar en las sesiones prácticas que vienen después del almuerzo, debes traer tus máquinas portátiles con las siguientes especificaciones mínimas:

    1. Microsoft Web Platform Installer 2.0 (Web PI) es una herramienta gratuita que facilita la descarga, instalación y la actualización de los últimos componentes de Microsoft Web Platform, incluidas las herramientas que son requeridas para los laboratorios: Internet Information Server (IIS) Express, SQL Server Express, .NET Framework  y Visual Web Developer. Además tiene aplicaciones web ASP.NET y PHP muy populares que son Open Source.

    2. Si desean asistir al track de Windows Azure, además de lo anterior se requiere:

    a. Portátil con alguna de las siguientes versiones de Windows: Vista, 7, Windows Server 2008. Y con IIS 7 (no Express. Azure requiere la versión Full. XP no soporta IIS7). (Si no tienen la licencia, se puede descargar un trial de aquí.)

    b. Sql Server 2008 R2 Express Edition  y SQL Server Management Studio 2008 R2 Express Edition (Obligatorio tener una instancia llamada SQLEXPRESS y que sea R2)  Se descarga con el Web Platform Installer.

    c. Visual Studio 2010 Web Developer o superior. Si no tienen la licencia, se puede descargar un trial de aquí.

    d.  Windows Azure Tools for Microsoft Visual Studio 1.2 (June 2010) descargables aquí

    e.  Windows Azure Training Kit descargable de aquí.

    f.  Opcional: Prelectura de estos artículos

     

    Recuerden que los tracks que tenemos se estarán transmitiendo por LiveMeeting por si tienen amigos que se quedaron sin verlo:

    ASP.NET 4.0 (Novedades). LiveMeeting
    IE9+HTML5 LiveMeeting
    MVC 2.0 LiveMeeting
    Windows Azure LiveMeeting

    Cualquier duda, pregúnteme aquí o en Formspring

    Para finalizar y que puedan desplegar todo su potencial Web 2.0, el tag Oficial para este evento, será #WebCamp10. Úsenlo para identificar sus twitts. Al final la persona con más twitts con el tag, ganará un premio sorpresa!!!

     

    Open mind 4 a Different Coding Fellas! Y nos vemos en el terreno!

    image



  • WarNov Developer Evangelist

    Tips para el desarrollo de aplicaciones en Windows Azure

    • 0 Comments

    En este post estaré acumulando una serie de tips apropiados para un mejor desarrollo de aplicaciones Web para Azure.

    5. Ignorar los Errores del contexto de datos de Windows Azure producidos por el 404:

    En Windows Azure podemos acceder al almacenamiento a través de REST. REST funciona a través de HTTP. Así que cuando consultamos un registro de una tabla y éste no se encuentra, el servicio nos retorna 404 (Not Found) Y entonces el contexto de datos que usamos para representar en memoria los datos de las tablas entonces genera una excepción a raíz de ese 404. Entonces para solventar esto tenemos dos opciones. La primera, manejar la excepción y la segunda sería ignorar este tipo de error, pues sabremos que se trata de un registro en una tabla no encontrado. Así que en la consulta lo que se haría sencillamente es observar la cantidad de registros retornados (count):

    context.IgnoreResourceNotFoundException=true;

    Donde context es el objeto heredado de TableServiceContext a través del cual estamos accediendo a las tablas de Azure.

    4. Escoja puntos cruciales para hacer programación alternativa

    En algunos casos ud., querrá que su aplicación corra con los mínimos cambios independientemente de si está en un hosting tradicional o si está en el Cloud. Cosas que pueden cambiar, son por ejemplo los orígenes de las variables de configuración. Como lo vimos en el punto 3, una aplicación en cloud, generalmente tiene sus variables de configuración en caliente, puestas en el archivo de configuración del servicio, mientras en un hosting tradicional, esto se hace en el Web.config. Podemos usar la propiedad

    RoleEnvironment.IsAvailable

    Para chequear si estamos corriendo en Azure (true) o no (false) de esta manera, determinar por ejemplo cuál de los archivos de configuración chequear para traer una variable.

    Por ejemplo:

       1:  string enterprise =
       2:    RoleEnvironment.IsAvailable ?
       3:    RoleEnvironment.GetConfigurationSettingValue("EnterpriseName") :
       4:    ConfigurationManager.AppSettings.Get("EnterpriseName");

    3. Web.Config o ServiceConfiguration.cscfg

    Tanto las aplicaciones Web como los servicios de Cloud (CS) tienen archivos de configuración que permiten en teoría hacer modificaciones en caliente sobre los servicios sin tener que recompilarlos.

    Pero por qué en teoría?

    En teoría, porque cuando el sitio Web está en Azure, no tenemos la posibilidad de acceder al Web.Config como es tradicional en los hosters clásicos. En general, los archivos de las instancias de cómputo (Web.Role, Worker Role) no son accesibles por ejemplo con un FTP. Así que lo que tendríamos que hacer, es una aplicación que modifique los Web.Config internamente y lo peor de todo, hacer que se ejecute en todas las instancias Web que estemos corriendo. Como ven, no es muy práctico.

    Entonces la opción sería editar el Web.Config y re empaquetar de nuevo el sitio y volverlo a subir… tedioso no?

    Afortunadamente, tenemos el archivo ServiceConfiguration.cscfg. Éste sí es accesible desde el portal del desarrollador de Windows Azure y lo podemos bien sea editar allí en vivo o subir independientemente con la nueva versión que queramos.

    Entonces lo que recomiendo es que si en su aplicación ud. tiene variables de configuración que cambian mucho durante la ejecución de la misma, éstas sean puestas en el archivo de configuración del servicio. Por otro lado si son variables que solo cambian de compilación en compilación, entonces está bien dejarlas en el Web.Config.

    Recordemos que tanto el Web.Config como el ServiceConfiguration.cscfg son fácilmente accesibles en un proyecto de Cloud. Además es posible generar rutinas de programación que decidan ir a buscar las variables de configuración a uno u otro archivo dependiendo de cómo lo haya desplegado: hosted o en cloud.

    2. Subir datos a las tablas de Azure

    Esta operación puede tener tres connotaciones:

    • Subir dos o tres registros
    • Subir batch de cientos o algunos miles de registros
    • Subir miles y miles de registros:
      • Considere escribir una rutina usando el API del Storage de Windows Azure

    Si usa Cloud Storage Studio, y está subiendo datos en español, es posible que el archivo plano que esté subiendo o el CSV que use para esto no se presente adecuadamente luego de cargarlo en la herramienta. Así que las tildes y eñes por ejemplo se le mostrarán como símbolos extraños y así subirán a la nube. Esto se soluciona fácilmente, usando archivos de texto o CSV grabados con la codificación UNICODE.

    1. Desarrolle la parte visual del sitio web sin Azure

    Suena curioso que para programar mejor para Azure, les de este consejo. Pero es muy apropiado en la medida de las posibilidades. A qué me refiero?

    Todo lo que tiene que ver con el debugging y por supuesto el deployment de una aplicación Web en Windows Azure, trae de por sí, una estrecha relación con IIS, que es el servidor que se activa con los Web Roles.

    Por eso, cada vez que ejecutamos la aplicación Web para Azure, se hace todo un deployment del sitio al IIS de manera automática.

    Si nuestra máquina es lo suficientemente rápida, esto puede que no sea ninguna molestia. De lo contrario si puede llegar a tomar más tiempo que hacer un simple debug usando el servidor Cassini incluido en Visual Studio.

    Sin embargo lo más importante durante el proceso de debug, es que las actualizaciones que hagamos a las páginas aspx o en general a cualquier recurso que haga parte del sitio mientras éste se está ejecutando en desarrollo, no se ve reflejado de inmediato en éste despliegue, debido a que como las fuentes ya están en un directorio virtual dentro del IIS, los cambios que hacemos por fuera no se ven reflejados sino hasta que se hace un nuevo despliegue, por lo que es necesario detener la aplicación y volver a ejecutar el despliegue; cosa que aunque es automática consume más tiempo que cuando usando el Cassini actualizamos las páginas en caliente para ver los cambios de inmediato. Esto es muy útil a la hora de refinar la apariencia gráfica de las páginas.

    Por esto es que recomiendo trabajar las interfaces gráficas del sitio web de manera separada a Azure. Esto nos va a dar mucha más agilidad en este proceso. Cuando ya tengamos lo suficientemente estables estas páginas, podremos ya asociarlas a un Web Role y entonces refinar la integración con Cloud, lo que puede implicar cambiar ciertos métodos o valores quemados en la forma mientras ésta se diseñó.

  • WarNov Developer Evangelist

    Web Designers vs. Web Developers

    • 2 Comments

    free website builder


  • WarNov Developer Evangelist

    Simulando carpetas en los blobs de Windows Azure

    • 2 Comments

    En los blobs de Azure no tenemos un manejo de carpetas como en el sistema de archivos al cual estamos acostumbrados. Solo tenemos contenedores y dentro de estos contenedores tenemos múltiples blobs; no más contenedores. Así que para imitar una estructura de carpetas, podemos nombrar los blobs imitando una estructura de carpetas.

    Por ejemplo; si tenemos:

    clip_image002

    Donde cada carpeta contiene un grupo de imágenes que nos servirán como fuente para un sitio web, entonces tendríamos que simular dentro del contenedor llamado “temp”, que tenemos tres carpetas llamadas pics, pics1 y pics2.

    Esto se logra sencillamente renombrando cada uno de los archivos dentro de las carpetas con la ruta relativa desde temp (que sería el nombre del contenedor). Esto hará que se puedan referenciar luego como si estuviesen en una jerarquía de carpetas.

    Por ejemplo si dentro de cada folder tenemos los archivos 1.jpg, 2.jpg, n.jpg, entonces luego del renombramiento tendríamos:

    Representando a la carpeta pics:

    pics/1.jpg, pics/2.jpg, pics/3.jpg

    Para la carpeta pics1:

    pics1/1.jpg, pics1/2.jpg, pics1/3.jpg

    y así sucesivamente.

    De la misma manera operaríamos en jerarquías más complejas.

    Por ejemplo un blob bien podría llamarse:

    carpeta/subcarpeta/subsubcarpeta/archivo.extensión

    Más detalles en inglés aquí

  • WarNov Developer Evangelist

    Codificando N Veces más rápido con Visual Studio

    • 9 Comments

    Video ultra rápido mostrándonos un tip súper cool de Visual Studio 2010. Say no more.

  • WarNov Developer Evangelist

    Joomla! también corre sobre Windows.

    • 6 Comments

    image                

    No solo pequeñas organizaciones o emprendedores utilizan Joomla! como plataforma de administración de contenidos (CMS) para sus sitios web. Citibank para su intranet y la Universidad de Harvard también eligieron utilizar esta herramienta de código abierto.

    Joomla! permite crear fácilmente complementos que vuelven a la plataforma extensible, prácticamente sin limitaciones. Se administra muy fácilmente mediante módulos, por lo cual se ha convertido en una excelente opción para muchas organizaciones con necesidades complejas, ya que a la vez permite construir sistemas de control de inventario de contenidos, herramientas de reportes, conectores para aplicaciones, catálogos de productos personalizables, sistemas de comercio electrónico, directorios de negocios complejos, sistemas de reservas y de comunicaciones, entre muchas otras posibilidades.

    Más de 200.000 personas contribuyen a su desarrollo y lo utilizan. Seguramente tenías ya alguna referencia, incluyendo que está construido sobre tecnologías PHP y MySQL, pero… ¿sabías que corre sobre Windows con una excelente performance? Esto es importante porque Windows Server como plataforma web ofrece un amplio abanico de herramientas de administración, incluyendo la posibilidad de virtualizar servidores de manera muy simple, lo que permite probar sitios antes de pasarlos a producción en un entorno similar al real, sin invertir en nuevo hardware.

    Encuentra a Joomla en Microsoft Web Platform Installer 2.0 (Web PI): una herramienta gratuita que facilita la descarga, instalación y la actualización de los últimos componentes de Microsoft Web Platform, incluidas las herramientas que son requeridas para los laboratorios: Internet Information Server (IIS) Express, SQL Server Express, .NET Framework  y Visual Web Developer. Además tiene aplicaciones web ASP.NET y PHP muy populares que son Open Source, como Joomla. En Colombia, el WebCamp 2010 se basa en WebPlatform Installer.

    En el sitio de la comunidad de Joomla! en Español podrás también encontrar recursos e información del entorno WAMP: Windows, Apache, MySQL y PHP.

  • WarNov Developer Evangelist

    Error: RoleEnvironmentException was unhandled

    • 0 Comments

    Este es un error bastante frecuente, que brinda muy poca información cuando uno va a chequear la descripción de la excepción. De hecho, como ven en la gráfica, un torrente de detalles, tratan de explicarnos que sucedió: “error”:

    image

    La mayoría de veces, esto sucede por errores en la configuración de las cadenas de conexión al storage de Windows Azure bien sea en el Development Storage, o en el Storage en la nube como tal.

    Así que la solución está en chequear la configuración de las variables de Connection String, en la configuración de los roles del servicios:

    image

    Asegurémonos entonces de que el tipo del setting sea Connection String y de que el valor sea justo el que deseamos. Sui hace falta algún setting o tiene el tipo equivocado, entonces obtendremos esa amigable excepción.

    Recordemos que a esta pantalla de configuración llegamos haciendo doble clic sobre cada uno de los roles que tengamos en el proyecto cloud. Un error común, es que ajustamos bien las variables solo para un role, y el otro lo dejamos sin ajustar:

     

    image

    Otro de los posibles motivos por los cuales esta nutrida en información excepción es lanzada, es porque estemos llamando una variable de configuración que no esté correctamente agregada en los archivos de configuración. Así que es bueno verificar que todas las variables que intentemos llamar, realmente existan con ese nombre en el archivo de configuración.

  • WarNov Developer Evangelist

    Windows Azure Root Container

    • 0 Comments

    Una de las nuevas características del storage de Windows Azure, es el Root Container.

    Hasta hace algún tiempo los blobs se manejaban de la siguiente manera: http://warstorage.blob.core.windows.net/contenedor/miarchivo.txt

    Y cualquier blob que se quisiera acceder, siempre tenía que estar en un contenedor.

    Qué pasa si uno quería acceder de una manera como:

    http://warstorage.blob.core.windows.net/miarchivo.txt?

    No era posible.

    Ahora, para solucionar esto, tenemos el Root Container. Un contenedor que como su nombre lo indica, llamamos “$root” cuando es creado.

    De esta manera, tenemos:

    http://warstorage.blob.core.windows.net/$root/miarchivo.txt

    que es igual a:

    http://warstorage.blob.core.windows.net/miarchivo.txt

    y solucionado el problema.

    Esto es muy útil por ejemplo para crear sitios web estáticos en el storage que no nos generan costo de cómputo. Por ejemplo sitios con Silverlight + SmoothStreaming.

  • WarNov Developer Evangelist

    WordPress sobre Windows

    • 0 Comments

    image

    Está disponible el complemento de Windows para poder montar WordPress, la herramienta de código abierto para la creación de blogs más difundida del mundo, en el mismo entorno que se utiliza a diario para correr otras aplicaciones laborales.

    Muchos desarrolladores, e incluso profesionales de TI que deben resolver rápidamente la implementación de una solución para crear sitios web o montar blogs departamentales por ejemplo, eligen en todo el mundo WordPress. A partir de ahora, no necesitan crear y mantener otra infraestructura paralela a los equipos principales, sino que pueden manejar todo en la misma plataforma, de manera tal que se simplifique la administración y por ende se reduzcan costos. Esto es una muestra más del compromiso de Microsoft con la interoperabilidad y del respeto por las preferencias de los clientes. Incluso los blogs de Windows Live Spaces han sido migrados a WordPress.com, ya que Microsoft ha evaluado que es la plataforma que mejor cumple con las expectativas de los usuarios.

    Desarrollado por la comunidad, WordPress tiene un amplio abanico de funcionalidades, cerca de 12000 plug-ins, y prioriza en su filosofía de origen la simplicidad de uso, la velocidad y la experiencia del usuario; además, es compatible con los estándares de la industria y se mantiene siempre flexible a las adaptaciones que se requieran en cada uso particular.

    Encuentra a WordPress en Microsoft Web Platform Installer 2.0 (Web PI): una herramienta gratuita que facilita la descarga, instalación y la actualización de los últimos componentes de Microsoft Web Platform, incluidas las herramientas que son requeridas para los laboratorios: Internet Information Server (IIS) Express, SQL Server Express, .NET Framework  y Visual Web Developer. Además tiene aplicaciones web ASP.NET y PHP muy populares que son Open Source, como WordPress. En Colombia, el WebCamp 2010 se basa en WebPlatform Installer.

  • WarNov Developer Evangelist

    Evento: Lanzamiento Comunidad Valle Indigo en Neiva

    • 0 Comments

    Me permito invitarlos al lanzamiento de la Comunidad Valle Indigo con apoyo de la Universidad Corhuila

    La fecha del evento sería el viernes 26 de noviembre del 2010 y estará dividido en dos sesiones. La primera dirigida a estudiantes universitarios y la segunda dirigida al personal profesional de las diferentes empresas de la ciudad.

    Agenda del Evento

    Estudiantes

    3:00 p.m. Control de Registro 
    3:30 p.m. Key Note Comunidad - Por José Páez
    4:00 p.m. Que Fácil es! - Por Carolina Campillo
    5:00 p.m. Como ser Desarrollador de Software y no morir en el intento – Por Willy Marroquín 
    Profesionales
    6:00 p.m. Control de Registro
    6:30 p.m. Key Note Comunidad - Por Jose Paez 
    7:00 p.m. Windows Azure: La alternativa de Cloud Computing para nuevos y Mejores Negocios - Por WarNov

    Break
    7:30 p.m. Arquitectura de Software con Visual Studio 2010 - Por Willy Marroquín
    Registraste aquí y participa en la rifa de espectaculares premios sorpresa!!!!!

  • WarNov Developer Evangelist

    Evento: Happy Hour en la Nube

    • 0 Comments

    Este es un evento cool sobretodo para emprendedores y StartUps que quieren ser pioneros en el negocio del Cloud Computing y aún tienen dudas y no han comenzado de lleno. Estaré comentándoles casos de éxito y de cómo logramos la primera gran aplicación de Azure en Colombia… al final habrá Happy Hour . Los espero!

  • WarNov Developer Evangelist

    Drupal sobre plataforma Microsoft

    • 0 Comments

    ¿Por qué habría de ser importante contar con otra alternativa de gestión de contenidos de código abierto sobre la plataforma web de Microsoft? En el caso de Drupal, porque responde con creces a las necesidades que impone la era social de los sitos web, al tiempo que reafirma la ausencia de límites cuando se despliega la creatividad de los programadores.

    Más de 4000 módulos disponibles gracias a la combinación del núcleo central de Drupal con la Acquia Network hacen de esta herramienta una de las preferidas por individuos y organizaciones para publicar, organizar y administrar contenidos en sus sitios web. El programa WebsiteSpark provee mucho respaldo para quienes deseen implementarlo; desde la perspectiva técnica, el soporte a PHP de Windows e IIS y la extensión WinCache para PHP 5.2 ó 5.3, permiten incrementar significativamente el rendimiento de los sitios credos con esta tecnología. El código fuente para lograrlo está disponible

    ¿Aún no probaste Drupal sobre Windows? ¡Descárgalo ahora!

    Recuerda que nuestro WebCamp Colombia 2010 está basado en la plataforma web de Microsoft donde todo es FREE y tienes muchas aplicaciones Open Source  para tu uso. Aquí algunas otras recomendaciones:

    Plataforma Web Microsoft



Page 1 of 1 (14 items)