Azure: el primer "sistema operativo" de Microsoft para la nube

Hoy, durante la ceremonia de apertura la Microsoft PDC en Los Angeles Microsoft ha anunciado Azure, su primer sistema operativo desarrollado específicamente para ejecutarse «en la nube» (de forma remota).


Se trata de una API de servicios albergados en los Data Center de Microsoft que permitirá dotar a nuestras aplicaciones de múltiples funcionalidades obtenidas directamente desde la Red. Según Ray Ozzie, arquitecto jefe de software, Azure combina perfectamente las capacidades de programación para la nube con el almacenamiento, los servicios de infraestructura de red y los servicios alojados dentro de un único centro que se encarga de mantener la propia Microsoft.


Azure se programará con las herramientas y lenguajes que ya conocemos (.NET Framework y Visual Studio).



Los servicios de la plataforma Azure se componen de varios componentes:




  • Azure, componente necesario para el alojamiento, la gestión, el almacenamiento y las comunicaciones escalables.


  • Los servicios Microsoft SQL, que permitirá el acceso a un amplio rango de informes y servicios basados en bases de datos.


  • Servicios Microsoft .NET, que son implementaciones de .NET Framework para flujos de trabajo y/o control de acceso.


  • Servicios Live, que permite a los usuarios tanto almacenar como sincronizar todo tipo de documentos a través de sus ordenadores, teléfonos, o páginas web, entre otras plataformas.


  • Los servicios de SharePoint y los servicios de Microsoft Dynamics CRM aportan el nivel necesario para que los negocios puedan compartir y colaborar proyectos de negocio a través de la nube.

Para Ray Ozzie este lanzamiento supone «un punto de inflexión dentro de la comunidad de desarrolladores de Microsoft«, ya que «hemos introducido una tecnología que cambiará las reglas del juego que traerá consigo nuevas oportunidades tanto a los desarrolladores web como a los de negocio«.


A ver si es verdad. Os intentaré ir informando a través de este blog de las cosas interesantes que tiene Azure, pero la verdad es que entre trabajar con Visual Studio 2010, las cosas nuevas de ASP.NET y esto no sé de dónde voy a sacar el tiempo 🙁


Vía: PC World


Por cierto, este nombre, Azure, sí que me gusta mucho, jeje aunque seguro que cuando saquen la versión definitiva lo cambian.

¿ ASP.NET 3.5 ? ¿Windows Communication Foundation? Los terribles nombres de marketing de Microsoft

Este es un tema que en realidad llevo comentando desde hace años con bastante gente del mundillo, y es que nos rompieron los esquemas ya cuando sacaron .NET 3.0 hace ya bastante tiempo.


Y es que no estoy de acuerdo, al igual que mucha gente, con muchos de los nombres que usa y ha usado Microsoft para sus productos para desarrolladores.


Por ejemplo: ASP.NET 3.5. ¿Por qué demonios le llaman así? Presumiblemente por que así coincide con la versión 3.5 de la plataforma, el cual también es discutible que sea un nombre correcto si bien está más cerca de la realidad. Pero lo cierto es que ASP.NET 3.5 no es más que ASP.NET 2.0 + AJAX + exactamente 3 controles nuevos. Sí VS2008 tiene muchas mejoras en los editores pero no tiene que ver con la versión de ASP.NET sino con el propio entorno renovado. Y todo esto confunde mucho a la gente y la desanima. Para empezar el que haya trabajado con la versión 2.0 y AJAX pensará que ahora tiene que aprender muchísimas cosas nuevas y que va casi dos versiones por detrás. Agobios porque te quedas atrás, incertidumbre en los proyectos y las empresas y, lo que me toca a mi directamente: libros y cursos con 2.0 en el título que ya no se querrá comprar 🙁


Por qué: ¿qué es exactamente .NET 3.5 después de todo?, pues esto (molan los gráficos que se pueden hacer con Word 2007 en un par de minutos):



Es decir, desde .NET 2.0 el núcleo del framework no ha cambiado y lo que ha pasado es que se le han añadido librerías adicionales encima que se consideran estándar y pasan a formar parte de la distribución. En 3.5 además se han añadido extensiones a los lenguajes para poder dar cobertura a LINQ, la verdadera gran novedad del Framework, pero el núcleo no ha cambiado. Entonces ¿se justifica el número de versión realmente en esa denominación comercial (que es lo que es realmente)?


