MSDN Blogs
  • WarNov Developer Evangelist

    Durabilidad de nombres de servicio en Windows Azure

    • 0 Comments

    Cuando creamos servicios en Windows Azure que usan WebRoles o WorkerRoles, hemos de especificar un nombre para estos servicios.

    Este nombre debe cumplir con las reglas para nombres de dominio, pues esta será la forma en que accedamos a ellos.

    A estos nombres de servicios podemos asignarle el dominio que queramos del cual seamos propietarios después de haberlo comprado por ejemplo en GoDaddy. Esto se logra a través de un sencillo cambio en la configuración del registro del dominio en la herramienta del proveedor del mismo.

    A veces sucede que tenemos un servicio establecido con un nombre dado y luego creamos otro servicio y queremos que este otro servicio reemplace al primero con nombre y todo. Obviamente esto nos lleva a pensar que tenemos que eliminar el servicio original y desplegar el nuevo y asignarle el nombre que ya habíamos definido.

    Cuando arrancó Windows Azure, cuando eliminábamos un servicio, el nombre quedaba "ocupado" hasta por varios días. De esta manera el reemplazo no se podía hacer de inmediato.

    Hoy en día si borras un servicio, el nombre del mismo queda INMEDIATAMENTE disponible para que puedas poner un servicio en su reemplazo si así lo deseas. De esta manera, se ofrece una gran ventaja al desarrollador que puede reemplazar sus servicios sin demora, manteniendo los nombres que están esperando los clientes que se han construido basados en dicho servicio.

  • WarNov Developer Evangelist

    The All New Windows Phone 8!

    • 6 Comments

    image

    Windows Phone 7 ya ha abierto un gran camino para lo que hoy conocemos como Windows Phone 8. Ya tenemos 100.000 apps (y contando) en el Marketplace y desde Microsoft agradecemos a todos los desarrolladores en el mundo que han colaborado para lograrlo (en Colombia hemos puesto nuestro granito de arena con cerca de 400 apps hasta ahora. Por otro lado, observando los ratings de Smart Phones en Amazon, de los 9 primeros puestos, mejor calificados por los consumidores en el mundo, 7 obedecen a Windows Phone 7 y hago énfasis en que los tres primeros puestos son ocupados por teléfonos con nuestro sistema operativo.

    Este, ha sido el mes en el que yo como Developer Evangelist, he recibido más información de novedades, que en todo el tiempo que llevo disfrutando en Microsoft. Primero, las novedades sin precedentes de Windows Azure que ahora también es IaaS. Luego la formidable Surface y ahora,  Windows Phone 8 (WP8).

    Nuevo Kernel Unificado

    El cambio que determina la mayor parte de novedades en nuestra plataforma, es la unificación del kernel de WP8, dentro de la familia NT. Esa unificación permite por ejemplo que drivers creados para PCs, slates y tablets, sean compatibles también con el teléfono.

    Multicore

    También como novedad trae el soporte a IPV6 y otra gran consecuencia nos trae que podemos soportar teóricamente hasta 64 núcleos de procesamiento. De hecho, los primeros aparatos WP8, vendrán con dual core, para ofrecer una experiencia de usuario más rápida y fluida que la que se tiene hoy en día. .

    Más resolución

    Esto nos lleva automáticamente a otra gran novedad. La inclusión de otras dos resoluciones adicionales a la tradicional 800x480. Tendremos aparatos con resoluciones HD y WHD, para ofrecer imágenes de una realidad sin precedentes. Lo mejor de todo, es que los desarrolladores no tendrán que lidiar con estos cambios, pues sus apps se renderizarán correctamente en estas resoluciones sin cambios adicionales.

    Soporte Nativo

    La unificación de kernel (que es el mismo usado por ejemplo en WindowsRT) obviamente nos trae también la oportunidad de desarrollar natívamente para WP8. I mean, usando C y C++. Unan esto por ejemplo a Direct3D y entonces podrán esperar en el corto plazo, juegos como Halo y Assassins Creed para WP8. En realidad tendremos un poder de renderización y animación propio de cualquier consola de juegos de alto nivel.

    Multitasking – VoIP

    image

    Estas mejoras nos permiten tener más poder con los procesos de multitarea. Especialmente con tecnologías como VoIP y Video Chat (Skype). Por ejemplo, ahora podremos observar como cuando tenemos una llamada de este tipo activa, podemos seguir ejecutando otras tareas en nuestro aparato sin ninguna interrupción. Y por ejemplo si estamos usando manos libres, el flujo de sonido de la llamada VoIP será redireccionado a esos dispositivos.

    Games - Direct3D

    El soporte nativo además, abre las puertas a que entornos como Unity3D (game engine en el que programamos usando C# o Boo y producimos juegos para múltiples plataformas como Windows, MAC, Android, IPad, IPhone, etc) puedan evolucionar para poder ofrecer la experiencia unificada de creación de juegos también para WP8 y que por ejemplo apps nativas creadas para IOS sean fácilmente portadas también a nuestra plataforma. Obviamente la portabilidad de código entre WinRT y WP8 será total y sólo tendremos que fijarnos en cambios relativos al form factor de los dispositivos.

    Y ya que mencioné a C y C++ como una alternativa para desarrollar sobre WP8, les cuento que tenemos otras dos alternativas: el ya muy conocido XAML + (C# o VB) y HTML5 a través del WebControl o de entornos como PhoneGap.

    IE10 + HTML 5

    Hablando de HTML5, en Windows Phone 8, ya vendrá la última versión de nuestro browser: Internet Explorer 10. Con exactamente el mismo motor de renderización de la versión de PC y la capacidad de ejecutar el HTML5 de manera nativa obteniendo unos resultados inigualables en cuanto a velocidad y fluidez en la renderización, sin dejar de lado los estándares ni la seguridad: En esta versión, el Explorter de WP8 nos informará cuándo estamos accediendo a sitios sospechosos, igual a como ocurre en el desktop.

    De hecho apps creadas para la web en HTML5, se pueden correr perfectamente en el browser del WP8, dado que ya viene optimizado para el touch en browsers. Y por si fuera poco, solo haciendo ligeras modificaciones (aquellas que tienen que ver con las características del tamaño de la pantalla), podríamos tener estas apps corriendo de manera nativa como una app propia del teléfono.

    Storage

    En cuanto a hardware, se ha agregado soporte a memorias MicroSD extraíbles, para agregar más almacenamiento y versatilidad en el teléfono.

    NFC

    NFC entre otras cosas ahora nos ha permitido generar toda una nueva experiencia llamada "Wallet Experience" consistente en  convertir al WP8 en la billetera que usamos todos los días. Tarjetas débito, crédito, cupones, membresías, etc., van a estar disponibles dentro del teléfono para que las podamos usar para pagar compras, recibir ofertas, ganar puntos, entrar a sitios, consultar saldos, etc. Obviamente el Wallet de #WP8 se puede asegurar con un pin, de la misma manera que aseguramos nuestras tarjetas.

    El servicio de Wallet, dependerá de que los operadores lo implementen. Orange en Francia ya está listo para el Wallet Hub y ofrecerá sus servicios en ese país, en bien aparezca WP8.

    image

    El NFC también permite por ejemplo, que acerquemos nuestros teléfonos a carteles o avisos que tengan chips NFC y de allí capturar información de la misma manera en que usamos los tag o QR codes. De manera similar sucede con información que queramos transferir desde una tablet al teléfono por ejemplo! Esto abre la posibilidad a nuevos escenarios como apps o juegos que se activan en la tablet al acercarle el teléfono que está ejecutando esa misma app o juego, para iniciar una partida multi-jugador en multi-dispositivos.

    AMBIENTE CORPORATIVO

    Un punto muy importante también dentro de estos anuncios, es que el ambiente corporativo ahora toma más relevancia. Por ejemplo, ahora vamos a tener la posibilidad de encriptar toda la información del dispositivo a través de la tecnología de BitLocker y también hacer secure Boot.   

    Existirá también un Hub corporativo, a través del cual se podrán instalar las apps corporativas sin que tengan que aparecer en el marketplace.

    INCLUSIONES DE SOFTWARE

    Mapas Nativos! Con tecnología Nokia / Navteq y la gran app Nokia Drive que nos da guías para movilizarnos bien sea a pie o en vehículos. Todos los teléfonos WP8 la incluirán, aún en modo offline. Es decir, los mapas vienen preinstalados, de manera que no necesitamos conexión de datos para poder utilizarlos!!!

    El speech se ha mejorado significativamente, ahora con el trabajo en conjunto con Audible que ha creado una plataforma (disponible también para WP7) para que las apps no solo puedan ser lanzadas con comandos de voz, sino que una vez abiertas, también sean operadas con la voz. Si eres desarrollador, ten en cuenta esta característica para adicionarla a tus apps, en caso de que aplique.

    La pantalla de inicio también fue trabajada para ser aún mejor; ahora es más personalizable y con tiles a los que se le pueden cambiar los tamaños, de manera que podemos tener muchas más apps ancladas al inicio, sin tener que desplazarnos verticalmente. Al final, lo que se ofrece es una manera única, no igualada por ningún otro teléfono en el mercado, para personalizar y hacer nuestro el teléfono. Con el color que queremos, el tipo de apps que queremos y la organización que queremos.

    Observemos un video de cómo funciona:

    La cámara tendrá nuevas funcionalidades como un Timer, un creador de Panoramas, y Smart Groove Shots que  permite tomar fotos de un grupo y luego detectar las mejores caras que hizo cada quien y finalmente armar la foto óptima.

    CUESTIONAMIENTOS

    Para finalizar, algunas de las dudas que nos quedan serían:
    Se podrá actualizar Windows Phone 7.5  a WP8? La respuesta corta es no. Sin embargo tendremos una última actualización para esta serie, que entre otras mejoras incluirá todo lo que tiene que ver con la nueva Start Screen que ya mencionamos. Esta, será la versión 7.8. Debemos tener en cuenta que WP8 incluye un kernel totalmente diferente al de WP7 que además da soporte a varios core y a otras resoluciones, por lo que es imposible lograr que un WP7 adquiera estas características meramente a través de una actualización de software.

    Esto nos lleva a otra pregunta: Las apps de WP7 correrán en WP8? Por supuesto! Pero eso sí, como es de lógica costumbre, una app compilada para WP8 no podrá correr en WP7.

    Cuándo puedo comenzar a desarrollar par WP8? Antes de terminar este verano estará disponible el nuevo SDK para escribir apps orientadas a WP8.

    Un solo mes; 3 espectaculares lanzamientos y todavía queda mucho por venir. Estén pendientes del este blog en donde encontrarán lo último de nuestras tecnologías.

  • WarNov Developer Evangelist

    Windows Phone Summit 2012

    • 0 Comments

    Aquí el cubrimiento en vivo, de este evento que develará las novedades que esperamos en nuestro Sistema Operativo para teléfonos!!

     

  • 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

    WP7: Agentes en Background

    • 0 Comments

    Como su nombre lo indica, nos van a permitir ejecutar trabajos en Segundo plano, aún cuando la aplicación no esté activa.

    OJO: No están disponibles para los aparatos que solo tienen 256Mb de memoria.

    Tipos de Tareas:

    Periódicas

    Corren en un pequeño intervalo y recurrentemente. Por ejemplo para informar la locación del dispositivo y ejecutar sincronizaciones de poco tamaño.

    Intensivas

    (En Recursos) Largos períodos de ejecución cuando el teléfono cumple ciertas características de uso (actividad de cpu, fuente de poder, tipo de red. Útil para sincronizar grandes cantidades de datos al teléfono cuando no está siendo usado.

    Una app solo puede tener un agente de estos, que puede ejecutar ambos tipos de tareas.

    Restricciones:

    Existen unas apis que no se pueden usar dentro de las tareas que ejecutan los agentes: Cámara, vibración, radio, sensores, notificaciones, XNA, y otras que encuentran aquí.

    La geolocalización está disponible de manera restringida, ya que no reporta la ubicación real, sino que hace un cache cada 15 minutos, sin embargo, acciones como las que usan los HttpWebRequests desde los agentes sí se pueden hacer sin problema.

    Los agentes no pueden usar más de 6MB, excepto cuando manejan audio, en cuyo caso tienen hasta 15Mb. Cuando se exceden estos límites, la tarea se apaga de inmediato. Cuando cualquier tarea es apagada dos veces debido a un alto empleo de la memoria, dicha tarea es removida del agendamiento de tareas del teléfono. Es útil recordar que estos límites no aplican en modo debug, por lo que es necesario emplear el API ApplicationMemoryUsageLimit para verificar cuánto está empleando la tarea en tiempo de depuración.

    Los agendamientos de las tareas no se pueden hacer por un tiempo mayor a dos semanas. Para poder reagendar, la app tienen que ejecutarse en primer plano.

    Cuando se tienen agentes periódicos, lo normal es que corran mínimo cada 30 minutos. Este tiempo puede desfasarse hasta en 10 minutos, debido a otras tareas que están en segundo plano. La ejecución no debe ser mayor a 25 segundos.

    WP7 tiene un modo de operación llamado Battery Saver: Este modo que solo se puede habilitar por el usuario, podría impedir que los agentes periódicos se ejecuten.

    WP7 tiene una restricción acerca de la cantidad de agentes que pueden estar corriendo en un dispositivo dado y esta puede ser tan pequeña como 6. Antes de este límite, WP7 puede lanzar mensajes al usuario que indiquen que la cantidad de agentes está subiendo mucho y puede que la batería se agote más rápido. Si el límite ya se ha cumplido, cuando la app trata de agregar una nueva tarea, habrá una excepción de tipo InvalidOperationException que debería ser manejada para que la app no se estrelle por este motivo.

    Hay documentación de buenas prácticas que pueden encontrar aquí. En el caso de los agentes intensivos, estos pueden durar ejecutándose hasta 10 minutos. No pueden correr a menos que el dispositivo tenga más de 90% de batería, la pantalla esté bloqueada, no exista una llamada activa, esté conectado a una fuente de poder externa y a datos en una red distinta a la red celular. Si una tarea intensiva comienza a ejecutarse y por algún motivo alguna de las condiciones anteriores deja de cumplirse, de inmediato la tarea es terminada.

    Es bueno tener en cuenta que estas tareas intensivas pueden llegar a no ejecutarse nunca, debido a la gran cantidad de condiciones impuestas. Por ejemplo si el usuario no tiene WiFi en ningún lado, la tarea nunca se ejecutará.

    En mi sitio de preguntas y respuestas he respondido algunas preguntas acerca de los agentes en background:

    1. Hay alguna forma de manejar con código en wp7 que un agente sea suspendido porque hay bajos recursos de memoria o de batería?

    2. En wp7, se pueden concatenar varios agentes periódicos para lograr tener reportes cada 2 minutos en vez de cada 30?

    3. Es posible evitar a través de código que un usuario de WP7 apague los agentes de ejecución en background?


    Bien; ya que vimos las generalidades, si quieres incluir Background Agents en tu app, sigue este link, donde nos enseñan cómo implementarlos.

  • WarNov Developer Evangelist

    La “Asincronía” y su evolución en pro de la UX

    • 2 Comments

    Hace ya varios años, los primeros servicios Web que usábamos eran síncronos. Hacíamos un llamado a la web y nos quedábamos esperando muy pacientemente a que el servidor nos respondiera y la respuesta bajara.

    Para nosotros era suficiente con obtener la respuesta!

    Nos nos importaba cuánto se demorara... el hecho que después de un tiempo llegara esa información que necesitábamos ya era suficiente para sentir la magia de la web!!! El resto era irrelevante! Aún el hecho de que la interfaz de usuario se congelara no nos importaba. Finalmente, teníamos nuestro mensaje... valía la pena esperar.

    Pero humanos somos y cada vez queremos más. Cada vez queremos mejores opciones y mejores comportamientos. Más comodidad!!!
    Nos comenzó a parecer un fastidio que la interfaz se congelara y que ni siquiera pudiéramos mover la ventana de la aplicación... De ahí en adelante comenzó la evolución que hoy en .net se conoce como: async.

    En este video daremos un recorrido por las soluciones que se le han dado a este problema a través del tiempo. Desde los simples llamados síncronos a WebServices por ejemplo, pasando por el manejo de threads distintos para la comunicación junto con el uso de Invoke para evitar desactivar el CheckForIllegalCrossThreadCalls de los forms, siguiendo con el versátil BackgroundWorker y luego explorando los clientes web asíncronos obtenidos con WebClient en Silverlight y Windows Phone 7 y HttpClient en Windows 8, que al implementar el Framework 4.5 nos ofrece el maravilloso async que nos abstrae de todas esas operaciones que algún día fueron un dolor de cabeza para nosotros:

    Puntos Clave:

    1. async ha sido creado solo para manejar operaciones que al tardar, podrían bloquear la interfaz de usuario. En ningún momento ha de ser usado para ejecutar tareas en paralelo o procesos en Background.
    2. En WP7 aún no hay soporte para async. Así que hay que usar un WebClient y ejecutar sus métodos asíncronos asociando un manejador al evento de completitud del request. Esto es similar a las llamadas asíncronas a proxies de servicios WSDL o WCF tradicionales.
    3. La forma de manejar async difiere levemente desde WindowsRT (metro style) al resto del framework. Cuando no estamos en WindowsRT se usa el método que referencia a TaskAsync. Por ejemplo en vez de DownloadStringAsync, en un WebClient, llamamos el método DownloadStringTaskAsync
    1. WarNov Developer Evangelist

      Windows Azure SDK Junio 2012 Habilita a Visual Studio 2012RC !

      • 0 Comments

      imageCon la liberación del SDK de Windows Azure versión Junio 2012 (1.7) y las tools de la misma versión, el proceso nuevamente es automatizado y ahora además tiene completo soporte para Visual Studio 2012 RC!!! De esta manera lo único que tenemos que hacer es ir a este link, descargarlo e instalarlo.

      Problemas con la descarga: El sitio en español aún no se actualiza con los últimos bits. Así que si al seguir el link tu navegador identifica tu localización, no te llevará al sitio en inglés sino al de español y te presentará la versión del sdk anterior que no es compatible con el RC de Visual Studio 2012. En ese caso, asegúrate de ir al final de la página y cambiar el idioma a inglés, para que te aparezca el último SDK que dice: “Last updated June 2012”

      image 

      • Como se aprecia, todo el SDK más las tools ahora solo ocupan 34.26MB. Esto es debido a que Visual Studio 2012 RC ya viene con muchos de los elementos requeridos para el desarrollo en Azure, tales como un IIS Express y la base de datos compacta para desarrolladores llamada SQL LocalDB (Correcto, ya no necesitamos ni siquiera SQL Express!!! –más espacio y memoria para nuestros juegos!)

      Tengan en cuenta que este SDK soporta hasta la versión 4.0 del Framework .Net. Así que si en VS2012RC seleccionan como Target Framework el 4.5, no les aparecerá disponible el Windows Azure Cloud Service

      image

      La forma adecuada sería:

      image

      Este SDK funciona correctamente en Windows 7, Windows Server 2008R2, Windows Server 2012 RP y por supuesto en Windows 8 RP! Descárguenlo ahora mismo y disfruten del mayor cambio y evolución que ha tenido nuestra plataforma de Cloud Computing desde su creación hace dos años!

      image

       

       

    2. WarNov Developer Evangelist

      Apps de Windows Phone no disponibles en tu región cuando las vas a bajar?

      • 2 Comments

       

      El Marketplace de Windows Phone está segmentado por países, porque en cada país las normas son distintas y por ende no se puede generalizar la distribución de Apps.

      Así que los desarrolladores de apps, ya sea por este motivo u otros distintos, en ocasiones no ponen sus apps disponibles a ciertos países (esto no tiene que ver con el costo de publicación que siempre es el mismo).

      Es así que si al momento de configurar tu cuenta por ejemplo estableciste que ibas a trabajar con el Marketplace Colombiano, solo las apps disponibles para Colombia te aparecerán.

      Las apps más populares del mundo ya están disponibles para Colombia. Pero otras puede que no. El mercado por defecto es Estados Unidos. Por ende, casi todas las apps se encuentran allí. Así que podemos configurar nuestro teléfono con el marketplace de Estados Unidos y tener acceso a más apps.

      Desventaja frente a escoger el mercado del país en el que vivimos? Que a la hora de comprar apps, vas a tener que usar una tarjeta de crédito oriunda de ese país. Así que si no tienes una tarjeta de crédito internacional, tendrás algunas dificultades. Afortunadamente la gran mayoría de apps más usadas son free.

      Suponiendo que ya arreglaste este problema de la tarjeta de crédito y te inscribiste al marketplace estadounidense, puede pasar que aun así no veas ciertas apps como el mismísimo Adobe PDF Reader!!! A mí me pasó y formateé el teléfono varias veces sin éxito. No la podía bajar.

      Por qué sucedía esto? Sencillamente, porque configuraba el teléfono para una amiga que no es muy buena con el Inglés, así que le puse como idioma por defecto Español.

      Cuando los desarrolladores de Apps suben sus apps al mercado, también eligen el idioma en el que la ponen disponible. Adobe no puso su app en idioma Español. Así que si se detecta que el teléfono está en un idioma no disponible, la app no se dejará descargar.

      Solución: Poner el teléfono en inglés (requerirá reiniciarlo). Descargar todas las apps necesarias y luego si lo deseas, volver al español. Las apps seguirán allí listas para usarse; pero obviamente aparecerán solo en inglés.

      Si eres desarrollador de apps en español, ten esto muy en cuenta a la hora de publicarla; si quisieras por ejemplo alcanzar el gran mercado estadounidense, mejor que le pongas tu versión en inglés a la app, porque de lo contrario ellos no podrán descargarla por más que tu la hayas distribuido en ese país, si no tienen su aparato configurado en español.

    3. WarNov Developer Evangelist

      Estrategias para prevenir rechazos de tu app en el Marketplace de Windows Phone 7

      • 0 Comments

      Abstract:

      Con el pasar del tiempo y las consultas que me han hecho, he recopilado los motivos más frecuentes por los cuales una app de WP7 es rechazada para acceder al Markeplace (mp) después de subirla a través del AppHub. Este post recopila estos motivos y su solución.

      1. Marcas y logos registrados:

      Cuando se usan dentro de la aplicación marcas y logos reconocidos, nos pueden devolver la app para que indiquemos si tenemos permiso para usarlos. Esto se puede indicar en el último paso del proceso de subida de la app, en el espacio que dice Test Notes:

      image

      Estas notas deben ir en inglés y tal como lo recomiendo en el ejemplo, se debe indicar que la empresa dio los permisos adecuados, así como los datos de la persona de contacto que se podría requerir para certificar este permiso.

      2. Uso de GPS

      El uso de GPS como es bien sabido, interviene con la privacidad del usuario, pues se podría comenzar a reportar la ubicación de un usuario sin que este lo haya permitido. Es por esto que si empleamos el api de localización en nuestras apps, debemos proveer claramente un mecanismo para desactivar estas funcionalidades. Además cuando lo hagamos, la aplicación debe seguir funcionando correctamente. Además de esto, se debe proveer una política de empleo de la información de la localización que explique perfectamente al usuario para qué serán usados los datos, de manera que él pueda comprender las implicaciones de autorizar el empleo del GPS en la app. Esta política puede estar incluida en la app, o ser un link a algún recurso externo. Acá les escribo un ejemplo de política:

      La aplicación xxxxx ofrece servicios avanzados de búsqueda, basados en la ubicación del usuario. Los datos de ubicación del usuario son usados exclusivamente para este fin y nunca son compartidos. Sin embargo, si el interés del usuario es que esta aplicación no haga uso de los servicios de localización del teléfono, éstos se pueden deshabilitar en el menú de ajustes de la aplicación; en este caso la utilidad de búsqueda por cercanía quedará deshabilitada y la aplicación continuará funcionando correctamente.

      En este caso deberá de existir un menú de ajustes, donde se puedan deshabilitar estas características:

      image

      3. Screenshots

      Los Screenshots preferiblemente (obligación por ser la mejor opción) se han de capturar desde el emulador que tiene una utilidad para tomar estos screenshots.

      Pero con el emulador sucede que a veces puede estar mostrando el framerate de las imágenes que está mostrando. Si capturamos con esta opción habilitada, nuestra app será rechazada, porque estos elementos no pueden aparecer en los screenshots:

      image

      Esta opción por defecto viene habilitada, así que a la hora de hacer la captura la deshabilitamos desde el archivo: App.xaml.cs:

      image

      Basta solo con poner EnableFrameRateCounter en false.

      4. Lenguaje por defecto de la app

      Cuando creamos una app de WP7, el lenguaje por defecto de la misma está establecido en Inglés. Es por esto que cuando la subimos, el App Hub, allí esperan que pongamos una descripción de la App en inglés:

      image

      Es un error frecuente, porque si efectivamente nuestra app está en español, querremos ponerle descripción en español; pero el App Hub solo nos da la opción de inglés. Así que si ponemos la descripción en un idioma distinto al solicitado, nos rechazarán la app. Como lo mencioné es porque no hemos cambiado la opción de idioma neutral. Para lograrlo, vamos a las propiedades del proyecto y escogemos Assembly Information y allí podremos seleccionar el lenguaje neutral personalizado:

      image

      De esta manera cuando subamos la app al AppHub, nos aparecerá en este caso el idioma español, para poner la descripción.

      En situaciones más avanzadas queremos ofrecer nuestra app en varios idiomas. En otro post estaré mostrando cómo se logra tener localización de múltiples lenguajes. Por ahora veamos que si hacemos esto bien, cuando carguemos el xap al AppHub, observaremos que habrá una versión de toda la información que tenemos que suministrar, por cada lenguaje que hayamos incluido:

      image

      Como observamos en este caso, está seleccionado el idioma inglés y en este ponemos la información requerida. Luego seleccionamos español y procedemos escribiendo la información en el lenguaje adecuado. Recordemos que esto solo aplica cuando intencionalmente escogemos tener dos o más lenguajes para nuestras apps.

      Sabiendo que pueden surgir nuevos motivos de rechazo frecuentes, stay tunned, que aquí estaré citándolos y ofreciendo las posibles soluciones.

    4. WarNov Developer Evangelist

      FTP en Azure?

      • 0 Comments

      Este post surge como respuesta a una pregunta que recibí recientemente. Puedo tener un FTP en Windows Azure?

      Sí es posible, pero hay que tener en cuenta las implicaciones:

      1. Para lograrlo, es necesario establecer ciertas configuraciones especiales que por defecto no vienen establecidas en los Roles de Windows Azure. Así que tendrías que por ejemplo entrar por RDP a hacer cosas como configurar el Role de FTP en el servidor virtual, configurar puertos, etc. etc.


      2. Sucede que los servidores de Azure cuando se reinician (por fallas, actualizaciones, etc) pierden todos los cambios que tuvieron en su ultima operación y vuelven a su estado original, así que todas esas tareas administrativas para configurar el FTP, deberían mejor ser ejecutadas a través de un script que se ejecute como un startup task, de manera que siempre que se inicie un Role, se autoconfigure para funcionar con FTP.


      3. Quizá el problema más grave, es que los archivos que se hayan subido y/o actualizado, también se perderían cada vez que se reinicie el servidor virtual. En este caso, habría que hacer un respaldo de los archivos por ejemplo en el blob storage. Cosa que complicaría mucho la situación.


      4. Afortunadamente, en poco tiempo estaremos liberando el CTP del Persistent VM Role. Un nuevo tipo de Role para Windows Azure que prepararemos offline en un vhd (aquí haríamos todas las configuraciones de FTP) y luego subimos a la nube para que trabaje como queramos. Afortunadamente, al ser persistente, mantendrá todos los archivos nuevos aún después de operaciones de reinicio. Se espera para mitad de año, aunque no es oficial aún.


      Si quisieras experimentar un poco, te recomiendo este post donde dan un paso a paso de como convertir un role actual a FTP:
      http://mayur.gondaliya.com/microsoft/creating-ftp-server-on-windows-azure-493.html

    5. 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.

    6. WarNov Developer Evangelist

      Windows 8 Dev Machine

      • 1 Comments

      Hasta hace unos días, lo único que me impedía desarrollar completamente basado en Windows 8, era el tema de Windows Azure y sobretodo el de Windows Phone, dado que al usar emuladores, aún no estaban plenamente soportados.

      Afortunadamente, al interior de Microsoft estamos siendo muy veloces y a hoy, ya tenemos un gran conjunto de tools que nos permiten desarrollar para todas las tecnologías que teníamos disponibles en VS2010 sobre Windows 7 por ejemplo.

      Primero aclaremos algunos hechos básicos:

      1. Visual Studio 2010 (VS10) y Visual Studio 11 (VS11) coexisten sin problemas en el mismo sistema operativo ya sea Windows 7 o Windows 8.

      2. VS11 en Windows 7 aunque permite desarrollar varios tipos de proyectos convencionales, no permite desarrollar apps Metro Style, obviamente porque el OS no tiene todo el soporte requerido

      3. A pesar de que “parece” que VS11 soportara proyectos Windows Azure, esto aún no es posible, así que es requerido VS10 y unas configuraciones especiales que describiré en este post para que funcionen en Windows 8.

      clip_image002

      4. VS11 aún no soporta WP7. Así que también es necesario trabajarlo con VS10 y en Windows 8 se requieren ciertas configuraciones especiales que describiré en este post.

      Entonces, antes de entrar en materia, quiero que quedemos claros en que vamos a requerir Visual Studio 2010 instalado en Windows 8. Esto como les mencioné no tiene ninguna contraindicación ni aún con VS11 instalado, y puede ser cualquier versión. Yo estoy usando la Ultimate. Pero se puede Visual Studio Express for Windows Phone y Visual Studio Web Developer para Azure y gratuitamente tendremos operatividad total.

      WINDOWS 8 + WINDOWS PHONE

      Esto se hace posible gracias a la publicación del patch 7.1.1 del SDK de Windows Phone, cuyo principal objetivo es el permitir el desarrollo de apps de WP7 enfocadas a dispositivos económicos de solo 256MB de ram, al incluir una nueva imagen de emulador que tiene esta memoria. Sin embargo, aunque este fue el fin principal, se aprovechó la publicación para entre otras cosas, solucionar unos inconvenientes que impedían al emulador de Windows Phone 7 funcionar correctamente en Windows 8, por lo que ahora esto ya es posible, aunque no oficialmente soportado, sino hasta que salga el RTM de Windows 8.

      clip_image003

      Procedimiento:

      1. Instalar Win8CP

      2. Instalar la última versión de Games for Windows – LIVE. Esto es requerido para poder desarrollar juegos con XNA para WP7, dado que Windows 8 requiere archivos más nuevos que los que vienen con el SDK 7.1

      3. Instalar VS2010 Pro o superior si es posible; si no, proceder a 3

      4. Instalar Windows Phone SDK 7.1 (Incluye gratuitamente Visual Studio Express for Windows Phone 7)

      5. Instalar el patch 7.1.1

      6. Instalar Zune

      7. Desarrollar en WP7!!!


      WINDOWS 8 + WINDOWS AZURE

      UPDATE:  Las instrucciones siguientes SOLO aplican para la instalación del SDK y Tool de Windows Azure v. 1.6 sobre Visual Studio 2010 en Windows 8 CP y RP. Con la liberación del SDK de Windows Azure versión Junio 2012 (1.7) y las tools de la misma versión, el proceso nuevamente es automatizado y ahora además tiene completo soporte para Visual Studio 2012 RC!!! Chequea este post, para instrucciones de cómo instalarlo.

      SDK 1.6 en VS2010 sobre Windows 8:

      Aquí solo es necesario activar algunas características adicionales del sistema operativo y luego descargar los bits requeridos.  

      1. Activación de Características:

      a. Presione TeclaWindows+F para abrir el cuadro de búsqueda y escriba Windows Features. Luego haga click en settings y escoja en los resultados Turn Windows Features on or Off.

      b. Una vez allí, asegúrese de tener todas estas características activadas:

      clip_image004

      2. IDE: Instalar VS2010 Pro o superior o Visual Web Developer 2010 Express como alternativa free

      a. Instalar el Service Pack de VS2010

      b. Descargar e Instalar MVC3

      3. DB: Windows Azure usa una base de datos SQL para emular el storage. La DB que debe instalarse es SQL Express 2008 R2 with SP1

      4. Descargar e instalar los componentes individuales de Windows Azure bien sea para x86 o para x64.
      Hasta aquí ya estamos listos para desarrollar aplicaciones de Windows Azure convencionales. Pero a hoy, tenemos unas nuevas herramientas especialmente creadas para desarrollar aplicaciones para Windows 8 basadas en Windows Azure sobretodo para los servicios de notificaciones y almacenamiento. Aquí les muestro cómo habilitarlas:

      5. Apps de Windows 8 sobre Azure:
      Descargar e instalar el Toolkit de Windows Azure para Windows 8

      a. Instalar la última versión del Nuget Package Manager (si existe ya instalada una versión distinta a la antigua, abrir Visual Studio en modo administrador y desinstalarlo desde el extensión manager el menú de tools)

      b. Ejecutar el script Setup.cmd que queda en el root de la instalación del anterior Toolkit

      Obtendremos:
      clip_image006

      c. Después al abrir nuestro VS2010, nos encontraremos con que ya podemos crear Windows 8 Cloud Applications

      clip_image008


      y en VS11 podremos crear aplicaciones basadas en Notificaciones más control de Acceso:


      clip_image010

      Conclusión:

      Windows 8 Consumer Preview por ser aún una versión de evaluación requiere ciertas configuraciones especiales para poder servir como máquina de desarrollo de aplicaciones basadas en Windows Azure y para Windows Phone. En este post, vimos las acciones a tomar para poder lograrlo.

    7. WarNov Developer Evangelist

      Pimp my rIDE

      • 4 Comments

      Visual Pimp-My-Ride-XE

      Recuerdan ese reality de MTV con XZibit donde tomaban un auto y le ponían cientos de mejoras para que su conducción fuera mucho más agradable?

      Pues lo mismo pasa con Visual Studio!

      Usé la alegoría de rIDE con r de rapid :P Esto obviamente, dado que nuestro IDE (Visual Studio) nos permite ir de cero a una aplicación completamente funcional, in no time!

      Para muchos, Visual Studio es nuestra segunda casa.

      No para tantos lo era hace unos años (me incluyo en los que sí), cuando a pesar de que era bueno, no era tan completo como hoy en día, de manera que de vez en cuando teníamos que salir de casa para ir a hacer ciertas tareas de desarrollo en otras tools independientes.

      -Uy! Ojalá tuviera algo que me alineara automáticamente todas las asignaciones por el igual.

      O por ejemplo: -Ufff! De lujo si pudiera implementar un tema basado en Matrix para desarrollar.

      O tal vez: -Súper si pudiera enviar por correo automáticamente un segmento de código que hice para que mi jefe vea que soy bueno programando lo que él no pudo

      Yo siempre solía soñar con eso y tenía mi propia biblioteca de macros para ejecutar tareas dentro de VS.

      Pero las macros es lo más sencillo que se puede hacer.

      Luego cuando entré al equipo de desarrollo de un lenguaje de programación sobre .NET llamado VisualAPL basado en el viejo APL (un lenguaje de programación basado en símbolos muy poderoso para cálculos financieros avanzados) conocí todo lo que se podía hacer con el modelo de extensibilidad de Visual Studio y fue glorioso, la verdad.

      Este post sin embargo, no trata de cómo crear estos addons y extensiones sino más bien de cómo usar los existentes y a mi modo de ver, cuáles son los más útiles.

      Sucede que como yo, había miles de desarrolladores con sus ideas para mejorar Visual Studio y por ende se abrió la gran Visual Studio Gallery. Allí aquellos desarrolladores hard core que lo que no encuentran lo construyen pueden exponer sus creaciones para que estén disponibles al resto de la comunidad. De manera que podemos encontrar un sinnúmero de aditamentos que nos van a permitir personalizar nuestro IDE para ser aún más productivos y realmente hacer un Pimping a nuestro rIDE.

      En el video he usado Visual Studio 2010 Ultimate, pero en general con las extensiones de VS ocurre que siempre se ponen disponibles para las nuevas versiones de Visual Studio que van saliendo. En este caso, la versión 11. De hecho, hay extensiones que han sido tan buenas y usadas, que en Visual Studio 11 ya vienen nativas y disponibles sin instalaciones adicionales, como lo veremos en el video. Entonces pasemos a la acción, donde enseño las extensiones que siempre aplico a mi Visual Studio:

      Addons Usados:

      Aquí el listado de las extensiones mostradas:

      Nombre

      URL

      Productivity Power Tools

      http://bit.ly/g4fUGG

      Background Customizer

      http://bit.ly/fXhJOF

      Color Theme Editor

      http://bit.ly/fPKKEV

      Dark Expression Blend Color Theme

      http://bit.ly/aYDWOG

      WarMatrix Theme

      http://wnov.it/WarNovTheme

      Hide Main Menu

      http://bit.ly/hQoFYI

      CSharpIntellisensePresenter

      http://bit.ly/GLp8ht

      Numbered Bookmarks

      http://bit.ly/hSbRdy

      Presentation Zoom

      http://bit.ly/hAMtDI

      MoveToRegionVSX

      http://bit.ly/GJZ5M1

      Y tú? Ya usas alguna extensión no citada aquí y quieres recomendarla? Súper si la adjuntas a este post en los comentarios!

    8. WarNov Developer Evangelist

      Shortcuts de teclado para aplicaciones Windows

      • 0 Comments

      En Windows, y aún en la experiencia Desktop de Windows 8, podemos asignar shortcuts de teclado a las aplicaciones que más usamos o que más nos convienen, para poderlas activar desde el teclado sin necesidad de buscarlas o hacer click en su ícono.

      En este corto video, muestro como.

       

    9. WarNov Developer Evangelist

      Divide y Vencerás (Windows Azure)

      • 0 Comments

      Suponga que Ud. ha creado el siguiente Facebook… o twitter

      Millones de usuarios acudirán a sus servicios.

      Sé que a estas alturas la respuesta a la siguiente pregunta es sencilla para muchos, pero para los que están empezando hasta ahora, es mejor clarificarla y ese es el motivo de este post:

      Es mejor tener un servidor gigante, poderoso y costoso? O un montón de unidades de cómputo baratas?

      La respuesta la copio de un twitt que puse (ligeramente extendido)
      La instancia cara pero poderosa, llegará a un límite en el que no puede aceptar más ram o cpus; en este momento, el mega servicio que nos inventamos, ya no podrá soportar más usuarios; además qué pasa si se cae? No tendríamos cómo respaldarla y el servicio dejaría de funcionar.

      Aunque esto hoy día parece muy evidente, back in 1995, ni siquiera grandes empresas tecnológicas como Amazon lo tenían muy en cuenta. Ellos comenzaron con su sistema como un gran silo de software/hardware para su gigantesco sitio de ventas online. Pero ya en 2002, viendo todas las posibilidades que se venían en el futuro y sabiendo que un acercamiento monolítico haría muy difícil a sus sistemas crecer, implementar más funcionalidades y sobretodo soportar más usuarios, el CEO de Amazon, el señor Bezos, toma la decisión de reorientar todo el sistema a un modelo en el que se pudieran tener muchos componentes de software independientes que también pudieran funcionar en unidades o instancias de hardware independiente. Básicamente, a todos los desarrolladores se les dieron estas estrictas normas para trabajar:

      1. Todos los equipos deberán exponer los datos y las funcionalidades a través de interfaces de servicios.

      2. Los equipos se deben comunicar entre sí a través de estas interfaces.

      3. No habrá otra forma de comunicación aceptada.

      4. Sin importar qué tecnología usen, estas reglas se deben cumplir. A Bezos no le interesa.

      5. Todas las interfaces sin excepción, deben ser diseñadas pensando en ser expuestas al resto del mundo... Sin excepción!

      6. Cualquiera que no haga esto, será despedido

      7. Gracias, y tengan un buen día


      Algo parecido sucedió con Facebook, en 2007, tres años después de ser fundada. En contraste, curiosamente Google+ que es de 2011, salió al aire sin una sola API. Tres meses después lanzaron solo una gran MEGA API que muestra todo lo que un usuario ve. Lo que la sigue mostrando como un Silo.

      En fin… esos componentes de los que nos habla el señor Bezos, son los que hoy conocemos como servicios, y esa arquitectura es la que conocemos como SOA y es la que ha dado origen a conceptos como Infraestructura como Servicio (IaaS), Plataforma como Servicio (PaaS), Software as a Service (SaaS) y Cloud Computing.

      Una vez logramos que nuestras aplicaciones no sean silos complicados de administrar y extender, tanto para tener más funcionalidades como para soportar más usuarios, empezamos a observar que necesitamos hardware adecuado para soportar estas instancias. Un hardware monolítico de ninguna manera podría aprovechar un software diseñado para poder crecer y ser cada vez mejor.

      Así nace el concepto de IaaS que permite a los usuarios tener disponibles un montón de máquinas en internet para que en ellas pongamos los OS que necesitemos y encima de ellos nuestras aplicaciones. Esto se comenzó a conocer como la nube. Lo bueno, es que son máquinas arrendadas y solo nos cobran lo que consumimos. Además podemos instalar lo que queramos. Lo malo, es que como hay que poner sistemas operativos y demás, son difíciles y costosas de administrar. Amazon es uno de los pioneros y grandes proveedores de IaaS.

      Uno como desarrollador soñaría mejor en tener cientos de miles de máquinas en la nube listas para nuestra mega aplicación, sin necesidad de preocuparnos del sistema operativo ni mantenimiento ni nada de eso. Y es allí donde nace PaaS. Windows Azure de Microsoft, es uno de los pioneros y grandes proveedores de PaaS. Obviamente el software que ponemos sobre Plataforma como servicio, en general se presenta como Software como Servicio (SaaS) dado que los costos de arrendamiento se trasladan a los usuarios finales quienes por ejemplo comienzan a pagar una mensualidad por los servicios del software que se prestan. Como se ve, el viejo esquema de licenciamiento se ve modificado, erradicando problemas de distribución, empaquetado, solución de errores, mantenimiento, etc. Además garantizando la posibilidad de atender a tantos usuarios como vayan llegando, siendo un servicio escalable y robusto.

      Esto lo notó Amazon y hoy también está implementando su propuesta de PaaS junto a muchos otros proveedores. Pero también resulta cierto que a veces, de acuerdo a la complejidad de la aplicación generada, se hace necesario poder administrar el sistema operativo sobre el cual corre, así sea esto más costoso. Es por esto, que Azure ya está implementando también alternativas de IaaS.

      Todo lo anterior responde a que hemos notado que son mejores instancias baratas que se puedan activar a discreción, de acuerdo a las exigencias que las aplicaciones van teniendo. Pero esto requiere un diseño de aplicación pensado en el patrón shared-nothing, donde cada instancia dentro de un tier no comparte nada con otras instancias del mismo tier. Esto es básico para PaaS y SaaS.

      En síntesis, los mayores proveedores están pensando en varias alternativas para tener hardware como servicio en el que nos sea muy barato poner nuestros servicios con una cantidad de instancias de cómputo “ilimitada” que pueda crecer de acuerdo a nuestros requerimientos y que nos permita ofrecer un servicio robusto en el cual si una instancia cae, las otras siguen respondiendo, mientras la caída es reemplazada. Los silos, están OUT.

      Windows Azure nos ofrece muchas ventajas sobretodo a nosotros desarrolladores de .NET, porque hacer aplicaciones para la nube es muy natural y familiar; no hay que aprender un montón de técnicas o lenguajes nuevos y tenemos el soporte y la seguridad que nos ha dado siempre Microsoft.

      Por ejemplo, en Windows Azure tenemos diversos tamaños para las instancias de cómputo sobre las cuales queremos poner nuestro software. Hay desde instancias Extra Grandes de 8 cores de 1.67GHz cada uno y 14GB de RAM hasta pequeñas con 1 sola CPUs y 1.75GB de RAM.

      El hecho de que se diga que es mejor unidades baratas de cómputo que un solo silo poderoso y costoso no quiere decir entonces que lo mejor sea escoger siempre instancias pequeñas. O sea, ya definimos que no vamos a poner el software en una sola instancia… así que nos falta determinar cuál es el tamaño que deberán tener las instancias que compondrán el sistema. Y esto se hace de acuerdo a las características de nuestra aplicación. Por ejemplo si es una aplicación que necesita responder a muchos usuarios peticiones poco complicadas, es mejor tener muchas instancias pequeñas. Pero si por el contario son más bien pocos los requests pero con una demanda de cómputo alta, es mejor escoger instancias más grandes. Experiencia, intuición y sobretodo muchas pruebas, nos mostrarán cuál es la mejor alternativa.

      Una de las inclusiones de Windows Azure en los últimos tiempos, fueron las instancias extra small. Estas instancias son muy baratas. Solo valen a 4 centavos la hora que estén encendidas. Tienen 768MD de ram y la CPU es compartida. Esto no quiere decir que sean como los servidores compartidos típicos de internet. Esto, en virtud a que no están compartiendo el disco duro asignado, ni las unidades de memoria, ni el OS, ni el App Server ni el Web Server. Lo único que se comparte, son los cores de cómputo. Las instancias extra small son recomendadas sobretodo para pruebas de concepto o funcionalidades muy básicas, teniendo en cuenta sus características. En general para aplicaciones de línea de negocio, es mejor comenzar a analizar desde las pequeñas hacia arriba.

      Post Complementarios:

      Stairway to Azure

      Windows Azure: Compilado de Recursos

      Agradecimientos a: @afwilliams y @julitogtu por provocar el post Smile

    10. WarNov Developer Evangelist

      Microsoft Techday Cali

      • 0 Comments

      Microsoft llega Cali el próximo jueves 23 de Febrero, con el Microsoft TechDay, la conferencia de tecnología más importante para Desarrolladores y Profesionales de TI, en donde podrán ver en vivo las mejores tecnologías, productos y soluciones.
      Si estás desarrollando, implementando o administrando soluciones de Tecnología, este evento es la mejor oportunidad para enfocarse en las tecnologías clave y los escenarios de negocio que les ayudarán a enfrentar los retos del mundo real de TI y prepararse para las innovaciones de mañana.

      En este evento, personalmente les estaré contando todo lo que necesitan saber para comenzar a desarrollar aplicaciones de Windows 8.

      Windows 8 Logo

      También tendremos a dos de nuestros Microsoft Community Specialists caleños:

      El investigador y empresario Leonardo Bernal y el MSP Henry Ruiz, mostrándonos la integración de aplicaciones móviles de Windows Phone 7 con la nube de Windows Azure.

       

      cloudphone

       

      En un track paralelo, para los IT Pro, nuestro nuevo Evangelist, Alfredo Barba, nos estará contando de la Nube Privada de Microsoft y luego, tendremos a nuestro MCS Gold, Guillermo Taylor, mostrándonos lo que nos espera de SQL Server 2012.


      Pueden inscribirse para el evento en http://aka.ms/TechDayCol

      image

    11. WarNov Developer Evangelist

      Azure: Computación en la nube, con precios bajo tierra

      • 0 Comments

      Tal cual… Antes, tener un servidor web en Windows Azure (Web Role) más una base de datos de una giga, nos costaba no menos de USD$100 mensuales.

      Pero que pasa con los emprendedores que tienen su aplicación para móviles o para pequeños clientes que no necesitan todavía tanto poder?

      No hay una forma más económica para acceder?

      A partir de hoy, sí!

      Ya tenemos base de datos de 100MB!! Y el costo por mes es de apenas USD$5 por mes! Y esto incluye todo el poder de SQL Azure: Alta Disponibilidad, Tolerancia a Fallos, Auto Administración, Escalamiento Elástico, Conectividad On-premises y full SLA.

      Súmenle esto al costo de una instancia Extra-Small completamente dedicada a ustedes donde podrán desplegar su sitio/servicio que accede a la DB. Esto vale USD$28.8. Redondeando, esto nos llevaría a USD$35 como precio de arranque en Azure para una APP con un servidor web y base de datos.

      Otros costos, en las tablas que les dejo a continuación.

      Tamaño de MV

      CPU Cores

      Memoria

      Costo por Hora

      Extra Small

      Shared

      768 MB

      $0.04

      Small

      1

      1.75 GB

      $0.12

      Medium

      2

      3.5 GB

      $0.24

      Large

      4

      7 GB

      $0.48

      Extra Large

      8

      14 GB

      $0.96

      Tamaño de la BD

      Precio por mes (USD)

      0 a 100 MB

      $5.00

      de 100 MB a 1 GB

      $9.99

      de 1 GB a 10 GB

      $9.99 por la primera GB, $4.00 por cada GB adicional

      de 10 GB a 50 GB

      $45.99 por las primeras 10 GB, $2.00 por cada GB adicional

      de 50 GB a 150 GB

      $125.99 por las primeras 50 GB, $1.00 por cada GB adicional

      Tangamos en cuenta sin embargo, que 100MB no es un tipo de DB que escojamos al crearla. Solo sucede que si por ejemplo escogemos una DB de 1GB pero el consumo siempre se mantiene por debajo de 100MB, entonces el cobro siempre será solo de USD$5.

      Como se observa, entre más grande el servicio, más barato!

      Recordemos que cuando salió Azure, 50GB de SQL Azure nos costaban USD$500! Hoy valen $125.99.

      Seguimos aterrizando los precios…

    12. WarNov Developer Evangelist

      Me sirve en Development Environment, pero no en Azure!

      • 0 Comments

      Este post estará dedicado a recopilar las posibles causas por las cuales una aplicación Windows Azure corre bien en desarrollo, pero no puesta en el cloud.

      1. Aplicaciones basadas en la hora: Recuerden muy bien que la hora de los servidores en Windows Azure, no es la misma que aquella que uds. tienen en sus máquinas de desarrollo. Bueno, a menos que vivan sobre el meridiano de Greenwich. Para ser más explícitos, la hora de estos servidores es UTC. Mientras que por ejemplo Colombia es UTC-5. Así que tengan esto en sus cuentas.

      2. La cultura por defecto en los servidores de Azure, puede variar con respecto a la de sus máquinas. En Azure es por defecto en-US, con todo lo que esto conlleva con respecto a determinación del punto decimal y demás. Si ustedes por ejemplo tienen una rutina que convierte strings en números decimales, tengan muy en cuenta que los símbolos de separación de decimales por ejemplo pueden cambiar y la aplicación se comportará distinto. Esto puede pasar con fechas, etc.

      3. Por defecto Windows Azure no maneja variables de sesión ni aplicación distribuidas. Así que si observan que los valores de estas variables desaparecen cuando tienen más de una instancia en la nube, piensen que es hora de adquirir los servicios de AppFabric para poder tener este caché distribuido y que sus aplicaciones se comporten igual en la nube. Por qué pasa esto? Cuando hacemos un request, nos contesta por ejemplo el WebRole A. Allí iniciamos la variable de sesión MiIngenuaVariable. Luego volvemos a hacer un request, pero esta vez el LoadBalancer lo envía al WebRole B. Estos WebRoles, no comparten la memoria y solo fueron iguales al principio de la ejecución del servicio. Luego cada uno comenzó a tener una historia distinta. Entonces cuando consultamos la variable MiIngenuaVariable, claro, estará en NULL.

      4. Creé un pdf, lo grabe en el disco duro del servidor y luego cuando lo llamé ya no estaba? Juas! Muchos me han llegado con ese problema y es muy parecido al anterior. Recuerden que no se comparte el estado cuando tenemos varias instancias. Entonces una instancia no tiene ni idea de lo que hemos grabado en el disco duro de otra. Así pues, la solución es que los archivos que requieran ser consultados luego, los graben en el Blob Storage, donde quedarán con una dirección única accesible desde cualquier instancia o desde cualquier parte del universo que posea internet.

      5. Los cambios que hago en mi despliegue se revierten! Despliego mi servicio, luego ejecuto una rutina para modificar unos archivos de configuración (bien sea incluida en el servicio, o a través de RDP). Luego al otro día, esos archivos de configuración ya no están como los dejé y el servicio me falla!!! Eso pasa, porque en Windows Azure las máquinas ocasionalmente se reinician y vuelven a su estado original; esto es producto de patchs que se aplican, o reinicios determinados por el AppFabric al ver que una instancia se está comportando necia, o no quiere responder educadamente. En esots casos, la instalación vuelve a quedar idénticamente a como estaba la primera vez. No esperes encontrar tus modificaciones en caliente! Se espera que a futuro cercano los VM Role de Windows Azure tengan estas capacidades. Se llamarán VM Role Persistentes. Por ahora, lo recomendado obviamente es que estos valores de configuración sean almacenados en el archivo ServiceConfiguration, que es una archivo separado del paquete de despliegue, por lo que sus valores permanecerán una vez sean modificados, aun cuando se reinicien las instancias. Lo mejor de todo, es que estos valores se pueden cambiar “en caliente” de una manera muy sencilla desde el portal de Windows Azure.

      6. La aplicación me trae los datos más rápido de mi SQL Server local que de SQL Azure! Por caridad, espero que no hayan puesto en Azure la DB de SQL Azure en North US y luego la aplicación en South Central! Imagínense la cantidad de espacio que han de recorrer sus datos antes de llegar al destino! Usen siempre el mismo grupo de afinidad! Para Colombia y Sur América en general, es mejor siempre poner todo en South Central US.

      Otros ejemplos que vaya encontrando los iré anexando a esta guía. Keep on coding!

    13. WarNov Developer Evangelist

      SQL Azure: Index was outside the bounds of the array

      • 1 Comments

      Dice el corresponsal, que trabajando con SQL Server Management Studio conectándose a SQL Azure, luego de estar conectado y ejecutar algunas consultas sin problemas, empieza a experimentar comportamientos erráticos, que no le permiten borrar objetos de SQL Azure ni tampoco obtener el script de creación de los mismos, obteniendo siempre el mensaje de error: Index was outside the bounds of the array

      He de decirles, que esto sucede dado que desde el último cambio grande en la estructura de SQL Azure en Julio del año pasado, es necesario acceder a SQL Azure usando la versión SQL Server 2008 R2 SP1 . Que ya está preparada para los cambios que hubo en SQL Azure.

      El número de versión de SSMS con el que deben quedar, es 10.50.2500 a hoy, febrero 11 de 2012, para poder acceder correctamente a SQL Azure. Esto debería ser suficiente para evitar esos comportamientos “erráticos”.

    14. 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

    15. WarNov Developer Evangelist

      ActivaTV: La evolución del Webcast

      • 0 Comments

      Como han de saber, uno de los medios que hemos usado para comunicar y difundir nuestras tecnologías, es el Webcast.

      Un mecanismo a través de nuestra herramienta de LiveMeeting, que permite a la audiencia conectarse a una reunión virtual donde un speaker activa su PPT y la expone.

      Con el ánimo de hacer esta actividad más dinámica y agradable, desde Microsoft Colombia hemos preparado {Activa}TV. Un espacio donde a través de LiveMeeting transmitiremos varias secciones en las que actualizamos a la audiencia con lo último de nuestras tecnologías y actividades.

      Es así como en este “show” tendremos un tema principal tratado de una manera distinta a las típicas presentaciones magistrales. Será más bien un diálogo en el que se podrá aprender de la tecnología que se trata. Estaremos presentando además casos reales de aplicación de nuestras iniciativas en la industria nacional. También tendremos sección de noticias y concursos.

      En general, este espacio lo estaremos llevando a cabo mensualmente, el primer martes y estaremos contando con diversos invitados.

      Nuestra primera emisión será este martes 7 de febrero. El tema principal será Windows 8 y los fundamentos de su nueva plataforma de desarrollo. Y dentro de nuestros invitados, contamos con un emprendedor que usando nuestras iniciativas logró sacar un producto que hoy día es crucial para las entidades de salud en nuestro país.

      Regístrense a {Activa}TV para que se activen desde sus casas u oficinas aquí: http://aka.ms/activatv

    16. WarNov Developer Evangelist

      Múltiples Líneas en los Textblock de Windows Phone 7

      • 2 Comments

      Nivel: Básico: 100.

      También surgido de otra pregunta que me hicieron en http://formspring.me/warnov, aquí una corta explicación de cómo funcionan los Texblock multilínea en WP7.

      Básicamente la duda de este developer, era cómo hacía para generar un Textblock (Texto no editable que aparece como nativo en la interfaz) que presentara varios párrafos.

      Lo primero que debemos garantizar, es que el TextBlock haga autoajuste de línea de acuerdo al ancho que tenga en determinado momento. Para esto ajustamos la propiedad de “ TextWrapping” en Wrap. Luego, existen varios métodos para agregar el texto que viene en párrafos.

      El primero, es aprovechando la mayor flexibilidad que nos da el editor XAML para asignar textos. Como ven, sencillamente podríamos traer nuestros párrafos tal y como están por ejemplo en Word o notepad y asignarlos al control:

      image

      Como ven es un sencillo copy paste o escribir las líneas y darles el salto de línea donde sea pertinente.

      Este copy paste también se puede ejecutar en el cuadro de propiedades:

      image

      Sin embargo si queremos escribir las líneas, observaremos que para darles un salto de línea el Enter no funciona. Sencillamente usamos Shift+Enter y listo. Tendremos nuestro salto de línea. Y el resultado es el esperado:

      image

      Obviamente, este tipo de ajuste de contenido no es posible en tiempo de ejecución, ya que no podremos copiar/pegar de ningún lado, sino indicar con una variable el contenido. Esta variable es fácil de armar con el carácter especial de cambio de línea \n:

      txbInstructions.Text = "primera larga línea \n segunda \n tercera";

      Esto nos da:

      clip_image008

      Y qué pasa si el texto está en un archivo de recursos?

      En un mercado de aplicaciones como el de Windows Phone 7, es muy importante ofrecer la capacidad de multilenguaje de nuestras aplicaciones, así que es muy frecuente que nos encontremos con la necesidad de crear un archivo de recursos distinto para cada lenguaje a usar. En estos casos, cada archivo tiene los textos a usar. Entonces cómo poner valores multilínea en los archivos de recursos?

      Allí también podemos copiar y pegar de otra fuente. Igual funciona el mecanismo de Shift+Enter para ingresar un salto de línea.

      image 

    17. WarNov Developer Evangelist

      Replicando una aplicación tradicional a Windows Azure I: Base de Datos

      • 0 Comments

      ABSTRACT

      Esta es una serie de post en la que exploraremos las condiciones que deben tener las aplicaciones web para poderse ejecutar desde Windows Azure, bien sea porque se requiere hacer una migración, o porque se quiere tener las dos versiones (hosting tradicional y cloud computing) para una aplicación dada. Este es el post 1/3 y mira los aspectos esenciales a tener en cuenta en lo referido a bases de datos. Los siguientes dos hablarán de la capa de negocios, y de la interfaz gráfica como tal.1

      Nivel: 100-200 Básico

      El rango de opciones para tener una aplicación que se comporte igual de bien tanto en Windows Azure como en servidores tradicionales, depende mucho del tipo de aplicación que se tenga. En esta serie de posts, estaré tratando únicamente aplicaciones web (también en Azure se pueden desplegar servicios destinados a ser consumidos por clientes inteligentes, móviles, a través de TCP, etc).

      Las aplicaciones Web estándar, generalmente tienen la siguiente distribución: Una base de datos (Sql Server, Oracle, etc), una capa de acceso a datos (Entity Framework,LINQ2SQL, ADO.NET, Hibernate, etc) , una capa de negocio (uno o varios proyectos de tipo Class Library) y una capa de presentación conformada por WebForms.

      En este post específico, estaremos observando qué pasa primero con la base de datos:

      Base de datos

      SQL Server

      Si la base de datos viene siendo SQL Server o alguna de sus variantes (Como SQL Compact, SQL Express, etc), nos encontraremos con el caso más sencillo a desplegar en Windows Azure, donde como saben el acceso es casi transparente para las aplicaciones que usan estas variaciones.

      Los temas que deberíamos tener en cuenta en este caso serían sobretodo aquellos que tienen que ver con escenarios muy específicos como:

      1. Consultas distribuidas (no son soportadas)

      2. Tamaño máximo por Base de datos de 150GB

      3. El escenario actual de SQL Azure está completamente enfocado a almacenamiento transaccional y reportería. No tenemos aún servidores de integración ni BI en SQL Azure. Solo OLAP y Reporting. Sin embargo esto no impide que servidores externos a Windows Azure puedan conectarse a las bases de datos de SQL Azure para manipular su información.

      4. La estructura interna e implementación física de SQL Azure es distinta a la de SQL Server; sin embargo para los clientes esto es totalmente transparente, pues SQL Azure ofrece la interfaz TDS que soporta perfectamente las cadenas de conexión tradicionales, así como el T-SQL que todos conocemos. De esta manera podremos acceder a la DB a través de ADO.NET, OLEDB, ORMs como NHibernate, LINQ, Entity Framework y muchos otros.

      Otros temas más fáciles de solucionar se pueden arreglar automáticamente a través del Sql Azure Migration Wizard

      Otros Motores Free

      Si la base de datos se encuentra en otros motores free como MySql, tendremos una limitante total y es el hecho de que para poder instalar un MySQL en Windows Azure, es necesario usar el VM Role de Windows Azure, que permite crear una máquina virtual a la cual le adicionamos un disco duro virtual (VHD) que tiene la configuración previa que le hemos hecho. Esta configuración previa entonces puede incluir la instalación de MySQL por nuestra parte antes de agregar el VHD. Sin embargo, los VM Role son stateless. Esto quiere decir que si por algún motivo la máquina ha de ser reiniciada, todos los cambios generados desde la distribución del VHD se perderían. Situación nada conveniente cuando se tiene la DB instalada en una instancia. En un ambiente de Web Roles y Worker Roles, esto no es un inconveniente, pues su única función es operar y no almacenar. El almacenamiento está en SQL Azure. Pero si en el VM Role ponemos una DB, con cada reinicio, aunque la DB aparezca instalada, estará restaurada a su condición inicial.

      Una de las próximas características que estaremos liberando en Windows Azure, son VM Roles persistentes que permitan instalar servidores de Sharepoint, Biztalk, y herramientas de terceros como MySQL y hasta otros sistemas operativos como Linux.

      Si se implementasen los VM Roles persistentes s instaláramos por ejemplo MySQL, tendríamos una complejidad adicional y estaríamos desperdiciando ciertas características de nuestra plataforma.

      Cuando tenemos un servidor como MySql, que es gratuito, no tendremos ningún problema en instalarlo en un VM Role de Windows Azure. Esto se logra haciendo una instalación del MySQL en una máquina virtual local, y luego subiendo el disco duro de esta máquina virtual a Windows Azure, donde quedará desplegada para ser accedida desde cualquier parte del mundo. Como se aprecia, ya de entrada hay una complejidad y es el proceso de preparar la máquina virtual y luego subirla a Windows Azure.

      Otros problemas se presentan cuando nuestra base de datos MySql comienza a requerir escalabilidad. Es así como si la máquina en la que habíamos instalado el MySql ya no es suficiente para los requerimientos de nuestros usuarios, habremos de entrar a una operación manual de migración hacia una máquina más grande.

      Sql Azure está diseñado para auto escalar los recursos que necesita, de acuerdo a la demanda por parte de los usuarios. Es así, como automáticamente se administra la memoria, discos, etc., para brindar un funcionamiento óptimo.

      Por otro lado, dado que la única opción para instalar MySql sería en un VMRole, entonces necesitaríamos entrar a ejecutar operaciones administrativas adicionales a las que requeriríamos si usáramos solo SQL Azure. En SQL Azure nos desentendemos de la administración del sistema operativo, sus parches, sus actualizaciones, etc. Solo nos enfocamos en usar y mejorar la base de datos. Pero el VM Role al estar más cerca a la Infraestructura como Servicio (IaaS) que a la Plataforma como Servicio (PaaS) requiere un trabajo manual que en SQL Azure se puede omitir completamente.

      Todo esto sin mencionar que no habría un SLA para la MySQL, mientras que para SQL Azure si hay y es de 99.99%

      Recomendación: Migrar la DB a SQLAzure

      Otros motores no Free

      Otros motores no free, como Oracle se podrían instalar en Windows Azure, con las mismas consideraciones de los motores free. Pero adicionalmente le deberíamos sumar otra complejidad, y es que por lo general estos productos aún no tienen definida una licencia específica para ser instalados en esquemas de Cloud Computing como Windows Azure, por lo cual se podría entrar en conflictos legales al desplegar un servidor de estos en la nube. Primero ud. Debería consultar con su proveedor e investigar alrededor de este tema.

      Recomendación: Migrar la DB a SQLAzure.

      Conclusión:

      Una aplicación web que se pueda desplegar fácilmente entre ambientes tradicionales y Windows Azure, debería emplear para su DB (si es que usa DB), un esquema SQL Server. Luego, en la evolución hacia la nube, este SQL Server debería migrarse a SQL Azure (las aplicaciones tradicionales se pueden poner a apuntar a la nube y seguirían funcionando perfectamente) y finalmente la aplicación como tal se pasaría de los servidores tradicionales a la nube, sin tener que hacer cambios sobre la DB. Recordemos que operaciones de Servicios de Integración de Datos, Análisis y Minería siguen estando disponibles a través de conexiones de servidores externos que tengan estas funcionalidades, a la nube.

      Este es el post 1/3 y mira los aspectos esenciales a tener en cuenta en lo referido a bases de datos. Los siguientes dos hablarán de la capa de negocio y de la interfaz gráfica como tal.

    18. WarNov Developer Evangelist

      Fallas en el despliegue remoto de aplicaciones al Emulador de Windows Azure

      • 0 Comments

      Abstract:

      En escenarios de testing, por ejemplo pruebas E2E, es necesario desplegar todo el ambiente en los llamados Builds Nocturnos, para verificar la completitud del sistema antes de pasarlo a producción. Las acciones requeridas generalmente se pueden automatizar, pero adquieren cierto nivel de complejidad cuando se trabaja con Windows Azure, en cuyo caso se requiere automatizar el despliegue sobre el Emulador en el cual se harán las pruebas. Esto presenta ciertos retos y aquí veremos cómo solucionarlos.

      Nivel: 400 – Avanzado

      Dice la corresponsal que ya tenía su .bat con todos los CmdLets de Windows Azure requeridos para su despliegue. Básicamente se requiere ejecutar las siguientes tareas:

      1. Apagar los emuladores del fabric y del storage de la máquina a operar
      2. Remover todos los despliegues existentes
      3. Inicializar ambos emuladores
      4. Desplegar el servicio al emulador
      5. Hacer un ping al servicio recién desplegado para verificar que quedó correctamente instalado.

      Me cuenta ella también que cuando entra a la máquina virtual de pruebas con su usuario y ejecuta el batch con las operaciones descritas anteriormente, este funciona correctamente y despliega los servicios sin ningún problema.

      Sin embargo, su objetivo es poder ejecutar el batch remotamente, en este caso a través de la herramienta psexec, que el gran Russinovich nos describe en este post. Desafortunadamente para ella, cuando usa este tool observa que el proceso no es exitoso, aun usando los switch –w (para ejecutar el batch como system y usando –i para seleccionar el id de sesión activa. De hecho me cuenta que hasta usó msbuild para llamar el bat, sin éxito.

      Solución:

      CSRUN.EXE es un tool de la línea de comandos que se instala con el SDK de Windows Azure. Su función es la de desplegar una aplicación o servicio al emulador de Windows Azure y administrar el servicio allí hosteado. Obviamente vemos que en el ejercicio que se intentó llevar a cabo CSRUN es parte esencial. Desafortunadamente, este tool no funciona correctamente y aparecerá como bloqueado si no es lanzado por una sesión interactiva en la máquina donde se encuentra el emulador. Por eso es que a nuestra apreciada corresponsal su solución le funciona cuando hace login con su usuario, pero no sirve usando psexec. Siendo una buena idea poner el switch –i para identificar el Id de Sesión, esto no basta para que csrun pueda identificar completamente la sesión. Así que es necesario ajustar la variable de sesión _DEVFABRIC_SESSIONID_ con el id de la sesión en la que se está corriendo. Con esto, se solucionará el problema de inmediato, así que solo basta adicionar en el bat el código necesario para ajustar esta variable de sesión.

    19. WarNov Developer Evangelist

      Del Agregado de Referencias en Visual Studio 2010

      • 0 Comments

      A través del tiempo, una de las tareas que siempre ha representado pérdidas innecesarias de tiempo al desarrollar, fue buscar en el mundo de componentes y dlls, aquella que estábamos buscando. Recuerdo que era todo un pain in the… (sí… allá) encontrar por ejemplo System.Windows.Forms.DataVisualization.Design. Empezando porque el cuadro de diálogo tardaba mucho en cargar. Segundo, desplazarse por las diversas listas, también tenía bastante delay.

      En Microsoft recibimos bastante feedback al respecto, y mejoramos mucho esos tiempos.

      Por si fuera poco, gracias a la extensión gratuita para Visual Studio llamada Productivity Power Tools ahora tenemos un cuadro de búsqueda de estos assemblies difíciles de encontrar a mano (ver campo resaltado en azul).

      image

      Observarán ustedes queridos blog lectores, que también he resaltado un elemento en rojo? Lo habían visto?

      Este aviso solo aparece luego del SP1 de Visual Studio 2010. No lo han instalado? Pues junto a las tools de productividad deberían instalarlas ya… en serio, ya!

      El aviso es una excelente cura a un mal bastante molesto que teníamos antes del Service Pack originado por la inclusión del .NET Framework Client Profile.

      Sucede que con Visual Studio 2008 SP1 se incluyó la posibilidad de desarrollar una aplicación orientada a este Client Profile, que no es más que un subconjunto de .Net mucho más pequeño que la versión completa.

      Esto, pensando que muchas veces codificamos aplicaciones de escritorio que no necesitan saber por ejemplo de ASP.NET para funcionar. Por ende, reducimos la cantidad de dependencias que requiere y por ende las máquinas en que instalemos nuestra aplicación no requerirán de todo el Framework .NET, sino de un subconjunto de este, que tan solo pesa 28MB y trae la mayoría de funciones básicas para una aplicación cliente de escritorio.

      En realidad es algo muy benéfico para la mayoría de casos, pero el problema es que por defecto, desde VS2008SP1 todos los proyectos de WinForms creados, quedan por defecto orientados al Client Profile, entonces cuando uno quería hacer algo avanzado, como por ejemplo una comunicación desde el Form a un servicio Web sencillo a través del Objeto WebClient, por más que buscara System.Net, no lo encontraba! De pronto a ud. Le pasó y se sintió muy frustrado de no saber por qué era. La razón, es que al estar el proyecto orientado al Client Profile, se filtran las dlls que aparecen en el cuadro de diálogo de agregar referencias y solo se muestran las de este perfil. Entonces la solución era cambiar el profije por ejemplo al Framework 4.0 completo, y ahí sí ya nos comenzaban a aparecer. Pero esta solución solo se hallaba solo después de dar muchas vueltas, “cacharrear” y buscar por todo lado.

      Ahora, con agrado les cuento que después del SP1 en VS2010, esta situación ya ha sido solucionada. Aunque por defecto igual, si escoge ud. desarrollar una aplicación de WinForms, esta estará orientada al Client Profile, ahora las DLLs no son filtradas, sino que aparecen en un color gris  especial que las identifica. Si ud. Llega a escoger una de estas DLLs, de inmediato le aparece el aviso que señalé en rojo! Así que esa es la razón de ser de ese aviso: Indicarnos que si escogemos esa dll, estaremos cambiando la orientación de nuestra aplicación desde Client Profile, a usar todo el Framework completo. Esto ya es totalmente intuitivo y no nos deja con la duda de por qué diablos no me aparece la dll que buscaba…

      Cuando cerramos el cuadro de diálogo, nos aparece esta confirmación que nos pregunta si en realidad queremos cambiar la orientación del proyecto. Si lo hacemos, todos los archivos abiertos del proyecto se cierran, y luego de esto casi que de inmediato, se produce el cambio, quedando nuestro proyecto listo para usar todo el poder del framework completo:

      clip_image003

    Page 5 of 14 (334 items) «34567»