<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Yo sólo pasaba por aquí pero ya que estoy....</title><subtitle type="html">Blog de Ibon Landa</subtitle><id>http://geeks.ms/blogs/ilanda/atom.aspx</id><link rel="alternate" type="text/html" href="http://geeks.ms/blogs/ilanda/default.aspx" /><link rel="self" type="application/atom+xml" href="http://geeks.ms/blogs/ilanda/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.31106.3070">Community Server</generator><updated>2011-10-10T17:02:00Z</updated><entry><title>Sesión de ALM y Windows Azure en Logroño</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2012/01/31/sesi-243-n-de-alm-y-windows-azure-en-logro-241-o.aspx" /><id>/blogs/ilanda/archive/2012/01/31/sesi-243-n-de-alm-y-windows-azure-en-logro-241-o.aspx</id><published>2012-01-31T08:41:40Z</published><updated>2012-01-31T08:41:40Z</updated><content type="html">&lt;p&gt;El próximo &lt;strong&gt;15 de febrero&lt;/strong&gt; participaré junto a mi compañero &lt;a href="http://geeks.ms/blogs/rcorral"&gt;Rodrigo Corral&lt;/a&gt; es un evento gratuito organizado por &lt;a href="http://www.riojadotnet.com"&gt;grupo de usuarios de La Rioja&lt;/a&gt; sobre Windows Azure y ALM.&lt;/p&gt;  &lt;p&gt;Si estáis interesados no dudéis en apuntaros. &lt;a href="http://www.riojadotnet.com/evento-azurealm.aspx"&gt;Registro&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Agenda&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Windows Azure&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;9:30 - 10:15 Introducción a la plataforma.&lt;/p&gt;  &lt;p&gt;10:15 - 11:00 Seguridad Active Directory en aplicaciones empresariales Windows Azure.&lt;/p&gt;  &lt;p&gt;11:00 - 11:15 &lt;strong&gt;Café&lt;/strong&gt; (por gentileza del Think-TIC)&lt;/p&gt;  &lt;p&gt;11:15 - 12:00 Monitorización y diagnóstico de aplicaciones.&lt;/p&gt;  &lt;p&gt;12:00 - 13:00 Pruebas de rendimiento y optimización de aplicaciones.&lt;/p&gt;  &lt;p&gt;13:00 - 14:00 &lt;strong&gt;Comida&lt;/strong&gt; (Habrá catering para todos los asistentes patrocinado por Microsoft y Plain Concepts)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ALM (Application Lifecycle Management)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;14:00 - 15:00 Scrum en la vida real.&lt;/p&gt;  &lt;p&gt;15:00 - 16:00 Metodologías ágiles con TFS.&lt;/p&gt;  &lt;p&gt;16:00 - 17:00 Gestión de fuentes, testeo unitario e integración continua.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.plainconcepts.com/"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="PlainLogo_white" border="0" alt="PlainLogo_white" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/PlainLogo_5F00_white_5F00_033B69A3.jpg" width="345" height="110" /&gt;&lt;/a&gt;&lt;a href="http://www.riojadotnet.com"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="riojadotnet164x164" border="0" alt="riojadotnet164x164" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/riojadotnet164x164_5F00_2FE4237C.png" width="164" height="164" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.estoyenlanube.com/"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="estoyenlanubeBannerLong" border="0" alt="estoyenlanubeBannerLong" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/estoyenlanubeBannerLong_5F00_55D9D3D2.png" width="960" height="66" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=203087" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Evento" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Evento/default.aspx" /><category term="Visual Studio 2010" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Visual+Studio+2010/default.aspx" /><category term="Team Server" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Team+Server/default.aspx" /><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /></entry><entry><title>Webcast: Windows Azure para ITPros</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2012/01/19/webcast-windows-azure-para-itpros.aspx" /><id>/blogs/ilanda/archive/2012/01/19/webcast-windows-azure-para-itpros.aspx</id><published>2012-01-19T11:09:00Z</published><updated>2012-01-19T11:09:00Z</updated><content type="html">&lt;p&gt;El pr&amp;oacute;ximo Jueves&amp;nbsp;9 de Febrero de 2012 a las 19.00 tendr&amp;eacute; la oportunidad de participar junto a Paulo D&amp;iacute;as, evangelista ITPro de Microsoft, en un webcast sobre &lt;strong&gt;Windows Azure enfocado 100% a los ITPros.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTA: El evento se ha cambiado del d&amp;iacute;a 2 al d&amp;iacute;a 9 de febrero.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Registro: &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032503625&amp;amp;culture=es-ES"&gt;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032503625&amp;amp;culture=es-ES&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.itpro.es/eventos/2012/01/18/windows-azure-para-itprosparte-1/"&gt;&lt;img height="344" width="604" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/20120202_2D00_Banner_2D00_Horizontal_2D00_Azure_2D00_for_2D00_ITPros_5F00_70A80FF9.png" alt="20120202-Banner-Horizontal-Azure-for-ITPros" border="0" title="20120202-Banner-Horizontal-Azure-for-ITPros" style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=202876" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Evento" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Evento/default.aspx" /><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /></entry><entry><title>Estaré en el “II evento CatDotNet”</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2012/01/18/estar-233-en-el-ii-evento-catdotnet.aspx" /><id>/blogs/ilanda/archive/2012/01/18/estar-233-en-el-ii-evento-catdotnet.aspx</id><published>2012-01-18T11:32:38Z</published><updated>2012-01-18T11:32:38Z</updated><content type="html">&lt;p&gt;El próximo día 28 de enero, sábado, el grupo de usuario &lt;strong&gt;&lt;a href="http://catdotnet.net"&gt;CatDotNet&lt;/a&gt;&amp;#160;&lt;/strong&gt; celebrará se segundo evento, dónde tendré la gran oportunidad de participar &lt;strong&gt;hablando sobre optimizaciones y rendimiento junto con mi compañero Rodrigo Corral&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Podéis registraros para asistir al evento &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032504068&amp;amp;Culture=es-ES"&gt;aquí&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Agenda:&lt;/strong&gt;&lt;/u&gt;     &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;10:00- 10:45 - &amp;quot;Cómo realizar una app metro style con C# y expression blend&amp;quot;&lt;/strong&gt;&lt;em&gt;by Edu Tomas.&lt;/em&gt;     &lt;br /&gt;En esta charla vamos a ver como podemos usar C# y XAML para la construcción de aplicaciones Metro Style usando la nueva API WinRT. Veremos como gracias a las novedades incorporadas en C#5 se nos simplifica el uso de una API masivamente asíncrona como es WinRT.     &lt;br /&gt;También hablaremos un poco del papel que juega .NET en Windows 8 y especialmente en aplicaciones Metro Style.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;strong&gt;10:45 - 11:30 - &amp;quot;Aplicaciones Windows Metro Style con HTML5&amp;quot;&lt;/strong&gt; &lt;em&gt;by Alex Casquete.      &lt;br /&gt;&lt;/em&gt;    &lt;br /&gt;En nuestros PC y tablets con Windows 8 conservaremos las aplicaciones clásicas de escritorio, pero además tendremos las nuevas aplicaciones Metro style, en las que su principal forma de interacción es el tacto y sumergen al usuario en un entorno de pantalla completa. Podemos comenzar a desarrollar ya este tipo de aplicaciones utilizando nuestro lenguaje preferido: C++, C#,&lt;a href="http://vb.net/"&gt;VB.NET&lt;/a&gt; con XAML o JavaScript con HTML5 y CSS3.     &lt;br /&gt;Durante esta sesión daremos los primeros pasos creando aplicaciones Metro style con HTML5 y JavaScript utilizando las nuevas versiones de desarrollo de Visual Studio y Expression Blend. Veremos el nuevo modelo de aplicaciones y cómo podemos aprovechar nuestras habilidades construyendo aplicaciones web para crear aplicaciones en la nueva plataforma de Windows 8.     &lt;br /&gt;Además, conoceremos las técnicas básicas para añadir a nuestras aplicaciones soporte táctil e integrarlas con el sistema, haciendo uso de las librerías de Windows para JavaScript y Windows RunTime, el nuevo proveedor de servicios. En definitiva, descubriremos todo lo necesario para iniciarnos en la creación de aplicaciones Windows Metro style.     &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;11:30 - 11:45 - Break / Descanso&lt;/strong&gt;     &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;11:45 - 12:30 - “NUI (Natural User Interfaces) de la mano de Kinect y WPF”&lt;/strong&gt;&lt;em&gt;by Toni Recio.&lt;/em&gt;     &lt;br /&gt;El teclado y el ratón siguen siendo los reyes a la hora de &amp;quot;hablar&amp;quot; con nuestras &amp;quot;máquinas&amp;quot;, pero poco a poco, se van trasformando, y lo que es más interesante aún, van surgiendo alternativas a los mismos. En esta charla veremos la gran alternativa que el mercado ha acogido con un éxito de record -la Kinect de Microsoft-, y con la ayuda de Windows Presentation Foundation (WPF) desgranaremos las principales posibilidades que nos ofrece el nuevo dispositivo fuera de su hábitat natural, el de los videojuegos para Xbox.     &lt;br /&gt;Veremos con ejemplos prácticos como sacar provecho a todos los pequeños &amp;quot;gadgets&amp;quot; que se empaquetan dentro de Kinect, a la vez que hacemos mover el esqueleto delante de nuestro PC, con un repaso al modelo de desarrollo que plantea el SDK de Kinect para Windows.     &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;12:30 – 14:00 - “Optimización y rendimiento de aplicaciones con Visual Studio y Windows Azure”&lt;/strong&gt;&lt;em&gt;by Rodrigo Corral &amp;amp; Ibon Landa.&lt;/em&gt;     &lt;br /&gt;Conocer la capacidad de una aplicación, conocer cómo se comporta ante determinada carga, saber cómo escala, optimizarla para sacar el máximo provecho de la plataforma con el mínimo coste son requisitos deseados para cualquier tipo de aplicación, hago uso o no de tecnologías de Cloud Computing.     &lt;br /&gt;En esta sesión se abordarán las diferentes alternativas y estrategias que tenemos a la hora de realizar pruebas de carga sobre aplicaciones web empleando Visual Studio 2010 y Windows Azure, sistema que puede servir tanto para aplicaciones web que estén en Azure o que estén fuera de la nube de Microsoft.     &lt;br /&gt;Una vez explicadas las diferentes alternativas se abordarán temas relacionados con la optimización de aplicaciones Azure; cómo usar el profiler, optimización y monitorización de SQL Azure, uso de cachés etc...     &lt;br /&gt;Durante la sesión se empleará el caso real de las pruebas de optimización que se han realizado en La Cura (&lt;a href="http://www.thecuregame.com/"&gt;http://www.thecuregame.com/&lt;/a&gt;); qué enfoque se ha seguido, qué decisiones se han tomado, por qué.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=202867" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Evento" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Evento/default.aspx" /><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /></entry><entry><title>Azure Monitor for Windows Phone 7 is out!</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/12/22/azure-monitor-for-windows-phone-7-is-out.aspx" /><id>/blogs/ilanda/archive/2011/12/22/azure-monitor-for-windows-phone-7-is-out.aspx</id><published>2011-12-22T10:37:39Z</published><updated>2011-12-22T10:37:39Z</updated><content type="html">&lt;p&gt;Azure Monitor for Windows Phone 7 lets you manage your Windows Azure subscriptions from your mobile device. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;List azure hosted services and view service information. &lt;/li&gt;    &lt;li&gt;Manage and move your deployments from production to staging. &lt;/li&gt;    &lt;li&gt;View key performace metrics of your instances. &lt;/li&gt;    &lt;li&gt;Delete hosted services. &lt;/li&gt;    &lt;li&gt;Stop and start a deployment. &lt;/li&gt;    &lt;li&gt;Restart and reimage a role instance. &lt;/li&gt;    &lt;li&gt;Change the numbers of instances in a role. &lt;/li&gt;    &lt;li&gt;Change the numbers of instances in a role. &lt;/li&gt;    &lt;li&gt;List your storage services. &lt;/li&gt;    &lt;li&gt;List SQL Azure Servers and get información about server, firewall rules etc… &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Azure Monitor Web Portal: &lt;a title="http://azuremonitor.plainconcepts.com/" href="http://azuremonitor.plainconcepts.com/"&gt;http://azuremonitor.plainconcepts.com/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Azure Monitor WP7 Application: &lt;a title="http://www.windowsphone.com/es-ES/apps/e0e4066b-55f8-4c04-9d3b-8b28f3224881" href="http://www.windowsphone.com/es-ES/apps/e0e4066b-55f8-4c04-9d3b-8b28f3224881"&gt;http://www.windowsphone.com/es-ES/apps/e0e4066b-55f8-4c04-9d3b-8b28f3224881&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Windows Phone 7 application uses an intermediary service that is hosted on Windows Azure, in West Europe DataCenter. &lt;/p&gt;  &lt;p&gt;For this reason, to use the WP7 app you have to register your subscription in the web application, in the subscriptions page. This page will ask you a LiveId account.&lt;/p&gt;  &lt;p&gt;In the WP7 phone you have to authenticate with the same LiveId and add again the subscriptionid that you want to manage.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: With bad 3G connections I have detected that application works slower than I expect. I will try to fix this problem.&lt;/p&gt;  &lt;ul&gt;&lt;/ul&gt;  &lt;p&gt;Here you have some screenshots taken from the emulator:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/2.0_5F00_3A7EDCF6.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="2.0" border="0" alt="2.0" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/2.0_5F00_thumb_5F00_3F04C1E3.png" width="269" height="484" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/2.2_5F00_711BEC60.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="2.2" border="0" alt="2.2" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/2.2_5F00_thumb_5F00_4FF8C9F9.png" width="269" height="484" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/2.3_5F00_48F91774.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="2.3" border="0" alt="2.3" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/2.3_5F00_thumb_5F00_5CE2843D.png" width="269" height="484" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/2.4_5F00_7FE2CFE0.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="2.4" border="0" alt="2.4" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/2.4_5F00_thumb_5F00_0D85661C.png" width="269" height="484" /&gt;&lt;/a&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/5_5F00_32367D93.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="5" border="0" alt="5" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/5_5F00_thumb_5F00_6C81CDA7.png" width="269" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=202293" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /><category term="Windows Phone 7" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Phone+7/default.aspx" /></entry><entry><title>Libro gratuito sobre Windows Azure (Parte IV)</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/12/22/libro-gratuito-sobre-windows-azure-parte-iv.aspx" /><id>/blogs/ilanda/archive/2011/12/22/libro-gratuito-sobre-windows-azure-parte-iv.aspx</id><published>2011-12-22T10:26:02Z</published><updated>2011-12-22T10:26:02Z</updated><content type="html">&lt;p&gt;En un &lt;a href="http://www.estoyenlanube.com/libro-gratuito-sobre-windows-azure-parte-iii/"&gt;post anterior&lt;/a&gt; os presentaba un pdf de descarga gratuita que hemos creado con información sobre la plataforma Windows Azure.&lt;/p&gt;  &lt;p&gt;Acabamos de publicar la cuarta y última parte sobre consideraciones de diseño y herramientas&lt;/p&gt;  &lt;p&gt;&lt;a href="http://es.scribd.com/doc/72025814/Subete-a-la-nube-de-Microsoft-Parte-1-Introduccion-a-Windows-Azure"&gt;Parte I – Introducción a Windows Azure&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://es.scribd.com/doc/72993459/Subete-a-la-nube-de-Microsoft-Parte-2-Almacenamiento-en-Windows-Azure"&gt;Parte II – Sistemas de almacenamiento, SQL Azure y Windows Azure Storage&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://es.scribd.com/doc/74482487/Subete-a-La-Nube-de-Microsoft-Parte-3-Windows-Azure-AppFabric"&gt;Parte III – Windows Azure AppFabric&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://es.scribd.com/doc/76037307/Subete-a-la-nube-de-Microsoft-Parte-4-Diseno-y-Herramientas"&gt;Parte IV – Diseño y Herramientas&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Espero que os sea de utilidad!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=202290" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /></entry><entry><title>Foro de arquitectos: 13 de dic y 15 de dic en Barcelona y Madrid</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/12/07/foro-de-arquitectos-13-de-dic-y-15-de-dic-en-barcelona-y-madrid.aspx" /><id>/blogs/ilanda/archive/2011/12/07/foro-de-arquitectos-13-de-dic-y-15-de-dic-en-barcelona-y-madrid.aspx</id><published>2011-12-07T07:09:00Z</published><updated>2011-12-07T07:09:00Z</updated><content type="html">&lt;p&gt;Los próximos 13 y 15 de diciembre se celebrará en Barcelona y Madrid una nueva edición del foro de arquitectos organizado por Microsoft dónde se hablará de aplicaciones empresariales con Windows Azure.&lt;/p&gt;  &lt;p&gt;Yo tendré la suerte de participar en el evento hablando sobre cómo trabajar con Active Directory y AppFabric Access Control para securizar aplicaciones empresariales.&lt;/p&gt;  &lt;table style="line-height:normal;border-collapse:collapse;" border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="94"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;Hora&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="226"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;Título&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:windowtext 1pt solid;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="141"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;Ponente&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="94"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;9:30-10:00&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="226"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;Registro&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="141"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;b&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;---&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="94"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;10:00-10:15&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="226"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;Presentación del evento&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="141"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;b&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;César de la Torre&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;          &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#000000"&gt;&lt;font face="Segoe UI"&gt;&lt;b&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:12pt;"&gt;Microsoft&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;font style="font-size:12pt;"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="94"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;10:15-11:00&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="226"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#000000"&gt;&lt;font face="Segoe UI"&gt;&lt;b&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:12pt;"&gt;Securización&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;font color="#1f497d"&gt;&lt;font style="font-size:12pt;"&gt;&lt;font color="#000000"&gt; de aplicaciones&lt;/font&gt; &lt;/font&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:12pt;"&gt;en &lt;/font&gt;&lt;b&gt;&lt;font style="font-size:12pt;"&gt;Windows Azure&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="141"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#000000"&gt;&lt;font face="Segoe UI"&gt;&lt;b&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:12pt;"&gt;Plain Concepts&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;font style="font-size:12pt;"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="94"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;11:00-11:30&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="226"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;Café (Catering Microsoft)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="141"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;--- &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="94"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;11:30-12:55&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="226"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000"&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;Aplicaciones &lt;b&gt;&lt;i&gt;Multi-tenant&lt;/i&gt;&lt;/b&gt; (multi-organización) en &lt;/font&gt;&lt;b&gt;&lt;font style="font-size:12pt;"&gt;Windows Azure&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="141"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#000000"&gt;&lt;font face="Segoe UI"&gt;&lt;b&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:12pt;"&gt;Microsoft&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;font style="font-size:12pt;"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="94"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;13:00-13:55&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="226"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;Proyecto de &lt;b&gt;despliegue&lt;/b&gt; de la Solución ‘&lt;b&gt;&lt;i&gt;Panda Cloud Office Protection&lt;/i&gt;&lt;/b&gt;’ en &lt;i&gt;Windows Azure&lt;/i&gt; y &lt;b&gt;Pruebas de Carga&lt;/b&gt; realizadas con &lt;b&gt;&lt;i&gt;Visual Studio 2010&lt;/i&gt;&lt;/b&gt; sobre &lt;b&gt;Windows Azure&lt;/b&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="141"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;b&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;Panda Security &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="94"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;14:00-15:25&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="226"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;Comida (Catering Microsoft)&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="141"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;---&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="94"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;15:30-16:25&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="226"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000"&gt;&lt;font face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;Desplegando &lt;b&gt;Aplicaciones Java&lt;/b&gt; y &lt;b&gt;Servidores de Aplicación&lt;/b&gt; no Microsoft, en &lt;/font&gt;&lt;b&gt;&lt;font style="font-size:12pt;"&gt;Windows Azure&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="141"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;b&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;Ilitia&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td style="border-bottom:windowtext 1pt solid;border-left:windowtext 1pt solid;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="94"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;16:30-17:25&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="226"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#000000"&gt;&lt;font face="Segoe UI"&gt;&lt;b&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:12pt;"&gt;Optimizaciones&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;font color="#1f497d"&gt;&lt;font style="font-size:12pt;"&gt;&lt;font color="#000000"&gt; de&lt;/font&gt; &lt;font color="#000000"&gt;aplicaciones en &lt;/font&gt;&lt;b&gt;&lt;font color="#000000"&gt;Windows&lt;/font&gt; &lt;font color="#000000"&gt;Azure&lt;/font&gt;&lt;/b&gt;&lt;font color="#000000"&gt; (Cache, rendimiento,&lt;/font&gt; &lt;/font&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:12pt;"&gt;escalabilidad y latencia).&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;          &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000" face="Segoe UI"&gt;&lt;font style="font-size:12pt;"&gt;- Caso real sobre la optimización de &lt;b&gt;&lt;i&gt;Softeng PortalBuilder&lt;/i&gt;&lt;/b&gt; en &lt;b&gt;Windows Azure&lt;/b&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-bottom:windowtext 1pt solid;border-left:#f0f0f0;padding-bottom:0cm;background-color:transparent;padding-left:5.4pt;padding-right:5.4pt;border-top:#f0f0f0;border-right:windowtext 1pt solid;padding-top:0cm;" valign="top" width="141"&gt;         &lt;p style="margin:0cm 0cm 0pt;"&gt;&lt;font color="#000000"&gt;&lt;font face="Segoe UI"&gt;&lt;b&gt;&lt;font color="#1f497d"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size:12pt;"&gt;Softeng&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;font style="font-size:12pt;"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032498149&amp;amp;Culture=es-ES" target="_blank"&gt;Registro para Barcelona (13 de diciembre)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032498152&amp;amp;Culture=es-ES" target="_blank"&gt;Registro para Madrid (15 de diciembre)&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=202008" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Evento" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Evento/default.aspx" /><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /></entry><entry><title>Libro gratuito sobre Windows Azure (Parte III)</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/12/02/libro-gratuito-sobre-windows-azure-parte-iii.aspx" /><id>/blogs/ilanda/archive/2011/12/02/libro-gratuito-sobre-windows-azure-parte-iii.aspx</id><published>2011-12-02T12:48:34Z</published><updated>2011-12-02T12:48:34Z</updated><content type="html">&lt;p&gt;En un &lt;a href="http://www.estoyenlanube.com/libro-gratuito-sobre-windows-azureparte-i/"&gt;post anterior&lt;/a&gt; os presentaba un pdf de descarga gratuita que hemos creado con información sobre la plataforma Windows Azure.&lt;/p&gt;  &lt;p&gt;Acabamos de publicar la tercera parte sobre Windows Azure AppFabric.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://es.scribd.com/doc/72025814/Subete-a-la-nube-de-Microsoft-Parte-1-Introduccion-a-Windows-Azure"&gt;Parte I – Introducción a Windows Azure&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://es.scribd.com/doc/72993459/Subete-a-la-nube-de-Microsoft-Parte-2-Almacenamiento-en-Windows-Azure"&gt;Parte II – Sistemas de almacenamiento, SQL Azure y Windows Azure Storage&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://es.scribd.com/doc/74482487/Subete-a-La-Nube-de-Microsoft-Parte-3-Windows-Azure-AppFabric"&gt;Parte III – Windows Azure AppFabric&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201964" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /><category term="AppFabric" scheme="http://geeks.ms/blogs/ilanda/archive/tags/AppFabric/default.aspx" /></entry><entry><title>AppFabric Service Bus Test Client</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/12/01/appfabric-service-bus-test-client.aspx" /><id>/blogs/ilanda/archive/2011/12/01/appfabric-service-bus-test-client.aspx</id><published>2011-12-01T14:34:00Z</published><updated>2011-12-01T14:34:00Z</updated><content type="html">&lt;p&gt;En &lt;a href="http://appfabricservicebus.codeplex.com/"&gt;&lt;b&gt;http://appfabricservicebus.codeplex.com/&lt;/b&gt;&lt;/a&gt; podemos encontrar un proyecto, código fuente incluido, que puede ser de gran utilidad para poder entender y probar las colas y topics de Service Bus.&lt;/p&gt;  &lt;p&gt;En este apartado se verá un ejemplo de cómo crear un servicio de colas y topics y cómo es posible emplear esta herramienta para poder probar dicha funcionalidad.&lt;/p&gt;  &lt;p&gt;Al venir con código fuente, podemos emplear esta aplicación para poder entender la forma de utiliza las librerías (Microsoft.ServiceBus.dll) que ofrece el Sdk de Windows Azure para poder trabajar con colas y topics.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:7d9c87be-c77e-428b-a34e-8088dea7b002" class="wlWriterEditableSmartContent"&gt;&lt;pre style="width:870px;height:431px;background-color:White;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;overflow:auto;"&gt;&lt;div&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; List&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Message&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; ReceiveQueueMessages(&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; queue, ReceiveMode mode)
{
    QueueDescription queueDescription &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; namespaceManager.GetQueue(queue);
    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (queueDescription &lt;/span&gt;&lt;span style="color:#000000;"&gt;!=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)
    {
        MessagingFactory factory &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; MessagingFactory.Create(serviceUri, credentials);
        QueueClient client &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; factory.CreateQueueClient(queue, mode);
        List&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Message&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; messageList &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; List&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Message&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;();

        &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;for&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;int&lt;/span&gt;&lt;span style="color:#000000;"&gt; count &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800080;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;; count &lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; queueDescription.MessageCount; count&lt;/span&gt;&lt;span style="color:#000000;"&gt;++&lt;/span&gt;&lt;span style="color:#000000;"&gt;)
        {
            BrokeredMessage message &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; client.Receive(TimeSpan.FromSeconds(&lt;/span&gt;&lt;span style="color:#800080;"&gt;5&lt;/span&gt;&lt;span style="color:#000000;"&gt;));
            &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (message &lt;/span&gt;&lt;span style="color:#000000;"&gt;!=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)
            {
                &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (mode &lt;/span&gt;&lt;span style="color:#000000;"&gt;==&lt;/span&gt;&lt;span style="color:#000000;"&gt; ReceiveMode.PeekLock)
                    message.Complete();
                messageList.Add(GetMessage(message));
            }
        }

        &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; messageList;
    }
    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;;
}
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;El primer paso es crear un namespace de Windows Azure AppFabric desde el portal de Windows Azure.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics01_5F00_5B6CA15B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="topics01" border="0" alt="topics01" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics01_5F00_thumb_5F00_39A0C8CA.png" width="552" height="251" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Una vez creado el namespace se podrá ver desde el portal el listado de todos los namespace disponibles y cómo service bus dispone de las características de colas y topics.&lt;/p&gt;

