• WarNov Developer Evangelist

    Paso a paso para instalar SQL Server 2012 Evaluation en Windows 7 SP1 (32 bits)

    • 0 Comments

    La versión 2012 de Sql Server ya está muy evolucionada. Nuestro servidor de Base de Datos ahora está ahora enfocado nativamente a trabajar con Cloud Computing y tiene unas mejoras que siempre hemos esperado y además sorpresas en su funcionamiento que nos hacen nuestro trabajo cada vez más fácil y agradable.

    La siguiente, es una guía de instalación de este producto que en su momento tuvo el nombre código Denali.

    Ha sido preparada por un gran amigo muy querido por toda la audiencia técnica de Latinoamérica. Se trata de Guillermo Taylor, quien muy amablemente me  ha permitido invitarle a postear su guía en mi blog. Guillermo es reconocido sobretodo por los IT Pros. Y es que SQL Server es una tecnología que une ambos mundos: Desarrollo y IT de una manera muy fluida. Es por esto que aprovecho este post, para anunciar el estreno del blog para IT Pros Colombianos. Que estará tratando temas específicos de esta área y donde encontramos como regalo de bienvenida dos excelentes libros para IT Pros. Además, este post también estará allí, para que la audiencia de IT lo encuentre en un ambiente más especializado para ellos.

    Sin más preámbulos, aquí los dejo con esta excelente guía.

    Compilado por Guillermo Taylor para el evento IT Camp 2011 – Track SQL Server 2012

    Abstract

    Este documento recopila los pasos realizados para instalar SQL Server 2012 Evaluation en un sistema Windows 7 Ultimate SP1. Durante el paso a paso, se incluirán imágenes que aclararán mejor este; sin embargo no todos los pasos incluyen o tienen una imagen asociada, principalmente en donde estime que no es conveniente. De igual manera, no asumo responsabilidad alguna por algún paso realizado erróneamente o que no se tuvo en cuenta o que no aplica para un sistema operativo diferente. Por último, este documento se hace para efectos ilustrativos de cómo realizar una instalación del producto SQL Server 2012 Evaluation y de ninguna manera me compromete con los resultados obtenidos al seguirlo.

    Pasos

    Configuración de IIS en Windows 7

    Antes de instalar y de configurar SQL Server 2012 y particularmente Reporting Services en un PC corriendo Windows 7 SP1, validé, particularmente por trabajo realizado en servidores, que tuviese al menos el Internet Information Server corriendo.

    Este es un servicio que generalmente no se habilita en desktops o laptops, pero que para efectos de lo que quiero hacer, tengo que activarlo. Para esto, hay dos maneras de hacerlo; la manual, que es la que describiré en este post y la automática, la cual contempla la instalación mediante Microsoft Web Platform Installer y que además permite instalar SQL Server Express y Visual Web Developer Express, entre otras herramientas.

    El método manual es el siguiente, solo para habilitar el IIS en Windows 7; si ya lo tienen habilitado, sugiero no hacerlo.

    Primero, hay que abrir el panel de control de Windows 7:

    Seleccionar la opción "Programs":

    Y dar clic en la opción "Turn Windows features on or off", recordando que si no son administradores en esta máquina, ésta les pedirá que eleven los privilegios para ejecutar esta opción.

    La ventana que me apareció, puede ser diferente en su caso en cuanto a opciones habilitadas o no, fue ésta:

    A continuación, las opciones que se pueden habilitar:

    En este punto, hago el popular disclaimer de "instalen lo que necesiten y si lo instalan todo, a mí no me echen la culpa si algo no funciona". Si quieren saber qué hace alguna opción en particular, hagan "mouse hovering" sobre el elemento deseado y ahí les aparece un pequeño mensaje. Sin embargo, si les resalto lo que instalé en mi PC:

    Luego de la selección de las características, fui a la parte inferior de la ventana y presioné el botón de OK.

    Luego de algunos pocos minutos, sale el panel de control y IIS está instalado. Para validar que en efecto es así, abran una instancia de su navegador Internet y escriban en la barra de direcciones http://localhost. Debe verse algo similar a:

    Listo. Para abrir el IIS Manager, búsquenlo por la caja de búsqueda de Windows 7 ingresando inetmgr o Internet Information Services; yo no lo encontré en alguna de las opciones del menú Start, tal vez no busqué bien:

    Instalación de SQL Server 2012 Evaluation

    A continuación, los pasos a seguir para instalar el producto.

    Dirigirse a la ubicación del SQL Server 2012.

    Ejecutar SETUP.EXE. Como estoy como usuario, voy a correr el archivo con privilegios elevados. Para ello, doy clic derecho sobre el programa SETUP.EXE y en las opciones que aparecen, selecciono "Run as administrator".

    Aparece la siguiente ventana:

    En el panel izquierdo, ir a "Installation" y dar clic en la opción "New SQL Server stand-alone installation or add features to an existing installation":

    Aparece la siguiente ventana:

    Presionar OK. Esperar que se procese la operación:

    Para este RC, no hay actualizaciones…

    Presionar Next para que aparezca la siguiente pantalla:

    Como el Firewall está habilitado, sale ese aviso de precaución… Luego se indicará que hacer para que el Firewall esté debidamente configurado, sobre todo porque esta instalación contiene una instancia. Presionar Next para que aparezca esta pantalla:

    Presionar Next.

    En esta pantalla se deben aceptar los términos de licenciamiento. Es opcional lo de enviar utilización del producto hacia Microsoft. Presionar Next

    Seleccionar la primera opción, "SQL Server Feature Installation". Presionar Next

    Las características a seleccionar son:

    Si al presionar Next, les aparece esta pantalla:

    Es porque esta versión de SQL Server requiere el SP1 de Visual Studio 2010; esto porque el encontró rastros de la instalación anterior, es decir la de CTP3.

    Así que instalen el SP1 de Visual Studio 2010 para continuar con la instalación…

    Presionar Next

    El nombre de la instancia es sugerido. Y particularmente generé una instancia porque tengo una instancia por omisión de SQL Server 2008 R2 SP1.

    Presionar Next

    Presionar Next para que aparezca la pantalla de configuración del servidor

    Presionar Next

    Además de agregar la cuenta de instalación, agrego una de administración; esto porque como mejor práctica la cuenta de instalación no debe quedar registrada como administradora… De hecho, es muy probable que sea incluso una cuenta creada específicamente para dicho fin, por lo cual después se elimina…

    Se dejan los directorios de datos por omisión y se habilita FILESTREAM…

    Presionar Next

    Seleccionar Multidimensional and Data Mining Mode… Y agregar las mismas cuentas de administración…

    Luego de presionar Next, aparece la pantalla de configuración de SSRS. Seleccionar la opción de instalar y configurar.

    Presionar Next

    Presionar Next

    Presionar Next para que aparezca la pantalla de "Ready to Install":

    Presionar Install y esperar a que termine el proceso…

    Presionar Close.

    Ya en el menú principal del servidor, aparecen las opciones para ejecutar SQL Server 2012 RC0:

    Al correr el SQL Server Management Studio, tal vez les aparezca esta opción si tienen configurado un SQL Server 2008 o 2008 R2, como es mi caso:

    Yo indiqué que no…

    Ahora bien, la instalación de las bases de datos de ejemplo para SQL Server 2012 no tiene el instalador al que nos acostumbramos para versiones anteriores, por lo menos no por ahora… Así que hay que descargar los archivos y adjuntarlos a mano; no es difícil si se siguen las instrucciones.

    1. Descarguen el archivo AdventureWorks2008R2_Data.MDF desde http://msftdbprodsamples.codeplex.com/releases/view/55330 y ubíquenlo en la carpeta de datos de SQL Server. Para mi caso, dicha carpeta es C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA.
    2. Ejecuten el siguiente código:

    CREATE DATABASE AdventureWorks2008R2 ON

    (FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\AdventureWorks2008R2_Data.mdf')

    FOR ATTACH_REBUILD_LOG

    GO

     

    1. No se preocupen si sale alguna advertencia… La base de datos queda creada y lista para usarse…
    2. Para la base de datos dimensional o base del DW o de la solución BI, AdventureWorksDWDenali_Data, descarguen el archivo desde la misma ubicación del punto 1 y sigan los mismos pasos.
    3. El código a ejecutar es el siguiente:

    CREATE DATABASE AdventureWorksDWDenali ON

    (FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\AdventureWorksDWDenali_Data.mdf')

    FOR ATTACH_REBUILD_LOG

    GO

  • WarNov Developer Evangelist

    Breve Historia del Framework .NET

    • 11 Comments

    Otra de las preguntas frecuentes que tengo por ahí generalmente de personas que aún tienen que trabajar con desarrollos .net de legado (versión < 4.0), es: cuáles son las ventajas de hacer el cambio, sobre todo para tratar de convencer a sus líderes, para migrar.

    Lastimosamente ocurre una situación bastante particular, y es que cada versión del Framework ha hecho su trabajo muy bien. Así que una vez se termina una aplicación en determinada versión del Framework, no se ve la necesidad de evolucionar. Pero luego nos damos cuenta de que empezamos a limitar las implementaciones avanzadas que podríamos hacer a las que sí tendríamos acceso con la última versión.

    Es por esto que escribo este post, en el que hago un recorrido por la historia del Framework para que podamos ver rápidamente de qué nos estamos perdiendo, de acuerdo a la versión del Framework que tengamos instalada.

    • .NET Framework 1.0:
      • Liberado el 13 de Febrero de 2002 para Win98, Me, NT 4.0, 2000 y XP. Su soporte terminó en Julio de 2007 y el soporte extendido en 2009.
    • .NET Framework 1.1
      • Publicada en Abril de 2003 junto con el segundo reléase de Visual Studio .NET (2003). Fue la primera versión incluida como parte de un sistema operativo (Windows Server 2003). Su soporte terminó en octubre de 2008 y el extendido termina en octubre de 2013 (así que mejor vayan pensando en migrarse).
      • Mejoras:
        • Los controles ASP.NET que en el 1.0 eran un Addon ahora vienen nativos.
        • Seguridad mejorada con Code Access Security para ASP.NET
        • Soporte nativo para ODBC y Oracle
        • Nacimiento del .NET Compact Framework
        • Soporte a IPV6
        • Cambios numerosos en las APIs.
    • .NET Framework 2.0
      • Liberado con Visual Studio 2005, SQL Server 2005 y BizTalk 2006. El primero en incluirse automáticamente en las instalaciones de SQL Server. Sin ningún Service Pack, fue la última versión en soportar Win98 y Me. Luego vino el SP 2 y con éste, fue la última versión en soportar Windows 2000.
      • Mejoras:
        1. Los fabulosos Generics
        2. Soporte para compilaciones de 64 bits
        3. Numerosos cambios en las APIs
        4. Integración con SQL Server: CLR Integration
        5. Inclusión del Runtime de .NET en aplicaciones nativas.
        6. Nuevos y mejorados controles de ASP.NET
        7. Controles de Datos con Data Binding automático.
        8. Soporte para Temas, Skins y Webparts.
        9. Nacimiento del .NET Micro Framework.
        10. Clases Parciales!
        11. Tipos “Nullable” (por ejemplo enteros a los que se les puede dar el valor de nulo)
        12. Métodos Anónimos!
        13. Iteradores
        14. Tablas de Datos
    • .NET Framework 3.0
      • Conocido en sus comienzos como WinFX fue liberado en noviembre de 2006 e incluyó un nuevo conjunto de APIs hechas en código administrado que son parte integral de Windows Vista y Windows Server 2008. También está disponible para Windows XP SP2 y Windows Server 2003. No hubo mayores cambios arquitectónicos. De hecho, se usa el runtime del Framework 2.0. Aquí tampoco hubo liberación de Compact Framework.
      • Mejoras:
        • Windows Presentation Foundation (conocido antes como Avalon)
        • Windows Communication Foundation (conocido como Indigo)
        • Windows Workflow Foundation
        • Windows CardSpace (Conocido antes como InfoCard).
    • .NET Framework 3.5

       

    .NET Framework

     

    • Vio la luz en noviembre de 2007 pero no es incluida en Windows Server 2008. Modifica el CLR fundamental sobre el que se venía trabajando (2.0) para agregarle los métodos y propiedades requeridas sobre todo para LINQ. Aquí sí se liberó el Compact Framework 3.5. El código fuente de esta versión fue parcialmente liberado para conocimiento público con fines de depuración.
    • Mejoras:
      • Nuevas características de lenguaje en C#3.0 y VB.NET 9.0
      • Soporte para árboles de expresiones y expresiones y métodos lambda
      • Extension Methods!
      • Tipos Anónimos con inferencia estática de tipo
      • LINQ!
      • Soporte a paginación en ADO.NET
      • API de sincronización de ADO.NET
      • API de I/O asincrónico
      • PNRP Resolver (Peer-To-Peer)
      • Wrappers Administrados para instrumentación y Active Directory
      • Motores de WCF y WF mejorados que permiten el manejo de POX y JSON en WCF y también exponer WF como servicio. De esta manera, los servicios WCF se pueden mejorar con persistencia nativa de WF!
      • Soporte para pipeline de HTTP y sindicación de feeds.
      • ASP.NET Ajax ya no viene como un addon sino nativo.
    • Service Pack 1:
      • Liberado en agosto de 2008.
      • Performance mejorado para WPF en un 20-45%
      • Agregado el Entity Framework y los ADO.NET Data Services.
      • Agregados dos nuevos assemblies: System.Web.Abstraction y System.Web.Routing: Esenciales para el funcionamiento del MVC Framework. Incluyó un conjunto de controles de VisualBasic que se habían descontinuado como el Line y el Shape, en un conjunto llamado “Visual Basic Power Pack”. Viene con Windows 7 y Windows Server 2008 R2.
    • .NET Framework 3.5 SP1 Client Profile
      • Nace como una versión reducida del Framework con solo 28MB de tamaño, ideal para clientes inteligentes que no requieren todos los 250 MB del Framework completo.

     

    framework-net

     

    En la mayoría de casos (Excepto cuando se trata de pasar del 1.0 0 del 1.1 a cualquier otra versión del Framework) El paso es transparente y la migración no es muy compleja. Sin embargo es claro que siempre hay temores en las migraciones y puede hacerse complicado comenzar a disfrutar de las características de la última versión. Sin embargo, nada como estar trabajando con ella, de manera que ya vamos a tener disponibles todas las últimas características y sobretodo disfrutar de todas las nuevas tecnologías que siempre se enfocan a la última versión.

    Así que si no tiene el Framework 4.0. Que está esperando?

  • WarNov Developer Evangelist

    Windows Azure Tech-Day Bogotá y Medellín

    • 0 Comments

    Siguiendo con el impulso que le estamos dando a Windows Azure desde nuestra subsidiaria colombiana, me permito invitarlos a nuestro Windows Azure Tech Day. Que se realizará en Bogotá el día 17 de Junio y en Medellín el día 22 de Junio.

    Para registrarse gratuitamente en sus respectivas ciudades hagan click en la imagen correspondiente!

    Bogotá

    image

    Medellín

    image

  • WarNov Developer Evangelist

    Java vs. .NET

    • 40 Comments

    Estaba revisando mi Facebook y por allá alguien dijo a propósito de la salida de su creador James Gosling de Oracle:

    “Es que Java le lleva mucha ventaja a .NET!”

    OMG!

    Abrió la caja de pandora… y entonces comenté algo similar a lo siguiente, dado que soy NINJA (Not INcluding JAva):

    En lo personal me parece que decir que Java le lleva ventaja a .NET, ni siquiera aplica.
    Java es solo un lenguaje. Más bien tendríamos que comparar JDK con .NET aunque tampoco me parece muy apropiado...
    .NET es toda una tecnología.
    Una tecnología basada en código administrado.
    En eficiencia;
    en productividad
    en hacer todo desde un solo lugar.
    En confiar en un solo esquema de librerías bien conocido, documentado y creado bajo los mismos principios.
    Alguién más apuntó:

    “…he programado en los dos lados y eso de que java le lleva a .net mucha ventaja lo discuto.. JAVA cambia sus paradigmas a toda hora… o será muy fácil pasar de EJB 2 a 3 o integrar plugins y librerías en Eclipse: Algo así EJB 2.0 Hibernate jax-ws y jboos 5… eso es un show con una pila de errores que a veces ni idea y después te das cuenta que solo era por una versión menos de alguna librería x ... en fin Calidad de vida mata Esquizofrenia(enfermedad generada por apagar el modo NINJA)…”

    No tengo que importar paquetes extraños. Todo me lo resuelve el IntelliSense.
    Aún SDKs de Javascript tan robustos como JQuery se resuelven en segundos y me dejan programar a la velocidad del.. hum... sí.. del programador .NET... que sin ser exagerado caballeros, siempre será más alta que la de java. A .NET no le gusta "echar pedal" (y no mencionemos la velocidad de ejecución).”


    Pero Java es multiplataforma!


    Y .NET no? Solo hablemos de Mono y ya. O de Silverlight que ahora me permitirá correr la misma aplicación en Linux,. MAC o Windows en modo full trust out of browser o en otras palabras, en modo escritorio... Y me pregunto... cuándo con Java podremos crear algo aunque sea ligeramente parecido a Silverlight? A WPF?


    Además, pienso que la interoperabilidad no es correr sobre todos los sistemas operativos (cosa factible con .NET) Sino más bien la capacidad de interoperar con otras aplicaciones existentes... y .NET está super preparado para esto con WCF que hoy día da amplias capacidades de interconexión comenzando por REST, JSon, OData, y los otros viejitos como SOAP, WSDL...


    Pero Java es gratis!!!


    Y .NET no? Toda la especificación de .NET es abierta. Y tenemos herramientas altamente sofisticadas y SOPORTADAS que son free... si no, pregúntenle a las versiones Express de Visual Studio.
    Existe también el sitio http://codeplex.com donde miles de desarrolladores comparten su código de manera OPEN SOURCE y se encuentran proyectos geniales de código libre.

    Pero Java es Java!!!


    Sí... los programadores se enorgullecen de saber Java... no digo que sea malo... por el contrario rescato la idea original que se tuvo de la JVM y del código administrado y del lenguaje altamente formal y completamente orientado a objetos que en gran parte le dieron vida a mi amado C#...

    Pero C# pertenece a .NET y .NET es una cosa con vida propia que permite crear nuevos lenguajes orientados a su funcionalidad (F#, IronPython, IronRuby. APL.NEXT) y además permite la inclusión de elementos avanzados como expresiones lambdas, métodos y clases parciales, métodos extendidos, LINQ, lenguajes dinámicos, automatización en la generación de capas de datos, de negocio y hasta de interfaz de usuario; MVC, Entity Framework, Cloud Services desde su proyecto en Visual Studio derechito pa’ la nube…

    En integración transparente con Office, con XNA para hacer videojuegos, con Robotics, con Sharepoint, Biztalk y servidores de DB de toda índole. Con todo eso un simple Enterprise Library (lo que más se compara con la mega colección de paquetes de Java) no es nada… es solo una pequeña porción de todo lo que tiene .NET. Sin olvidar el poderoso C++ que aún está disponible para ejecutar aplicaciones que realmente vuelan porque no son administradas. Además hoy día tenemos librerías específicas para hacer programación en paralelo y hypercomputing sin necesidad de hacer un curso para usarlas! en fin... esta cajita de pandora llamada .NET, me daría para escribir un montón de líneas más....


    Para estos días que estamos de lanzamiento de la nueva ola de nuestra plataforma: Visual Studio 2010 (que además ahora incluye modelamiento UML y un manejo de arquitectura que ni en mis sueños me imaginaba) .NET Framework 4.0, Silverlight 4.0, Sharepoint 2010, Windows Azure para Colombia y muchos otros... podría decir que en mis años de experiencia con .NET jamás había presenciado una oleada tan grande de innovaciones que nos va a permitir verdaderamente desarrollar todo nuestro potencial antes de tener que pelear para únicamente mostrar un botón en la interfaz gráfica…

    Y ahí terminó la discusión… luego Willy remató con un brillante chascarrillo acerca del asunto:

    Michael Schumacher llega a casa después de un duro día de entrenamiento en el circuito.
    Su mujer le recibe con un beso y le pregunta:
    - "¿Cómo ha ido hoy el día, cariño?"
    - "Bueno, cuando he llegado al circuito, he ido a boxes y el F1 no estaba en su sitio. En su lugar había un burro."
    - "¿Cómo?", se sorprende la mujer.
    - "Si, así es. Le he preguntado al jefe de equipo y me ha confirmado que habían cambiado el monoplaza por el burro."
    - "¿Y tu que le has contestado?"
    - "Pues yo le he dicho que quizás no seria tan rápido como el F1. Él ha dicho que ciertamente es así, pero que ahora tenemos una ventaja y es que podremos correr en todo tipo de circuitos: F1, rally, motocross, trail sin... Y bueno, al menos hoy he podido venir montado en él hasta casa, cosa que no podía hacer con el F1."
    - "Ya. Pero si tu sólo corres en F1, ¿para que quieres poder correr en otros circuitos?"
    - "Pues no lo se, la verdad. Además, después de montarme en el burro le he dicho al jefe de equipo que no era ni la mitad de cómodo que el monoplaza."
    - "¿Qué ha respondido el?"
    - "Simplemente ha dicho que eso no importa porque ahora podemos correr en todo tipo de circuito."
    - "¡Ay Señor!, ¿Y no corres más riesgo de hacerte daño si te caes?"
    - "En realidad no, porque le han puesto al burro las mismas protecciones que tiene la cabina del F1. A pesar de que hace que todavía vaya un poco mas lento. Según el jefe eso ya no tiene tanta importancia, porque ahora podemos correr en todo tipo de circuito."
    - "Esta bien, enséñame el burro."
    Tras salir al jardín y quedarse estupefacta con la imagen de un burro pintado de rojo, con el escudo de Ferrari pegado en la frente y una protección de F1 encima de la silla de montar, la mujer le pregunta a Michael:
    - "¿Y como se llama el animal?"
    - Se llama ....
    - Se llama ....
    - Se llama ....
    - Se llama ....
    - Se llama ....
    - Se llama ....
    JAVA !!!!!!!!
    X-DDDDD
    Según apunta Willy además no es cierto que Ferrari use Java. Los leguajes oficiales para desarrollo en el equipo Ferrari son VB.NET y C++, tal y como se indica en una entrevista concedida a CNET NEWS"
    http://tiny.cc/42f73

     image

    Y ahora otro más cortesía de @Caycedo:

    - Knock Knock...
    -Who's there?
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    - Java!
    :P

    A lo cual le agregué el siguiente escenario (un poco más abstracto):

    Knock Knock...
    -Who's there?
    -Dont worry, I'm Just Leaving
    (espero aquí sepan de quien estoy hablando)

     

    .NET Rocks!!! Felices lanzamientos 2010!!!

  • WarNov Developer Evangelist

    Windows 8 te hace la vida más fácil

    • 48 Comments

    Veamos en esta cortísima demo de 5 minutos, las características más importantes de Windows 8, que a nosotros como desarrolladores nos han de importar, para poderlas aprovechar a la hora de generar nuestras apps.

    image
  • WarNov Developer Evangelist

    Windows 8: Lo que deberías saber y nadie te ha contado

    • 7 Comments

    Ya a estas alturas del partido, sabrás que con Windows 8 vienen grandes innovaciones dentro de este sistema operativo. Eso, si es que no lo has probado por tu propia cuenta, bajándolo gratuitamente de aquí. Cualquier máquina que corra Windows 7, te servirá para probarlo.

    La innovación más grande por su puesto es la inclusión del ambiente de Interfaz Moderna

    clip_image002

    En pocas palabras, el ambiente de Interfaz Moderna está orientado a ser amigable en dispositivos con touch screen. Específicamente Tablet PCs y Slates:

    Ojo: que esto no quiere decir que el desktop tradicional haya desaparecido. Este sigue existiendo y también ha evolucionado con muchas mejoras como un Explorer con Ribbon, copia de archivos optimizadas, soporte a USB3 para velocidades de transferencia impensables y otras más que pueden encontrar en el blog oficial de Windows para usuarios finales.

    Desktop8

     

    Desde el punto de vista de un desarrollador, el ambiente desktop no tiene muchos cambios radicales a nivel de presentación de nuestras aplicaciones. Habría que tener sin embargo en cuenta las novedades de la nueva versión del Framework .NET que viene con Windows 8, que es la 4.5 y que entre otras cosas interesantes, tiene la inclusión de Async, que nos permite crear interfaces fluidas de una manera más sencilla. Sin embargo, básicamente podemos pensar en estos cambios como sencillamente un par de librerías más por aprender.

    El cambio radical está en la interfaz Moderna:  aunque es radical solo en estructura; pues como veremos, la programación es la misma. De hecho, si ya sabes .NET y XAML o HTML y Javascript, ya sabes programar para Windows 8 en Interfaz Moderna!

    Pero antes de describir estos cambios estructurales consideremos el por qué de aplicaciones de Interfaz Moderna o Windows Store Apps, como son más conocidas, ya que estas apps solo van a estar disponibles a través de una tienda online llamada el Windows Store. Es evidente que la movilidad se ha vuelto supremamente importante hoy en día y que todos queremos tener un sistema operativo fácil de transportar. Hemos visto que estas características son ofrecidas por los tablets y slates. Que estos en general no poseen teclado, sino que son muy basados en touch. Entonces, necesitábamos una versión de Windows adecuada para estos escenarios. Esto sin mencionar que la durabilidad de la batería es súper importante. Queremos que nuestro dispositivo aguante aunque sea todo un día de trabajo sin necesidad de ser conectado a la electricidad. Pero para lograr esto, requerimos de procesadores y discos duros que no consuman tanta energía y de un diseño de aplicaciones que las permita suspender de manera óptima para ahorrar hasta el último vatio cuando no se estén usando.

    Existe un tipo de procesador que tiene un consumo supremamente bajo de energía y que fácilmente puede garantizar 8 horas de funcionamiento. Es el procesador ARM.

    Cómo pueden garantizar esto? Pues teniendo un conjunto de instrucciones reducido en comparación con los procesadores de arquitectura x86 o x64 a los que estamos acostumbrados en nuestras PCs. Es un precio que hay que pagar para lograr durabilidad. Pero si lo vemos bien, un rediseño del sistema operativo pensando en aplicaciones fácilmente suspendibles y en la eliminación de características que no son muy necesarias en un dispositivo móvil, sumado a la inclusión de hardware especial como los discos duros de estado sólido, nos permite tener un aparato que funciona como lo necesitamos y con la duración requerida. Como si fuera poco, por añadidura cuando logramos esto, tenemos un sistema operativo que arranca y está listo para usarse en tiempo de solo 3 segundos!!! Lo cual es una característica súper importante para la movilidad.

    En síntesis, se requería un ambiente de aplicaciones amigables al tacto, que corrieran de manera óptima en procesadores ARM (y por ende en procesadores de arquitectura tradicional) y que además ofreciera muchas facilidades para tener una experiencia de usuario impactante.

    Y precisamente eso es lo que ofrece la interfaz Moderna.

    Esta gran iniciativa nuestra no para con la creación del sistema operativo y la habilitación de excelentes dispositivos móviles que lo usan. También dispondremos de un marketplace: Windows Store. Diseñado específicamente para enriquecer el ecosistema de Windows Store Apps que se van a empezar a requerir bajo este nuevo esquema. Aplicaciones innovadoras, muy atractivas para el usuario que van a poder ser vendidas y compradas de una manera muy sencilla a través del store. Cualquier desarrollador desde su casa va a poder crear su aplicación, subirla al atore y empezar a recibir ganancias por ella, muy al estilo de Windows Phone. Y en este caso, para Colombia tenemos garantizado el acceso al store. Somos uno de los pocos países de Latinoamérica con este privilegio.

    Visto lo visto, supongo que ahora estarás preguntándote cómo crear estas Windows Store Apps…

    Como te dije antes, si sabes .NET; en especial Silverlight, entonces ya sabes crearlas!!! Además, no necesitas ser un desarrollador experimentado en .NET para lograrlo. Si sabes HTML y Javascript, también el desarrollo de este tipo de aplicaciones está a la mano. Así que si has desarrollado sitios web por algún tiempo con cierta carga de Javascript, también estás listo para arrancar! De hecho si tu experiencia es en C++, también hay cabida para ti.

    Lo único necesario es aprender un par de librerías más; tarea nada difícil, teniendo en cuenta que el intellisense es completo para todos los lenguajes aceptados en la plataforma de desarrollo para Interfaz Moderna.

    Entonces, ya sabiendo que a nivel de desarrollo todo funciona de una manera familiar, entremos un poco más y aprendamos realmente cuál es la plataforma sobre la que están las Windows Store Apps.

    WinRT

    WinRT es la abreviación de Windows Runtime. Y es la plataforma sobre la cual se programan aplicaciones de tipo Interfaz Moderna para Windows 8.

    WinRT NO está basada en .NET. De hecho, WinRT está al nivel del API nativa de Windows por excelencia que es Win32. WinRT accede nativamente al Kernel de Windows, ofreciendo gran velocidad de ejecución por un lado y por otro una abstracción muy útil para poder acceder a todos los recursos del sistema a través de un paradigma orientado totalmente a objetos, de una manera extremadamente sencilla.

    .NET tradicional trataba de solventar esta tarea… pero alguna vez trataron de acceder a la webcam de su máquina para obtener una sencilla foto? Si es así de seguro recordaran lo divertido que es hacer los DLLIMPORT requeridos para traer APIs de WIN32.

    Con WinRT estos llamados ya no son necesarios, pues la conexión ya es directa y se logra completamente a través de objetos ya existentes en la plataforma.

    WinRT está basado en 33 APIs nativas con las que se puede acceder al core de sistema operativo. Como se aprecia, están divididas en 5 grandes grupos: Fundamentales, Dispositivos, Media, Comunicaciones y Datos e Interfaz de Usuario.

    clip_image007

    En general WinRT se presenta como la base sólida y eficiente para construir Windows Store Apps.

    De acuerdo a lo anterior, si equiparamos a WinRT con .NET tradicional, tendríamos una gráfica como la siguiente:

    clip_image009

    Como lo había mencionado vemos que WinRT (la zona verde) accede directamente al Kernel de Windows, de igual forma que lo hace .NET, Win32 e Internet Explorer. Vemos sin embargo que estos últimos van a estar destinados para las aplicaciones de escritorio tradicionales, con los conocimientos que ya tenemos.

    WinRT está basado en un modelo de aplicaciones (Application Model) en el cual cada aplicación es una clase como tal (contenedora de otras clases), que son instanciadas por el proceso WWAHost.exe que es el encargado de administrar funciones como la suspensión. Cada aplicación es instanciada por un WWAHost independiente, a través del ejecutable de la aplicación que aparece como miaplicación.exe, pero tiene el comportamiento particular de luego lanzar el Host:

    image

    Esto me recuerdo mucho el viejo esquema de COM; y efectivamente muchos de los conceptos de WinRT provienen de allí, excepto que ya no usamos un acercamiento basado en interfaces sino basado en objetos. Además tenemos variedad de lenguajes gracias a las proyecciones y también nos podemos olvidar del DLL Hell, gracias a la metadata que aún conservan los componentes de WinRT, que son una gran herencia de .NET, que por su puesto sigue su camino en aplicaciones de escritorio convencionales, así como en las capas de backend y servicios en los sistemas n-layer.

    Vemos que sobre este modelo de aplicaciones tenemos todas las apis que describí anteriormente y que básicamente nos permiten acceder a los recursos del sistema y a librerías que nos facilitan el desarrollo de nuestras aplicaciones.

    Sobre las apis, ya podemos extender nuestras proyecciones de lenguaje que nos permiten acceder a ellas de distintas maneras, de acuerdo a nuestros gustos. Si somos familiares con Silverlight y .NET, usamos VB o C#. También podemos usar C++ o si venimos del mundo Web, podemos usar Javascript que usa el motor Chakra. El mismo de Internet Explorer.

    Finalmente, sobre estas proyecciones de lenguaje ofrecemos los lenguajes de marcado para poder crear interfaces declarativamente. No es más que el típico XAML que conocíamos de WPF, Silverlight y WP7 para cuando usemos C#, VB e interesantemente C++. SI algo recuerdo con pena y dolor de C++, es la creación de interfaces gráficas a punta de C++. Era algo completamente dispendioso, complicado y propenso a errores. Ahora tenemos todo el poder nativo de C++, complementado por el poder declarativo de XAML para la UI.

    En el caso de Javascript, naturalmente el lenguaje de presentación viene a ser HTML acompañado de CSS para la definición de estilos. Esto obviamente hará muy fácil traducir aplicaciones HTML5 para web, a aplicaciones HTML para Windows Store.

    .NET y WinRT

    Ya vimos que básicamente estos son dos stacks distintos dentro de Windows. Sin embargo, dado que WinRT ofrece proyecciones de lenguaje para C# y VB, el resultado es que la mayoría de librerías de .NET tienen su equivalente en WinRT. Algunos métodos tienen diferencias sutiles y encontramos nuevas librerías en WinRT que mejoran el acceso a dispositivos y recursos del sistema. De hecho es posible para nosotros crear componentes en .NET que puedan ser consumidos por WinRT, siempre y cuando usen las librerías del Namespace Windows.

    Componentes en WinRT

    En WinRT podemos crear componentes que pueden ser reutilizados en otras apps WinRT. Todos los componentes y aplicaciones generan una metadata que permite un versionamiento transparente y la garantía de que las aplicaciones correrán correctamente en el futuro.

    Cómo comenzar con WinRT y Windows 8?

    Es muy sencillo y free, solo tienes que bajarte tu versión de desarrollador de Windows 8 que además incluye las herramientas de desarrollo que en este caso es Visual Studio 2011, de este link.

    Además para más recursos y videos instructivos, les recomiendo visitar el sitio oficial de Windows para desarrolladores: http://buildwindows.com y http://dev.windows.com. Para saber más de Windows Store Apps: http://msdn.microsoft.com
    /windows/apps
    . Para comentar y resolver dudas: http://forums.dev.windows.com. Para saber más del marketplace: http://blogs.msdn.com/b/windowsstore; para saber más de características de usuario final de sistema operativo, visiten el blog oficial. Y para obetener la información de primera mano desde las redes sociales:

    Facebook (developer)

    http://fb.windows.com/developers

    Twitter (@b8)

    http://twitter.com/BuildWindows8

    Twitter (@windevs)

    https://twitter.com/windevs

    YouTube (developer)

    http://www.youtube.com/user/WindowsVideos

  • WarNov Developer Evangelist

    Tutoriales de Desarrollo para Windows Phone–totalmente en español y gratuitos

    • 6 Comments

    LigaSilverlight150x150


    Está es una gran noticia que me da mi gran amigo, remarcable MVP en Silverlight, Rodrigo Díaz. Quien desde La Liga Silverlight ha traducido al idioma español el contenido original de todos los tutoriales para el desarrollo de aplicaciones en Windows Phone, disponibles en App Hub.

    ¡Son un total de 27 tutoriales!

    Este material de entrenamiento completamente gratuito y en español te servirá para iniciar en el mundo de la programación de la nueva versión del sistema operativo móvil de Microsoft: Windows Phone 7, o si ya eres desarrollador para este dispositivo estos tutoriales sin duda alguna te ayudarán a reforzar tus conocimientos.

    Cada tutorial trata un tema específico, por lo que no están vinculados directamente uno con otro pero definitivamente les recomiendo que los sigan en el orden establecido. Los tutoriales comienzan con temas básicos de XAML y Silverlight, y posteriormente se van analizando conceptos más a detalle acerca de esta plataforma de desarrollo.

    windowsphone_logo

     

     

    La lista completa de tutoriales es la siguiente:

    Iniciando y Fundamentos
    1. Creando la interfaz de usuario de Windows Phone (XAML)
    2. Usando controles
    3. Tipo de Controles
    4. Controles Panorama y Pivot
    5. Trabajando con texto en Windows Phone
    6. Distribución en la pantalla
    7. Orientaciones de la pantalla
    8. Entrada táctil
    9. Navegación
    10. Ejecutando un aplicación en segundo plano (tombstoning)
    11. Notificaciones de empuje para el desarrollo de Windows Phone
    12. Publicando tu aplicación en el Marketplace
    Visuales y Medios
    1. Imágenes
    2. Animaciones
    3. Video y Audio
    4. Gráficos
    5. Brochas
    Trabajando con Datos
    1. Obteniendo datos en tus aplicaciones de Windows Phone
    2. Enlazando a controles
    3. Almacenamiento Aislado
    4. Accediendo a un servicio web REST
    5. Consumiendo el servicio de datos de Windows Azure utilizando el cliente OData
    Sensores y otras características específicas del teléfono
    1. Lanzadores y Selectores
    2. Detección de movimiento (acelerómetro)
    3. Desarrollando con el GPS de Windows Phone (Servicios de Ubicación)
    4. Desarrollando con la cámara de Windows Phone

    También pueden ver el índice completo en esta página de La Liga Silverlight.

    ¡Esperamos que les sean de utilidad!

  • WarNov Developer Evangelist

    Buenas Prácticas en Manejo de Excepciones .Net

    • 18 Comments

    Hace poco me preguntaron acerca de cómo se debería de abordar el manejo de excepciones para una aplicación grande.

    Me sentí agradado de que esa persona estuviera concientizada de que no es un tema que se puede dejar al azar y que hay que tener ciertos temas en cuenta.

    Básicamente, su duda era acerca de cómo capturar unificadamente todas las excepciones producidas en su aplicación; luego de alguna investigación, llegó a saber de Application.ThreadException; un evento al que se le puede poner un manejador y allí tomar las acciones necesarias. Sin embargo, personalmente no recomiendo esta solución. Por qué?

    1. La notificación de la excepción ocurre muy tarde: cuando se recibe la notificación, la aplicación ya no podrá responder a la excepción.

    2. La aplicación terminará abruptamente si la excepción ocurre en el hilo principal o en cualquier otro hilo que sea iniciado por código no administrado (el hilo principal de la aplicación obviamente es ejecutado por Windows – no administrado)

    3. No tenemos acceso a ninguna información valiosa acerca del error, excepto la excepción misma. No se podrán cerrar conexiones a bases de datos, hacer rollback de transacciones ni nada útil. 

    Así que mi recomendación es nunca basar el manejo de excepciones en los eventos Application.ThreadException ni AppDomain.UnhandledException. Ellos deben ser usados y existen como las redes de seguridad de los acróbatas; su función es la de hacer un registro de la excepción en algún mecanismo de log, para alguna examinación futura. Así que hay que darse la pela y manejar cada excepción en su sitio y actuar en concordancia.

    Esta última invitación conlleva a tener en cuenta otra serie de factores que generalmente se omiten cuando uno comienza a desarrollar “en forma”:

    1. El código metido entre try, catch se ejecuta muy lento. Consume muchos recursos. Así que sólo manejemos excepciones cuando realmente se necesite. Cuándo es eso?
    Las excepciones están construidas para manejar condiciones que no se pueden controlar con la lógica de la aplicación. Por ejemplo que se cae la conexión con el servidor, o que el disco está lleno, o que el hardware falló…
    Antes de lanzar excepciones por todo, fijémonos si realmente es necesario. Evitemos también poner mucho código en el try; solo afectemos con el try el código que realmente puede fallar. Por ejemplo es preferible:

    if (conn.State != ConnectionState.Closed)
    {      
       conn.Close(); 
    } 

    a:

    try
    {
            conn.Close(); 
    } 
    catch (InvalidOperationException ex)
    {
         Console.WriteLine(ex.GetType().FullName);
         Console.WriteLine(ex.Message);
    } 

    2. No emita Exception(). O es que eso le da mucha información?
    El framework .net tiene un número de excepciones que nos permite controlar argumentos y operaciones inválidas, timeouts, conexiones, overflows, etc. Usemos esas excepciones que realmente nos indican qué fue lo que sucedió.

    3. Use bloques try/finally. Recuerde que las instrucciones en el Finally siempre se ejecutan independientemente de si se produjo o no la excepción. Esto es muy útil para liberar recursos, cerrar conexiones, etc.

    4. Siempre use un catch para cada tipo de excepción que se pueda generar y ordénelos desde el más específico hasta el menos específico. Esto ayuda a identificar plenamente el error que se generó y no terminar con excepciones como: “Object reference not set to a instance of an Object”.

    5. Cuando cree excepciones propias del aplicativo, asegúrese de distribuir el Assembly a una ubicación compartida para todos los posibles dominios que tengan que ver con ellas.

    6. De acuerdo a como el mecanismo de excepciones funciona, es muy importante siempre que creemos excepciones propias, proveerlas al menos con los tres constructores de excepciones básicos.

    7. Siempre es recomendable usar las excepciones de .Net. Las personalizadas solo tendrán que ver con escenarios programáticos.

    8. Siempre se ha pensado que para las excepciones personalizadas se debería heredar de ApplicationException; sin embargo en la práctica se ha demostrado que no se agrega valor significativo y además se pierde cierto performance. Así que es mejor heredar siempre de Exception.

    9. Use mensajes gramáticamente correctos.

    10. Las excepciones pueden incluir propiedades. Estas propiedades pueden ser accedidas programáticamente para tomar acciones. Incluya información extra relevante en estas propiedades cuando sea útil.

    11. En vez de retornar null, lance excepciones en la mayoría de casos. Eso evita inconvenientes que a veces son difíciles de detectar. Evite también retornar códigos de error.

    Estas son solo unas pocas recomendaciones a la hora de manejar excepciones. Hay muchas más que se aprenden con el pasar de las líneas de código.

    Para finalizar, me parece importante mencionar también que igual existe un Application Block en Patterns And Practices para el manejo de Excepciones. Incluyéndolo en nuestras aplicaciones ya de por sí garantizaremos varias buenas prácticas; eso sí, usandolo tal y cual se explica en los lineamientos.

  • WarNov Developer Evangelist

    Windows 8 en las ediciones que deberían ser

    • 14 Comments

    Ya en este punto sabemos mucho del mundo de nuevas cosas que se vienen con Windows 8.

    Comencemos citando entonces que tendremos dos grandes divisiones en las que tendremos Windows 8. La x86/64 y la WOA (Windows on ARM –los procesadores de bajo consumo energético). En ambas se podrán usar touchscreens, así como mouse y teclado cuando se desee.

    Así que para x86/64 el nombre del OS será Windows 8. Y para estos sistemas, tendremos sólo 2 versiones: Windows 8 y Windows 8 Pro. La primera para uso de hogares y pequeñas empresas y la segunda para usos más profesionales con integración a dominios y demás (Ver al final la tabla de características)

    Para el mundo de WOA llega Windows RT como el nuevo miembro de nuestra familia Windows. Y sólo estará disponible pre-instalada en PCs y tablets que tengan procesadores ARM. Vendrá con versiones optimizadas para touch de Microsoft Word, Excel, PowerPoint y OneNote.

    Aquí les muestros las características especiales que podremos encontrar en cada edición.

    Característica

    Windows 8

    Windows 8 Pro

    Windows RT

    Upgrades from Windows 7 Starter, Home Basic, Home Premium

    x

    x

     

    Upgrades from Windows 7 Professional, Ultimate

     

    x

     

    Start screen, Semantic Zoom, Live Tiles

    x

    x

    x

    Windows Store

    x

    x

    x

    Apps (Mail, Calendar, People, Messaging, Photos, SkyDrive, Reader, Music, Video)

    x

    x

    x

    Microsoft Office (Word, Excel, PowerPoint, OneNote)

       

    x

    Internet Explorer 10

    x

    x

    x

    Device encryption

       

    x

    Connected standby

    x

    x

    x

    Microsoft account

    x

    x

    x

    Desktop

    x

    x

    x

    Installation of x86/64 and desktop software

    x

    x

     

    Updated Windows Explorer

    x

    x

    x

    Windows Defender

    x

    x

    x

    SmartScreen

    x

    x

    x

    Windows Update

    x

    x

    x

    Enhanced Task Manager

    x

    x

    x

    Switch languages on the fly (Language Packs)

    x

    x

    x

    Better multiple monitor support

    x

    x

    x

    Storage Spaces

    x

    x

     

    Windows Media Player

    x

    x

     

    Exchange ActiveSync

    x

    x

    x

    File history

    x

    x

    x

    ISO / VHD mount

    x

    x

    x

    Mobile broadband features

    x

    x

    x

    Picture password

    x

    x

    x

    Play To

    x

    x

    x

    Remote Desktop (client)

    x

    x

    x

    Reset and refresh your PC

    x

    x

    x

    Snap

    x

    x

    x

    Touch and Thumb keyboard

    x

    x

    x

    Trusted boot

    x

    x

    x

    VPN client

    x

    x

    x

    BitLocker and BitLocker To Go

     

    x

     

    Boot from VHD

     

    x

     

    Client Hyper-V

     

    x

     

    Domain Join

     

    x

     

    Encrypting File System

     

    x

     

    Group Policy

     

    x

     

    Remote Desktop (host)

     

    x

     

    Si no lo has visto en acción, dascarga una version de prueba de aquí!

    Nota: Para las empresas con SOftware Assurance,  como siempre tendremos la versión Windows 8 Enterprise, con aún más features para el manejo corporativo.

  • WarNov Developer Evangelist

    Windows 8 Surface Tablet/PC

    • 13 Comments

    UPDATE: Ya tenemos disponible el video del Keynote del lanzamiento de la Surface ayer en los Ángeles. Aquí esta:

     

    Ahora, un video de la tablet, porque vale mucho más que miles de palabras!!!

    Ahora imágenes! Muchas imágenes!

    Microsoft Surface

    La Surface, no viene con un docking. Viene con un forro que incluye teclado y pad multitouch (Touch Cover)! Además tiene un soporte en la parte trasera, que permite ajustar el ángulo de visualización.

    Microsoft Surface

     

    Microsoft Surface

    Microsoft Surface

    Microsoft Surface

    Microsoft Surface

    Forros con colores para todas las personalidades

    Un diseño sin precedentes!!!

    También se puede incluir un Type Cover que trae un teclado más físico que el del Touch Cover.

    El mejor tamaño que puede haber para una tablet de este estilo!

    No les  inspira rediseñar su espacio en torno a este aparato?

     

     

    El VaporMg Case es una total innovación que brinda elegancia, comodidad y ligereza gracias al magnesio con el que está construido.

    Todo el poder para una conectividad real!

     

    Que más hay que decir, que toda esta maravilla fue develada hoy a las 6.45pm hora Colombiana en Los Angeles, en un sitio que no fue develado sino hasta el día de hoy, a un grupo de selectos periodistas y bloggers quienes fueron avisados del evento solo hasta el viernes pasado.

    La Microsoft Surface Tablet, vendrá en dos versiones. Aquella para Windows RT,  y aquella para Windows 8 Pro. Se diferencian básicamente en la cantidad de espacio en disco (SSD): 64Gb máx y 128Gb max, la pro vendrá con un Stylus especial, el tipo de pantalla y sobretodo el procesador. la primera vendrá con ARM y la segunda con el Ivy Bridge de GBIntel, l que presumiblemente nos permitirá seguir teniendo el desktop tradicional.

    Otras especificaciones:

    Surface for Windows RT

    • OS: Windows RT

    • Light: 676 g

    • Thin: 9.3 mm

    • Clear: 10.6” ClearType HD Display

    • Energized: 31.5 W-h

    • Connected: microSD, USB 2.0, Micro HD Video, 2x2 MIMO antennae

    • Productive: Office ‘15’ Apps, Touch Cover, Type Cover

    • Practical: VaporMg Case & Stand

    • Configurable: 32 GB, 64 GB

    Surface for Windows 8 Pro

    • OS: Windows 8 Pro

    • Light: 903 g

    • Thin: 13.5 mm

    • Clear: 10.6” ClearType Full HD Display

    • Energized: 42 W-h

    • Connected: microSDXC, USB 3.0, Mini DisplayPort Video, 2x2 MIMO antennae

    • Productive: Touch Cover, Type Cover, Pen with Palm Block

    • Practical: VaporMg Case & Stand

    • Configurable: 64 GB, 128 GB

     

           

    Se espera la llegada de la Surface Windows RT en el RTM de Windows 8 y la Windows 8 Pro, aparecerá tres meses después.

    Mañana mismo podremos ver el video del lanzamiento aquí.

    Para terminar, solo me resta citar unas palabras:

    “I love this company.

    I love that we have brilliant engineers with brilliant ideas. I love that we aren’t afraid to make big bold bets. I love that we are persistent – after all it’s our passion and tenacity that bring our dreams to life. And right now, I love how so much of our hard work, passion and tenacity are coming together in the products we are bringing to market…

    … I’m incredibly proud of the work this company is doing and incredibly optimistic for what’s ahead. “

    Steve Ballmer,  al equipo de Microsoft.

  • WarNov Developer Evangelist

    Llenar celdas vacías en Excel con 0

    • 5 Comments

    Nosotros developers en determinado momento tenemos que lidiar con hojas de calculo. Aquí un pequeño tip que nos puede ayudar mucho.
    Como llenar un conjunto disperso de celdas vacías con un valor o formula dado? Por ejemplo con ceros?
    En este video se muestra de una manera muy rápida.
    Enjoy!

     



  • WarNov Developer Evangelist

    Cómo escalar aplicaciones. SCALE UP vs. SCALE OUT y las posibilidades con Windows y SQL Azure

    • 1 Comments

    Yendo directamente al grano, SCALE UP hace referencia a lograr escalabilidad a nivel de servidor, incrementándole sus recursos de hardware, antes de mejorar la escalabilidad usando otro servidor. Por ejemplo, aumentando su cantidad de memoria, o la capacidad/velocidad de los discos o la cantidad de núcleos de cómputo del servidor.

    En un enfoque SCALE OUT, la escalabilidad se logra “sacando” la carga a otros servidores.

    Al principio el enfoque SCALE UP puede parecer el menos costoso y más sencillo para muchos casos. Pero cuando las exigencias siguen aumentando con el tiempo, lo que sí es seguro, es que se llegará a un límite práctico en el que no será posible “agrandar” más el servidor para ponerle por ejemplo 500 núcleos de procesamiento de manera que pueda satisfacer una fuerte demanda. En estos casos, es fácil observar cómo puede resultar mucho más barato, eficiente y productivo un enfoque de SCALE OUT. Además, un SCALE UP generalmente genera tiempo de baja, mientras se cambian o mejoran las partes de hardware. Mientras que con un SCALE OUT, solo es cuestión de levantar más máquinas independientes.

    Windows Azure es tan flexible, que nos permite ambos tipos de escalamiento. El SCALE UP se logra a través del ajuste que podemos hacer a las instancias que creamos para correr nuestros servicios (recordemos que una instancia es cada uno de los servidores virtuales que ordenamos crear para desplegar nuestras aplicaciones de Windows Azure). Estas instancias vienen en cuatro tamaños. Así que al mejor estilo SCALE UP podemos hacer que el tamaño de cada instancia crezca. Estas son las posibilidades de tamaño que tendríamos:

    image

    Así que podríamos escalar desde 1.6 hasta 10.4 GHz en CPU, desde 1.75GB hasta 14GB de RAM y desde 225MB hasta 2TB de disco duro.

    En cuanto a la alternativa SCALE OUT, tenemos servidores que se aprovisionan muy rápido y pueden comenzar a trabajar en equipo manipulando solo unos elementos de configuración. Así pues, tenemos la ventaja de poder adicionar más y más instancias a nuestro despliegue, las cuales se ajustarán automáticamente con solo un despliegue inicial.

    ESCALABILIDAD CON SQL AZURE

    El SCALE OUT no aplica solo a los servidores de presentación o cómputo (web o worker roles), sino también de SQL Azure como tal. No obstante, en SQL Azure no tenemos la posibilidad de hacer SCALE UP.

    SQL Azure ofrece una gran cantidad de ventajas sobre todo al tener que escalar bases de datos de una manera elástica y rápida, dado que tenemos casi que ilimitada capacidad para levantar nuevas bases de datos para satisfacer cualquier demanda. En SQL Azure, no tenemos una relación física uno a uno entre servidores y bases de datos como en SQL Server tradicional. Pero la abstracción que se nos brinda es perfecta para que la mayoría de las veces el manejo que se le da a estos conceptos sea el mismo que on-premises. Sin embargo, cuando tenemos una cuenta de SQL Azure, tenemos la posibilidad de generar todas las bases de datos que queramos, las cuales residirán en servidores distintos (a veces coincidencialmente residirán en el mismo servidor). Pero esta distribución es ejecutada por los balanceadores de carga automáticos de Azure que se encargan de determinar cómo distribuir las cargas de peticiones a la plataforma.

    Entonces en SQL Azure no vamos a tener la posibilidad por ejemplo de aumentar la memoria de un server dado, sino que sencillamente levantamos otra base de datos. Con esto, podemos tomar una base de datos que requiera ser escalada y segmentarla o particionarla en otras bases de datos más pequeñas y con mejor rendimiento.

    Comprendido ya el concepto de SCALE OUT, veamos ahora que por ejemplo cuando hablamos de bases de datos, existen dos formas para hacer este tipo de escalamiento: Vertical y Horizontal. Estos tipos de escalamiento se ejecutan particionando las tablas que conforman la base de datos horizontal como verticalmente. Luego de estar particionadas, obviamente se generan más tablas y éstas a su vez se pueden ubicar en distintas bases de datos, lo que nos daría el escalamiento buscado.

    Escalamiento Vertical:

    Consiste en dividir las tablas verticalmente a través de columnas. Así pues, uno por ejemplo podría escoger dejar las columnas más importantes en una tabla y las menos usadas en otras. Por ejemplo dejar en una tabla T1 de la base de datos D1 los datos del cliente y su dirección principal, y en otra T2 en la base de datos D2, otra tabla con las direcciones secundarias. Entonces para lograr un correlacionamiento correcto entre T1 y T2, en T2 deberíamos tener un mecanismo de llaves foráneas hacia T1.

    Otro ejemplo de particionamiento vertical se observa por ejemplo cuando dejamos una tabla completa (o conjunto de ellas) en una sola base de datos. Y otras tablas en otras bases de datos. Por ejemplo, tiene mucho sentido en una aplicación de negocios, tener la tabla de clientes en una sola base de datos, para obtener el mayor rendimiento posible para ésta.

    Lo que es más, se puede combinar ese particionamiento para lograr aún más escalabilidad y eficiencia, de manera que podremos poner la tabla de clientes en su propia base de datos, y luego particionar sus columnas en distintas tablas, pero dentro de la misma base de datos.

    image

    Escalamiento Horizontal:

    Este escalamiento comprende la distribución de los datos de una tabla a través de varias tablas con la misma estructura, cada una de las cuales generalmente se encuentra en una base de datos distinta y en ocasiones aún en instancias y/o servidores distintos. Es un excelente acercamiento para circunstancias en las cuales la variabilidad de la carga de trabajo en el servidor de base de datos es muy alta, pues en SQL Azure por ejemplo, es muy fácil aprovisionar y desaprovisionar servidores; además siempre resulta mucho más barato que tener un servidor de muy altas prestaciones siempre encendido esperando por picos de carga de trabajo.

    En cada versión de la tabla se almacena un conjunto de datos que tienen como dato común el valor de una columna que generalmente se conoce como PartitionKey. Entonces cada versión de la tabla se llama Partition. Este es el tipo de particionamiento que se hizo popular con SQL Server 2005.

    Para poder tener “conciencia” de dónde están ubicados los datos con una PartitionKey determinada, existe una tabla maestra donde reside esta información.

    Por ejemplo; en una aplicación comercial, se puede decidir dejar en una base de datos diferente cada las ventas de cada ciudad. En este caso la ciudad sería la PartitionKey para identificar cada tabla. Sin embargo, una clave de partición, podría estar conformada por más campos dependiendo de la naturaleza de la aplicación y el tipo de carga de trabajo.

    Consideraciones para el escalamiento horizontal:

    1. Escoger una llave de partición adecuada, tras un profundo conocimiento del negocio. En general es más recomendable usar una llave natural que una numérica en estos casos. En el caso anterior, haber escogido la ciudad como llave de partición es mucho más eficiente por ejemplo que haber escogido por ejemplo el Id de la venta.

    2. Administración de particiones: Es una de las tareas más complejas luego de haber definido las particiones; generalmente implica consideraciones en el desarrollo de la aplicación que debe saber dónde insertar o modificar nuevos datos así como dónde buscar los existentes. La idea es escoger un tipo de partition key que no vaya a requerir una posterior reubicación de datos cuando el negocio eche a andar, lo que probablemente significaría un tiempo de baja del servicio.

    3. Evitar cross-database joins: Aparte de ser bastante ineficiente, algunas plataformas como SQL Azure no soportan consultas distribuidas. Por eso es mejor que todos los datos que requiere una tabla dada, estén en la misma DB. De lo contrario habrá que escribir el código necesario para poder ejecutar consultas asíncronas a través de varias particiones que retornen datos separadamente que luego tendrán que ser unidos en la capa de aplicación.

    4. Alta disponibilidad: Cuando se escoge un acercamiento de este tipo de escalabilidad, es requerido que todos los servidores a través de los cuales está particionada la base de datos tengan unos índices de disponibilidad bastante altos. Estos índices son provistos por SQL Azure. Es así como cada vez que creamos una base de datos, SQL Azure crea automáticamente tres copias de la misma, para asegurar esta alta disponibilidad. Cada copia es creada en servidores físicos distintos dentro de la misma ubicación geográfica. La sincronización entre estas bases de datos es automática también. En caso de falla, SQL Azure automáticamente redirige las peticiones a una de las copias de seguridad y vuelve a levantar una tercera copia para futuras eventualidades. Todo esto ocurre sin intervención humana y sin caídas del servicio.

    5. Administración: El escalamiento horizontal puede llegar a generar alta complejidad en la administración dado que hay que aplicar updates, ejecutar patching, ajustar un plan de recuperación de desastres, etc. y todo esto para cada servidor usado en el escalamiento. Afortunadamente SQL Azure se encarga de todas estas tareas automáticamente por nosotros. De las únicas tareas de administración que un DBA debería tener en cuenta son: creación de esquemas, afinamiento de índices, optimización de consultas, logins, usuarios y administración de la seguridad.

    image

    Conclusión:

    A pesar de que el particionamiento puede ayudar a mejorar el performance, la escalabilidad y los costos, puede llegar a ser bastante complejo implementar un esquema de particionado exitoso. Algunas aplicaciones tienen un esquema de particionamiento natural del cual se puede tomar ventaja mientras hay otras aplicaciones que requieren ser re - arquitecturadas para volverlas escalables; cosa que vale la pena la mayoría de las veces. Windows Azure y SQL Azure proveen una plataforma sobre la cual las aplicaciones pueden hacer SCALE-UP/SCALE-OUT en el caso de Windows Azure al permitir “agrandar” las instancias y al permitir usar varias instancias con el mismo despliegue. Y en el caso de SQL Azure con SCALE-OUT al permitir pasar de una o dos bases de datos a decenas o cientos de bases de datos de una manera muy sencilla sin incurrir en fuertes costos de infraestructura. Además, los clientes no pierden inversión si necesitas reducir nuevamente la infraestructura, ya que todo estaba en arriendo en el esquema de plataforma como servicio.



  • WarNov Developer Evangelist

    Stairway to Azure 4: Hello Azure

    • 8 Comments

    Ya vimos en este post los conceptos de Software as a Service (Saas), Software + Services (S+S) y Plataform as a Service (PaaS) y de cómo Windows Azure es la alternativa que Microsoft nos ofrece para desplegar este tipo de conceptos que lideran hoy el desarrollo del software.

    En este otro post vimos toda la teoría acerca del funcionamiento de Windows Azure y los conceptos sobre los cuales se construye.

    Pues bien, ya con esto en nuestro conocimiento, hoy les traigo ya para que comencemos de lleno, un video que nos muestra cómo comenzar a programar para Windows Azure y cómo desplegar nuestras aplicaciones en la nube, sobre este esquema.

    Para poder hacer este despliegue, es necesario tener una cuenta en válida en Windows Azure, que nos permita hacer deployment de aplicaciones.

    Aunque lo más obvio y normal es que estas cuentas tengan un costo, hasta el mes de Julio de 2010 tenemos una promoción que nos permite probar la plataforma bajo ciertas restricciones y de manera gratuita.

    Las Cuentas:

    En el siguiente video les muestro como aprovechar esta promoción, para adquirir una cuenta válida:

    Links mencionados en este video:

    El Desarrollo:

    Luego de que tengamos nuestra cuenta, podemos proceder a crear y publicar nuestras aplicaciones en la nube, tal como se muestra en el siguiente video (si no tenemos una cuenta, el video también es útil para aprender a programar para Azure, pero no tendremos la posibilidad de publicar la aplicación):

    Muy bien, espero que con este par de videos, se animen para comenzar a ser productivos con Windows Azure. Ya vendrán más videos con los que les mostraré aplicaciones más avanzadas.

  • WarNov Developer Evangelist

    Transparencia en DIVs HTML (Div Opacity)

    • 2 Comments

    Cada mes acostumbro a cambiar el header de mi Blog usando una fotografía tomada por mí.

    Para este mes quise poner una foto del Palacio de Justicia ubicado en la Plaza de Bolívar en Bogotá.

    En esta foto fue difícil ubicar el título de mi blog, dado los colores de fondo. Así que la alternativa fue ponerle un color de fondo sólido al título.

    Sin embargo, un color sólido arruina la fotografía de fondo, pues no la deja ver para nada. Allí fue donde me nació la duda de cómo hacer un div transparente, para así poder modificar el estilo del blog.

    Investigando un poco, encontré que esto se hace distinto para distintas versiones de navegador. En especial, para Firefox se usa:

    opacity:0.6;

    Luego vi que esto no funcionaba en IE, pues me seguían apareciendo los fondos sólidos.  así que investigando un poco, encontré que esto se hace distinto para IE:

    filter:alpha(opacity=60);

    De esta manera, un estilo escrito así:

    #title {
    opacity:0.6;
    filter:alpha(opacity=60);
    }

    Produce este resultado independientemente del navegador:

    image



  • WarNov Developer Evangelist

    Stairway to Azure

    • 2 Comments

     

    El objetivo de esta serie de posts, es tender una escalera a la nube (Azure), de tal manera que nosotros, desarrolladores hispanoparlantes tengamos una manera rápida de comenzar con todo lo relacionado con esta tecnología.

    Para introducirnos rápidamente en el mundo de Azure, primero que todo es necesario que entendamos los conceptos de SOA, SaaS y S+S. Para este fin, he preparado este video que nos dejará muchas cosas claras:

     

    Luego del video, es mucho más fácil entrar en materia:

    GENESIS

    Al principio todo era código estructurado. Y miles de líneas de código se entrecruzaban como espagueti dentro de aterradores GoTo’s y Labels. Y la interoperabilidad de aplicaciones era así:

    Arquitectura Spagueti

     

    Todos los sistemas estaban altamente acoplados y hacer un arreglo o un cambio era toda una pesadilla. Era la época de oscuridad en el desarrollo de software. Se desarrollaba sin ciencia. Se administraba con sufrimiento.

    Servicios y SOA

    Después nació el servicio. Y los programadores se dieron cuenta de que era bueno. No tenían que pasar días tratando de hacer un cambio, porque las funcionalidades estaban bien distribuidas independientemente. Además tampoco se duplicaban. Entonces, nació SOA o Arquitectura Orientada a Servicios. Con la cual se hizo mucho más fácil la administración del software y los procesos más eficientes.

    El milagro de SOA hizo que las empresas progresaran mucho y que cada vez requirieran más servicios; sus sistemas de software crecían y obviamente así el hardware que los soportaban. Y el crecimiento de hardware trajo consigo un purgatorio para el personal de IT. Administrar decenas de servidores y estar pendientes de los nuevos requerimientos de infraestructura para estos grandes sistemas de software se hizo cada vez más doloroso. Los costos también aumentaban exponencialmente cada vez que crecían los sistemas. Además el negocio en crecimiento obligaba a viajar a los empleados de las empresas, quienes en sus viajes de negocio requerían tener acceso al software. Pero el software estaba internado en el centro de datos empresarial. Los empleados estaban atados a la ubicación física de la empresa. Todo fue un caos!

    SaaS

    Entonces apareció el evangelista promulgando el uso de los servicios de Hosting. Empresas encargadas de mantener los centros de datos para otras empresas sumergidas en el caos del manejo de IT. Y aparecieron grandes centros de datos que a pesar de estar fuera de las instalaciones de los clientes, podían albergar todas sus soluciones  de software. Las empresas se ahorraron costos y dolores de cabeza, porque ya no tenían que estar pendientes de la administración de IT. La comunicación entre el servicio de hosting y las empresas fue posible gracias a la explosión de internet y el ancho de banda; así que los empleados ya no estaban atados a la casa matriz; todo mundo se olvidó de los detalles no funcionales y se dedicó más enfocadamente a su negocio… Los gerentes vieron que todo esto era muy bueno! Así que se dedicaron solo a producir servicios para ser hosteados y ese fue el origen del SaaS (Software as a Service) o software como servicio.

    Entonces todo mundo comenzó a adorar al nuevo modelo de conexión al software (la internet). Y nadie volvió a conectarse al interior de la empresa. Siempre era necesario tener internet para poder trabajar. Así que si había un problema de conectividad, se perdía la productividad. Además las aplicaciones tuvieron que estandarizarse para poder visualizarse desde todos los browsers y se perdieron las características especiales y únicas de las aplicaciones de escritorio. Entonces los negocios que un día crecieron vertiginosamente, comenzaron a decaer por la limitante de funcionalidad. Esto sumado a que los proveedores de servicios de hosting también estaban a tope y tardaban mucho en escalarse, empeoró aún más la situación. El oscurantismo cayó de nuevo por el uso excesivo de una novedad.

    S+S

    El desarrollador reflexionó; y se dio cuenta que el modelo de software tradicional instalado al interior de la empresa que había desechado, tenía grandes ventajas sobre el nuevo ídolo. Y que sin embargo SaaS también conservaba características brillantes. Entonces observó que la solución no era irse por un único camino. Sino tomar el mejor camino de acuerdo a cada tipo de aplicación. Así decidió que parte de su software iba a ser software como tal y otra parte iba a ser servicio. Esto dio origen a S+S: Software más Servicios. Desarrolladores y gerentes se dieron cuenta que esto era bueno y se mantiene hasta nuestros días.

    AZURE (PaaS)

    Microsoft también observó que todo esto era bueno. Y decidió hacerlo aún mejor! Así que está poniendo a disposición de sus clientes los servicios de hosting, almacenamiento y procesamiento de datos; tal cual como lo hacen los actuales proveedores; pero esta vez, ofreciendo estadios completos de servidores que hacen más fácil lograr la escalabilidad y disponibilidad que requieren algunas de las aplicaciones de misión crítica de los clientes. En síntesis, Azure cubre la parte de software como servicio; pero como se observa al mirar en detalle la tecnología, se ofrece todo un framework para poder conectarnos con las aplicaciones al interior de la empresa y otras hospedadas por los proveedores de servicios de hosting convencionales que seguirán trabajando con muchas de las aplicaciones que actualmente manejan sin problemas. Concluyendo, la nueva tecnología Azure basa su desarrollo en la interoperabilidad limpia y eficiente con las fuentes de software que han demostrado ser muy adecuadas hasta ahora: al interior de las empresas (Software – On Premises) y hosteadas por terceros (Servicios).

    Una vez recorrido el camino necesario para entender la historia y el porqué de Azure, esperen en próximos blogs una inmersión especial a la plataforma y todas sus características!

  • 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

    Boletas para Aerosmith via Windows Azure!!!

    • 0 Comments

    Quieres ganarte DOS BOLETAS PLATINO para ver a AEROSMITH en Bogotá este 20 de Mayo?

    image 

     

    Sólo debes crear una aplicación y subirla a Windows Azure.

    En este POST de mi blog encontrarás los pasos a seguir para crear una cuenta en Windows Azure válida en Colombia y la guía para subir dicha aplicación.

    Envía un mail a devcol@microsoft.com con el asunto “Windows Azure” e incluye los siguientes datos:  URL de tu aplicación, Nombre, Cédula y teléfono.

    El sorteo se realizará el Martes 18 de Mayo a las 5PM entre los mails que hayamos recibido hasta ese momento y nos comunicaremos directamente con el ganador.

    *Sólo serán válidas las cuentas creadas en Colombia

    ** El sorteo será realizado por un jurado de 5 personas en la hora y fecha indicadas.

    www.microsoftactiva.com

  • WarNov Developer Evangelist

    Qué tiene y qué no tiene SQL Azure?

    • 1 Comments

    Esta es una de las dudas que se presenta frecuentemente con respecto a las tecnologías de Windows Azure.

    Aquí va rápidamente la respuesta:

    Transact-SQL es un lenguaje que contiene comandos que se utilizan para administrar instancias de SQL Server, incluyendo la creación y administración de todos los objetos de una instancia de SQL Server e insertar, recuperar, modificar y eliminar todos los datos en tablas. Las aplicaciones pueden comunicarse con una instancia de SQL Server mediante el envío de instrucciones Transact-SQL al servidor.

    Microsoft SQL Azure admite un subconjunto de Transact-SQL para SQL Server.

    El soporte para Transact-SQL en SQL Azure puede ser descrito en tres categorías principales:

    • Elementos de lenguaje Transact-SQL que se admiten tal cual.
    • Elementos de lenguaje Transact-SQL que no son compatibles.
    • Elementos de lenguaje Transact-SQL que proporcionan un subconjunto de los argumentos y las opciones en sus correspondientes elementos de Transact-SQL en SQL Server 2008.

    Las siguientes características de Transact-SQL son compatibles o parcialmente soportadas por Sql Azure:

    • Constantes
    • Constraints
    • Cursores
    • Administración y reconstrucción de Índices
    • Tablas Temporales Locales
    • Palabras Reservadas
    • Procedimientos almacenados
    • Administración de Estadísticas
    • Transacciones
    • Triggers
    • Tablas, join y variables de tablas
    • Funciones definidas por Usuarios
    • Vistas

    Las siguientes características de Transact-SQL no son soportadas por SQL Azure:

    • Common Language Runtime (CLR)
    • Ubicación de archivos de base de datos
    • Creación de Mirrors
    • Consultas distribuidas
    • Transacciones distribuidas
    • Administración de grupos
    • Tablas temporales globales
    • Índices y datos espaciales  Ya lo tiene! Open-mouthed smile
    • Opciones de configuración de SQL Server
    • SQL Server Service Broker
    • Tablas del sistema Ya las tiene!
    • Indicadores de traza

     

    Para información detallada, visiten MSDN



  • WarNov Developer Evangelist

    Windows Azure: Compilado de Recursos

    • 3 Comments

    A continuación les presento un conjunto de recursos acerca de Windows Azure que aplica sobretodo a la audiencia hispana.

    La primera, es una presentación de PowerPoint que da un recorrido global sobre la plataforma. El segundo recurso precisamente es un video donde hago la presentación de estos slides, de tal manera que les permitirá tener un mayor sentido de la presentación.

    El tercer punto presenta todos los artículos de este blog, relacionados con Windows Azure, desde el último hasta el primero. En general es buena idea que si están comenzando con esta plataforma, comiencen a leer desde el primero, ya que progresivamente va subiendo el nivel técnico de estos artículos.image

     

     

    Herramientas

    1. Cliente WPF para Administración de Blob Storage
    2. Windows Azure Service Management CmdLets
    3. Explorador de Tablas Azure Online
    4. Sitio de cmdlets de Azure para PowerShell

    Para finalizar, si tienen preguntas acerca de Windows Azure, tras algún evento, este es el post en el que en los comentarios las pueden anotar, y con mucho gusto trataré de resolverlas!

    Gracias por Asistir!

  • WarNov Developer Evangelist

    Video y Podcast: Introducción Avanzada a Windows y SQL Azure

    • 0 Comments

    A veces queremos saber de algo, sin tener que dedicarla el 100% de atención o tiempo… tal vez hacerlo mientras vamos en el transporte público o conduciendo… o sencillamente no tenemos tiempo para leer un extenso artículo y preferimos ver un video o tal vez oír al respecto.

    Este video – podcast está basado en este artículo de Windows Azure el cual tiene una presentación que hago siempre a mis entrenados. Se brinda una introducción avanzada a la plataforma para conceptualizarla y poder comenzar a trabajar de lleno con ella.

     

    Enjoy!



  • WarNov Developer Evangelist

    Windows Azure FAQ

    • 0 Comments

    · En este post quiero recopilar todas las preguntas que me hacen por medios escritos acerca del tema y su respectiva respuesta:

    1. La arquitectura de la aplicación a migrar se fundamenta en la exposición de componentes (COM+)a través de Windows Communication Foundation, mediante una serie de servicios (SVC) publicados en un sitio de IIS. El modelo propuesto por Azure soporta la publicación de componentes COM+? Como se realiza el registro de los componentes en la plataforma? (Es decir, Windows Azure provee un administrador de componentes?)

    Esta publicación sí es posible a través de SartUpTasks en las que al iniciarse un role, se accede cómo administrador y se ejecutan los batch de instalación de estos COM. Luego se pasa a usuario normal el role queda funcionando de manera segura.
    Se realiza a través de operaciones en batch y StarUptasks. Aquí hay instrucciones: http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_advancedwebandworkerroles_topic3

    2. Que puedo usar para crear aplicaciones para Azure, WebForms?, WPF?, SilverLight?, se puede usar MVC?

    Todo lo que mencionaste y más, se puede usar con Azure. También puedes usar WinForms, Java, PHP, Ruby, etc.

    3. Hola WarNov, estamos a punto de iniciar un software y no sabemos si usar AZURE, nos asalta la duda de si podemos usar sockets en AZURE o si existe alguna manera de implementarlos.

    En #Azure claro que se pueden usar sockets. Desde la versión 1.2 de la plataforma es posible abrir puertos a conexiones remotas

    4. Sabemos que no se factura por el ancho de banda de entrada a azure, solo el de salida, usando VMRole cuando me conecto por remote desktop me factura algo? de ser asi hay alguna forma de predecir ese costo?

    Se factura el consumo de salida en la conexión RDP y la única forma de averiguarlo es estar mirando la facturación actual en el portal y extrapolar.

    5. En cuanto a VMRole, yo tengo q configurar la maquina en mi Hyper-V local, esa licencia sw WS2008R2 que le instalo tiene q correr por mi cuenta?

    No.. la licencia que le instalas no es problema

    6. cual seria la mejor forma, de reemplazar mis variables de sesión y cache de mi aplicación WEB al pasarla a AZURE, tamos en ese proceso, y es una duda que nos asalta, de antemano gracias

    Una buena forma es usando registros en las tablas de Azure. Es rápido y barato. La otra es usando APPFABRIC que tiene módulos de cache y sesión.

    7. WarNov, buenas tardes, de casualidad tienes links de recursos sobre el manejo de variables de sesión y cache para azure?, tamos migrando nuestra aplicacion de asp.net a azure y este es uno de nuestros primeros problemas

    Claro. Te recomiendo hacer el capítulo de APPFABRIC que viene en el Windows Azure Training Kit. Allí enseñan como usar este módulo para el manejo de sesiones y cache.

    8. Quiero montar un ESB en .net, Windows Azure que puede hacer por mi?. Azure podria ser en si un ESB ??. Puedo hacer que Azure sea privado, es decir, que solo corra en mi datacenter ???

    Azure provee plataforma tecnológica para desplegar aplicaciones orientadas a cloud computing. Azure por sí mismo no es un ESB. Se puede construir un ESB y orientarlo a Cloud Computing y subirlo a Azure. Azure privado aún no sale al público pero empresas como eBay lo están probando. Esto se llama Azure Appliance y permitirá comprar un contenedor con Azure para poner el el datacenter local. También se espera a futuro que Azure tenga su propio módulo de orquestación de servicios.

    9. WarNov tengo un proyecto con un reporting y funciona localmente pero cuando lo subo a la nube me sale el siguienet error: An error occurred during local report processing.Could not find file 'E:\approot\_WASR_\0\Report2.rdlc'. gracias por tu ayuda

    En Windows Azure no hay un sistema de archivos como en una máquina local. Debes asegurarte de guardar el reporte en un blob y luego referenciarlo con la dirección del blob.

    10. Será cierto eso que dicen que para migrar una base de datos de Sql Server 2008? a Windows Azure se realiza con MiWiza? y funcionara para todos sin problema?

    Nunca he oido hablar de esa aplicación de Migración. En cambio conozco por ejemplo SQL Azure Migration Wizard v3.6 que es de código libre y está en codeplex: http://sqlazuremw.codeplex.com/
    Aunque en algunas ocasiones hace un trabajo impecable, no siempre es suficiente. Algunas características avanzadas de la DB no estarán disponibles o habrán de sermodificadas a mano. Pero En general sirve muy bien y es una gran herramienta. Para bases de datos sencillas la migración casi siempre es 100%

    11. Hola WarNov. No quiero usar mas Sql Azure, ¿puedo sacar una copia de todos mis datos para luego restaurarlos en una sql local?. Es fácil?

    Si es muy fácil... con el SQL Server Management Studio te conectas y haces un backup por ejemplo.. o bajas los datos con Integration Services, etc.
    Las cadenas de conexión de SQL Azure son las mismas de cualquier servidor SQL Server.

    12. WarNov en Azure para instalar un App con envío de correo masivo tiene que ser a través de una cuenta determinada o puedo usar un servidor SMTP cualquiera, adicional a esto el firewall de Azure me permite realizar esta tarea o existe alguna limitación?

    Hola. Azure permite usar cualquier servidor SMTP y no impone ninguna limitación de conectividad entre la aplicación y el servidor SMTP.

    13. Hola WarNov, la pregunta es como puedo configurar Azure para que tome una instancia de SQL Server ya instalada y no busque por defecto a .\SQLExpress?

    Hay un tool llamado DSInit; este viene con el SDK de Windows Azure. Así ke si abres el command prompt de Windows Azure, allí la encuentras y pones DSInit /sqlInstance:[Nombre de la Instancia]
    por ejemplo DSInit /sqlInstance:. te levantaría la instancia por defecto (MSSQL)

    14. Hola; quería preguntarle como puedo montar una aplicación Azure en un dominio que haya comprado

    La idea no es que montes la app en un dominio comprado, sino que montes la aplicación como siempre y luego hagas que el dominio que compraste apunte al dominio de Windows Azure. Las instrucciones específicas las encuentras aquí: http://blog.smarx.com/posts/custom-domain-names-in-windows-azure

    15. Es posible desarrollar una aplicación para azure y para una intranet... donde simplemente el cliente decida en donde quiere hospedarla??

    Si es una aplicación creada con esto en mente, claro que sí es posible. Solo sería necesario establecer un par de variables de configuración y listo

    16. WarNov en Azure puedo instalar aplicaciones como VisualSorucesafe para el manejo de versiones, un bugtracker para registro de bugs y tener un ambiente de pruebas para las aplicaciones, pues nos queremos ahorrar la compra de cualquier clase de servidor ?

    Lo puedes poner en un VMRole, pero debes tener en cuenta la licencia del producto que estás instalando. Lo más seguro es que aún no diga nada acerca de trabajar el servidor en la nube y tal vez te genere problemas legales. Por otro lado, Microsoft en poco tiempo lanzará su servicio de TFS como servicio. Una excelente opción.

    17. Actualmente tengo una aplicación de consola que lee docs de Excel para cargar la información a la base de datos y eso lo hace todos los dias a media noche, ¿de que forma puedo ejecutar una aplicación de consola en Windows Azure cada cierto tiempo teniendo

    Hay que subir la aplicación de consola a un worker role que la ejecute. En ese worker role podemos poner dentro del loop infinito un chequeo e la hora e acuerdo a un archivo de agenda tal vez, que en determinadas horas dispare la aplicación de Consola.

    18. Hola WarNov nosotros utilizamos aplicaciones en asp .net framework 3/3.5 hosteadas en sevidores externos, para migrar estas aplicaciones a Winazure debemos modificar la arquitectura de nuestras aplicaciones? que tan complejo es el cambio en codificacion

    Si la aplicaicón ya está diseñada en capas, el cambio es muy sencillo. Lo único necesario es añadir una nueva capa entre la capa de servicios o negocio y la capa de presentación. Esta capa manejará la comunicación entre los Web Roles y Worker Roles. En general, las capas de negocio permanecen intactas.
    Si tenemos un proyecto web con todas las capas en el mismo, este se puede pasar tal cual a un Web Role y no hay problema. Solo que se dejarían de aprovechar algunas características especiales de Azure, pero igual otras como la escalabilidad y automatzación quedarían disponibles.

    19. Si no puedo realizar la migración de la bd MySQL a SQL Server, ¿como puedo acceder a la bd MySQL desde una app Web que se encuentra en Windows Azure?. ¿Haciendo uso de Azure AppFabric para conectarme a la bd o por algun puerto o por una app Win Cliente?

    La conexión desde Azure a My SQL es idéntica a cualquier aplicación ASP.NET a My SQL. Solo basta poner la cadena de conexión y listo. No es necesario APP Fabric

    20. Se conoce algo respecto al tema de costos que tendra VMRole cuando deje de ser beta?

    Será el mismo de cualquier otro Role. No habrá que pagar licencias del server tampoco, porque al igual viene incluida. Hay que tener cuidado con el software adicional que se instale, pues se podrían estar infringiendo términos de licencia de dicho software al ponerlo en la nube.

    21. Hay algún tutorial para implementar mi dominio en la aplicación que estoy montando en azure?

    Claro que sí.. Con este post yo aprendí a hacerlo: http://blog.smarx.com/posts/custom-domain-names-in-windows-azure

    22. WarNov, tengo una cuenta en sql azure y me muestra una db llamada master que asumo Aue es la misma cuando uno trabaja localmente. el tamaño de esa base de datos es incluido como tamaño de la cuenta contratada.

    No. Ese tamaño no se cobra. Tampoco se cobran los logs.

    23. Con una cuenta trial de windowsazurepass puedo trabajar VMRole son problema? o tiene alguna limitacion respecto a este tema?

    El VM Role aún está en Beta. Para poder usarlo hay que solicitar el servicio. Desde CUALQUIER cuenta de Windows Azure se puede solicitar este servicio, pero se entra a una cola de espera que puede ser de un par de semanas.

    24. Las transacciones entre windows azure y sql azure, no se cobra la transaccion del windows pero si el in/out del sql? Gracias

    Es correcto. El único cobro relacionado a SQL Azure es el del ancho de banda empleado en transacciones ejecutadas por fuera de la nube y el del tamaño de la base de datos como tal.

    25. hola estoy tratando de probar la plataforma Windows Azure, pero tengo inconveniente con lo de la Tarjeta de Crédito, no se puede de otro tipo diferente a los posibles o una alternativa a que no haya que ingresarla??. Agradezco tu ayuda.

    Claro que sí... puedes pedir una cuenta en windowsazurepass.com

    26. Es posible desarrollar software de Inteligencia Artificial con C# 4.0 y Windows Azure?

    En Azure puede desarrollarse todo lo que se dedarrolla en .NET. Azure es .NET

    27. Instalé el sdk de azure, al crear el proyecto me sale que es de FW 3.5... Azure funciona sobre 4.0 o toca sobre 3.5?

    Azure funciona sobre cualquiera de esas dos versiones del framework.

    28. Hola WarNov, estoy trabajando en un proyecto en el cual estoy utilizando Silverlight (EF4,RIA sevices,MEF)y quiero probarlo en Windows Azure, pero al querer subir me marca un error de Abortado, ya asocie el web rol, o se necesita una configuración?

    Muy seguramente tienes un error en el despliegue; por ejemplo te falta subir alguna DLL que se requiera para el funcionamiento de la aplicación o algo así.

    29. Como puedo saber cuanto consume un usuario en computo de Windows Azure en una hora?

    Los recursos de las máquinas de Windows Azure son todos dedicados al usuario. Por ende, no importa cuánto se gaste en cómputo, así que no hay forma de medir cuanto se gasta un solo usuario. La idea es que Azure cobra solo el tiempo no el consumo.

    30. Hola, es muy interesante este tema Windows Azure, pero si me puedes colaborar sacándome de una duda. Yo tengo una aplicación de escritorio sobre la plataforma .NET. Podría aprovechar solamente el SQL Azure de la nube?

    Puedes tener una app fuera de la nube en corriendo sobre cualquier plataforma y conectarla a SQL Azure. No hay problema. Azure te da el poder de elegir.

    31. Los logs de transacciones afectan el costo de SQL Azure?

    No. Lo único que afecta el costo de SQL Azure es el tamaño de la base de datos solicitado, así como el ancho de banda usado en su operación.

    32. Pueden los clientes acceder a los logs de SQL Azure?

    No. No es posible para un ente externo a la nube acceder a estos logs.

    33. Hay alguna restricción con respecto al tamaño de los log y alguna operación automática para reducir sus tamaños?

    La administración de logs es completamente automatizada. La base de datos corre siempre en modo de recuperación completa (“Full Recovery Mode”) y los logs son respaldados y truncados regularmente. La única restricción acerca de los logs, es que una transacción sencilla contra la base de datos no puede exceder 1GB de datos en el log.

    34. Solicito su colaboración para validar de que forma se puede evitar la vulnerabilidad de Inyección de SQL en SQL Azure, si aparte de las buenas practicas en programación existen herramientas que me ayuden a controlar esto desde la plataforma

    Basta con las mismas prácticas convencionales en ASP.NET para evitar el SQL Injection. Por ende Windows Azure no tiene herramientas ni políticas especiales para evitar esta práctica. Si no conoce estas buenas prácticas remítase a este artículo.

    35. Actualmente se realiza el cargue de archivos desde una aplicación Web y se almacena en los servidores locales y existe un servicio Windows que realiza las validaciones de los archivos cargados, la duda es: ¿Que tan complejo es migrar el servicio Windows a un proyecto de tipo Worker Role para subirlo a la plataforma Azure y que implicaciones tiene esto?

    En Windows Azure actualmente no se pueden instalar servicios porque requieren permisos de administración. A futuro estará disponible el VM Role con permisos de administración pero no será PaaS sino IaaS lo que conlleva necesidades de administración.

    La labor de un Windows Service claramente se puede llevar a cabo con un Worker Role que corre infinitamente leyendo mensajes de la cola por ejemplo. Sabiendo cómo programar un worker role no habrían dificultades. Esto lo puede aprender en el laboratorio: Introduction to Windows Azure que encuentra en el training kit, referenciado en http://bit.ly/wazure.

    36. Existe alguna forma o herramienta automatizada, que determine en tiempo real cuanto ha sido el consumo que han tenido mis servicios en Windows Azure en una fecha determinada, es decir como una especie de reporte que muestre el consumo total en términos de (Transacciones, almacenamiento, transferencias de datos de entrada y salida, etc.) Y así saber si me he excedido en el consumo mucho antes de que se genere la facturación, para poder controlar este consumo.?

    Hola Julián; por ahora no hay dentro de Azure una utilidad por defecto con esta información. Sin embargo tenemos:

    1. El API de diagnostico; sobre el cual podemos construir aplicaciones que nos indiquen el uso de Azure. Ya hay varias implementaciones de terceros...

    2. Para las suscripciones por paquetes, hay correos que nos indican cuando vamos en 75%, 100% y 125% de nuestro paquete. Observa más detalles en: blogs.msdn.com/.../notificaciones-de-consumo-para-usuarios-de-windows-azure.aspx

    3. En el portal de Microsoft Online Services está disponible la factura para poder ver el consumo diario.

    37. Actualmente estoy trabajando en una migración de una aplicación Web y quisiéramos realizar dicha migración a Windows Azure, pero la base de datos es MySQL. ¿se puede subir la base de datos a Azure o de que forma puedo hacer esta labor?

    Una base de datos es fácilmente Migrable a SQL Azure. Primero es necesario pasarla a SQL Server. Luego de allí generar los scripts, y luego usar una herramienta que nos ayuda a optimizar esos scripts a SQL Azure. La herramienta es esta: http://sqlazuremw.codeplex.com/
    Luego es fácil subir los datos usando Integration Services o Management Studio.

    También se puede decidir ejecutar MySQL en Azure. (Ver la siguiente pregunta)

    38. Qué opciones hay para ejecutar MySQL en Windows Azure?

    Como sabemos, MySql se puede instalar como servicio, o como un ejecutable. En el primer caso, se requieren permisos de administrador, que Windows Azure (WAZ) por ahora no nos brinda. Por ende solo podemos recurrir a la segunda opción. En cuyo caso lo que se hace es subir el ejecutable con sus a un Worker Role que lo inicializa y lo deja ejecutando infinitamente. Además faltaría escribir código para hacer un pipeline de todos los llamados. Esto afortunadamente está ya pre-escrito en algo que llamamos MySQL Accelerator. Los Accelerators de WAZ son proyecto pre escritos que tienen todo para correr servicios o aplicaciones especiales en WAZ; tales como MySQL, Tomcat o PHP.

    El Accelerator de MySQL se puede bajar de aquí

    Sin embargo personalmente recomiendo que solo se use este accelerator en casos extremos en los que sea imposible migrar a SqlServer. Por qué? Pues como les mencioné se requiere un Worker ejecutándose indefinidamente para tener el MySQL. Ejecutar el worker rol más pequeño nos vale US$0.12 la hora. Esto como mínimo nos vale US$0.12x24x30=$86.4 GB al mes. Mientras que una giga del ya muy confiable SQL Azure al mes nos vale tan solo US$10. Entonces es mejor hacer buenos cálculos antes de decidir quedarse con MySQL.

    39. Que limitantes tiene la instalación de MySQL en Windows Azure a través del Accelerator?, ¿sobre esta se puede trabajar una base de datos de producción?

    No conozco la estructura interna de MySql. Pero diría que operativamente son iguales, de acuerdo a lo que he trabajado en MySQL. La diferencia es que el ejecutable hay que iniciarlo manualmente con código. El servicio siempre está andando con el server. El Accelerator sin embargo ya trae el código que ejecuta la inicialización del .exe de MySQL

    40. Si no puedo realizar la migración de la bd MySQL a SQL Server, ¿como puedo acceder a la bd MySQL desde una app Web que se encuentra en Windows Azure?. ¿Haciendo uso de Azure AppFabric para conectarme a la bd o por algún puerto o por una app Win Cliente?

    La conexión desde Azure a My SQL es idéntica a cualquier aplicación ASP.NET a My SQL. Solo basta poner la cadena de conexión y listo. No es necesario APP Fabric.

    41. ¿Como se pueden montar aplicaciones de consola a Windows Azure?

    La inicialización de un programa de consola se ejecuta tal como la de MySQL o PHP en sus Accelerators. Pueden copiarse el código. Para subir la aplicación, solo basta agregar el ejecutable a un proyecto que esté asociado a un Worker Role y este subirá en el root de esa aplicación luego del despliegue. Estaré posteando posteriormente los detalles de esta operación.

    42. ¿Hay alguna forma de realizar la programación de las aplicaciones de consola como tareas programadas?

    Se puede crear un worker rol infinito que en determinados lapsos de tiempo lance la consola. Esos tiempos pueden ir por ejemplo en un archivo de configuración o una tabla. También el worker podría más bien responder a mensajes puestos en las colas de Azure y reaccionar ante dichos mensajes para ejecutar el aplicativo.

    43. ¿Una de esas aplicaciones de consola lee archivos en Excel 2003/2007 por medio de las librerías de Interop de Excel, esta funcionalidad se maneja de la misma forma en la plataforma Windows Azure?

    No. Iterop como su nombre lo indica interopera con Office. Office no está instalado en la nube de Azure. Así que no funcionará. Si necesitas interactuar con documentos de Excel o en general de Office, te aconsejo usar archivos .xlsx (o los equivalentes para los otros aplicativos) que soportan el estándar Open XML y que por tanto pueden ser accedidos usando el SDK.

    44. WarNov en Azure para instalar un App con envío de correo masivo tiene que ser a través de una cuenta determinada o puedo usar un servidor SMTP cualquiera, adicional a esto el firewall de Azure me permite realizar esta tarea o existe alguna limitación?

    Hola. Azure permite usar cualquier servidor SMTP y no impone ninguna limitación de conectividad entre la aplicación y el servidor SMTP.

    45. WarNov en Azure puedo instalar aplicaciones como VisualSorucesafe para el manejo de versiones, un bugtracker para registro de bugs y tener un ambiente de pruebas para las aplicaciones, pues nos queremos ahorrar la compra de cualquier clase de servidor.

    No. Esas opciones hoy no están disponibles en Azure; tal vez a futuro. Hoy Azure actúa como PaaS (Plataforma como Servicio) Así que allí solo puedes poner a correr aplicaciones como tal (bueno; y uno que otro servidor sencillo como un TomCat). Pero otros tipos de servidores como Team System o un Oracle por ejemplo, solo podrían instalarse en un esquema de IaaS, con todas las desventajas que ello conlleva; por ejemplo encargarse de las actualizaciones, administración, patchs y todo eso que es lo que evita el PaaS y puntualmente Azure.

    46. Hola WarNov nosotros utilizamos aplicaciones en asp .net framework 3/3.5 hosteadas en servidores externos, para migrar estas aplicaciones a Winazure debemos modificar la arquitectura de nuestras aplicaciones? que tan complejo es el cambio en codificación

    Si la aplicación ya está diseñada en capas, el cambio es muy sencillo. Lo único necesario es añadir una nueva capa entre la capa de servicios o negocio y la capa de presentación. Esta capa manejará la comunicación entre los Web Roles y Worker Roles. En general, las capas de negocio permanecen intactas.
    Si tenemos un proyecto web con todas las capas en el mismo, este se puede pasar tal cual a un Web Role y no hay problema. Solo que se dejarían de aprovechar algunas características especiales de Azure, pero igual otras como la escalabilidad y automatización quedarían disponibles.

     

  • WarNov Developer Evangelist

    Stairway to Azure (3): Componentes de Cómputo y Almacenamiento

    • 4 Comments
    Descarga la presentación PowerPoint de este Post.
     En mi post anterior, vimos por qué en determinado momento, es ventajoso tener alguien que se preocupe por el manejo de la infraestructura de nuestras aplicaciones en vez de nosotros. Y observamos que esto nos dejaría libres para preocuparnos únicamente por desarrollar la lógica de nuestras aplicaciones. Ya no es necesario comprar, instalar y operar sistemas de IT. Además solo pagaríamos por el cómputo y almacenamiento usado (como con los servicios públicos) y no una tasa fija que solo se requiere para ciertos picos. Finalmente, si enfocamos correctamente nuestras aplicaciones, estas pueden escalar muy fácil tomando ventaja de los enormes centros de datos que ofrece Microsoft para hospedar nuestras aplicaciones. Por ejemplo; si decidiéramos crear el siguiente “Facebook” sería muy últi Windows Azure ya que soporta trabajos de presentación (Web Role) y trabajos de proceso (Worker Role). Además si es una iniciativa con poco presupuesto inicial, es ideal ya que a medida de que se tengan más usuarios y se requiera escalar el sistema, se tendrán más recursos para adquirir dentro de Windows Azure.  

    Nuevamente, eso no implica que todo lo desplegaremos en Azure. La idea no es tener únicamente  SaaS sino también S+S. Así que por ejemplo las aplicaciones que hoy en día corren dentro de una organización (on-premises) podrían almacenar datos en la nube o usar otros servicios de la misma. Aplicaciones que corren en el escritorio o teléfonos móviles pueden usar los servicios de la nube para hacer sincronización de datos. 

    Toda esta maravilla requiere de aplicaciones que la exploten! Y para lograr dichas aplicaciones, necesitamos de una plataforma para construirlas. Esta plataforma es provista por Windows Azure y está compuesta por un grupo de tecnologías que nos proveen servicios a nosotros como desarrolladores.  

     

     

    Componentes de Azure

    En Windows Azure básicamente encontramos tres componentes principales:

    Windows Azure

    Ambiente basado en Windows (en esta edición es Server 2008), para ejecutar aplicaciones y almacenar datos en los centros de datos de Microsoft.

    SQL Azure

    Provee servicios de datos basados en SQL Server

    .NET Services

    Infraestructura distribuida para usar con aplicaciones locales y hospedadas en la nube.

    Estos componentes los podemos apreciar en la siguiente ilustración. En este post exploraremos en detalle el componente Windows Azure (Cómputo y Storage) y posteriormente observaremos Sql Azure y .NET Services.

    Windows Azure

    Comencemos entonces con Windows Azure:

    Overview

    Como podemos observar en la gráfica, este componente se subdivide en tres elementos: la estructuta principal o Fabric, el componente de cómputo y el componente de almacenamiento (storage). Empecemos viendo en detalle el componente de cómputo.

    Servicios de Cómputo

    Windows Azure corre sobre una gran cantidad de máquinas, todas ubicadas en los datacenter de Microsoft y accesibles vía internet. Todas estas máquinas conforman un todo que le da el poder y escalabilidad necesarios. Aunque al principio solo se iban a poder ejecutar aplicaciones .NET hoy en día, esta plataforma permite ejecutar aplicaciones nativas de Windows (esto lógicamente comprende todos los lenguajes de programación tradicionales que hoy en día sirvan para correr aplicaciones sobre Windows Server 2008).
    En Windows Azure, una aplicación típicamente tiene múltiples instancias y cada una corre una copia de todo o una parte de la aplicación. Cada instancia corre en su propia máquina virtual. Estas VMs están sobre Windows Server 2008 x64. Las aplicaciones se instancian en uno de dos roles, según escoja el desarrollador. Web Role, o Worker Role:

     

    Azure

     El Web Role corre sobre IIS7 y acepta los llamados HTTP o HTTPS (tecnologías: ASP.NET, WCF, todas las que trabajen con IIS). El balanceo de carga es automático, gracias al Load Balancer incluido en la plataforma.
    El Worker Role no puede aceptar peticiones directas desde el mundo exterior. Típicamente estos roles adquieren sus entradas a través de colas en el Windows Azure storage. Estos mensajes sí pueden provenir de una aplicación exterior o de un Web Role. Son procesados y la respuesta se puede poner en una cola, o enviarse directamente al mundo exterior (esto último sí es permitido).
    Independientemente del tipo de rol en una VM, siempre existe un Agente de Azure que permite la interacción del rol con el resto de la aplicación y la plataforma.
    Aunque es algo que puede cambiar en el futuro, en la actualidad Windows Azure mantiene una relación 1:1 entre VMs y cores físicos de procesador. Esto obviamente garantiza el performance de la aplicación que sea predictible (cada instancia tiene su propio core dedicado; esto también significa que no hay un límite arbitrario en el tiempo de proceso concedido a una instancia en especial). Sin embargo si se desea aumentar el performance, el dueño de la aplicación podría decidir crear más instancias de la misma, solo modificando el archivo de configuración. De esta manera, Windows Azure detecta el requerimiento y ajusta una nueva VM con su respectivo core. Si en algún momento alguna instancia falla, Azure lo detecta e inicia una nueva.

    Esto genera una notoria implicación: Para ser escalable, las instancias de Windows Azure Web role, deben ser stateless (no manejar estado en sesión o aplicación por ejemplo). Todo estado requerido ha de ser escrito en los mecanismos de storage de Windows Azure, o pasados al usuario final por medio de cookies por ejemplo. Además debido al load balancer, no hay forma de garantizar que múltiples peticiones de un mismo usuario sean enviadas a un mismo Web Role.
    Este tipo de implicaciones hace que el pasar aplicaciones a la nube o crearlas destinadas para ellas, no sea completamente transparente comparado con el modelo on-premises. Sin embargo, los cambios son muy sutiles (usar ADO.NET Data Services –compatible con Azure Storage-, tener en cuenta el modelo de colas para los Worker Role, etc.)
    Por esto, para los desarrolladores, trabajar con Windows Azure, es muy similar a crear aplicaciones tradicionales Windows. Microsoft provee templates para Visual 2008 que permiten crear Web Roles, Worker Roles y combinaciones de los dos. Los desarrolladores son libres de usar cualquier lenguaje de programación Windows. Todo esto viene en un SDK de Azure que también contiene una versión de ambiente Windows Azure que corre en la máquina del desarrollador. Este ambiente es conocido como Windows Azure Development Fabric e incluye Windows Azure Storage, un agente Windows Azure y todo el resto de tecnologías que requiere una aplicación para correr en la nube.
    Un desarrollador puede crear y depurar su aplicación usando este simulacro local y luego desplegar la aplicación a Windows Azure, cuando ésta esté lista, aunque en la nube hay cosas que son realmente diferentes. Por ejemplo, no es posible hacer el attach de un debugger a una aplicación en la nube. Así que básicamente para hacer el debugging de una aplicación en la nube, el mecanismo principal sería la escritura a los logs de Windows Azure, vía el agente de Azure.
    Otros servicios provistos incluyen por ejemplo el envío de mensajes desde los agentes a Windows Azure, quien los captura y reenvía por medio de emails, mensajería instantánea o cualquier otro mecanismo especificado. Además también se puede especificar a Windows Azure que detecte fallas automáticamente y envíe alertas. También está disponible información acerca de consumo de recursos tales como tiempo de proceso, ancho de banda entrante y saliente y almacenamiento.

    Cuando el desarrollador ha depurado completamente su aplicación de manera local, ésta ha de ser instalada en un proceso de dos etapas. Primero se sube la aplicación al área de staging en Azure. En este momento, la aplicación queda identificada con un nombre DNS que tiene la forma <GUID>.cloudapp.net, donde <GUID> representa un identificador asignado por Windows Azure. Este nombre es asociado con una dirección IP virtual (VIP) que identifica al balanceador de carga a través del cual la aplicación será accedida. En el momento en que se decide pasar ya la aplicación a producción, se usa el portal de Windows Azure para solicitar el paso a producción. En este caso, Azure automáticamente cambia la entrada en sus servidores DNS para asociar la VIP con el nombre de producción que el desarrollador ha escogido; por ejemplo: myapp.cloudapp.net. (Es posible usar un nombre de dominio personalizado, sencillamente creando un DNS alias usando un CNAME estándar). Otro punto para resaltar aquí: las IPs reales de las aplicaciones jamás son reveladas.

    Esto brinda un fuerte componente de seguridad.

    Servicios de Almacenamiento

    Esta parte de la plataforma también provee un tipo de almacenamiento: Azure Storage. Que es distinto a SQL Azure (otra parte de la plataforma). El almacenamiento Azure no es relacional. Su lenguaje de consulta tampoco es SQL. Es un almacenamiento mucho más sencillo, pero más escalable y más rápido que un almacenamiento relacional. Básicamente hay tres tipos de almacenamiento Azure:

    Storage

     

    1.       BLOBS:  (Binary Large Objects). Prácticamente, archivos. Los requerimientos de File System de nuestras aplicaciones en la nube, se suplen con los blobs. Un blob puede ser de hasta 50Gb de espacio y se encuentra dividido en bloques, de manera que cuando se hacen transferencias y ocurren fallos, la transferencia puede continuar desde el último bloque transferido correctamente.

    2.     Tablas: Los Blobs son la opción justa para algunas situaciones. Pero para otras son muy poco estructurados. Son muy sencillos de entender; pero para permitir a las aplicaciones trabajar con datos de una manera más formal se proveen las tablas. Estas tablas no son tablas relacionales y tienen su complejidad:
           
            Tables

    De hecho, a pesar de que se llaman tablas, los datos que ellas contienen realmente se encuentran almacenados en una jerarquía simple de entidades que contienen propiedades. Cada propiedad tiene un nombre, un tipo y un valor. Varios tipos son permitidos incluidos: Binary, Bool, DateTime, Double, GUID, Int, Int64 y String. Una propiedad puede tomar diferentes tipos dependiendo de los valores almacenados en ella. De hecho, no hay obligación de que todas las propiedades en una entidad tengan el mismo tipo. El tamaño para cada entidad puede ser de hasta 1MB y siempre es accesada como una unidad. Cuando se lee una entidad se retornan todas sus propiedades y al escribir una, esto se hace atómicamente de manera que se reemplazan todas sus propiedades. Y en vez de usar SQL, una aplicación accesa los datos de una tabla usando las convenciones definidas por ADO.NET Data Services (no ADO.NET convencional), o REST. La razón para este tipo de solución, es que nos permite escalar el almacenamiento de una forma tal, que podemos distribuir nuestros datos en distintas máquinas (muchas más de las que se posibilitan con bases de datos relacionales tradicionales); de hecho, una sola tabla en SQL Azure puede ser de terabytes!

    3.    QUEUES: Los blobs y las tablas están enfocados en almacenamiento y acceso de datos. La tercera opción en Windows Azure son las colas, que tienen un propósito muy distinto. Una función principal de las colas es proveer un mecanismo para que las instacias de tipo Web Role se puedan comunicar con las instancias de tipo Worker role. En la siguiente gráfica, se describe el funcionamiento de las colas. En un escenario típico, un rol acepta trabajos de los usuarios (paso 1). Para pasar esos requerimientos a los worker role, se escribe un mensaje en la cola (paso 2). Este mensaje, puede ser de hasta 8kb y es posible usarlo para que contenga URIs apuntanto a blobs o entidades en tablas en caso de que se requiera transmitir más información. El worker lee los mensajes de su cola (paso 3) y ejecuta el trabajo como tal. Una vez leído el mensaje, éste no se borra. En vez de esto, el mensaje se hace invisible a otros lectores por un período de tiempo (por defecto 30 seg). Cuando el worker ha completado su trabajo, en ese momento se borra explícitamente de la cola. (paso 5)
            QUeues


    Separar las instancias web de las worker tiene sentido porque libera al usuario de tener que esperar a que una tarea larga sea procesada y también hace la escalabilidad más simple, dado que solo sería necesario agregar más instancias. Pero por qué hacer que las instancias borren explícitamente los mensajes? Esto se hace para manejar fallos. De esta manera si  un worker que está haciendo el trabajo indicado falla, el mensaje no se borrará de la cola.  Así que cuando vuelva a estar visible, el mensaje reaparece en la cola para ser leído por otro worker. Y de esta manera se proteje el mensaje de fallos.

    Independientemente del tipo de almacenamiento, todo dato almacenado es replicado tres veces, para garantizar redundancia de datos y tolerancia a fallos.

    El storage de Windows Azure puede ser accedido por aplicaciones de Windows Azure o cualquier otra. En ambos casos, todos los tres tipos de storage pueden consultarse a través de REST. Todo es nombrado usando URIs y accesado con operaciones HTTP estándares. No obstante, un cliente .NET podría usar ADO.NET Data Services o LINQ para acceder más cómodamente a esta información. Pero un cliente java  usaría REST estándar. Por ejemplo, un blob puede ser leído con un HTTP GET contra un URI formateado así:

    http://<StorageAccount>.blob.core.windows.net/<Container>/<BlobName>

    De manera similar, una consulta sobre una tabla sería:

    .table.core.windows.net/?$filter=http://<StorageAccount>.table.core.windows.net/<TableName>?$filter=<Query>

    y una cola se accesaría:

    .queue.core.windows.net/http://<StorageAccount>.queue.core.windows.net/<QueueName>

    La Estructura (Fabric)

    Todas las aplicaciones de Windows Azure y todos sus datos en el Storage, residen en alguno de los centros de datos de Microsoft. Dentro de ese centro de datos, el conjunto de máquinas dedicadas a Windows Azure se organizan en una fábrica tal como lo muestra la siguiente gráfica:

     

    Fabric

     

    Tal como se aprecia, la Estructura Azure es un gigantesco grupo de máquinas administrado por un componente de software llamado Fabric Controller. Este controlador es replicado a través de un grupo de 5 a 7 máquinas y es dueño de todos los recursos en la estructura: computadoras, switches, balanceadores de carga y más. Dado que el controlador se comunica con un “Fabric Agent” en cada máquina, también tiene información de cada aplicación en la estructura. Como punto a resaltar, puedo mencionar que el Storage también aparece ante el controlador como una aplicación más. Así que el controlador no conoce los detalles del storage; esto último indica obviamente que el almacenamiento es autocontrolado. Es decir; el Storage, es solo una aplicación más dentro de la estructura, que se administra autónomamente.

    Este amplio conocimiento le da la capacidad al Fabric Controller de cumplir múltiples funciones como monitorear todas las aplicaciones que están corriendo y de esta manera ser capaz de dar información en vivo, de qué es lo que está pasando en la estructura. Administra los sistemas operativos teniendo en cuenta aspectos como las actualizaciones de los Windows Server 2008 que corren en las VMs de Azure. También decide dónde deben correr las aplicaciones, escogiendo los servidores físicos para optimizar la utilización del hardware. Para lograr esto, el controlador depende del archivo de configuración que es subido con cada aplicación a la nube. Este archivo provee una descripción basada en XML de las necesidades de la aplicación: cuántos roles web necesitará, cuantos roles de trabajo y otros detalles. Cuando el controlador recibe una nueva aplicación, éste usa su archivo de configuración para determinar cuántos roles de cada tipo ha de crear. Una vez creadas estas VMs, el controlador las monitorea. Si una aplicación requiere 5 instancias de Web Role y una muere, el controlador automáticamente reiniciará una nueva.

    Esta creación de instancias debe realizarse inteligentemente. Por ejemplo, suponiendo que además de las 5 instancias web el desarrollador pide cuatros instancias worker. Una asignación ingenua podría poner todas estas instancias en máquinas en el mismo rack servidos por el mismo switch. Si el rack o el switch fallara, la aplicación entera quedaría no disponible. Dadas las metas de alta disponibilidad de Windows Azure, hacer que una aplicación dependa de puntos sencillos de falla como este, no es una buena idea.

    Para evitar esto, el controlador agrupa las máquinas en conjuntos llamados “Dominios de Falla”. Cada dominio es parte de un data center que independizaría las fallas únicamente a su contenido. Eso se ilustra en la siguiente gráfica:

    Failure

    En este ejemplo sencillo, la aplicación está corriendo en dos instancias Web y el datacenter está dividido en dos Dominios de Falla. Cuando el controller despliega la aplicación, se establece una instancia de Web Role en cada uno de los dominios. Este arreglo significa que una falla en el hardware no va a provocar que toda la aplicación se caiga.

    Hasta aquí vimos todo lo relacionado al componente de Windows Azure. En mi post Stairway to Azure (4): Sql Azure y .NET Services, veremos la descripción de estos otros dos componentes.

  • WarNov Developer Evangelist

    Conviértete en un Microsoft Community Specialist (Beta Program)

    • 12 Comments

    Abierta la convocatoria únicamente para personas que deseen ser MCS en Infraestructura. En este caso, enviar sus correos a itprocol@microsoft.com!!!

    Microsoft Community Specialist (MCS) es un nuevo programa creado por el Developer Evangelist de Microsoft Colombia (por ahora solo aplica en Colombia) para entusiastas de nuestras tecnologías que aparte de el gran provecho que toman de ellas, están interesados en compartir ese conocimiento con la comunidad y además acceder a un conjunto de beneficios adicionales que desde Microsoft les reconocemos por su invaluable labor. Es un programa basado en puntos. Estos puntos se ganan por actividades ejecutadas y representan ascensos en una distribución de tres niveles y también premios y regalos que incluyen Hardware Microsoft (XBOX, Kinect, Wndows Phone 7, Headsets, Mouse Presenter, etc.), participación VIP en nuestros eventos y cursos, vouchers de certificación y mucha visibilidad en la industria y al interior de Microsoft.

    clip_image002

    Por qué Beta?

    1. Porque existen muchas situaciones que es posible que sean difíciles de detectar antes de poner en marcha el programa.
    2. Porque se requiere rapidez y agilidad para salir con el programa
    3. Porque se espera que el programa evoluciones sobre la marcha y ofrezca más beneficios para todos.

    Beneficios generales del programa

    La primera vez que una persona ingresa a nuestro programa, recibe como mínimo estos beneficios por pertenecer al mismo. Si una persona al ingresar por primera vez a nuestro programa entra a un nivel más avanzado, recibe estos beneficios más los adicionales que se describen en cada nivel de MCS.

    1. Kit de Bienvenida

      1. Carnet virtual de Membrecía
      2. Gorra
      3. Camiseta
      4. Libros Digitales

    Este kit solo se da la primera vez que un usuario está en un nivel.

    2. Plan de capacitación técnica (autoestudio)
    3. Acceso a los cursos de capacitación técnica dirigidos por expertos de Microsoft o sus partners que programe la subsidiaria
    4. Curso de capacitación en temas alternos
    1. Oratoria y presentación en público
    2. Ventas
    3. Expresión Escrita
    5. Reuniones sociales con el grupo de entusiastas

    XBOX, cata de vinos, pizza, etc.

    6. Ubicaciones preferenciales en eventos de Microsoft Colombia

    7. Visibilidad ante partners y clientes de Microsoft
    Este es uno de los beneficios más importantes pues Microsoft mismo recomienda a sus especialistas ante clientes y otros partners que acuden a nosotros en búsqueda de profesionales que les ayuden a resolver sus necesidades en tecnología.

    Compromisos generales del Programa

    El único compromiso requerido, es mantener mínimo un balance de 500 puntos MCS al trimestre. Excepto cuando el especialista es MVP. Los MVPs automáticamente se ubican en el nivel Gold y permanecen en este siempre y cuando mantengan su calidad de MVP. Si la pierden, deberán demostrar un balance de 500pts. Para mantenerse en el nivel. Cuando no se demuestre este balance de puntos, se descenderá un nivel en el programa. Y si un especialista en nivel member no lo demuestra, tendrá que aplicar de nuevo al programa para ser aceptado.

    Cómo se accede al programa?

    1. Por invitación de un Evangelist de Microsoft
    2. Solicitando ser incluido o por invitación de un MCS

    a. Se envía un correo a devcol@microsoft.com indicando el deseo de participar y la o las tecnologías sobre las cuales se posee conocimiento y se desea hacerse especialista

    b. Se entra a un período de prueba despues del cual se envía un reporte de actividades al Evangelist. Este reporte es evaluado para determinar si es aceptada la persona como MCS. Se puede requerir de una reunión adicional entre el Evangelist y el postulado para la aceptación.Además se hace una entrevista con el Evangelist para determinar el nivel al que se ingresaría, pues de acuerdo al nivel de especialización, se podría entrar de inmediato al nivel Silver.

    Capacidades comunicativas de un MCS

    Un MCS puede serlo solo teniendo buenas capacidades de comunicación escrita, a través de blog posts o foros. Es un valor agregado importante claro está, si es una persona a quien le gusta mucho grabar videos en los que oralmente explica un tema y más aún si se siente cómodo y expresa muy bien sus ideas en eventos presenciales.

    Niveles de Conocimiento

    El Nivel de Conocimiento en una tecnología dada, en Microsoft se mide desde 0 donde no se sabe nada a 400 donde se es experto. El nivel 100 indica que una persona tiene un conocimiento básico de la herramienta/tecnología. 200 indica que la persona puede trabajar con esa herramienta/tecnología. 300 indica que la persona domina esa herramienta/tecnología y el 400 como se especificó indica que la persona es experta.

    Niveles de un MCS

    El programa MCS tiene tres niveles de acuerdo al grado de especialidad y colaboración del especialista.

    image

    Cada nivel tiene un conjunto de requisitos para recibir en él a algún integrante. De igual manera ofrece un regalo de bienvenida y beneficios distintos. Así mismo, el programa de niveles maneja un esquema de puntos para permitir la graduación de nuestros especialistas así como el reconocimiento a sus actividades.

    Member

    Este es el nivel de entrada al programa MCS. Son candidatos estándar para pertenecer a él Microsoft Student Partners (MSPs). Desarrolladores Junior y en general entusiastas que estén comenzando con nuestras tecnologías. Requiere Un conocimiento Nivel 100 en una o más de nuestras tecnologías/herramientas. A parte de todas las colaboraciones libres hechas en foros, blogs, webcasts, etc., el especialista puede ganar puntos y visibilidad profesional ya que Microsoft lo recomendaría para eventos académicos, o aquellos en los que el nivel de conocimiento no deba ser muy profundo. Esto garantiza que podemos ir ofreciendo oportunidades de experiencia para que el especialista pueda ir ascendiendo en el programa.

    Kit de Bienvenida

    El mismo que se describe en los beneficios generales.

    Silver

    Aquí tenemos a especialistas que ya llevan un tiempo trabajando con nosotros, o que tienen un conocimiento entre 200 y 300 de sus tecnologías elegidas. A parte de todas las colaboraciones libres hechas en foros, blogs, webcasts, etc., el especialista puede ganar puntos y visibilidad profesional ya que Microsoft lo recomendaría para eventos académicos, visitas a clientes, ejecución de proyectos y demás que requieran un nivel de conocimiento 200-300. Esto garantiza que podemos ir ofreciendo oportunidades de experiencia para que el especialista pueda luego ascender al tope de nuestro programa.

    Kit de Bienvenida

    El mismo que se describe en los beneficios generales y adicionalmente: Un elemento de Hardware de Microsoft (cámara, headset, mouse) + Suscripción a MSDN por un año.

    Gold

    Aquí tenemos al top de nuestros especialistas que ya llevan un tiempo trabajando con nosotros, o que tienen un conocimiento entre 300 y 400 de sus tecnologías elegidas o que tienen el distintivo de MVP. A parte de todas las colaboraciones libres hechas en foros, blogs, webcasts, etc., el especialista puede ganar puntos y visibilidad profesional ya que Microsoft lo recomendaría para eventos académicos, visitas a clientes, ejecución de proyectos y demás que requieran un nivel de conocimiento 300-400. Esto garantiza que podemos ir ofreciendo oportunidades de experiencia para que el especialista si no lo es, se pueda convertir en un MVP o llegar a tal punto que pueda trabajar como consultor independiente.

    Kit de Bienvenida

    El mismo que se describe en los beneficios generales y adicionalmente: Un elemento de Hardware de Microsoft (cámara, headset, mouse) + Suscripción a MSDN por un año + Nominación MVP

    Cómo ganar puntos?

    1. Eventos, webcasts online, MSDN/TECHNET Onsite, Capacitaciones: 200 puntos por hora
    2. Posts / Webcasts on demand: 50 puntos
    3. Bono por cada 200 seguidores en twitter: 25 puntos
    4. Bono por cada 400 seguidores en fb: 25 puntos
    5. Lograr una certificación: 500 puntos
    6. Asistir como invitado a un curso de capacitación: 100 puntos
    7. Completar un Learning Path: 200 puntos

    clip_image002[6]

    Condiciones para ascender

    Si un MCS hace al menos 3000 puntos en un trimestre, se convierte automáticamente en candidato de ascenso. El comité de DPE en Microsoft estudiará su caso y aprobará su ascenso. De esta manera para ascender de Member a Silver se requiere tener mínimo 3000 puntos, de Silver a Gold se requieren mínimo 6000 puntos. Los puntos siempre se acumulan, de manera que a mayo experiencia y colaboración, más puntos.

    MCS Awards

    Cada trimestre se ejecutan los MCS Awards Q Edition; que premian a los contribuyentes más activos durante dicho trimestre. El especialista que haya acumulado más puntos en el trimestre se lleva un voucher de certificación y Microsoft Hardware. El segundo puesto, se lleva Microsoft Hardware.

    Además, al finalizar el año, se lleva a cabo el MCS Award Y Edition que premia al entusiasta con más puntos acumulados durante todo el año.

    Así que desde ahora están bienvenidos a postularse o recomendarle a alguien que piensen estaría agradado de estar en este rol. En poco tiempo comenzaremos los trabajos en el portal de MCS Colombia para tener plenamente identificados a todos nuestros miembros y establecer todo el Web 2.0 que se merecen.

    clip_image002[8]

  • WarNov Developer Evangelist

    Mi aplicación web no carga imágenes ni estilos cuando publico en IIS7!!!

    • 2 Comments

    Puede que te haya pasado que tienes una aplicación web .NET ya sea MVC o ASP.NET que en modo diseño o publicándola con el servidor Cassini (el incluido en Visual Studio) todo funcione correctamente en cuanto a carga de imágenes y estilos se refiere.

    Pero cuando lo ponen en un IIS7, Naranjas! Ya no hay ni imágenes ni estilos! Sick smile

    Miren el sitio con estilos

    Si esto les ha sucedido alguna vez, el problema puede ser muy sencillo de corregir. Solo tienen que verificar que el IIS tenga activado el módulo de presentación de contenido estático; aquí lo pueden chequear para Windows 7:

    image

    Para otros sistemas con IIS7, sigan estas instrucciones.

    Hope it helps!

  • WarNov Developer Evangelist

    WebMatrix: Fast & Free Web Development

    • 9 Comments

     

    Update: Hoy 6 de Octubre salió al aire el Beta 2 de WebMatrix.  Se espera la versión final para fin de año. En conmemoración les comparto un libro que se está editando y nos enseña la sintaxis Razor, y además la presentación que uso cuando muestro este producto.

    Visual Studio .NET es la herramienta mas poderosa para desarrollar virtualmente cualquier tipo de aplicaciones para computadores.
    Pero cuando somos novatos en la programación, entrar a un Visual Studio a desarrollar se siente como meterse a la cabina de un Airbus A380 a pilotearlo…

    Para aprender a pilotear, sería mejor en un Cessna que tiene solo los controles básicos y nos permite ir aprendiendo sin abrumarnos con tantos controles.

    Hoy en día Microsoft tiene para nosotros un conjunto de herramientas GRATUITAS que nos permiten entrar al mundo de desarrollo Web de una manera bastante sencilla y rápida.

    WebMatrix

    Contiene todo lo necesario para desarrollar aplicaciones web:

    •Free

    •Liviano

    •IIS Developer Express como Servidor Web

    •ASP.NET como framework tecnológico ahora presentando a RAZOR: una sintaxis para programar de una manera más sencila

    •SQL Server® Compact como motor de base de datos

    •IDE para edición de páginas web.

    A continuación para mostrar la agilidad de la herramienta, les muestro un video en el cual construyo una aplicación que accede a Twitter y nos muestra el feed de una persona en particular. Más adelante vendrán más posts mostrando más características de WebMatrix.

    Update: Hoy 6 de Octubre salió al aire el Beta 2 de WebMatrix.  Se espera la versión final para fin de año. En conmemoración les comparto un libro que se está editando y nos enseña la sintaxis Razor, y además la presentación que uso cuando muestro este producto:

     

    Para aprender más de WebMatrix no se pierda nuestro Web Camp Colombia 2010.

Page 1 of 14 (326 items) 12345»