<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Angel "Java" Lopez : ALT.NET, Cloud Computing</title><link>http://msmvps.com/blogs/lopez/archive/tags/ALT.NET/Cloud+Computing/default.aspx</link><description>Tags: ALT.NET, Cloud Computing</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Azure: Una aplicación simple usando Tables</title><link>http://msmvps.com/blogs/lopez/archive/2011/02/09/azure_2D00_a_2D00_simple_2D00_application_2D00_using_2D00_tables.aspx</link><pubDate>Wed, 09 Feb 2011 09:50:08 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1787882</guid><dc:creator>lopez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1787882</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2011/02/09/azure_2D00_a_2D00_simple_2D00_application_2D00_using_2D00_tables.aspx#comments</comments><description>&lt;p&gt;Continuando con &lt;a href="http://msmvps.com/blogs/lopez/archive/tags/Azure/default.aspx"&gt;mis ejemplos de Azure&lt;/a&gt;, esta vez escribí una simple aplicación web CRUD, usando Tables, con Tables, usando Azure Storage Client.&lt;/p&gt;  &lt;p&gt;Es una aplicación de ASP.NET clásico, con esta vista para CustomerList.aspx:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.ajlopez.com/images/articles2/azure45.png" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;Pueden bajarse la solución desde mi &lt;a href="http://code.google.com/p/ajcodekatas/"&gt;AjCodeKatas Google project&lt;/a&gt;. El código está en:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://code.google.com/p/ajcodekatas/source/browse/#svn/trunk/Azure/AzureCustomers"&gt;http://code.google.com/p/ajcodekatas/source/browse/#svn/trunk/Azure/AzureCustomers&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Si quieren pueden bajarse directamente la versión “congelada” desde: &lt;a href="http://cid-9f903f3d6db0c176.office.live.com/self.aspx/Examples/DotNet/AzureCustomers.zip"&gt;AzureCustomers.zip&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;La simple entidad Customer:&lt;/p&gt;  &lt;pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Customer : TableServiceEntity
{
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Customer()
        : &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;(Guid.NewGuid().ToString())
    {
    }
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Customer(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; id)
        : &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;(id, &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Empty)
    {
    }
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Name { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;; }
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Address { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;; }
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Notes { &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;; }
}
&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Estoy usando la PartitionKey como clave primaria, llenándola con un Guid. La RowKey es el string vacío. En una aplicación menos simple, podría grabar las facturas de un cliente usando la misma Partition Key, identificando cada factura con un RowKey distinto.&lt;/p&gt;

&lt;p&gt;Un DataContext está a cargo de exponer un IQueryable de Customers:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; DataContext : TableServiceContext
{
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; CustomerTableName = &amp;quot;&lt;span style="color:#8b0000;"&gt;Customers&lt;/span&gt;&amp;quot;;
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; DataContext(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; baseAddress, StorageCredentials credentials)
        : &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;(baseAddress, credentials)
    {
        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.IgnoreResourceNotFoundException = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;
    }
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; DataContext(CloudStorageAccount storageAccount)
        : &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;(storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials)
    {
        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.IgnoreResourceNotFoundException = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;
    }       
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IQueryable&amp;lt;Customer&amp;gt; Customers
    {
        &lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;
        {
            &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.CreateQuery&amp;lt;Customer&amp;gt;(CustomerTableName);
        }
    }
}
&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Noten el IgnoreNotFoundException: si está en verdadero, puedo recuperar un cliente inexistente sin levantar una excepción, y retornar un valor null.&lt;/p&gt;