&lt;p&gt;Desde el portal se puede crear las colas, topics y subscripciones, que posteriormente serán las que utilice la aplicación de ejemplo. &lt;/p&gt;

&lt;p&gt;Lógicamente, las mismas tareas de aprovisionamiento que se hacen desde el portal podrían hacerse por código empleando los diferentes modelos de programación que permite service bus.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics02_5F00_5E51E041.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="topics02" border="0" alt="topics02" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics02_5F00_thumb_5F00_54A9720B.png" width="640" height="391" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;A continuación se muestran las ventanas a través de las cuáles es posible crear colas, topics y subscripciones. Se puede ver en dichas ventanas las opciones de configuración que ofrece cada servicio.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics03_5F00_78822398.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="topics03" border="0" alt="topics03" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics03_5F00_thumb_5F00_0BC2DA38.png" width="420" height="419" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics04_5F00_5C24BBAB.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="topics04" border="0" alt="topics04" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics04_5F00_thumb_5F00_1AAA0952.png" width="415" height="313" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics06_5F00_201879F6.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="topics06" border="0" alt="topics06" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics06_5F00_thumb_5F00_707A5B69.png" width="537" height="322" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics05_5F00_27E06C98.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="topics05" border="0" alt="topics05" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics05_5F00_thumb_5F00_0995B5A2.png" width="471" height="148" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Una vez creado el servicio, éste ya puede ser consumido desde una aplicación cliente. En este caso se usará la herramienta cliente que se ha mencionado anteriormente.&lt;/p&gt;

