MSDN Blogs
  • WarNov Developer Evangelist

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

    • 2 Comments

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

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

    Miren el sitio con estilos

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

    image

    Para otros sistemas con IIS7, sigan estas instrucciones.

    Hope it helps!

  • WarNov Developer Evangelist

    Matemáticas en Azure

    • 2 Comments

    Problema de Aritmética en la migración de un sistema desde un servidor compartido a Azure:

    Si tengo un servidor compartido con las siguientes características: DUAL Nehalem Quad-Core E5530 2.4 Ghz, 16MB Cache, 12 Gb Ram

    Con una aplicación Web que además tiene las siguientes características en su DB

    • Tamaño actual BD 11 GB
    • 180.000 Fotografías que representan el 75% de la BD
    • Crecimiento mensual BD 700 MB
    • Tasa de transferencia 500 GB Mensuales

    Entonces cuánto me cuesta tener esto en Windows Azure?

    Usando Azure storage (BLOBS) para las imágenes (lo más recomendado pues es más barato, escalable y rápido):

    image

    • 75% de 11gb: aprox. 7.5Gb se irían para el storage y quedaríamos con una DB de 2.5 con los datos transaccionales y de referencia de las uris de las imágenes.
    • Entonces necesitamos una DB de hasta 5gb. Lo que nos da 50 dólares por aquí.
    • La transferencia de 500Gb al mes nos da 75 dólares.
    • Las 7.5Gb de storage nos cuestan 0.75 por mes: $1.2 que aumentaría diez centavos cada mes por el crecimiento
    • El cobro de operaciones sobre el storage es de 1 centavo cada 10mil operaciones. Suponiendo que todos los archivos se escriben y luego se leen hasta 10 veces, nos daría 1’800.000 operaciones lo que equivaldría a 1.8 dólares al mes.

    En definitiva tendríamos:

    DB USD$50
    Bandwidth USD$75
    Storage USD$1.2
    Operations USD$1.8
    Total USD$138

    Ahora; usando solo bases de datos y sin storage:

    DB 200GB  (una DB de hasta 20 GB que permite soportar el crecimiento indicado)

    Bandwidth $75

    Total Por Mes: USD$275

    En cuanto a los costos de Hosting del Sitio Web teniendo en cuenta que en Azure el servidor web y el servidor de DB están separados y que los servidores son DEDICADOS, podríamos tener un rendimiento similar al del servidor compartido con una instancia médium de un webrole. Lo que nos da 3.2Ghz de proceso y 3.5Gb de RAM y un performance de I/O alto. Esto puesto las 24 horas nos da:

    0.12x24x30x2=USD$173

    Para disponibilidad del servicio se recomienda tener al menos dos instancias separadas, entonces podrían tenerse dos medium por un valor de USD$346 o dos small en vez de una medium por solo $173. Sin embargo en este último caso, el performance de I/O se ve reducido.

    Estos costos son independientes de la alternativa de almacenamiento escogida.

  • WarNov Developer Evangelist

    UMBRACO en AZURE

    • 0 Comments

    Para Windows Azure existen unos artefactos de software pre construido llamados ACELERADORES.

    Los aceleradores son en cierta forma plantillas de proyectos que nos permiten realizar tareas comunes con mucho trabajo ya adelantado para que nos podamos enfocar en hacer un par de cambios específicos en nuestras aplicaciones y así salir al aire pronto.

    Encontramos por ejemplo aceleradores para PHP, aceleradores para JAVA y en este caso, aceleradores para UMBRACO.

    Umbraco, es un CMS (manejador de contenido) basado en controles de usuario y escrito netamente en C#. Un manejador de contenido en pocas palabras es un portal web en el que personas sin conocimientos de programación pueden agregar artículos, noticias y en general cualquier tipo de contenido de una manera cómoda y constante en el tiempo.

    Siempre han existido muchos manejadores de contenido por fuera de .NET. Hoy en día en el mundo .NET hay muy buenos manejadores como DotNetNuke (escrito en VB) Kentico (escrito en C# y en el cual por ejemplo está basado el portal NuestroFramework.Net), MojoPortal (en C# y base de muchos portales de comunidad) y en este caso particular: Umbraco (C#). Lo mejor de todos estos CMS, es que aparte de ser muy buenos en lo que hacen, son todos Open Source, así que se pueden usar y modificar de acuerdo a las necesidades.

    clip_image003

    Hoy en día Umbraco tiene más de 85.000 instalaciones en todo el mundo, pasando desde importantes marcas como www.wired.co.uk; www.asp.net; www.peugot.com a sitios web de recetas, pasando por todos los intermedios. Esto gracias a que los CMS en general se instalan y ya quedan listos para empezar a ser usados. Encapsulan desarrollos repetitivos como seguridad, acceso a datos, presentación, etc., ahorrando mucho tiempo y costo en los desarrollos.

    Por esto mismo es que deseábamos que el hecho de pasar la solución a la nube de Windows Azure no significara mayores complicaciones para los desarrolladores que decidieran usar esta opción y de esta manera poder seguir aprovechando las ventajas de tiempo que ofrece el sistema.

    Así pues la gente de Umbraco después de evaluar numerosas plataformas de cloud para sus servicios optó por Windows Azure, según nos explica Paul Sterling; socio de Umbraco en este video; por lo cual decidieron generar el acelerador.

    Este Umbraco Accelerator for Windows Azure permite al CMS correr sobre Windows Azure sin que se requieran cambios. Es un gran avance no solo en el campo de los CMS sino en el de los despliegues sobre Windows Azure que como ya es tradicional, nos ofrece grandes ventajas como el ahorro de casi todas las tareas de implementación y un escalamiento que puede tender casi al infinito.

    El acelerador puede ser usado con las versiones más actuales de Umbraco incluyendo la 4.5.2 y la 4.0.4.2. Solo es necesario un pequeño cambio en el esquema de la base de datos y absolutamente ningún cambio al core de cómputo de la plataforma. Otros cambios menores se deben hacer en los archivos de configuración. En Codeplex se encuentra una completa guía para hacer la instalación.

    Umbraco soporta completamente la implementación de SQL CE como repositorio de datos. Windows Azure también. Entonces un sitio pequeño podría correr sobre una de las nuevas instancias extra-small de Windows Azure por solo USD$0.05 la hora usando Umbraco y SQL CE que son gratuitos. Es decir, 36 dólares al mes por un servidor dedicado.

    Si lo que quiere es construir un sitio más grande igual puede usar los servicios del poderoso SQL Azure; es solo cuestión de configuración. Y si además quiere mantener más de un sitio al mismo tiempo en un mismo rol, ahora sí es posible con Windows Azure gracias a las características de full IIS que nos permiten manipularlo para poder tener varios sitios en la misma máquina y así disminuir aún más los costos teniendo hosting para varios clientes cada uno con su propio sitio basado por ejemplo en Umbraco.

    Según Sterling, la razón por la que se escogió Windows Azure, fue porque realmente era una plataforma de cloud en la que sencillamente se instalaba Umbraco y ya quedaba listo para funcionar. Cosa que no ofrecían otros proveedores de Cloud que requerían además inicializar un sistema operativo y personalizar una gran cantidad de código. De hecho, la versión 5 de Umbraco estará basada nativamente en Azure aparte de que ya no será ASP.NET WebForms sino MVC 3.0. En este orden de ideas, el acelerador será para aplicaciones de legado y ASP.NET WebForms mientras las MVC serán nativas Azure. Así que Umbraco le apostó todo a Azure para su versión 5.0 que será liberada en 2011.

    El acelerador fue creado por los talentosos Slalom Consulting con información tanto de Umbraco como de Microsoft. Sirvió entonces para que Definition 6, partner certificado de Umbraco pudiera crear el primer sitio basado en Umbraco sobre Windows Azure: Cox conserves heroes.

    La invitación entonces es que prueben esta alternativa para empezar a ser productivos con sus sitios en solo minutos!

  • WarNov Developer Evangelist

    Aprenda a desarrollar sobre plataformas de Comunicaciones y Correo

    • 2 Comments

    image

    Estoy muy contento de anunciarles el lanzamiento del Curso de Entrenamiento MSDN: Unified Communications “14”!

    Microsoft Lync Server 2010, Microsoft Lync 2010 y Microsoft Exchange Server 2010 proveen la plataforma de comunicaciones para que los desarrolladores puedan construir rápidamente soluciones que integran las comunicaciones dentro de sus procesos de negocio basados en tecnologías y conocimientos familiares.

    Estos cursos: Unified Communications "14" Training Course y Unified Communications “14” Developer Training Kit proveen un entrenamiento profundo sobre todos los aspectos de Lync Server 2010, Lync 2010 y del SDK de Exchange Server 2010 para brindarle a los desarrolladores los skills requeridos para ser productivos desarrollando soluciones orientadas a las comunicaciones.

    Este curso incluye 22 videos y 20 hands on labs:

    • Temas introductorios
    • Cómo integrar Microsoft Lync 2010 dentro de sus aplicaciones WPF y Silverlight al mejor estilo de Office y Sharepoint (presencia, lista de contactos, etc)
    • Conversaciones contextuales y manejo del API Administrada de Lync 2010
    • Integración de sus aplicaciones .NET con servidores de correo Exchange (mail, calendario, tareas) usando el API administrado de Exchange en su versión 1.0
    • UCMA 3.0: Unified Communications Managed API. Es el API para manejar comunicaciones unificadas desde sus aplicaciones. Esencial para manejo de llamadas, transferencias, etc. todo desde su propia aplicación.
    • Creación de Asistentes Virtuales a través de Workflows de comunicación basados en UCMA 3.0.
    • Creación de servicios de conferencias con UCMA 3.0
    • Arquitectura y despliegue de aplicaciones sobre Lync y Exchange Server 2010

    Es una grandiosa oportunidad para aprender y sacar provecho de esta tecnología que tanta productividad puede brindar a nuestros clientes.

  • WarNov Developer Evangelist

    Centros de Evaluación Microsoft

    • 0 Comments

    Este corto post solo es para informarles que Microsoft ofrece los Centros de Evaluación para aquellas personas que desean descargar productos en modo prueba y así poder observar si satisfacen sus necesidades.

    image

    Por ejemplo, podemos descargar Office, Visual Studio (Ultimate y Profesional), SQL Server, Herramientas para Windows Azure, etc.

    Tenemos dos versiones de estos centros de evaluación. Una para desarrolladores y otra para IT Pros.

    Las direcciones respectivas son:

    En IT-Pros, encontramos versiones de prueba de Windows 7 (90 días), SQL Server, System Center, HPC Server, Office, Exchange, Lync, etc.

    Ingresen a nuestros Centros de Evaluación y aprovechen esta oportunidad para probar gratuitamente los productos y servicios que les permitirán ser más productivos con sus soluciones de software!

    image

  • WarNov Developer Evangelist

    La WEB más segura con Internet Explorer 9

    • 1 Comments

    Estamos trabajando constantemente para ayudar a proteger a los clientes contra las amenazas en línea, proporcionando una experiencia de navegación más segura y confiable a través de Internet Explorer. NSS Labs, empresa independiente de investigación de seguridad, publicó hoy, un informe según el cual encuentra a Internet Explorer como el browser que ofrece la mejor protección contra malware de ingeniería social.

    Cuando un amigo te envía un vínculo para descargar un archivo que contiene "algunas imágenes impresionantes", tu primer pensamiento no es cuestionar si este vínculo puede contener algo malo como un virus que puede apagar el equipo o robar tu identidad. ¿Por qué alguien de que confianza enviaría algo perjudicial? Por desgracia, este instinto bondadoso es exactamente el comportamiento que los creadores de malware buscan explotar. Los atacantes están buscando sacar provecho de contactos y relaciones personales - depender de las acciones del usuario, en lugar de las vulnerabilidades del software para dañar a las personas. Estos ataques se conocen como ataques de malware de ingeniería social y han ido aumentando en número.

    La investigación de los laboratorios de NSS muestra que Internet Explorer 9 es capaz de bloquear o advertir el 99% de malware de ingeniería social. De acuerdo a los laboratorios de NSS, "Con una puntuación de 99% de bloqueo de URL única, Internet Explorer 9 fue por lejos el mejor en proteger a los usuarios contra el malware de ingeniería social". El siguiente gráfico compara la protección ofrecida por distintos navegadores contra ataques de malware de ingeniería social. Puedes ver en el informe que Internet Explorer 9 lleva todos los exploradores con la tasa más alta de bloqueo - y la mejor protección contra malware.

    clip_image002

    El galardonado Internet Explorer lidera la industria en la protección frente a ataques de ingeniería social a través de su filtro SmartScreen. Esta tecnología ayuda a proteger a los clientes de Internet Explorer 8 y 9 beta de Internet Explorer mediante la detección y bloqueo de sitios Web que distribuyen ataques de malware y phishing a través de ingeniería social. La diferencia de rendimiento entre IE8 y IE9 anterior proviene de la adición de funciones innovadoras como la reputación de SmartScreen. Esta nueva característica para Internet Explorer 9 añade una capa adicional de protección para los usuarios a través de una advertencia cuando intentan descargar una aplicación que se conoce como riesgosa.

    El beta de Explorer 9 se puede descargar de aquí.

  • WarNov Developer Evangelist

    CTE: Common Table Expressions – SQL Server 2008

    • 4 Comments

    Este es el primero de una serie de artículos que estaré escribiendo acerca de características de SQL Server 2008 para desarrolladores.

    Un CTE es un artefacto que nos mantiene en memoria el resultado de una consulta, para que lo podamos llamar luego dentro de esa misma consulta. Es como una “variable” temporal que nos evita tener que declarar una vista no persistente, o una tabla temporal.

    La sintaxis es muy sencilla:

    WITH <nombre de su CTE> <nombre de columnas>
    AS
    (
    <query de origen>
    )
    SELECT * FROM <nombre de su CTE>

    Por ejemplo:

    image

    Para qué es útil?

    Imagínense por ejemplo que tienen una tabla de ventas donde están todas las ventas hechas y el ID de los vendedores que las hicieron.

    Piensen que necesitan un reporte donde aparezca el total de ventas y el nombre del vendedor.

    Los datos extendidos del vendedor están en otra tabla. Además como el reporte totaliza la cantidad de ventas se requiere un query con una función de agregado ( count(*) ) Dado que existe este agregado no es posible usar un simple join, sino que tendríamos que usar una subconsulta o una tabla temporal:

    select Vendedores.FirstName, VentasAgrupadas.VentasTotales from
    (
       SELECT Sales.SalesOrderHeader.SalesPersonID, COUNT(*) as VentasTotales
       FROM Sales.SalesOrderHeader
       WHERE Sales.SalesOrderHeader.SalesPersonID IS NOT NULL
       GROUP BY Sales.SalesOrderHeader.SalesPersonID
    ) as VentasAgrupadas
    inner join Sales.vSalesPerson as Vendedores on Vendedores.SalesPersonID=VentasAgrupadas.SalesPersonID
    order by VentasAgrupadas.VentasTotales

    Como se aprecia esto es engorroso y poco claro.

    Con un CTE es mucho más sencillo, ya que no existe la necesidad de la subconsulta sino que parece como si declaráramos una variable de tipo tabla o vista con los resultados que queremos:

    WITH VentasAgrupadas(IdVendedor, VentasTotales)
    as
    (
      SELECT Sales.SalesOrderHeader.SalesPersonID, COUNT(*)
      FROM Sales.SalesOrderHeader
      WHERE Sales.SalesOrderHeader.SalesPersonID IS NOT NULL
      GROUP BY Sales.SalesOrderHeader.SalesPersonID
    )
    SELECT Vendedores.FirstName, VentasAgrupadas.VentasTotales
    FROM Sales.vSalesPerson as Vendedores
    INNER JOIN VentasAgrupadas ON Vendedores.SalesPersonID=VentasAgrupadas.IdVendedor
    ORDER BY VentasAgrupadas.VentasTotales

    Un caso aún más dramático puede observarse cuando queremos detectar los duplicados de una tabla.

    Por ejemplo si tengo una tabla de productos con Ids distintos pero mismo nombre, la consulta luce así:

    SELECT * FROM Products WHERE ProductID NOT IN
    (SELECT MIN(ProductID) FROM Products as P
    WHERE Products.ProductName=P.ProductName)

    Exótico no?

    Es lo que conocemos como Self-Join en SQL.

    Eso me retorna todos los registros duplicados. Observen que se logra luego de extraer el mínimo id para los duplicados, selecciono todos los duplicados cuyo id no sea ese mínimo, lo que me da como resultado los registros redundantes:

    clip_image003

    Obviamente con un CTE la complejidad del query se reduce completamente:

    WITH MinProductRecords AS
    (
      SELECT MIN(ProductID) AS ProductID, ProductName
      FROM Products
      GROUP BY ProductName
      HAVING COUNT(*) > 1
    )
    
    SELECT Products
    FROM Products AS P
    INNER JOIN MinProductRecords AS MP
    ON P.ProductName = MP.ProductName AND P.ProductID > MP.ProductID

    Aquí aunque hay más código, es más claro y administrable, pues vemos cómo primero seleccionamos los mínimos Ids y luego hacemos un join donde los Ids sean mayores a estos mínimos. Así se obtienen los mismos resultados.

    Entonces si quisiéramos además eliminar de inmediato los duplicados bastaría con reemplazar el último SELECT por un DELETE

  • WarNov Developer Evangelist

    NESL: Extensiones Nativas para Silverlight

    • 2 Comments

    Para iniciar este mes, y tras el momentum generado en el mundo Silverlight con el Silverlight firestarter, el anuncio de Silverlight 5 y un montón de novedades alrededor de esta tecnología tan cool, quiero contarles acerca de la liberación de NESL.

    Qué NESL ?

    Es un conjunto e librerías para desarrolladores Silverlight que les permite accede a las mejores características de Windows 7 desde sus aplicaciones Silverlight.:

    · Tomar ventaja de sensores como acelerómetros, sensors de luz, compases, GPS, etc.

    · Acceder a contenido desde dispositivos portables conectados como reproductores musicales y cámaras.

    · Capturar y crear video desde cámaras Web y la misma pantalla del equipo.

    · Usar reconocimiento de voz y lectura de texto

    · Integración con el taskbar de Windows 7 (Jump Lists, Icon Overlays, Taskbar Progress etc.)

    · Y mucho más!

    Cómo está conformado NESL ?

    • Un conjunto de librerías nativas acompañadas de sus librerías “colegas” para Silverlight.
    • Un guía para el desarrollador! (coming soon)
    • Aplicaciones de Ejemplo:
    • Video Travel Journal – Aplicación conceptual de grabación de video que ilustra cómo capturar video de la pantalla, dispositivos portátiles, integración con Windows 7, Bing Maps y upload de los videos a Facebook.

      clip_image001
    • Where’s Teddy ? – Un libro de historias animadas para niños que nos muestra las capacidades de reconocimiento de voz, lectura de texto y manejo de sensores como acelerómetro y sensor de luz.

      clip_image002
    • Código Fuente – Todas las librerías de Silverlight y las aplicaciones de ejemplo tienen su código abierto!

    Dónde lo podemos encontrar ?

    Code Gallery – http://code.msdn.microsoft.com/nesl

    Quienes lo están usando ya?

    image

    Está construyendo aplicaciones en Silverlight 4 basadas en NESL para la tablet Inspiron Duo que vendrá en poco tiempo, de manera que se integren estas aplicaciones con el acceso a los sensores.

     

     

     

     

    clip_image004

    Está construyendo un lector basado en Silverlight 4 que aproveche los sensores de las máquinas cliente.

     

     

    Descarguen los bytes y comiencen a experimentar!

  • WarNov Developer Evangelist

    Nuevas Herramientas para Programar Windows Azure

    • 4 Comments

    El mes pasado en el PDC anunciamos nuevas mejoras para Windows Azure. Entre otras, estas incluyen: Máquinas Virtuales en Azure (Infrastructure as a Service), elevación de privilegios, IIS completo, escritorio remoto, Windows Azure Connect (anteriormente el proyecto "Sydney"), instancias Extra Small, un nuevo portal de administración de la plataforma de Windows Azure basado en Silverlight y más. Estas mejoras y las nuevas herramientas de Windows Azure de noviembre para Visual Studio (versión 1.3) están ahora disponibles. Algunas de estas características están generalmente disponibles hoy a todo el mundo, mientras que otras están mirando fijamente a ser emitidas como betas o CTP.

    En posteriores posts anunciaré más detalles sobre estas nuevas características. Por ahora pueden chequear este post en inglés.

    Aparte de estos anuncios me complace informarles que también ya tenemos listo

    El Kit de entrenamiento de Windows Azure – actualización de noviembre.

    Hoy hemos publicado una versión actualizada de este kit. La edición de noviembre del kit de capacitación incluye nuevos laboratorios prácticos para las nuevas características y servicios de Windows.

    Las actualizaciones de este kit de capacitación incluyen:

    • [Nuevo laboratorio] Web Role y Worker Role avanzados – Muestra cómo utilizar las tareas de inicio y modo administración.

    • [Nuevo laboratorio] Conexión de aplicaciones con Windows Azure Connect: Muestra cómo utilizar Project Sydney (opciones avanzadas de comunicación entre sistemas externos y la nube)

    • [Nuevo laboratorio] la función de la máquina virtual: muestra cómo usar máquinas virtuales mediante la creación y la implementación de un VHD

    • [Nuevo laboratorio] Windows Azure CDN – introducción sencilla para la CDN (Red de distribución de Contenidos)

    • [Nuevo laboratorio] Introducción a las nuevas características de bus de servicio de Windows Azure AppFabric – Muestra cómo utilizar las nuevas características de Service Bus en el entorno de laboratorios de AppFabric

    • [Nuevo laboratorio] Creación de aplicaciones de Azure con el servicio de almacenamiento en caché: Muestra cómo utilizar el nuevo servicio de Caching de AppFabric de Windows Azure

    • [Nuevo laboratorio] Introducción al servicio de control de acceso de AppFabric en su segunda versión: Muestra cómo crear una aplicación web simple que es compatible con múltiples proveedores de identidad

    • Introducción a Windows Azure [actualizado] - Actualizado para utilizar la nueva plataforma de Windows Azure Portal

    • Introducción a SQL Azure [actualizado] - Actualizado para utilizar la nueva plataforma de Windows Azure Portal

    Además, todos los laboratorios se han actualizado para utilizar las nuevas herramientas de Windows Azure para Visual Studio versión 1.3 (edición de noviembre). Vamos a hacer más actualizaciones a los laboratorios en las próximas semanas. En la siguiente actualización programada para principios de diciembre también incluiremos presentaciones y demos para la entrega de un taller de formación completa de 4 días.

    Pueden descargar la actualización de noviembre del kit de capacitación de la plataforma Windows Azure desde aquí: http://go.microsoft.com/fwlink/?LinkID=130354.

    Por último, ahora hemos publicado los laboratorios directamente en MSDN para facilitar a los desarrolladores su revisión y usar el contenido sin tener que descargar todo el kit.

    Ahora pueden examinar a todos los laboratorios en línea en MSDN aquí: http://go.microsoft.com/fwlink/?LinkId=207018

  • WarNov Developer Evangelist

    Disponibilidad de Azure en el mundo

    • 0 Comments

    A raíz de muchas preguntas que he tenido al respecto, le presento la lista de países que a hoy, Diciembre 1 de 2010, tiene disponibilidad directa de los servicios de Windows Azure:

    Austria EUR

    Australia AUD

    Belgium EUR

    Brazil USD

    Canada CAD

    Chile USD

    Colombia USD

    Costa Rica USD

    Cyprus EUR

    Czech Republic EUR

    Denmark DKK

    Finland EUR

    France EUR

    Germany EUR

    Greece EUR

    Hong Kong USD

    Hungary EUR

    India USD

    Ireland EUR

    Israel USD

    Italy EUR

    Japan JPY

    Luxemburg EUR

    Malaysia USD

    Mexico USD

    Netherlands EUR

    New Zealand NZD

    Norway NOK

    Peru USD

    Philippines USD

    Poland EUR

    Portugal EUR

    Puerto Rico USD

    Romania EUR

    Singapore USD

    Spain EUR

    Sweden SEK

    Switzerland CHF

    Trinidad and Tobago USD

    United Kingdom GBP

    United States USD



Page 1 of 1 (10 items)