&lt;p&gt;Hay un servicio para acceder y manejar los Customers:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,courier,monospace;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; CustomerServices
{
    &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; DataContext context;
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; CustomerServices(DataContext context)
    {
        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.context = context;
    }
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; Customer GetCustomerById(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; id)
    {
        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.context.Customers.Where(c =&amp;gt; c.PartitionKey == id).SingleOrDefault();
    }
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IEnumerable&amp;lt;Customer&amp;gt; GetCustomerList()
    {
        &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.context.Customers.ToList().OrderBy(c =&amp;gt; c.Name);
    }
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; AddCustomer(Customer customer)
    {
        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.context.AddObject(DataContext.CustomerTableName, customer);
        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.context.SaveChanges();
    }
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; UpdateCustomer(Customer customer)
    {
        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.context.AttachTo(DataContext.CustomerTableName, customer, &amp;quot;&lt;span style="color:#8b0000;"&gt;*&lt;/span&gt;&amp;quot;);
        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.context.UpdateObject(customer);
        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.context.SaveChanges();
    }
    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; DeleteCustomerById(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; id)
    {
        Customer c = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.GetCustomerById(id);
        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.context.DeleteObject(c);
        &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.context.SaveChanges();
    }
}
&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Noten el uso de Attach con ETag (tercer parámetro) de “*” (any). De esta forma, podemos actualizar el cliente adosando el “creado en memoria” al contexto de datos, sin recuperalo desde la base de datos. Esta forma de hacerlo es viable si tengo todos los datos del cliente, y no me importa sobreescribir cambios posibles que se hubieran hecho en el storage. En muchas aplicaciones uno cambia solamente parte del estado, ante una operación (por ejemplo, cambio de domiciolio). Entonces se recupera el objeto, se cambia parte del estado y se lo graba.&lt;/p&gt;

&lt;p&gt;Usando el servico para recuperar los clientes:&lt;/p&gt;

&lt;pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,courier,monospace;font-size:12px;"&gt;CloudStorageAccount storage = CloudStorageAccount.FromConfigurationSetting(&amp;quot;&lt;span style="color:#8b0000;"&gt;DataConnectionString&lt;/span&gt;&amp;quot;);
CustomerServices services = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; CustomerServices(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; DataContext(storage));
&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.grdCustomerList.DataSource = services.GetCustomerList();
&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.grdCustomerList.DataBind();&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Nota: ésta es una aplicación de ejemplo, simple y directa. Una aplicación real debería separar el modelo de vista del modelo de negocio, y posiblemente, usar ASP.NET MVC en la presentación. Escribiré este ejemplo usando MVC. En otra serie (fuera de ésta relacionado con Azura), quiero escribir una aplicación ASP.NET MVC usando TDD.&lt;/p&gt;

&lt;p&gt;Próximos pasos en Azure: una aplicación distribuida que calcule un fractar, un web crawler distribuido, un algoritmo genético usando Worker Roles.&lt;/p&gt;

&lt;p&gt;Nos leemos!&lt;/p&gt;