&lt;p&gt;Una vez descargado el código fuente se podrán ver que existe dos soluciones de Visual Studio, una para la aplicación cliente y otra para la aplicación servidora, las cuáles pueden ser usadas para probar toda la funcionalidad comentada anteriormente.&lt;/p&gt;

&lt;p&gt;Desde la aplicación cliente tendremos que realizar una conexión al servicio de Service Bus, para el cuál será necesario indicar el namespace del servicio y las credenciales de acceso; el nombre y la clave.&lt;/p&gt;

&lt;p&gt;En este caso cabe recordar que toda la autenticación se realiza a través del servicio de Access Control.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics07_5F00_286C2980.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="topics07" border="0" alt="topics07" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics07_5F00_thumb_5F00_71AECE7B.png" width="501" height="521" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics07.1_5F00_68DEC62F.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="topics07.1" border="0" alt="topics07.1" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics07.1_5F00_thumb_5F00_26F7E0E1.png" width="419" height="427" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics08_5F00_6106ADC0.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="topics08" border="0" alt="topics08" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics08_5F00_thumb_5F00_232A1644.png" width="498" height="522" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Una vez conectados al servicio se podrán ver todas las colas, topics y subscripciones creados anteriormente y simular el envío de uno o varios mensajes.&lt;/p&gt;

&lt;p&gt;Hay que destacar que para probar este servicio no es necesario disponer del servidor arrancado, ya que la comunicación ocurre de manera asíncrona y que todos los mensajes son persistidos en el Service Bus hasta que el servidor los lea y elimine.&lt;/p&gt;