Es más, el SP1 de .NET 3.5 sí que ha introducido ciertas novedades de importante calado en varios ámbitos (Entity Framework sin ir más lejos) y sin embargo ¡no le han cambiado la versión! No hay quien lo entienda. Pienso que esto sólo perjudica a la claridad y a la tranquilidad de la gente.


Otros nombres sin embargo simplemente no ayudan a discernir bien las aplicaciones e implicaciones e la tecnología. En concreto me estoy refiriendo a Windows Communication Foundation. Grosso modo se trata de una API que sirve para generar servicios de comunicaciones flexibles independientes en principio del lenguaje de programación o del sistema operativo y la plataforma computacional. Entonces: ¿por qué le ponen la palabra «Windows» en el nombre? Y fíjate que lo que pregunto no es ninguna tontería: ¡ya ha habido unos cuantos programadores programadores/jefe de proyectos/responsables de tecnología que me dicen que no usan se interesan por/aprenden WCF porque piensan que está atado a Windows! Y tampoco es de extrañar sabiendo el historial de Microsoft de poca compatibilidad (poco importa que haga años que se preocupan de interoperar: crea fama y échate a dormir) pues mucha gente piensa que siguen así.


Pasa algo parecido con los servicios de Windows Live. ¿Si son en Internet y funcionan en el navegador para qué les ponen la coletilla de «Windows»? Son ganas de confundir a la gente  creo que hacen que muchos no los adopten sólo por eso. Sería mucho mejor poner Microsoft Live o algo así.


Finalmente y para no dar caña sólo a Microsoft también quiero dar estopa a otros que también han desvirtuado completamente un concepto importante como es el de las versiones Beta: Google. Con sus servicios eternamente en Beta (como GMail o Google Docs) se han cargado el concepto de Beta, y por mucho que se empeñen una aplicación en eterna mejora y ampliación no es una beta. Otros muchos se las han unido en esta estrategia. En fin, cosas del marketing 🙁


Y tú, sin ánimo de polemizar, ¿qué opinas?

TRUCO: Poner una aplicación Web en modo producción de manera rápida

Cuando ponemos una de nuestras aplicaciones Web en producción siempre tenemos que estar pendientes de ciertos detalles para asegurarnos de que se ejecuta con el mejor rendimiento. De hecho, si asististe el año pasado a mi charla compartida del Developer Day en Madrid (con Isabel Gómez de Microsoft) sobre rendimiento de ASP.NET, probablemente recuerdes que insistimos mucho en cosas tontas pero habituales, como por ejemplo que no te olvides de desconectar el modo activo de depuración de tu página.


Bueno, para poder evitar preocuparnos de muchas de estas cosas podemos tomar un atajo. Se trata de un ajuste poco conocido que se hace dentro del ámbito de la máquina (servidor) y que consiste en modificar el archivo machine.config (ubicado en C:WindowsMicrosoft.NETFrameworkv2.0.50727CONFIG) de la siguiente manera:



<configuration>
    <system.web>
          <deployment retail=”true”/>
    </system.web>
</configuration>


El ajustar retail=true dentro del nodo deployment conseguirá que todas las aplicaciones Web del servidor se ejecuten en lo que se llama «modo comercial». Esto significa que se hará caso omiso de lo que indiquen los parámetros específicos de la aplicación y se deshabilitará la depuración de las aplicaciones, el  mostrar las trazas dentro de las páginas y además tampoco se mostrarán errores detallados a los usuarios remotos. Es decir, lomismo que si hubiésemos establecido en web.config:



· debug=false
· trace=false
· enableCustomErrors=RemoteOnly


Pero todo de golpe con un sólo ajuste.


Esto es especialmente útil para gente que deba gestionar servidores compartidos (hosting) donde se quiera asegurar de que la gente no puede ejecutar sus aplicaciones en depuración, o en nuestros servidores de producción para evitar que los programadores se despisten y no cambien estos ajustes. Si bien hay que tener en cuenta que ello nos puede perjudicar si realmente, al final, necesitamos depurar una aplicación que esté en producción, algo que en condiciones normales no deberíamos hacer.

Cómo convertir texto a formato título con un método extensor

La clase String posee sendos métodos para convertir todas las letras de un texto a mayúsculas o a minúsculas. Curiosamente no ofrece otros me´todos que también serían útiles como por ejemplo uno que he necesitado hoy: convertir el texto a formato título (es decir la primera letra de cada palabra en mayúsculas).