&lt;p&gt;Angel “Java” Lopez 
  &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt; 

  &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1787882" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Azure/default.aspx">Azure</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/ALT.NET/default.aspx">ALT.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Aplicaciones+Distribuidas/default.aspx">Aplicaciones Distribuidas</category></item><item><title>Resultado de la ALT.NET Hispano VAN de Programando en Azure</title><link>http://msmvps.com/blogs/lopez/archive/2011/02/02/resultado-de-la-alt-net-hispano-van-de-programando-en-azure.aspx</link><pubDate>Wed, 02 Feb 2011 11:15:14 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1787493</guid><dc:creator>lopez</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1787493</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2011/02/02/resultado-de-la-alt-net-hispano-van-de-programando-en-azure.aspx#comments</comments><description>&lt;p&gt;&lt;img style="margin:0px 20px 20px 0px;display:inline;" align="left" src="http://www.ajlopez.com/images/articles2/azure43.jpg" alt="" /&gt; Ya había adelantado esta reunión virtual en:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/blogs/lopez/archive/2011/01/07/alt-net-hispano-van-programando-en-azure.aspx"&gt;ALT.NET Hispano VAN Programando en Azure&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Gracias a la &lt;a href="http://altnethispano.org/"&gt;gente de la comunidad ALT.NET Hispano&lt;/a&gt;, pude participar el sábado pasado presentando Programando en Windows Azure. Pueden bajarse la presentación desde mi Skydrive en &lt;a href="http://cid-9f903f3d6db0c176.office.live.com/self.aspx/Presentations/AzureProgramming201101.pptx"&gt;AzureProgramming201101.pptx&lt;/a&gt;. La presentación se basa en slides traducidos de varias presentaciones &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=413e88f8-5966-4a83-b309-53b7b77edf78&amp;amp;displaylang=en"&gt;del Azure Training Kit&lt;/a&gt; (el lunes 31 de Enero fue publicada una nueva versión). Les recomiendo bajarse ese material, porque ahí encontraran ejemplos (la gente de Microsoft los llama “hands-on labs”), explicados, y con instrucciones para reproducirlos paso a paso.&lt;/p&gt;  &lt;p&gt;La reunión fue grabada, y pueden ver el video en:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://altnethispano.org/wiki/van-2011-01-29-windows-azure.ashx"&gt;Programando con Windows Azure – ALT.NET Hispano Wiki&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Estuvimos viendo conceptos generales de Azure, y luego, usando Visual Studio 2010, el Azure SDK:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7a1089b6-4050-4307-86c4-9dadaa5ed018"&gt;Windows Azure SDK and Windows Azure Tools for Microsoft Visual Studio (November 2010)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Esa versión SDK 1.3 es para VS2010, y me bajé el archivo VSCloudService.exe (no importa si es 32 o 64 bits) que contiene el SDK y las tools para Visual Studio, no hace falta bajarse el SDK aparte, viene dentro de este archivo. Si tienen que usar Visual Studio 2008, tienen que buscar el SDK 1.2, que fue la última versión que tiene soporte para esa IDE. Lamentablemente, no pueden convivir en la misma máquina el SDK 1.2 y el 1.3.&lt;/p&gt;  &lt;p&gt;Y el Azure Storage Explorer, de Neudesic, a bajar desde Codeplex:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://azurestorageexplorer.codeplex.com/"&gt;Azure Storage Explorer&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Durante la charla, me concentré en explicar, para quien es nuevo en Azure, dos grandes temas:&lt;/p&gt;  &lt;p&gt;Azure Compute, con Web Roles y Worker Roles.&lt;/p&gt;  &lt;p&gt;Azure Storage: con Tables, Queues y Blobs.&lt;/p&gt;  &lt;p&gt;Los ejemplos de la charla (con tablas, uso de colas, y blobs) pueden bajarlo del Google code project &lt;a href="http://code.google.com/p/ajcodekatas/"&gt;AjCodeKatas&lt;/a&gt;, pueden bajarlos desde:&lt;/p&gt;  &lt;p&gt;&lt;tt&gt;&lt;strong&gt;&lt;em&gt;&lt;a href="http://ajcodekatas.googlecode.com/svn/trunk/Azure"&gt;http://ajcodekatas.googlecode.com/svn/trunk/Azure&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/tt&gt;&lt;/p&gt;  &lt;p&gt;Los que no tienen SVN pueden ver la versión “congelada” a estos días:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cid-9f903f3d6db0c176.office.live.com/self.aspx/Examples/DotNet/AjCodeKatasAzure.zip"&gt;AjCodeKatasAzure.zip&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ejemplos reducidos de Azure Training Kit que tratan esos temas (si no quieren bajarse TODO el kit), en &lt;a href="http://cid-9f903f3d6db0c176.office.live.com/self.aspx/Examples/DotNet/AzureLabs.zip"&gt;AzureLabs.zip&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Ya escribí en &lt;a href="http://msmvps.com/blogs/lopez/archive/tags/Azure/default.aspx"&gt;anteriores posts&lt;/a&gt; sobre algunos ejemplos presentados. Tengo que publicar sobre el ejemplo de generación de fractal usando un cliente WinForms local y worker roles que hacen el trabajo (incluido en los ejemplos presentados):&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.ajlopez.com/images/articles2/azure44.jpg" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;Bibliografía usada:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://oreilly.com/catalog/9780596801984"&gt;Programming Windows Azure, Sriram Krisham; O’Reilly&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://www.manning.com/hay/"&gt;Azure in Action, Chris Hay, Brian H. Prince; Manning&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://apress.com/book/view/9781430224693"&gt;Introducing Windows Azure, Henri Li; Apress&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enlaces que fui usando, los coleccioné en:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://delicious.com/ajlopez/azure"&gt;http://delicious.com/ajlopez/azure&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/azure+tutorial"&gt;http://delicious.com/ajlopez/azure+tutorial&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/azure+video"&gt;http://delicious.com/ajlopez/azure+video&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://delicious.com/ajlopez/azure+storage"&gt;http://delicious.com/ajlopez/azure+storage&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Algunos enlaces a destacar:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/05/10/windows-azure-storage-abstractions-and-their-scalability-targets.aspx"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/05/10/windows-azure-storage-abstractions-and-their-scalability-targets.aspx&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/12/30/windows-azure-storage-architecture-overview.aspx"&gt;http://blogs.msdn.com/b/windowsazurestorage/archive/2010/12/30/windows-azure-storage-architecture-overview.aspx&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://www.microsoftpdc.com/2009/SVC08"&gt;http://www.microsoftpdc.com/2009/SVC08&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://code.msdn.microsoft.com/windowsazuresamples"&gt;http://code.msdn.microsoft.com/windowsazuresamples&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/olavt/archive/2009/03/12/using-windows-azure-blob-storage-to-store-aerial-images.aspx"&gt;http://blogs.msdn.com/b/olavt/archive/2009/03/12/using-windows-azure-blob-storage-to-store-aerial-images.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Próximos pasos: escribir sobre el ejemplo de Azure Fractal, y escribir un ejemplo de Web Crawler usando Tables, Queues, Web Role y Worker Roles.&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1787493" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Azure/default.aspx">Azure</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/ALT.NET/default.aspx">ALT.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Aplicaciones+Distribuidas/default.aspx">Aplicaciones Distribuidas</category></item><item><title>ALT.NET Hispano VAN Programando en Azure</title><link>http://msmvps.com/blogs/lopez/archive/2011/01/07/alt-net-hispano-van-programando-en-azure.aspx</link><pubDate>Fri, 07 Jan 2011 11:03:26 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1785887</guid><dc:creator>lopez</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/lopez/rsscomments.aspx?PostID=1785887</wfw:commentRss><comments>http://msmvps.com/blogs/lopez/archive/2011/01/07/alt-net-hispano-van-programando-en-azure.aspx#comments</comments><description>&lt;p&gt;Gracias a la &lt;a href="http://altnethispano.org"&gt;gente de la comunidad ALT.NET Hispano&lt;/a&gt;, el próximo sábado 29 de Enero, a las 18hs (GMT) (15hs acá en Argentina), participaré de una VAN (desconferencia virtual), tratando el de Programar en Azure.&lt;/p&gt;  &lt;p&gt;Presentaré los temas:&lt;/p&gt;  &lt;p&gt;- Conceptos de Windows Azure y Cloud Computing&lt;/p&gt;  &lt;p&gt;- Web Roles &lt;/p&gt;  &lt;p&gt;- Worker Roles &lt;/p&gt;  &lt;p&gt;- Azure Storage: Blobs, Queues, Tables &lt;/p&gt;  &lt;p&gt;- Patrones &lt;/p&gt;  &lt;p&gt;- Ejemplos &lt;/p&gt;  &lt;p&gt;Tratando de dar una visión de cómo se puede programar y aprovechar la plataforma Azure para nuestras aplicaciones en la nube. Ya estoy publicando código y ejemplos en este blog. Lo que presente quedará en la página de la comunidad y en este blog.&lt;/p&gt;  &lt;p&gt;Mis enlaces sobre el tema:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://delicious.com/ajlopez/azure"&gt;http://delicious.com/ajlopez/azure&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Para participar, entrar al enlace &lt;a href="http://snipr.com/virtualaltnet"&gt;http://snipr.com/virtualaltnet&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Recuerdo lo que el Microsoft MVP &lt;a href="http://twitter.com/jorgegamba"&gt;@jorgegamba&lt;/a&gt; escribió sobre estas reuniones:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Hay que aclarar que no se requiere ningún tipo de registro, simplemente acudir el día y la hora indicados a la dirección Web &lt;a href="http://snipr.com/virtualaltnet"&gt;http://snipr.com/virtualaltnet&lt;/a&gt;, eso sí, deberán tener instalado el programa cliente de Live Meeting; hay más instrucciones sobre cómo hacer esto y otras indicaciones en la página &lt;a href="http://altnethispano.org/reuniones/descripcion.aspx"&gt;Descripción de Reuniones&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Para los que no puedan asistir, quedará publicado un video en el sitio de la comunidad.&lt;/p&gt;  &lt;p&gt;Nos leemos!&lt;/p&gt;  &lt;p&gt;Angel “Java” Lopez   &lt;br /&gt;&lt;a href="http://www.ajlopez.com"&gt;http://www.ajlopez.com&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://twitter.com/ajlopez"&gt;http://twitter.com/ajlopez&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1785887" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/lopez/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Azure/default.aspx">Azure</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/ALT.NET/default.aspx">ALT.NET</category><category domain="http://msmvps.com/blogs/lopez/archive/tags/Aplicaciones+Distribuidas/default.aspx">Aplicaciones Distribuidas</category></item></channel></rss>