&lt;p&gt;Para el servidor habría que realizar el mismo proceso; abrir la aplicación, ejecutarla, conectarse al service bus e indicar de qué cola o subscripción se desea hacer la lectura.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics10_5F00_282C53F3.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="topics10" border="0" alt="topics10" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics10_5F00_thumb_5F00_1AE5CAE0.png" width="694" height="617" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201910" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /><category term="AppFabric" scheme="http://geeks.ms/blogs/ilanda/archive/tags/AppFabric/default.aspx" /></entry><entry><title>Storage Queues vs Service Bus queues</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/11/28/storage-queues-vs-service-bus-queues.aspx" /><id>/blogs/ilanda/archive/2011/11/28/storage-queues-vs-service-bus-queues.aspx</id><published>2011-11-28T17:59:43Z</published><updated>2011-11-28T17:59:43Z</updated><content type="html">&lt;p&gt;Interesante la tabla comparativa que leo en &lt;a title="http://preps2.wordpress.com/2011/09/17/comparison-of-windows-azure-storage-queues-and-service-bus-queues/" href="http://preps2.wordpress.com/2011/09/17/comparison-of-windows-azure-storage-queues-and-service-bus-queues/"&gt;http://preps2.wordpress.com/2011/09/17/comparison-of-windows-azure-storage-queues-and-service-bus-queues/&lt;/a&gt; sobre las diferencias entre las colas de storage y las de service bus.&lt;/p&gt;  &lt;p&gt;Aunque como se verá a continuación el sistema de colas de service bus es mucho más completo que el existente en el storage, no se debe caer en la tentación de emplear siempre el más completo, sino en aquel que sea mejor para la aplicación que se esté desarrollando.&lt;/p&gt;  &lt;div style="line-height:16.11pt;margin:0px;vertical-align:baseline;"&gt;   &lt;table style="margin:0px;border-collapse:collapse;vertical-align:middle;" border="0"&gt;&lt;colgroup&gt;&lt;col style="width:219px;" /&gt;&lt;col style="width:268px;" /&gt;&lt;col style="width:204px;" /&gt;&lt;col style="width:324px;" /&gt;&lt;/colgroup&gt;&lt;tbody style="vertical-align:baseline;" valign="top"&gt;       &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 1px solid;border-left:#ffffff 1px solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:#ffffff 1px solid;border-right:#ffffff 1px solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;strong&gt;&lt;font style="font-size:8pt;" color="#000066"&gt;Feature&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:#ffffff 0.5pt solid;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;           &lt;p style="margin-top:0px;margin-bottom:25px;vertical-align:baseline;" align="center"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;strong&gt;&lt;font style="font-size:8pt;" color="#000066"&gt;Windows Azure Storage Queues&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:#ffffff 0.5pt solid;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;           &lt;p style="margin-top:0px;margin-bottom:25px;vertical-align:baseline;" align="center"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;strong&gt;&lt;font style="font-size:8pt;" color="#000066"&gt;Service Bus Queues&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:#ffffff 0.5pt solid;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;           &lt;p style="margin-top:0px;margin-bottom:25px;vertical-align:baseline;" align="center"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;strong&gt;&lt;font style="font-size:8pt;" color="#000066"&gt;Comments&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;strong&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Programming Models&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Raw REST/HTTP&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;.NET API&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes(Windows Azure Managed Library)&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes(AppFabric SDK)&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Windows Communication Foundation (WCF) binding&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Windows Workflow Foundation (WF) integration&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:61px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;strong&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Protocols&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Runtime&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;REST over HTTP&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;REST over HTTPBi-directional TCP&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;The Service Bus managed API leverages the bi-directional TCP protocol for improved performance over REST/HTTP.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Management&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;REST over HTTP&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;REST over HTTP&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:38px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;strong&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Messaging Fundamentals&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:100px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Ordering Guarantees&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;First-In-First-Out (FIFO)&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Note: guaranteed FIFO requires the use of sessions.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:61px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Message processing guarantees&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;At-Least-Once (ALO)&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;At Least-Once (ALO)Exactly-Once (EO)&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;The Service Bus generally supports the ALO guarantee; however EO can be supported by using SessionState to store application state and using transactions to atomically receive messages and update the SessionState. The AppFabric workflow uses this technique to provide EO processing guarantees.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:45px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Peek Lock&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;YesVisibility timeout: default=30s; max=2h&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;YesLock timeout: default=30s; max=5m&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Windows Azure queues offer a visibility timeout to be set on each receive operation, while Service Bus lock timeouts are set per entity.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:50px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Duplicate Detection&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes, send-side duplicate detection&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;The Service Bus will remove duplicate messages sent to a queue/topic (based on MessageId).&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:68px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Transactions&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Partial&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;The Service Bus supports local transactions involving a single entity (and its children). Transactions can also include updates to SessionState.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:55px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Receive Behavior&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Non-blocking, i.e., return immediately if no messages&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;REST/HTTP: long poll based on user-provided timeout.NET API: 3 options: blocking, blocking with timeout, non-blocking.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Batch Receive&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes(explicit)&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes. Either (a) Implicitly using prefetch, or (b) explicitly using transactions.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:44px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Batch Send&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes (using transactions)&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Receive and Delete&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Ability to reduce operation count (and associated cost) in exchange for lowered delivery assurance.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:62px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;strong&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Advanced Features&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Dead lettering&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Windows Azure queues offer a ‘dequeue count’ on each message, so applications can choose to delete troublesome messages themselves.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Session Support&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Ability to have logical subgroups within a queue or topic.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Session State&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Ability to store arbitrary metadata with sessions. Required for integration with Workflow.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Message Deferral&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Ability for a receiver to defer a message until they are prepared to process it. Required for integration with Workflow.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Scheduled Delivery&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Allows a message to be scheduled for delivery at some future time.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:55px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;strong&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Security&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Authentication&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Windows Azure credentials&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;ACS roles&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;ACS allows for three distinct roles: admin, sender and receiver. Windows Azure has a single role with total access, and no ability for delegation.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:45px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;strong&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Management Features&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:42px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Get Message Count&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Approximate&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Service Bus queues offer no operational insight at this point, but plan to in the future.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:56px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Clear Queue&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Convenience functions to clear queue efficiently.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:42px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Peek / Browse&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Windows Azure queues offer the ability to peek a message without locking it, which can be used to implement browse functionality.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Arbitrary Metadata&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Yes&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;No&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Windows Azure queues allow an arbitrary set of &amp;lt;key, value&amp;gt; pairs on queue metadata.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;strong&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Quotas/Limits&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:20px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Maximum message size&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;8KB&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;256KB&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:30px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Maximum queue size&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Unlimited&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;5GB&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Specified at queue creation, with specific values of 1,2,3,4 or 5 GB.&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr style="height:34px;"&gt;         &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:#ffffff 0.5pt solid;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;Maximum number of entities per service namespace&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;n/a&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;           &lt;p style="margin-top:0px;margin-bottom:25px;vertical-align:baseline;" align="right"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;font style="font-size:8pt;" color="#000000"&gt;10,000&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td style="border-bottom:#ffffff 0.5pt solid;border-left:medium none;padding-bottom:4px;padding-left:7px;padding-right:7px;vertical-align:middle;border-top:medium none;border-right:#ffffff 0.5pt solid;padding-top:4px;" valign="bottom"&gt;&lt;span style="margin:0px;vertical-align:baseline;"&gt;&lt;/span&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;div style="line-height:16.11pt;margin:0px;clear:both;vertical-align:baseline;" class="sharedaddy sd-like-enabled"&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201909" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /><category term="AppFabric" scheme="http://geeks.ms/blogs/ilanda/archive/tags/AppFabric/default.aspx" /></entry><entry><title>Relayed Messaging y Brokered Messaging</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/11/28/relayed-messaging-y-brokered-messaging.aspx" /><id>/blogs/ilanda/archive/2011/11/28/relayed-messaging-y-brokered-messaging.aspx</id><published>2011-11-28T17:49:47Z</published><updated>2011-11-28T17:49:47Z</updated><content type="html">&lt;p&gt;Cuando se habla de&lt;strong&gt; ApFabric Service Bus&lt;/strong&gt; es importante distinguir entre dos tipos de comunicaciones o sistema de mensajería; &lt;strong&gt;Relayed Messagins y Brokered Messaging&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/WCF_5F00_4A45674D.jpg"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="WCF" border="0" alt="WCF" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/WCF_5F00_thumb_5F00_7615BB3C.jpg" width="640" height="343" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Relayed Messaging&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Este tipo de mensajes existen desde la aparición de la primera versión de Service Bus, cuya primera versión reléase es de enero de 2010.&lt;/p&gt;  &lt;p&gt;En este escenario un servicio hosteado en Windows Azure hace de relay entre los dos puntos de la conectividad cliente-servidor, haciendo posible la comunicación entre ambos aunque haya elementos por medio que pudieran complicar dicha comunicación.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/RelayedMessaging_5F00_0CF48CB9.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="RelayedMessaging" border="0" alt="RelayedMessaging" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/RelayedMessaging_5F00_thumb_5F00_7E696AC6.png" width="640" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Este tipo de comunicación ofrece ventajas claras en situaciones dónde la conectividad es un “problema”, pero también, desde el punto de vista de arquitectura, hay que tener en cuenta otras características del sistema si se opta por este tipo de mensajes.&lt;/p&gt;  &lt;p&gt;En este tipo de escenario tanto cliente como servidor tiene que estar conectado al servicio de AppFabric para que la comunicación sea posible.&lt;/p&gt;  &lt;p&gt;Otra aspecto a tener en cuenta es que en situaciones de carga, dónde muchos clientes quisieran conectarse con el servidor, el rendimiento del sistema podría verse afectado y tener situaciones de “timeout”s en las comunicaciones. Es una solución que desde el punto de vista de balanceo de carga o escalabilidad no ofrece ninguna solución clara que cubra estos escenarios.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Brokered Messaging&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El segundo tipo de mensajes es una de las nuevas características del SDK 1.5, versión de septiembre de 2011.&lt;/p&gt;  &lt;p&gt;Es este escenario el servicio de service bus hosteado en la nube hace de bróker de mensajes entre los clientes y servidores, ofreciendo un servicio de almacenamiento persistente de los mensajes “en tránsito”.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/BrokeredMessages_5F00_0D5099E1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="BrokeredMessages" border="0" alt="BrokeredMessages" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/BrokeredMessages_5F00_thumb_5F00_5EAA6B31.png" width="640" height="245" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Con este tipo de mensajes se introducen las tecnologías de colas, topics y subscripciones, las cuáles se utilizan para diferentes tipos comunicación entre cliente y servidor. Este tipo de mensajes cubre perfectamente el típico patrón publicador-subscriptor de muchas aplicaciones.&lt;/p&gt;  &lt;p&gt;En este tipo de escenarios la comunicación no ocurre de forma síncrona, no siendo un requisito necesario que ambas partes de la comunicación se encuentren siempre disponibles.&lt;/p&gt;  &lt;p&gt;Desde el punto de vista de cliente el servidor siempre es capaz de atender las peticiones, ya que éstas se almacenan en el servicio que hace de relay. Cuando el servidor se encuentre online ya se encargará de recibir las peticiones y procesarlas.&lt;/p&gt;  &lt;p&gt;Este modelo, a diferencia del anterior, es completamente válido para escenarios de alta disponibilidad, dando a su vez opción para implementar soluciones de balanceo de carga.&lt;/p&gt;  &lt;p&gt;Aunque las &lt;b&gt;colas de Service Bus&lt;/b&gt; son una versión mucho más potente que la que ofrece Windows Azure Storage, puede tomarse como referencia el comportamiento de éstas últimas para entender la característica. Comparar este sistema con MSMQ podría ser una opción más acertada.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics11_5F00_145FB08C.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="topics11" border="0" alt="topics11" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics11_5F00_thumb_5F00_040438D3.png" width="640" height="173" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Los &lt;b&gt;topics y subscripciones&lt;/b&gt; son una funcionalidad que extiende el concepto de cola, ya que permite que las aplicaciones sólo envíen o reciban mensajes basándose basado en ciertas condiciones, no teniendo que tratar todos los mensajes que pasen por las colas.&lt;/p&gt;  &lt;p&gt;Una subscripción se crea a partir de un topic y un topic puede tener cero o más subscripciones asociadas.&lt;/p&gt;  &lt;p&gt;La aplicación envía los mensajes a un determinado topic, siendo estos mensajes en rutados a las subscripciones existentes en base a las reglas que se hayan configurado.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics12_5F00_7729E2B4.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="topics12" border="0" alt="topics12" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/topics12_5F00_thumb_5F00_53AD3E4F.png" width="640" height="284" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h6&gt;&amp;#160;&lt;/h6&gt;  &lt;p&gt;&lt;strong&gt;Modelo de programación&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Como se puede ver a continuación el modelo de programación de los mensajes brokered ofrece varios modelos de programación.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/servicebus_5F00_115A260C.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="servicebus" border="0" alt="servicebus" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/servicebus_5F00_thumb_5F00_6802DE0D.png" width="640" height="371" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Interfaz REST&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;A través de REST es posible acceder a toda la funcionalidad que ofrece la runtime de Service Bus, opción que suele ser empleada cuando se quiere acceder desde tecnologías no .NET.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Modelo directo&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;El modelo de trabajo directo ofrece una serie de librerías y clases de .NET que permite ser referenciadas desde proyectos .NET y que dan acceso de una forma clara y sencilla a toda la funcionalidad de Service Bus.&lt;/p&gt;  &lt;p&gt;Por similitud, estas clases son similares a las que existen para trabajar con Windows Azure Storage.&lt;/p&gt;  &lt;p&gt;En este caso la librería es Microsoft.ServiceBus.dll.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:c0cfa99f-87f8-4d54-a90a-a211d748ddb5" class="wlWriterEditableSmartContent"&gt;&lt;pre style="width:614px;height:198px;background-color:White;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;overflow:auto;"&gt;&lt;div&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color:#000000;"&gt; SendMessageToQueue(&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; message, &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; queueName, MessageSettings settings)
{
     MessagingFactory factory &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; MessagingFactory.Create(serviceUri, credentials);
     QueueClient queueClient &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; factory.CreateQueueClient(queueName);
    BrokeredMessage payLoad &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; GetPayload(message, settings);
    queueClient.Send(payLoad);
    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;;
}
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;b&gt;&lt;/b&gt;