Para este tipo de casos sería estupendo que la clase que nos interesa dispusiese de este método. Así, en mi ejemplo, lo que me gustaría es que la clase String tuviese un método ToTitle que convirtiera mis cadenas al formato apropiado para este caso.


Pues gracias a la «magia» de los métodos extensores de C# 3.0 conseguirlo es muy fácil.


Lo primero es crear un método que nos permita conseguir ese formato que queremos. Hay muchas formas de hacerlo. la más obvia es ir buscando espacios en la cadena y sustituir el siguiente caracter por el mismo en mayúsculas, pero es es algo muy ineficiente. La plataforma .NET nos da ya hecho esto gracias a la clase TextInfo de System.Globalization que ya posee un método ToTitleCase que hace precisamente esto.


Así basta con definir un método extensor en una clase auxiliar, así:


using System.Globalization;
using System.Threading;

namespace
Krasis.MetodosExtensores
{
public static class Extensores
{
public static string ToTitle(this string s)
{
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
TextInfo textInfo = cultureInfo.TextInfo;

return textInfo.ToTitleCase(s);
}
}
}


Para que a partir de ahora podamos escribir lo siguiente en nuestras cadenas (siempre que inlcuyamos el espacio de nombres Krasis.MetodosExtensores, claro:


miTexto.ToTitle()

Veámoslo en acción en un código real:



Como vemos se usa igual que cualquier método normal de la clase String, y laúnica evidencia es que en el Intellisense vemos una flechita azul (como en la figura) para indicar que es un método extensor. Mola ¿eh? 🙂


Nota: Podríamos usar InvariantCulture en lugar de la cultura actual si queremos hacerlo independiente del idioma del usuario actual (por ejemplo para guardarlo en una base de datos).


Lectura recomendada: Libro «C# 3.0 y Linq» de Octavio Hernández.

Procesadores multicore: amenaza para la industria

La pregunta es: ¿se puede dar la paradoja de que con chips más potentes tengamos ordenadores más lentos?. La respuesta es que, no es que se pueda dar, es que se está dando ya.


Hace ya unas semanas que tenía ganas de escribir sobre este tema desde que lo leí en el Fortune del 8 de septiembre (lo sé, me suscribo a cosas «muy raras»), pero como podéis comprobar si véis las fechas de mis últimos post, cada vez me resulta más complicado escribir algo con todo lo que tengo encima.


En fin, volviendo al tema, el caso es que la dinámica del sector hasta hace unos pocos años fué siempre la misma: los fabricantes de hardware hacían CPUs más rápidas y los fabricantes de software (entiéndase, de sistemas operativos) hacían sistemas más potentes también (lo cual no siempre se traduce en mayor rapidez, no hay que confundir). Así se cumplía la ley de Moore y todos tan contentos.


El problema es que llega un punto en que exprimir los ciclos del procesador para darles más velocidad no es viable, bien económicamente, bien por eficiencia energética, por lo que las últimas generaciones de CPUs de hecho corren a frecuencias de reloj menores que las que había hace tres o cuatro años. Es por eso que lo habitual ahora es que ni siquiera te indiquen la velocidad de reloj de las CPUs. Lo que se ha hecho para poder seguir progresando en potencia es algo más «fácil» para los geniecillos del hardware (ojo con el entrecomillado, es para entendernos) que para los del software: los procesadores multicore. En lugar de poner más velocidad ponemos dos procesadores o más en uno sólo. Es parecido a tener sistemas multiprocesador pero en un sólo chip. Hoy en día es casi seguro que tu ordenador de sobremesa o portátil tiene un doble núcleo. En nuestra oficina en Krasis, por ejemplo, el nuevo servidor de dominio (bastante normalito) tiene dos procesadores de cuatro núcleos, es decir, como si fueran ocho procesadores.


Lo que ocurre es que esta tecnología es tan diferente de la anterior que los que trabajan en software a bajo nivel «rillan» (como se dice en mi tierra gallega, que no es «dar grima» como en Canarias, sino «desesperarse intentando resolver un problema» o «hacer algo que cuesta demasiado esfuerzo», entre otras cosas). Según Craig Mundie, el jefe de estrategia e investigación de Microsoft, «es el cambio debido a «conceptos diferentes» más importante de la historia moderna de la computación». ¿Exagerado?. Bueno, Sean Maloney de Intel reconoce que «se trata de un gran problema», y otros van más allá y dicen que es una verdadera crisis.


La informática masivamente paralela lleva siendo una realidad desde hace muchos años en entornos científicos (para simulaciones que conllevan complejísimos cálculos), pero se trata normalmente de entornos muy cerrados y especializados, no de propósito general y con sistemas con lo mínimo para correr ese tipo de aplicaciones. Ahora la guerra es diferente pues estamos hablando de sistemas que deben funcionar con miles de propósitos diferentes y en entornos no controlados. Al parecer, desarrollar con eficiencia para esto es tan endemoniadamente complicado que hoy en día hay no personal cualificado suficiente para poder desarrollar una industria sobre estos chips. Los propios fabricantes de CPUs como Intel reconociendo el problema está contratando programadores en masa para intentar aportar soluciones desde su parte también.


La industria de los videojuegos ha vivido una crisis parecida hace unos años, a principios de la década, cuando Sony empezó a incorporar diferentes y múltiples chips a la Playstation 2. Los creadores de juegos «rillaron» intentando ponerse al día y lograr sacar juegos que al final llevaban enormes retrasos (y por lo tantos pérdidas millonarias). Incluso hubo empresas que directamente dejaron de producir juegos por no ser capaz de adaptarlos a la nueva realidad hardware.


Pues algo similar e incluso peor está pasando hoy en día en el mundo de los ordenadores. Se puede dar (y se da) la paradoja de que te compras un maravilloso PC con un quadcore y que algunas tareas tardan lo mismo o incluso tardan más que antes en hacerse. Si ya la programación multi-subproceso de alto nivel con lenguajes como C# o C++ es compleja, imagínate como será a esos niveles tan bajos. Por cierto, si te interesa el tema deberías echarle un vistazo al lenguaje experimental C Omega que extiende a C# para paralelismo.


¿Y tú qué opinas de esto? ¿Comentarios? ¿Ideas?


Recursos de interés que te sugiero:


· Artículo original completo en Fortune
· Parallel Computing en Microsoft
· Blog del equipo de Parallel Computing de Microsoft
· LINQ Paralelo: Running Queries On Multi-Core Processors
· Optimize Managed Code For Multi-Core Machines
· Curso de programación multihilo con .NET de campusMVP


 

ADO.NET Entity Framework: first book on the subject worldwide

ADO.NET Entity Framework


Last week, we at Krasis Press launched what we believe is the first book fully dedicated to ADO.NET Entity Framework published worldwide, in any language: «ADO.NET Entity Framework: Data centric applications and services» (in Spanish).


And what a book! Honestly, I firmly believe we have produced an excellent resource, created by three experts that have been working with this technology since the very first betas, and using it in real life projects for many months: Unai Zorrilla, Octavio Hernandez and Eduardo Quintas.


Unai and Octavio (Microsoft MVPs) are already well known to audiences for their frequent articles in publications, and for being the authors of the books «Modeling business processes with Workflow Foundation» and «C# 3.0 and LINQ«, both published by Krasis in October, 2007 (in Spanish).


The book consists of six chapters plus five appendixes, which cover in depth most of the features of the Entity Framework:




  • The book begins with a chapter introducing the technology, and continues with a second chapter fully devoted to show all the resources that Entity Framework puts in our hands for the development of conceptual entity data models, using clear and practical examples.


  • After that, the next two chapters describe in detail the possibilities that the main programmatic layers of the Entity Framework (Entity Client, Object Services and LINQ to Entities) offer us in order to query and update the conceptual models.


  • The fifth chapter, «Entity Framework in the real world» is dedicated to several more advanced topics, such as the relation between EF and WCF and its application to N-tier application development, or the techniques that are at our disposal for doing data binding against EF-produced results in WinForms, WPF and ASP.NET applications.


  • At last, the sixth chapter offers a broad introduction to ADO.NET Data Services, a practical framework built by Microsoft on top of the Entity Framework in order to expose entity data models through REST-based services.


  • The five appendixes cover, respectively, the fundamentals of LINQ, an Entity SQL reference, EDMGen.exe and DataSvcUtil.exe command line options and JSON serialization basics.

You can download the table of contents and part of the first chapter following this link. You can buy the book in the same webpage. The price includes courier delivery expenses to any part of Spain, although delivery to other countries may have extra charges.


Other books in English on the subject are expected to appear in bookstores at the end of 2008/beginning of 2009.


Read this post in Spanish / Lee este post en Español

ADO.NET Entity Framework: primer libro en el mundo sobre el tema

ADO.NET Entity Framework


La semana pasada hemos lanzado desde Krasis Press el primer libro que se publica en el mundo, en cualquier lengua, sobre la nueva y esperada tecnología de acceso a datos de Microsoft: Entity Framework.


¡Y qué libro! La verdad es que ha quedado una obra alucinante, escrita por tres cracks de este tema que llevan trabajando con las betas de esta tecnología, y en proyectos reales, desde hace muchos meses. Unai Zorrilla, Octavio Hernández y Eduardo Quintás.


A Unai y a Octavio ya los conocéis porque aparte de ser conocidos articulistas y MVP, son autores de la casa y autores de los libros «Modelando procesos de negocio con Workflow foundation» y «C# 3.0 y LINQ» respectivamente.


Los primeros libros sobre el tema en inglés saldrán para finales de año o principios del que viene.


La obra consta de seis capítulos más cinco apéndices, que cubren ampliamente la gran mayoría de las características de Entity Framework:

    • El libro comienza con un capítulo de introducción a la tecnología, para luego centrarse en la creación de modelos conceptuales de entidades, que describe desde los apartados más básicos hasta las posibilidades más avanzadas por medio de ejemplos claros y prácticos.

    • Los siguientes capítulos introducen al lector en las distintas posibilidades que la tecnología ofrece para consultar y actualizar los datos de un modelo conceptual, todo ello de una forma ordenada, tal y como se fueron concibiendo los distintos subsistemas que componen Entity Framework, y explicando las ventajas e inconvenientes de cada uno de ellos.

    • Para finalizar, el último capítulo del libro ofrece una introducción a ADO.NET Data Services, una aplicación práctica de Entity Framework desarrollada por Microsoft para exponer la infraestructura que conforma esta tecnología a través de servicios REST.


Puedes descargarte el índice completo con parte del primer capítulo y los detalles de la portada y contraportada desde aquí. También puedes comprarlo desde la misma página. Los gastos de envío por mensajero van incluidos en el precio.


¡Qué lo disfrutes!

Estrategias TI para luchar contra la recesión

Leo en el Blog de Ángel Medinilla un resumen de un artículo de Forrester en el que se habla sobre cosas que podemos hacer desde el departamento de Tecnologías de la Información para luchar contra la crisis:



  1. El outsourcing no es una “bala de plata”. Aprovecha la recesión para desarrollar las aptitudes internas.
  2. Ya que vamos más lentos, aprovecha para mejorar los equipos. De hecho, aprovecha para traerte a gente buena que ha sido despedida de otros sitios.
  3. Evita el “Efecto Mar Muerto”. En el Mar Muerto entra agua, pero no sale, así que la mayoría del agua pura se evapora dejando los residuos. No dejes que tu mejor gente se evapore durante una recesión.
  4. Lo último en recortar debe ser el presupuesto de formación y desarrollo. Se trata de unos recursos críticos para el éxito tras la recesión.
  5. Aprovecha la recesión para tomar las decisiones duras: desembarazarte de proveedores redundantes o que no rinden y de empleados cuyo rendimiento no sea adecuado.
  6. Acelera la virtualización y otras medidas de eficiencia en tecnologías de la información y de negocio.
  7. Redobla los esfuerzos para añadir valor. Afila las métricas del ROI, publica los éxitos en IT/BT, reconoce y premia a los mejores trabajadores, intensifica la colaboración entre la tecnología y el negocio. Usa esta época para ser más visible al Director General, no menos.
  8. Contrata a los grandes MBA que se habrían ido a Wall Street en otras circunstancias
  9. Pide descuentos a tus proveedores y re-negocia los contratos siempre que sea posible

Me gustan especialmente las que he dejado en negrita. Lo del «Efecto Mar Muerto» no lo conocía y me ha parecido simpático y una forma muy gráfica (y muy americana) de decirlo 😉


Por supuesto con el punto 4 no podría estar más de acuerdo. Y yo añadiría, fuera del departamenteo de TI, que es también el momento de redoblar esfuerzos en marketing y comunicación.


Es curioso ver cómo la mayor parte de las emrpesas, en cuanto vienen momentos díficiles, lo primero que recortan son los gastos de marketing y los de formación. Craso error. Es precisamente en estas épocas duras cuando más debemos invertir en marketing para destacar sobrela competencia y conseguir llevarte más parte de una tarta que ha menguado, y es precisamente cuando debemos invertir en formación por razones obvias.