&lt;p&gt;&lt;strong&gt;Modelo de programación WCF&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Del mismo modo que se puede hacer con los mensajes de tipo relayed, existe la posibilidad de trabajar con WCF. La clase NetMessagingBinding nos ofrece la posibilidad de desarrollar aplicaciones WCF que hagan uso de las nuevas capacidades de Service Bus, pudiendo manejar las colas, topics y subscripciones.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201908" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /><category term="AppFabric" scheme="http://geeks.ms/blogs/ilanda/archive/tags/AppFabric/default.aspx" /></entry><entry><title>Libro gratuito sobre Windows Azure – Parte II</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/11/17/libro-gratuito-sobre-windows-azure-parte-ii.aspx" /><id>/blogs/ilanda/archive/2011/11/17/libro-gratuito-sobre-windows-azure-parte-ii.aspx</id><published>2011-11-17T08:24:31Z</published><updated>2011-11-17T08:24:31Z</updated><content type="html">&lt;p&gt;En un &lt;a href="http://www.estoyenlanube.com/libro-gratuito-sobre-windows-azureparte-i/"&gt;post anterior&lt;/a&gt; os presentaba un pdf de descarga gratuita que hemos creado con información sobre la plataforma Windows Azure.&lt;/p&gt;  &lt;p&gt;Acabamos de publicar la segunda parte sobre los &lt;strong&gt;sistemas de almacenamiento en Windows Azure&lt;/strong&gt;, dónde se habla de SQL Azure y WIndows Azure Storage.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://es.scribd.com/doc/72025814/Subete-a-la-nube-de-Microsoft-Parte-1-Introduccion-a-Windows-Azure"&gt;Parte I – Introducción a Windows Azure&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://es.scribd.com/doc/72993459/Subete-a-la-nube-de-Microsoft-Parte-2-Almacenamiento-en-Windows-Azure"&gt;Parte II – Sistemas de almacenamiento, SQL Azure y Windows Azure Storage&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Recordad que con este contenido lo que hemos intentado es hacer una labor de recopilación de toda la información que hemos ido realizando desde la primera versión de la plataforma, para una vez actualizada, poder presentarla de forma ordenada al lector y así simplificar el proceso de aprendizaje. &lt;/p&gt;  &lt;p&gt;Espero que os sea de utilidad!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.estoyenlanube.com/" target="_blank"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="estoyenlanubeBannerLong" border="0" alt="estoyenlanubeBannerLong" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/estoyenlanubeBannerLong_5F00_1F95A22D.png" width="964" height="70" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201727" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /><category term="SQL Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/SQL+Azure/default.aspx" /></entry><entry><title>[Artalde.NET] ASP.NET MVC 3 y jQuery</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/11/14/artalde-net-asp-net-mvc-3-y-jquery.aspx" /><id>/blogs/ilanda/archive/2011/11/14/artalde-net-asp-net-mvc-3-y-jquery.aspx</id><published>2011-11-14T22:05:59Z</published><updated>2011-11-14T22:05:59Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;El 23 de noviembre&lt;/strong&gt;, miércoles, tendrá lugar la siguiente sesión presencial organizada por el grupo de usuarios Artalde, dónde Alfredo Fernández (Plain Concepts) nos introducirá en el maravilloso mundo de ASP.NET MVC y JQuery.&lt;/p&gt;  &lt;p&gt;El evento empezará a las 19:00h y el lugar el de siempre, la universidad de Deusto.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.plainconcepts.com/"&gt;&lt;img title="PlainLogo_white" border="0" alt="PlainLogo_white" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/PlainLogo_5F00_white_5F00_4670C7BD.jpg" width="323" height="109" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Descripción:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Durante esta sesión se hará una introducción a dos tecnologías básicas a día de doy para todo desarrollador que trabaje con tecnologías Microsoft, como son ASP.NET MVC 3 y JQuery. El objetivo de la misma es ofrecer una visión al asistente lo más completa posible de dichas tecnologías que le permita conocer las características principales de las mismas.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Agenda:&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Introducción a ASP.NET MVC 3      &lt;ul&gt;       &lt;li&gt;¿Por qué MVC? &lt;/li&gt;        &lt;li&gt;Arquitectura. &lt;/li&gt;        &lt;li&gt;Razor. &lt;/li&gt;        &lt;li&gt;Puntos de extensibilidad. &lt;/li&gt;        &lt;li&gt;Inyección de dependencias. &lt;/li&gt;        &lt;li&gt;Testing. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Introducción a JQuery &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Por cierto, recordad que el grupo tiene su propio &lt;a href="http://geeks.ms/blogs/artalde/"&gt;blog&lt;/a&gt; y cuenta de &lt;a href="https://twitter.com/#!/Artaldenet"&gt;twitter&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Toda la información completa y el registro &lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032499149&amp;amp;Culture=es-ES"&gt;aquí&lt;/a&gt;, os esperamos!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201692" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Evento" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Evento/default.aspx" /><category term="Artalde" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Artalde/default.aspx" /></entry><entry><title>Libro gratuito sobre Windows Azure – Parte I</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/11/09/libro-gratuito-sobre-windows-azure-parte-i.aspx" /><id>/blogs/ilanda/archive/2011/11/09/libro-gratuito-sobre-windows-azure-parte-i.aspx</id><published>2011-11-09T18:43:49Z</published><updated>2011-11-09T18:43:49Z</updated><content type="html">&lt;p&gt;Hoy os presento un pdf de descarga gratuita que hemos creado con información sobre la plataforma Windows Azure que espero que sea de gran utilidad para todas las personas que quieran ponerse al día en la plataforma.&lt;/p&gt;  &lt;p&gt;Hemos publicado la primera parte, la cuál hace una introducción a la plataforma y profundiza en Windows Azure.&lt;/p&gt;  &lt;p&gt;Con este contenido lo que hemos intentado es hacer una labor de recopilación de toda la información que hemos ido realizando desde la primera versión de la plataforma, para una vez actualizada, poder presentarla de forma ordenada al lector y así simplificar el proceso de aprendizaje. &lt;/p&gt;  &lt;p&gt;Os lo podéis descargar desde &lt;a href="http://es.scribd.com/doc/72025814/Subete-a-la-nube-de-Microsoft-Parte-1-Introduccion-a-Windows-Azure" target="_blank"&gt;aquí&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.plainconcepts.com/" target="_blank"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="logo_plain" border="0" alt="logo_plain" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/logo_5F00_plain_5F00_5240C0B9.png" width="278" height="48" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://www.krasis.com/"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="Logo-krasis-press" border="0" alt="Logo-krasis-press" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/Logo_2D00_krasis_2D00_press_5F00_3EB36118.jpg" width="130" height="70" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;La segunda parte tratará del sistema de almacenamiento, parte que tratará los temas del SQL Azure y Windows Azure Storage.&lt;/p&gt;  &lt;p&gt;La tercera parte abordará AppFabric y Windoows Identity Foudantion, mientras que la última parte serán una serie de apéndices que hablarán de herramientas para trabajar con la plataforma y algunas otras consideraciones que creemos que utilidad.&lt;/p&gt;  &lt;p&gt;Espero que en pocos días podamos ir publicando el resto.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.estoyenlanube.com/"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="estoyenlanubeBannerLong" border="0" alt="estoyenlanubeBannerLong" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/estoyenlanubeBannerLong_5F00_2F9C823E.png" width="960" height="66" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201599" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /></entry><entry><title>Windows Azure WordPress Accelerator</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/11/09/windows-azure-wordpress-accelerator.aspx" /><id>/blogs/ilanda/archive/2011/11/09/windows-azure-wordpress-accelerator.aspx</id><published>2011-11-09T12:42:20Z</published><updated>2011-11-09T12:42:20Z</updated><content type="html">&lt;p&gt;Windows Azure &lt;strong&gt;WordPress Accelerator&lt;/strong&gt; are two sample solutions that allow deploy WordPress in Windows Azure. &lt;/p&gt;  &lt;p&gt;You can find source code in CodePlex &lt;a title="http://wordpressaccelerator.codeplex.com/" href="http://wordpressaccelerator.codeplex.com/"&gt;http://wordpressaccelerator.codeplex.com/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Gerard Lopez and &lt;a href="http://geeks.ms/blogs/mcortes/" target="_blank"&gt;Mario Cortes&lt;/a&gt; work was great!&lt;/p&gt;  &lt;p&gt;The first one uses &lt;a href="http://wordpress.org/extend/plugins/windows-azure-storage/"&gt;WordPress plugin&lt;/a&gt; that allows you to use Windows Azure Storage Service to host your media for your WordPress powered blog. &lt;/p&gt;  &lt;p&gt;This solution is simpler than the other one, but It is important to note that if you want to install or update plugins, you must redeploy to solutions. New plugins must be added in Visual Studio solution and update Windows Azure deployment.&lt;/p&gt;  &lt;p&gt;The second one uses &lt;a href="http://www.microsoft.com/windowsazure/Whitepapers/DurableDriveWithNTFSCloud/"&gt;Windows Azure Drive&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;technology to store WordPress files. &lt;/p&gt;  &lt;p&gt;All wordpress files, includes media elements, are stored in VHD file that in Windows Azure Storage Page Blob.&lt;/p&gt;  &lt;p&gt;To allow multiple WordPress instances that can be modified VHD content, the solution includes worker role that mounts VHD and share it. All WordPress instances use network share that exposes worker role.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/wordpressaccelerator_5F00_6BDCE05E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="wordpressaccelerator" border="0" alt="wordpressaccelerator" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/wordpressaccelerator_5F00_thumb_5F00_4938A1E3.png" width="913" height="400" /&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201596" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /></entry><entry><title>VoD Smooth Streaming en Windows Azure</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/11/01/vod-smooth-streaming-en-windows-azure.aspx" /><id>/blogs/ilanda/archive/2011/11/01/vod-smooth-streaming-en-windows-azure.aspx</id><published>2011-11-01T21:20:50Z</published><updated>2011-11-01T21:20:50Z</updated><content type="html">&lt;p&gt;Para todo aquellos que trabajan con video la capacidad de poder servir videos desde &lt;strong&gt;Windows Azure empleando Smooth Streaming&lt;/strong&gt; es una de las características más esperadas de la plataforma. Se lleva mucho hablando de esta característica, de la posibilidad de poder servir &lt;strong&gt;VoDs (Video On Demand)&lt;/strong&gt; desde el storage directamente usando smooth streaming, pero al menos de momento no lo tenemos, así que hay que buscar alternativas.&lt;/p&gt;  &lt;p&gt;En este post intentaré mostrar una forma de poder servidor videos desde Windows Azure empleando &lt;strong&gt;Smooth Streaming. &lt;/strong&gt;Hablaré únicamente de servir videos bajo demanda, si alguien está interesado es poder hacer “Lives” le recomiendo que revise este proyecto de CodePlex; &lt;a title="http://azlivestreaming.codeplex.com/" href="http://azlivestreaming.codeplex.com/"&gt;http://azlivestreaming.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En el ejemplo que muestro a continuación todos los videos codificados para Smooth Streaming los incluyo dentro de un fichero &lt;strong&gt;VHD&lt;/strong&gt;, fichero que posteriormente subo a un Page Blob de Windows Azure Storage.&lt;/p&gt;  &lt;p&gt;Luego, lo que hago es desplegar un WebRole que emplea la característica de Drive para mapear este VHD como una unidad de disco y así poder crear un site de IIS que apunte a la unidad. De esta manera es el propio IIS el que sirve los ficheros como si éstos estuvieran en local.&lt;/p&gt;  &lt;p&gt;Los ficheros los pongo en un VHD por si quiero que éstos se compartan por diferentes instancias del Role o por si en un momento dado me interesa que la aplicación sea capaz de ir actualizando los VoDs que se sirven, por ejemplo, porque el usuario puede subir videos.&lt;/p&gt;  &lt;p&gt;El fichero VHD se puede crear desde el &lt;strong&gt;administrador de discos&lt;/strong&gt;. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/VoD_5F00_02F40048.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="VoD" border="0" alt="VoD" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/VoD_5F00_thumb_5F00_1D53F35F.png" width="314" height="257" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;En el proceso de &lt;strong&gt;creación del VHD&lt;/strong&gt; hay que tener en cuenta los siguientes aspectos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;El tamaño del disco tiene que estar entre 16Mb y 1 TB.&lt;/li&gt;    &lt;li&gt;Tiene que tener formato NTFS.&lt;/li&gt;    &lt;li&gt;El disco tiene que ser de formato fijo.&lt;/li&gt;    &lt;li&gt;El fichero VHD generado tiene que subirse como un Page Blob.&lt;/li&gt;    &lt;li&gt;Si hay varias instancias, hay que tener en cuenta que sólo 1 de ellas puede tener la unidad montada en modo escritura. En lectura pueda haber todos los que se quieran.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Una vez creado, se verá éste como una unidad más del equipo local. Dentro de esta unidad hay que los videos que se quieran. Además de los videos también se deben configurar las políticas para que éstos videos puedan ser consumidos desde dominios diferentes al actual. En el ejemplo que estoy realizando tengo dos sites; uno contendrá el player y otro servirá los videos, de ahí que se necesite permitir las llamadas desde un dominio a otro.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/VoD1_5F00_2DEBEE4D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="VoD1" border="0" alt="VoD1" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/VoD1_5F00_thumb_5F00_5B00DB1B.png" width="240" height="87" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Una vez copiados los ficheros, también desde el administrador de discos hay que realizar la acción “detach VHD” para quitar la unidad del VHD y así liberarlo para copiarlo a Storage. Recuerda que tiene que ser un Page Block.&lt;/p&gt;  &lt;p&gt;Una vez tengo el VHD, el siguiente paso es crear un &lt;strong&gt;nuevo proyecto de Windows Azure,&lt;/strong&gt; al que añado un WebRole. Del proyecto asociado al WebRole se pueden eliminar todos los ficheros, salvo el web.config.&lt;/p&gt;  &lt;p&gt;Lo que sí hay que añadir es el player que se quiere emplear para ver los videos. Se puede emplear cualquier player que sea capaz de ver videos en smooth streaming. Yo por ejemplo que cogido uno hecho en Silverlight que viene con Expression Encoder.&lt;/p&gt;  &lt;p&gt;En el player hay que indicar la URL del video que se quiere visualizar: &lt;a href="http://servicename.cloudapp.net:8080/VideoSample/VideoSample.ism/manifest"&gt;http://servicename.cloudapp.net:8080/VideoSample/VideoSample.ism/manifest&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Pongo 8080, porque éste será el puerto que empleará el site que servirá los videos y que apunte al contenido del VHD. VideoSample es un directorio que existe dentro del VHD y que contiene el video.&lt;/p&gt;    &lt;p&gt;El siguiente paso será &lt;strong&gt;mapear el VHD como una unidad, acción que la incluiré dentro del evento OnStart del WebRole&lt;/strong&gt;.&lt;/p&gt;  &lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:1d29d591-c8c8-4105-acbd-e2e22ecbefdd" class="wlWriterEditableSmartContent"&gt;&lt;pre style="width:919px;height:396px;background-color:White;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;overflow:auto;"&gt;&lt;div&gt;&lt;span style="color:#0000FF;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; CreateDrive()
{
    CloudStorageAccount storageAccount &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; CloudStorageAccount.FromConfigurationSetting(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;StorageAccount&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;);

    LocalResource localCache &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; RoleEnvironment.GetLocalResource(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;InstanceDriveCache&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;);
    CloudDrive.InitializeCache(localCache.RootPath, localCache.MaximumSizeInMegabytes);

    &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; blogUri =&amp;gt; &lt;/span&gt;&lt;span style="color:#008000;text-decoration:underline;"&gt;http://storagename.blob.core.windows.net/vod/myvhd.vhd&lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; blogUri &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; RoleEnvironment.GetConfigurationSettingValue(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;VHDUri&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;);
    CloudDrive drive &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; CloudDrive(&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; Uri(blogUri), storageAccount.Credentials);
    

    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;try&lt;/span&gt;&lt;span style="color:#000000;"&gt;
    {
        drive.Create(&lt;/span&gt;&lt;span style="color:#800080;"&gt;20&lt;/span&gt;&lt;span style="color:#000000;"&gt;);
    }
    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;catch&lt;/span&gt;&lt;span style="color:#000000;"&gt; (CloudDriveException ex)
    {
        &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; handle exception here 
        &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; exception is also thrown if all is well but the drive already exists &lt;/span&gt;&lt;span style="color:#008000;"&gt;
&lt;/span&gt;&lt;span style="color:#000000;"&gt;    }

    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; drive.Mount(localCache.MaximumSizeInMegabytes, DriveMountOptions.None);
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;El código anterior lo que hace es montar una unidad de disco a partir de un fichero VHD de 20Mb, un fichero que está en el storage dentro un contenedor llamado vhd. También emplea una caché local, para lo cuál es necesario configurar en el rol un storage local que almacene dicha caché.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/VoD2_5F00_198628C2.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="VoD2" border="0" alt="VoD2" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/VoD2_5F00_thumb_5F00_4319F3F5.png" width="485" height="236" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Una vez se tiene la unidad mapeada, el siguiente paso&lt;strong&gt; crear un nuevo site,&lt;/strong&gt; también en el método OnStart, que apunte a la unidad de disco recién mapeada. Este site se crea en el puerto 8080, en el mismo binding que el site por defecto que está en el puerto 80.&lt;/p&gt;

&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:b81a010d-000b-4954-857c-cdaeb8b28568" class="wlWriterEditableSmartContent"&gt;&lt;pre style="width:919px;height:608px;background-color:White;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;overflow:auto;"&gt;&lt;div&gt;&lt;span style="color:#0000FF;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; CreateNewSiteForVod(&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; siteRoot)
{
    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (String.IsNullOrEmpty(siteRoot))
        &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt;;

    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#000000;"&gt;!&lt;/span&gt;&lt;span style="color:#000000;"&gt;siteRoot.EndsWith(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;\\&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;))
            siteRoot &lt;/span&gt;&lt;span style="color:#000000;"&gt;+=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;\\&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;;
    var webApplicationProjectName &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Web&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;;
    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;using&lt;/span&gt;&lt;span style="color:#000000;"&gt; (ServerManager serverManager &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; ServerManager())
    {
        &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#000000;"&gt;!&lt;/span&gt;&lt;span style="color:#000000;"&gt;serverManager.Sites.Where(s &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; s.Name.Equals(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;VoDSite&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;, StringComparison.OrdinalIgnoreCase)).Any())
        {
            ApplicationPool applicationPool &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; serverManager.ApplicationPools.Add(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;VoDSitePool&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;);
            applicationPool.AutoStart &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;;
            applicationPool.ManagedPipelineMode &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; ManagedPipelineMode.Integrated;
            applicationPool.ManagedRuntimeVersion &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;v4.0&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;;
            applicationPool.ProcessModel.IdentityType &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; ProcessModelIdentityType.ApplicationPoolIdentity;

            &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; binding &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;*:8080:&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;;
            &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;int&lt;/span&gt;&lt;span style="color:#000000;"&gt; defaultPort &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800080;"&gt;80&lt;/span&gt;&lt;span style="color:#000000;"&gt;;
            &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (serverManager.Sites[RoleEnvironment.CurrentRoleInstance.Id &lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;_&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt; webApplicationProjectName].Bindings.Where(b &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; b.EndPoint.Port &lt;/span&gt;&lt;span style="color:#000000;"&gt;==&lt;/span&gt;&lt;span style="color:#000000;"&gt; defaultPort).Any())
            {

                binding &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; String.Format(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;{0}:8080:&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;,
                    serverManager.Sites[RoleEnvironment.CurrentRoleInstance.Id &lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;_&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Web&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;].Bindings.Where(b &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; b.EndPoint.Port &lt;/span&gt;&lt;span style="color:#000000;"&gt;==&lt;/span&gt;&lt;span style="color:#000000;"&gt; defaultPort).First().EndPoint.Address);
            }

            Site site &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; serverManager.Sites.Add(&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;VoDSite&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;, &lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;http&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;, binding, siteRoot);
            site.Applications.First().ApplicationPoolName &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#800000;"&gt;VoDSitePool&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;;
            site.ServerAutoStart &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;;
            serverManager.CommitChanges();
        }
    }
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;El método OnStart tendrá el siguiente aspecto:&lt;/strong&gt;&lt;/p&gt;

&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:89a2e364-5ff5-4c0b-9107-cffdc54c8c04" class="wlWriterEditableSmartContent"&gt;&lt;pre style="width:615px;height:263px;background-color:White;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;overflow:auto;"&gt;&lt;div&gt;&lt;span style="color:#0000FF;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;override&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;bool&lt;/span&gt;&lt;span style="color:#000000;"&gt; OnStart()
{
    CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;
    {
        &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (RoleEnvironment.IsAvailable)
            configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
        &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;
            configSetter(ConfigurationManager.AppSettings[configName]);
    });

    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; driveLetter &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; CreateDrive();

    CreateNewSiteForVod(driveLetter);

    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;base&lt;/span&gt;&lt;span style="color:#000000;"&gt;.OnStart();
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Ý para terminar, hay que hacer un último paso para instalar &lt;a href="http://www.iis.net/media"&gt;IIS Media Services&lt;/a&gt; cuando se despliegue la aplicación en Windows Azure, ya que este componente es necesario para poder servir ficheros usando smooth streaming. Para eso podemos usar un &lt;strong&gt;Startup Task.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Para ello hay que añadir al proyecto del WebRole el instalador de IISMediaServices y un fichero “.cmd”, indicando en los dos ficheros la opción “Copy Local = true”, para que éstos se incluyan en el despliegue.&lt;/p&gt;

&lt;p&gt;Desde el fichero de definición del servicio añadiremos la configuración para que el contenido del cmd se ejecuta al inicializar la instancia.&lt;/p&gt;

&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:6f633747-923d-47aa-948b-72fa8bd224b4" class="wlWriterEditableSmartContent"&gt;&lt;pre style="width:551px;height:145px;background-color:White;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;overflow:auto;"&gt;&lt;div&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Startup&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;
  &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Task &lt;/span&gt;&lt;span style="color:#FF0000;"&gt;commandLine&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&amp;quot;setup.cmd&amp;quot;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt; executionContext&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&amp;quot;elevated&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;
    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Environment&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;
      &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Variable &lt;/span&gt;&lt;span style="color:#FF0000;"&gt;name&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&amp;quot;EMULATED&amp;quot;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;
        &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;RoleInstanceValue &lt;/span&gt;&lt;span style="color:#FF0000;"&gt;xpath&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;=&amp;quot;/RoleEnvironment/Deployment/@emulated&amp;quot;&lt;/span&gt;&lt;span style="color:#FF0000;"&gt; &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;
      &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Variable&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;
    &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Environment&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;
  &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Task&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;
&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Startup&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Y en el cmd sólo hay que añadir la línea de comandos que instala de manera silenciosa IIS Media Services:&lt;/p&gt;

&lt;div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px;" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:9c7f0550-d5fa-4278-bb4a-3264eed85b44" class="wlWriterEditableSmartContent"&gt;&lt;pre style="width:358px;height:58px;background-color:White;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;white-space:pre-wrap;word-wrap:break-word;overflow:auto;"&gt;&lt;div&gt;&lt;span style="color:#000000;"&gt;if &lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;%EMULATED%&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;==&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color:#000000;"&gt; goto :EOF

msiexec /i IISMedia64.msi /qn &lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/VoD3_5F00_1D43CD92.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="VoD3" border="0" alt="VoD3" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/VoD3_5F00_thumb_5F00_74C4EB7D.png" width="288" height="306" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Y ya está, ya sólo es necesario desplegar la aplicación en Windows Azure y probar que todo funciona!!&lt;/p&gt;

&lt;p&gt;En mi caso &lt;a title="http://vodservice.cloudapp.net/SmoothStreamingPlayer.html" href="http://servicename.cloudapp.net/SmoothStreamingPlayer.html"&gt;http://servicename.cloudapp.net/SmoothStreamingPlayer.html&lt;/a&gt; que lo que hace es mostrar un player silverlight que consume un video que se sirve de &lt;a href="http://servicename.cloudapp.net:8080"&gt;http://servicename.cloudapp.net:8080&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Si os conectáis por RDP a la instancia podréis ver que la máquina tiene dos sites y que uno de ellos apunta a una unidad de disco dónde se ve el contenido del VHD que se ha subido previamente al Storage.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201451" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /><category term="Smooth Streaming" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Smooth+Streaming/default.aspx" /></entry><entry><title>WebCast: Catálogo de servicios en la nube</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/10/29/webcast-cat-225-logo-de-servicios-en-la-nube.aspx" /><id>/blogs/ilanda/archive/2011/10/29/webcast-cat-225-logo-de-servicios-en-la-nube.aspx</id><published>2011-10-29T17:37:13Z</published><updated>2011-10-29T17:37:13Z</updated><content type="html">&lt;p&gt;Desde el grupo de usuarios de Cloud Computing de España (&lt;a href="https://emea.mail.microsoft.com/owa/redir.aspx?C=2988ce9115624dcf8b01204ec4e38b08&amp;amp;URL=http%3a%2f%2fwww.linkedin.com%2fgroups%2fGrupo-usuarios-Cloud-Computing-Espa%25C3%25B1a-3529148%3ftrk%3dmyg_ugrp_ovr"&gt;CLOUDES&lt;/a&gt;) os proponemos una sesión en la que tres de las más importantes empresas de servicios en la nube en España nos expondrán los servicios que ofrecen en IaaS, PaaS y SaaS. Entre las empresas asistentes contaremos con la colaboración de&lt;strong&gt; Arsys, Microsoft y VMWare&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;span style="text-decoration:underline;"&gt;&lt;strong&gt;Fecha:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;3 de noviembre 12:00h&lt;/p&gt;  &lt;p&gt;Zona horaria: (GMT+01:00) Madrid, París Duración: 1 hora.&lt;/p&gt;  &lt;p&gt;&lt;span style="text-decoration:underline;"&gt;&lt;strong&gt;Agenda:&lt;/strong&gt;&lt;/span&gt;     &lt;br /&gt;Servicios en la nube     &lt;br /&gt;Mesa redonda&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Ponentes:        &lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;    &lt;br /&gt;&lt;strong&gt;Juanjo García Cabrera&lt;/strong&gt; - Director grandes cuentas en Arsys.     &lt;br /&gt;&lt;strong&gt;Juanjo Carmena&lt;/strong&gt; - Windows Azure Sales, Western Europe.     &lt;br /&gt;&lt;strong&gt;Alejandro Solana&lt;/strong&gt; - Director técnico de VMWare.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="text-decoration:underline;"&gt;Registro&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032497884&amp;amp;Culture=es-ES" href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032497884&amp;amp;Culture=es-ES"&gt;https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032497884&amp;amp;Culture=es-ES&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201422" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /></entry><entry><title>SQL Azure Federation</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/10/16/sql-azure-federation.aspx" /><id>/blogs/ilanda/archive/2011/10/16/sql-azure-federation.aspx</id><published>2011-10-16T13:49:16Z</published><updated>2011-10-16T13:49:16Z</updated><content type="html">&lt;p&gt;Una de las nuevas funcionalidades que estarán disponibles en SQL Azure para finales de 2011 es la característica de &lt;strong&gt;federación&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Uno de los grandes beneficios de la plataforma Windows Azure es la capacidad que ofrece a la hora de escalar aplicaciones. De manera muy sencilla y dinámica un usuario puede modificar el número de instancias de una aplicación.&lt;/p&gt;  &lt;p&gt;Hablando de instancias de Windows Azure este punto es cierto, pero la base de datos podría convertirse en un cuello de botella, ya que ésta no tiene la capacidad de escalado que tienen las instancias de Azure. El usuario no dispone de la posibilidad de realizar un escalado horizontal y aumentar o disminuir las bases de datos SQL Azure en función de las necesidades de la aplicación.&lt;/p&gt;  &lt;p&gt;Por ejemplo, este es un escenario típico en aplicaciones multi-tenant, dónde con un mismo despliegue se quiere ofrece el servicio a diferentes clientes. &lt;/p&gt;  &lt;p&gt;Al implementar soluciones de este tipo la primera aproximación es usar una única base de datos capaz de contener la información de todos los clientes. &lt;/p&gt;  &lt;p&gt;Esta solución es perfectamente viable, pero en algunos escenarios surgen problemas de escalabilidad en caso de que la aplicación crezca en el número de clientes.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/federation2_5F00_19787BB1.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="federation2" border="0" alt="federation2" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/federation2_5F00_thumb_5F00_4CD43F0D.png" width="496" height="130" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Otra de las soluciones aportadas, buscando un alto grado de escalabilidad ha sido utilizar múltiples base de datos, en lugar de una única que contenga todos los datos de la aplicación. &lt;/p&gt;  &lt;p&gt;La aplicación es capaz de gestionar múltiples clientes diferentes, cada uno con su información, pero a nivel de base de datos cada uno tiene su base de datos propia.&lt;/p&gt;  &lt;p&gt;Este escenario es perfectamente viable, pero implica que si existen 1000 clientes existirán 1000 base de datos, lo que aumente la complejidad de administración de la aplicación y claro está, los costes de despliegue. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SQL Azure Federation&lt;/strong&gt; viene a cubrir este tipo de escenario, ya que esta característica simplificará enormemente el escalado horizontal, posibilitando que el usuario pueda aumentar o disminuir las bases de datos de la aplicación de forma dinámica y sin que este hecho provoque una parada del servicio.&lt;/p&gt;  &lt;p&gt;Es el usuario quién decide los miembros de la federación, es quién decide cuándo añadir o disminuir miembros y es quién decide en base a qué criterio debe realizarse la partición de la información (en la primera versión sólo soportará la partición por rangos, por ejemplo, por cierto valor de un determinado campo).&lt;/p&gt;  &lt;p&gt;La sintaxis de la sentencia para crear una federación es la siguiente:    &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="491"&gt;           &lt;p&gt;CREATE FEDERATION federation_name { &amp;lt;federation_distribution_scheme&amp;gt; }&lt;/p&gt;            &lt;p&gt;&amp;lt;federation_distribution_scheme&amp;gt; ::= &amp;lt;federation_distribution&amp;gt;&lt;/p&gt;            &lt;p&gt;&amp;lt;federation_distribution&amp;gt; ::=&lt;/p&gt;            &lt;p&gt;(distribution_name &amp;lt;data_type&amp;gt; &amp;lt;distribution_type&amp;gt;)&lt;/p&gt;            &lt;p&gt;&amp;lt;data_type&amp;gt; ::= &lt;/p&gt;            &lt;p&gt;[ system_type_name . ] type_name&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;Dentro de la federación existe un elemento que se conoce como “Federation Root”. Este elemento representa el nombre lógica de la base de datos y es quién conoce todos los miembros de la federación y qué información tiene cada uno de ellos.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/federation_5F00_641F437E.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="federation" border="0" alt="federation" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/federation_5F00_thumb_5F00_19D488D9.png" width="554" height="250" /&gt;&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Las aplicaciones siempre debe conectarse al “root”, y éste quién dirige las peticiones a la base de datos correspondiente.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201209" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="SQL Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/SQL+Azure/default.aspx" /></entry><entry><title>SQL Azure Data Sync</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/10/15/sql-azure-data-sync.aspx" /><id>/blogs/ilanda/archive/2011/10/15/sql-azure-data-sync.aspx</id><published>2011-10-15T20:45:00Z</published><updated>2011-10-15T20:45:00Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;SQL Azure Data Sync&lt;/strong&gt; es una de las funcionalidades de SQL Azure accesible desde el portal de administraci&amp;oacute;n de Windows Azure, aunque est&amp;eacute; todav&amp;iacute;a en CTP.&lt;/p&gt;
&lt;p&gt;B&amp;aacute;sicamente, como se puede entender de su nombre, es un servicio de sincronizaci&amp;oacute;n de datos, que permite &lt;strong&gt;sincronizar base de datos de SQL Azure&lt;/strong&gt; que est&amp;eacute;n en el mismo o diferente datacenter o based de datos que se &lt;strong&gt;encuentren on-premise con base de datos que se encuentren hosteadas en Windows Azure&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;La sincronizaci&amp;oacute;n entre las base de datos se podr&amp;aacute; hacer de forma &lt;strong&gt;bidireccional&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Como paso adicional que se ver&amp;aacute; posteriormente, la sincronizaci&amp;oacute;n con una base de datos on-premise requiere la instalaci&amp;oacute;n de un&lt;strong&gt; agente de sincronizaci&amp;oacute;n&lt;/strong&gt; en el servidor on-premise. Este paso no es necesario en el caso de realizar el proceso entre base de datos que est&amp;eacute;n en Windows Azure.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_5E5EC6B3.png"&gt;&lt;img height="262" width="496" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_716FCD92.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Como se ha comentado anteriormente toda la funcionalidad est&amp;aacute; accesible desde el portal de administraci&amp;oacute;n de Windows Azure.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_2091935D.png"&gt;&lt;img height="288" width="214" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_17C18B11.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una vez se accede a la caracter&amp;iacute;stica de sincronizaci&amp;oacute;n, el primer paso ser&amp;aacute; realizar un aprovisionamiento del servicio. El proceso de aprovisionamiento pedir&amp;aacute; que aceptar los t&amp;eacute;rminos de licencia e indicar en qu&amp;eacute; datacenter se quiere realizar dicho aprovisionamiento.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_3CDED57D.png"&gt;&lt;img height="259" width="488" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_0BFC1E12.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una vez realizado el proceso se habilitar&amp;aacute;n las opciones de sincronizaci&amp;oacute;n. En proceso de sincronizaci&amp;oacute;n es un asistente en el cu&amp;aacute;l se guiar&amp;aacute; paso a paso sobre todas las acciones necesarias para configurar un proceso de sincronizaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_421D9661.png"&gt;&lt;img height="187" width="495" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_2D4B9DE1.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sincronizaci&amp;oacute;n entre base de datos SQL Azure&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si se selecciona la opci&amp;oacute;n de sincronizaci&amp;oacute;n entre base de datos SQL Azure, el primer paso ser&amp;aacute; dar un nombre a dicho proceso.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_038822EE.png"&gt;&lt;img height="151" width="456" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_108202FF.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;El siguiente paso ser&amp;aacute; a&amp;ntilde;adir una de las base de datos a sincronizar, indicando la ubicaci&amp;oacute;n de la misma y las credenciales de acceso.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_5A9D0DE4.png"&gt;&lt;img height="245" width="439" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_7C1C3D73.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_73B8681C.png"&gt;&lt;img height="441" width="496" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_0377FD21.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;El siguiente paso ser&amp;aacute; elegir la base de datos con la cu&amp;aacute;l se realizar la sincronizaci&amp;oacute;n. &lt;/p&gt;
&lt;p&gt;En este paso, como se puede apreciar en la figura, se debe elegir la direcci&amp;oacute;n del proceso de sincronizaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_4124E4DD.png"&gt;&lt;img height="444" width="495" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_77465D2C.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una vez indicados los dos puntos de la sincronizaci&amp;oacute;n el siguiente paso ser&amp;aacute; indicar la periodicidad del proceso y el m&amp;eacute;todo de resoluci&amp;oacute;n detecci&amp;oacute;n de conflictos que quiere aplicarse.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_3010912D.png"&gt;&lt;img height="384" width="429" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_124F066E.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Y en el &amp;uacute;ltimo paso puede definirse con m&amp;aacute;s detalle qu&amp;eacute; informaci&amp;oacute;n es la que se desea sincronizar; qu&amp;eacute; tablas, qu&amp;eacute; columas etc&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_2CAEF985.png"&gt;&lt;img height="155" width="447" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_3DB32768.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_15A07849.png"&gt;&lt;img height="565" width="496" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_3FC00064.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Y por &amp;uacute;ltimo, el asistente pedir&amp;aacute; guardar los cambios seleccionando la opci&amp;oacute;n de &amp;ldquo;deploy&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_06E5A697.png"&gt;&lt;img height="104" width="495" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_254FE780.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una vez configurado todo el proceso desde el portal de administraci&amp;oacute;n podr&amp;aacute; verse toda la informaci&amp;oacute;n del proceso y claro est&amp;aacute;, modificar cualquiera de los elementos configurados en el asistente.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_3FAFDA97.png"&gt;&lt;img height="252" width="495" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_686B3FE0.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As&amp;iacute; mismo tambi&amp;eacute;n el portal de administraci&amp;oacute;n nos ofrece la posibilidad de consultar un log con todas las operaciones que se realizan en los procesos de sincronizaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_3A9D771B.png"&gt;&lt;img height="237" width="495" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_0A93259A.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Comentar por &amp;uacute;ltimo que aunque en este apartado el proceso de creaci&amp;oacute;n del grupo de sincronizaci&amp;oacute;n se ha hecho a trav&amp;eacute;s de un asistente, existe tambi&amp;eacute;n la posibilidad de no usarlo y de crear el proceso de sincronizaci&amp;oacute;n de forma &amp;ldquo;manual&amp;rdquo; consiguiendo, claro est&amp;aacute;, el mismo resultado.&lt;/p&gt;
&lt;h6&gt;&lt;span style="font-size:x-small;"&gt;Sincronizaci&amp;oacute;n con un servidor on-premise&lt;/span&gt;&lt;/h6&gt;
&lt;p&gt;El proceso de sincronizaci&amp;oacute;n con un servidor on-premise es pr&amp;aacute;cticamente igual al realizado entre servidores SQL Azure, salvo por el hecho que implica la instalaci&amp;oacute;n de un agente de sincronizaci&amp;oacute;n en el servidor on-premise.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Aunque para realizar un proceso de este tipo se podr&amp;iacute;a utilizar un asistente similar al visto anteriormente, en este ejemplo lo que se va a realizar es a&amp;ntilde;adir un servidor on-premise al grupo creado anteriormente.&lt;/p&gt;
&lt;p&gt;Para ello, sobre el diagrama de la Figura anterior puede seleccionarse la opci&amp;oacute;n de a&amp;ntilde;adir un servidor on-premise. &lt;/p&gt;
&lt;p&gt;Dicha opci&amp;oacute;n permite a&amp;ntilde;adir un servidor que ya disponga del agente de sincronizaci&amp;oacute;n o un nuevo servidor que no lo tenga. En este caso se optar&amp;aacute; por la segunda opci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_0156EA59.png"&gt;&lt;img height="351" width="444" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_6C84F1D8.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_10C9D65B.png"&gt;&lt;img height="327" width="382" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_46EB4EAA.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_2AFA19B2.png"&gt;&lt;img height="474" width="495" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_397515D7.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Despu&amp;eacute;s de este paso ser&amp;aacute; necesario descargarse el agente de sincronizaci&amp;oacute;n (msi) e instalarlo en el servidor on-premise. Una vez instalado hay que arrancar el agente (desde el men&amp;uacute; inicio) e indicarle la clave de acceso generada en el paso 3.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_6AB3DA6A.png"&gt;&lt;img height="334" width="469" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_07D98275.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una vez hayamos configurado la clave, el siguiente paso ser&amp;aacute; registrar la base de datos local que queremos sincronizar.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_3DFAFAC4.png"&gt;&lt;img height="308" width="378" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_47078645.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una vez hecho este paso, se podr&amp;aacute; ver c&amp;oacute;mo la base de datos registrada se muestra en el servidor y podemos seleccionarla para ser usada en el proceso de sincronizaci&amp;oacute;n.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_40E039AA.png"&gt;&lt;img height="495" width="495" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_7550E625.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Una vez a&amp;ntilde;adido el servidor, para que la modificaci&amp;oacute;n tenga efecto ser&amp;aacute; necesario volver a realizar un despliegue, seleccionado la acci&amp;oacute;n &amp;ldquo;deploy&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_70AAB59E.png"&gt;&lt;img height="274" width="496" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_2DEB6A66.png" alt="image" border="0" title="image" style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201197" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="SQL Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/SQL+Azure/default.aspx" /></entry><entry><title>Novedades para SQL Azure</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/10/13/novedades-para-sql-azure.aspx" /><id>/blogs/ilanda/archive/2011/10/13/novedades-para-sql-azure.aspx</id><published>2011-10-13T20:40:37Z</published><updated>2011-10-13T20:40:37Z</updated><content type="html">&lt;p&gt;Durante estos días Microsoft está celebrando el &lt;a href="http://www.sqlpass.org/summit/2011/"&gt;SQL PASS Summit 2011&lt;/a&gt;, evento en el cuál se están anunciando entre otras muchas cosas un montón de novedades para SQL Azure, algunas de las cuáles ya podemos empezar a disfrutar y otras que llegarán de aquí a finales de año.&lt;/p&gt;  &lt;p&gt;En los próximos días espero poder&amp;#160; mostraros con mayor detalle algunas de las características. Aunque seguro que algo más se anunciará, de momento el resumen de lo que se ha comentado hasta el momento:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Se multiplicará por 3 el tamaño máximo de una base de datos SQL Azure, pasando de 50 GB a&lt;strong&gt; 150 Gb&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Llegará &lt;strong&gt;SQL Federation&lt;/strong&gt;, que simplificará el escalado horizontal usando el patrón de “sharding” basado en el tamaño de la base de datos o la carga de ésta. Simplificará enormemente la posibilidad de crear y administrar un sistema de base de datos que hagan de sharding. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Se añadirán más funcionalidades en el portal de administración para mejorar las capacidades de &lt;strong&gt;monitorización&lt;/strong&gt;, navegar por los schemas de la base de datos,&lt;strong&gt; ver los planes de ejecución&lt;/strong&gt;, datos espaciales, índices, keys u obtener &lt;strong&gt;estadísticas&lt;/strong&gt; para conocer el rendimiento de las querys que se ejecuten contra la base de datos. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Nueva CTP de SQL Azure DataSync&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/SQLAzure5_5F00_6826C1A2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SQLAzure5" border="0" alt="SQLAzure5" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/SQLAzure5_5F00_thumb_5F00_0B93403B.png" width="404" height="214" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Esta CTP ya se encuentra integrada dentro del portal de administración y puede ser usada por todos los usuarios.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/SQLAzure_5F00_4EAE989B.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SQLAzure" border="0" alt="SQLAzure" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/SQLAzure_5F00_thumb_5F00_784263CE.png" width="232" height="332" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/SQLAzure2_5F00_769197FA.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SQLAzure2" border="0" alt="SQLAzure2" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/SQLAzure2_5F00_thumb_5F00_169C7EEB.png" width="1091" height="616" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Nueva CTP de SQL Azure Reporting Service&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;Se ha anunciado una nueva versión CTP de SQL Azure Reporting Services, versión que está disponible ya mismo desde el portal de administración. Esta versión ya a su vez también está disponible en todos los datacenters de Windows Azure, lo que hace que podamos desplegarlo en aquel que nos interese para nuestra aplicación. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/SQLAzure3_5F00_2C36B788.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SQLAzure3" border="0" alt="SQLAzure3" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/SQLAzure3_5F00_thumb_5F00_20714A89.png" width="1095" height="511" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/SQLAzure4_5F00_1179F5A2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="SQLAzure4" border="0" alt="SQLAzure4" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/SQLAzure4_5F00_thumb_5F00_4BC545B6.png" width="554" height="421" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201165" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="SQL Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/SQL+Azure/default.aspx" /></entry><entry><title>Profiling de aplicaciones Windows Azure</title><link rel="alternate" type="text/html" href="/blogs/ilanda/archive/2011/10/10/profiling-de-aplicaciones-windows-azure.aspx" /><id>/blogs/ilanda/archive/2011/10/10/profiling-de-aplicaciones-windows-azure.aspx</id><published>2011-10-10T15:02:00Z</published><updated>2011-10-10T15:02:00Z</updated><content type="html">&lt;p&gt;Hace poco me preguntaba un compañero sobre cómo usar un profiler en aplicaciones desplegadas en Windows Azure. La verdad es que es muy fácil, ya que desde el Sdk 1.4 esta característica está incluida dentro de la funcionalidad ofrecida por la plataforma.&lt;/p&gt;  &lt;p&gt;En funcionamiento y configuración es exactamente igual que el profiler que podríamos emplear en nuestras aplicaciones on-premise, lo único que cambia es debemos indicar que queremos que hacer profiling de la aplicación que estamos desplegando.&lt;/p&gt;  &lt;p&gt;En menú de publicación de Visual Studio podemos ver cómo está disponible dicha opción. Una vez seleccionada también deberemos elegir entre los tipos de profiling que existen.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_5FBBB9AE.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_046CD126.png" width="424" height="503" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_127B9A56.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_1560D93C.png" width="487" height="415" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Antes de obtener la información generada, debemos indicar que queremos usar los símbolos de depuración.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_782B0B64.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_73F10DD2.png" width="761" height="444" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Una vez desplegada la aplicación se puede acceder a la información a través del “server explorer” de Visual Studio. En este momento dónde se solicita la información al agente de profiling instalando en la instancia desplegada para que éste deje la información en el storage, para poder descargarla desde ahí.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_76D64CB8.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_5914C1F9.png" width="392" height="311" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_172DDCAB.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_7BA8DAA7.png" width="791" height="537" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Y una vez tenemos la información, sólo queda analizarla y buscar los puntos de mejora, tal y como haríamos con cualquier otra aplicación no desplegada en Windows Azure.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_4074FEDC.png"&gt;&lt;img style="background-image:none;border-right-width:0px;margin:5px 5px 5px 0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://geeks.ms/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/ilanda/image_5F00_thumb_5F00_61C47EAB.png" width="868" height="671" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201093" width="1" height="1"&gt;</content><author><name>ilanda</name><uri>http://geeks.ms/members/ilanda/default.aspx</uri></author><category term="Windows Azure" scheme="http://geeks.ms/blogs/ilanda/archive/tags/Windows+Azure/default.aspx" /></entry></feed>
