<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Fabio Santini</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/fabiosantini/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/fabiosantini/feed.xml</link>
    <description>Everything around Azure</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:08:07 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Media Service in Windows Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/fabiosantini/media-service-in-windows-azure</link>
      <pubDate>Mon, 16 Apr 2012 04:02:45 GMT</pubDate>
      <dc:creator><![CDATA[Fabio Santini]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fabiosantini/2012/04/16/media-service-in-windows-azure/</guid>
      <description><![CDATA[Sul sito ufficiale di Windows Azure è appena stato pubblicato un link...]]></description>
      <content:encoded><![CDATA[<p>Sul sito ufficiale di Windows Azure è appena stato pubblicato un link (<a title="http://www.windowsazure.com/en-us/home/features/media-services/" href="http://www.windowsazure.com/en-us/home/features/media-services/">http://www.windowsazure.com/en-us/home/features/media-services/</a>) che descrive un nuovo servizio che verrà rilasciato sulla piattaforma Windows Azure. La distribuzione di contenuti e lo streaming sono sicuramente due funzionalità che posso sfruttare molto bene le caratteristiche del cloud, sia per quanto riguarda l’affidabilità e la distribuzione dei contenuti sia per quello che concerne il costo dello storage e della banda. Ma fare streaming o gestire contenuti multimediali non è un mestiere semplice. Tanti dispositivi diversi, tanti codec diversi , tanti player diversi. Non basta mettere i file in internet e distribuirne l’indirizzo, è necessario avere una serie di funzionalità avanzate per garantire una corretta gestione dei contenuti e dei diversi dispositivi che ne usufruiranno.</p>  <p>Costruire workflow per la creazione, la gestione e la distribuzione di contenuti diventerà più semplice con Windows Azure Services Media. </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/5736.MediaServicesArch_14073A21.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/5736.MediaServicesArch_5F00_14073A21.png"><img style="display: inline; background-image: none;" title="MediaServicesArch" border="0" alt="MediaServicesArch" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/1780.MediaServicesArch_thumb_3EFF2826.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/1780.MediaServicesArch_5F00_thumb_5F00_3EFF2826.png" width="762" height="510" /></a></p>    <p>I Media Services forniscono una vasta gamma di funzionalità pre-costruite e pronte per l'uso, servizi diretti e di terze parti che possono essere combinati per soddisfare le vostre esigenze specifiche. Le funzionalità comprendono upload, memorizzazione, codifica, conversione di formato, la protezione del contenuto, e la consegna.</p>  <h5>Prezzi e misurazione per i Media Services</h5>  <p>Media Services sono attualmente disponibili solo in preview a costo zero . Per iscriversi alla preview <a href="mailto:mediaservices@microsoft.com?subject=Windows%20Azure%20Media%20Services%20Preview%20Program%20Inquiry">cliccate qui</a> .</p>]]></content:encoded>
    </item>
    <item>
      <title>Un’ esperienza tecnologica</title>
      <link>https://docs.microsoft.com/archive/blogs/fabiosantini/un-esperienza-tecnologica</link>
      <pubDate>Thu, 15 Mar 2012 03:03:24 GMT</pubDate>
      <dc:creator><![CDATA[Fabio Santini]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fabiosantini/2012/03/15/un-esperienza-tecnologica/</guid>
      <description><![CDATA[Ok, lo scrivo prima così, questo non è un post dedicato ad Azure ma ad un esperienza tecnologica che...]]></description>
      <content:encoded><![CDATA[<p>Ok, lo scrivo prima così, questo non è un post dedicato ad Azure ma ad un esperienza tecnologica che ho vissuto ieri e che ho pensato valesse la pena di raccontare. Chi è appassionato di tecnologia come me potrà capire alla fine di questo post il perchè “ho dovuto” raccontarlo <img style="style" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/5707.wlEmoticon-smile_19F42A1D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/5707.wlEmoticon_2D00_smile_5F00_19F42A1D.png" />.</p>  <p>Prima di tutto descriviamo gli attori in campo:</p>  <ol>   <li>Io</li>    <li>Kawasaki SX 1000</li>    <li>Interphone Bluetooth F4 Cellular Line</li>    <li>Windows Phone 7</li>    <li>Zune Pass</li> </ol>  <p>Ieri mattina appuntamento in centro a Milano. Tempo stimato da casa 30min. Decido di andare in moto , casco in testa, accendo l’interfono per ascoltare un pò di musica (lo so lo so, ma è un esperienza tecnologica dai!!!). Su Windows Phone sotto musica seleziono Smart Dj. Avendo un abbonamento Zune Pass (9 euro al mese per quasi tutta la musica esistente….grande investimento!!) Windows Phone mi permette di collegarmi al server Zune e scaricare in streaming tutta la musica che in qualche modo ha a che fare con gli artisti e la musica che mi piace o che ho già scaricato. Doppio click sul casco <img style="style" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/5707.wlEmoticon-smile_19F42A1D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/5707.wlEmoticon_2D00_smile_5F00_19F42A1D.png" /> e parte la prima canzone. Qualche secondo di attesa per lo streaming e comincio il mio viaggio, mentre ascolto la musica il sistema seleziona la successiva e comincia a scaricarla per evitare delle pause troppo lunghe tra una canzone e l’altra. Mi metto in moto (nel vero senso della parola <img style="style" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/5707.wlEmoticon-smile_19F42A1D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/5707.wlEmoticon_2D00_smile_5F00_19F42A1D.png" />) . Dopo 10 minuti arriva una chiamata , la musica si interrompe e il telefono risponde alla chiamata. 30 secondi di conversazione, si chiude la telefonata e la musica riparte. Be, fino a qui abbastanza normale direi dai, lo fanno quasi tutti. Ora però viene il bello. Qualche minuti più tardi sento un bip sull’interfono e una voce mi dice : è arrivato un sms , di leggi per leggerlo o fine. Vuoi non provare ???? Ok, leggo. La signorina a quel punto usando text to speach mi fa sentire l’sms e alla fine mi chiede se voglio rispondere, risentire o finire. Dico “rispondi” e a quel punto mi chiede di dettare l’sms. Detto l’sms , Windows Phone si collega ad internet , traduce quello che ho detto e mi fa sentire quello che ha capito lui. Perfetto, esattamente quello che avevo detto. Dico invia e l’sms parte. La musica riparte e il pensiero vola subito sulla tecnologia che mi ha permesso di mandare un sms dalla moto e sull’architettura del sistema. Fantastico. Ma non è finita. Di nuovo un sms, chiedo sempre alla stessa signorina di leggermelo e alla fine della frase lei dice “faccina felice”. Interessante, ci provo. Rispondo e alla fine della frase dico “faccina felice” e l’sms viene chiuso con l’emoticon giusto. La musica riprende, arrivo dal partner, doppio click sul caso e l’esperienza finisce. O quasi. Come tutti i post che si rispettino e dato che sono uno sviluppatore non potevo certo fermarmi qui. Di seguito trovate l’elenco delle cose che dovete dire al vostro Windows Phone 7 per ottenere l’emoticon pià usate <img style="style" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/5707.wlEmoticon-smile_19F42A1D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/5707.wlEmoticon_2D00_smile_5F00_19F42A1D.png" />.</p>  <p><img style="style" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/5707.wlEmoticon-smile_19F42A1D.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/5707.wlEmoticon_2D00_smile_5F00_19F42A1D.png" /> : faccina felice</p>  <p><img style="style" class="wlEmoticon wlEmoticon-sadsmile" alt="Sad smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/0508.wlEmoticon-sadsmile_71091513.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/0508.wlEmoticon_2D00_sadsmile_5F00_71091513.png" /> : faccina triste</p>  <p><img style="style" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/2158.wlEmoticon-openmouthedsmile_2C5C7AD2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/2158.wlEmoticon_2D00_openmouthedsmile_5F00_2C5C7AD2.png" /> : faccina che ride</p>  <p><img style="style" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/6378.wlEmoticon-winkingsmile_43A77F43.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/6378.wlEmoticon_2D00_winkingsmile_5F00_43A77F43.png" /> : faccina che fa l’occhiolino</p>  <p><img style="style" class="wlEmoticon wlEmoticon-smilewithtongueout" alt="Smile with tongue out" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/5807.wlEmoticon-smilewithtongueout_23203F91.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/5807.wlEmoticon_2D00_smilewithtongueout_5F00_23203F91.png" /> : faccina che fa la lingua</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Azure riduce i prezzi</title>
      <link>https://docs.microsoft.com/archive/blogs/fabiosantini/windows-azure-riduce-i-prezzi</link>
      <pubDate>Thu, 08 Mar 2012 23:18:38 GMT</pubDate>
      <dc:creator><![CDATA[Fabio Santini]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fabiosantini/2012/03/08/windows-azure-riduce-i-prezzi/</guid>
      <description><![CDATA[Da oggi Windows Azure costa meno. O meglio, dopo la riduzione dei costi che è stata fatta per SQL...]]></description>
      <content:encoded><![CDATA[<p>Da oggi Windows Azure costa meno. O meglio, dopo la riduzione dei costi che è stata fatta per <a href="http://blogs.msdn.com/b/fabiosantini/archive/2012/02/14/ridotto-il-prezzo-di-sql-azure.aspx">SQL Azure</a>, comprare storage e computazione costa meno. </p>  <ul>   <li>Nella sottoscrizione a consumo lo storage è stato ridotto del 12% (da 0,14$ a 0,125$ – quindi per esempio per 1TB di spazio si risparmiano al mese 15$)</li>    <li>Nel piano a 6 mesi lo storage è stato ridotto del 14%</li>    <li>L’istanza Extra Small passa da un costo al mese di 0,04$ a 0,02$ con un risparmio del 50% (una macchina di test su Azure costa oggi al mese&#160; 15$ e se aggiungiamo un database da 100Mb il costo totale è inferiore ai 20$)</li> </ul>  <p>Queste riduzione hanno anche effetto sulle sottoscrizioni presenti in altri programmi come MSDN o la trial di 3 mesi. In questi casi era previsto di fornire gratuitamente 720 ore di computazione gratuita per un istanza Extra Small. Dopo i cambiamenti le ore vengono raddoppiate e quindi è possibile avere due istanze attive al mese senza spendere nulla.</p>]]></content:encoded>
    </item>
    <item>
      <title>Ridotto il prezzo di SQL Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/fabiosantini/ridotto-il-prezzo-di-sql-azure</link>
      <pubDate>Tue, 14 Feb 2012 09:39:59 GMT</pubDate>
      <dc:creator><![CDATA[Fabio Santini]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fabiosantini/2012/02/14/ridotto-il-prezzo-di-sql-azure/</guid>
      <description><![CDATA[Per rispondere alle esigenze dei clienti che ci hanno richiesto dei prezzi di SQL Azure che...]]></description>
      <content:encoded><![CDATA[<p>Per rispondere alle esigenze dei clienti che ci hanno richiesto dei prezzi di SQL Azure che tenessero in considerazione sia database di piccolo taglio che database molto grandi, il prezzo di SQL Azure è stato ridotto.</p>  <p>Da oggi è possibile comprare database da 100MB continuando però ad usufruire di una gamma completa di funzionalità, tra cui: alta disponibilità, fault tollerance, self-management, elastico scale-out, connettività verso l’on-premise e il supporto completo di un service level agreement. Al tempo stesso i clienti potranno realizzare dal 48% al 75% di risparmio con database più grandi di 1GB. </p>  <p>Oggi le riduzioni di prezzo (<strong>il costo di un database da 100MB è di 5$ al mese</strong>) e l’introduzione di database di piccole dimensioni sono il risultato del feedback costante dei clienti e della continua evoluzione dei modelli di utilizzo.&#160; In particolare, negli ultimi 18 mesi sono emersi due modelli di utilizzo molto interessanti :</p>  <ul>   <li>molti progetti che partono piccoli ma che hanno necessità di crescere rapidamente . Al crescere del database il prezzo per GB diminuirà sensibilmente. </li>    <li>molte clienti hanno applicazioni con piccoli carichi di lavoro e vogliono un opzione conveniente per un uso modesto. </li> </ul>  <p>Nella mia esperienza, sopratutto quando parliamo di soluzioni che non sono Multitenant (cioè che prevedono un database per ogni cliente) l’introduzione di un database da 100MB è un passo importante perchè a fronte di una riduzione di prezzo non vengono persi i benefici di affidabilità di SQL Azure. Diventa quindi più semplice costruire soluzioni che hanno un front end Multitenant, ma che si appoggiano su diversi database. Questo anche per andare incontro ad eventuali richieste di separazione fisica dei dati che alcune legislazioni prevedono.</p>  <p>Qui sotto la tabella con i nuovi prezzi:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/8463.image_3621E88C.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/8463.image_5F00_3621E88C.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/1207.image_thumb_104BC229.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/1207.image_5F00_thumb_5F00_104BC229.png" width="555" height="346">&#160;</img></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Windows Azure : appena rilasciate importanti novità sulla piattaforma</title>
      <link>https://docs.microsoft.com/archive/blogs/fabiosantini/windows-azure-appena-rilasciate-importanti-novit-sulla-piattaforma</link>
      <pubDate>Mon, 12 Dec 2011 15:53:51 GMT</pubDate>
      <dc:creator><![CDATA[Fabio Santini]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fabiosantini/2011/12/12/windows-azure-appena-rilasciate-importanti-novit-sulla-piattaforma/</guid>
      <description><![CDATA[Sono state da poco annunciate (dal blog ufficiale di Windows Azure) importanti novità di Windows...]]></description>
      <content:encoded><![CDATA[<p>Sono state da poco annunciate (dal blog ufficiale di <a href="http://blogs.msdn.com/b/windowsazure/archive/2011/12/12/improved-developer-experience-interoperability-and-scalability-on-windows-azure.aspx">Windows Azure</a>) importanti novità di Windows Azure che hanno come obiettivo quello di semplificare lo sviluppo di applicazioni cloud, di agevolare l’adozione della piattaforma e di gestire in modo più efficace le risorse utilizzate. In questo nuovo rilascio ci siamo concentrati nel aiutare gli sviluppatori .NET a sviluppare in modo più semplice ed efficace e al tempo stesso di permettere agli sviluppatori open source di conservare le proprie conoscienze nell’adozione della nostra piattaforma cloud. Di seguito le novità introdotte:</p>  <ul>   <li>Introdotto lo <strong>Spending cap </strong>che permette a chi sottoscrive un abbonamento trial di 90 giorno o attiva il benefit di Windows Azure all’interno di MSDN di impostare un cap di spesa massima oltre la quale il servizio viene spento da Microsoft. In fase di partenza, ogni nuova trial o attivazione MSDN avrà un cap impostato in automatico a 0$, il che significa che anche se è necessario inserire la carta di credito per l’attivazione, nulla verrà mai pagato perchè al raggiungimento del tetto massimo delle risorse comprese nell’abbonamento gratuito, il sistema si preoccuperò di distruggere il deployment attivo e nel caso di utilizzo di dati presenti in SQL Azure o nello Storage, permetterà un acesso in readonly per il restante periodo mensile. All’inizio del mese successivo sarà possibile effettuare di nuovo il deployment e accedere nuovamente in lettura e scrittura ai propri dati. Non è possibile in questo momendo impostare un cap diverso da 0 ma l’introduzione di questa importante novità assicura il fatto che non ci saranno mai sorprese in fattura perchè il sistema è in grado di autocontrollarsi. Uno delle domande più frequenti che ho ricevuto negli ultimi mesi riguardava l’utilizzo obligatorio della carta di creadito anche durante l’attivazione di una sottoscrizione gratuita e l’evidente paura di non sapere a priori quanto sarebbe costata la piattaforma. Con l’arrivo dello <strong>Spending cap </strong>tutto questo è stato risolto (la carta di credito viene richiesta perchè vogliamo assicurarci che la piattaforma venga usata in modo corretto e quindi necessitiamo di un sistema che identifichi in modo preciso l’utente della sottoscrizione).</li>    <li>Il nuovo sdk per .NET, Java e Node.js è disponibile attraverso il modello di licenza open source Apache 2 e scaricabili attraverso <a href="https://github.com/WindowsAzure">GitHub</a>. Il supporto a Node.js trasforma Windows Azure nella piattaforma cloud per eccellenza per le applicazioni Node. Nuovi strumenti sono stati rilasciati per gli sviluppatori open source:</li>    <ul>     <li><em>Eclipse/Java:</em> un importante aggiornamento è stato effettuato al Windows Azure Plugin per Eclipse per Java che è stato rilasciato in giugno. Introduce una serie di miglioramenti di usabilità e nuove funzionalità ed è&#160; disponibile per il download con il Windows Azure SDK per Java. Guarda il <a href="http://go.microsoft.com/fwlink/?LinkID=234492&amp;clcid=0x409">video</a> per una rapida panoramica . Il nuovo sdk aggiunte il supporto alle sticky session, , Java script di startup per i più popolari server Java , Java remote debugging, e molto di più.</li>      <li><em>MongoDb : </em>integrazione con Window Azure, package per semplificare il deployment, documentazione ed esempi.</li>      <li><em>Solr/Lucene :</em> una serie di strumenti e codice orientamenti per ottenere il massimo da <strong>Solr </strong>su Windows Azure. Trovate come configurare e ospitare Solr/Lucene in Windows Azure utilizzando la replica multi-istanza per l’index serving e singola istanza per l’index-generation.</li>      <li><em>Memcached: </em>guide su come fare il deployment , eseguire e configurare memcached su Windows Azure da linguaggi non .NET.</li>   </ul>    <li>Un nuovo servizio Hadoop per Windows Azure porta le funzionalità di Hadoop per Big Data in Windows Azure e consente di distribuire applicazioni Hadoop in ore invece che in giorni. Hadoop su Windows Azure permetterà ai clienti di analizzare i dati attraverso strumenti familiari come Microsoft Excel e e PowerPivot. </li>    <li>Il nuovo sito <a title="http://www.windowsazure.com/en-us/" href="http://www.windowsazure.com/en-us/">http://www.windowsazure.com</a> è stato completamente ridisegnato seguendo lo stile Metro ed è completamente hostato su Windows Azure</li>    <li>Un nuovo <strong><a href="http://www.windowsazure.com/en-us/pricing/calculator/">pricing calculator</a> </strong>è stato inserito nel portale per semplificare il calcolo del costo della piattaforma (esiste anche la versione advanced <a href="http://www.windowsazure.com/en-us/pricing/calculator/advanced/">qui</a>)</li>    <li>Attivato un nuovo sistema di <strong><a href="https://account.windowsazure.com/Home/Index">billing</a></strong> che permette di avere un controllo molto più efficace del costo (aggiornato real time !!) della piattaforma&#160; (sotto la schermata della mia sottoscrizione…in effetti non sto spendendo troppo <img style="style" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/1200.wlEmoticon-smile_0CAFD19B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/1200.wlEmoticon_2D00_smile_5F00_0CAFD19B.png" />). Per chi gestisce più sottoscrizioni le fatture verranno inviate tutte lo stesso giorno.<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/4848.image_45353039.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/4848.image_5F00_45353039.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/0333.image_thumb_29B02E36.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/0333.image_5F00_thumb_5F00_29B02E36.png" width="802" height="622" /></a></li>    <li>     <p>Il nuovo portale per gestire i database SQL Azure anch’esso in stile Metro. E’ più semplice monitorare il propri database, avere maggiori dettagli sugli schemi, sui query plans, i dati spaziali , gli indici e le chiavi e le statistiche sulle performance. Il nuovo portale supporta anche <strong>SQL Azure Federation</strong>.        <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/8267.image_66187D13.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/8267.image_5F00_66187D13.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/6012.image_thumb_7C1EE8A5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/6012.image_5F00_thumb_5F00_7C1EE8A5.png" width="804" height="517" /></a></p>   </li>    <li>     <p>Aumentata la dimensione massimo di SQL Azure da <strong>50Gb </strong>a <strong>150GB </strong>e aggiunto SQL Azure Federation, che grazie al meccanismo di sharding semplifica lo scaling-out di SQL Azure</p>   </li>    <li>     <p>Cambiato il prezzo di SQL Azure       <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/8640.image_5FC180B8.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/8640.image_5F00_5FC180B8.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/0654.image_thumb_09554BEC.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/0654.image_5F00_thumb_5F00_09554BEC.png" width="626" height="147" /></a>        <br />Da oggi fino al raggiungimento dei 5Gb di database di pagherà $9.99 per ogni Gb. Questo vuol dire per esempio che se prima del cambiamento pagavo <strong>49.95$</strong> per un database SQL Azure da <strong>3Gb</strong> perchè mi trovavo all’interno del range &gt;1 e &lt;5Gb oggi pagherà <strong>29,97$ </strong>(3Gbx9,99$). Inoltre è stato impostato il tetto massimo di spesa su SQL Azure a 499.95$ dai 50Gb in su, il che vuol dire che dai 50Gb in avanti pagherò sempre <strong>499.95$ (50x9,99$)</strong> anche a fronte di un database grande 150Gb( che significa di fatto un risparmio di <strong>998.55$ al mese !!</strong>.</p>   </li>    <li>     <p>Nuovi prezzi anche per il data transfer in uscita dal Datacenter con una riduzione del 25%       <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/4035.image_3C44DC53.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/4035.image_5F00_3C44DC53.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/4861.image_thumb_74172076.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/4861.image_5F00_thumb_5F00_74172076.png" width="344" height="86" /></a></p>   </li>    <li>Rilasciato in nuvo <a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=8396">Windows Azure Training Kit</a> con nuovi interessanti laboratori e le slide in stile Metro:      <br /></li>    <ul>     <li>[New Presentations] 33 updated/new PowerPoint presentations </li>      <li>[New Hands-On lab] Running a parametric sweep application with the Windows Azure HPC Scheduler </li>      <li>[New Hands-On lab] Running SOA Services with the Windows Azure HPC Scheduler </li>      <li>[New Hands-On lab] Running MPI Applications with the Windows Azure HPC Scheduler </li>      <li>[New Demo] Node.js On Windows Azure </li>      <li>[New Demo] Image Rendering Parametric Sweep Application with the Windows Azure HPC Scheduler </li>      <li>[New Demo] BLAST Parametric Sweep Application with the Windows Azure HPC Scheduler </li>      <li>[Renamed Lab] Connecting Applications through Windows Azure Service Bus (formerly Introduction to Service Bus Part 1) </li>      <li>[Renamed Lab] Windows Azure Service Bus Advanced Configurations (formerly Introduction to Service Bus Part 2)</li>   </ul>    <li>Semplificato il prezzo i attivato un periodo di free trial del Service Bus: ad iniziare dal primo Aprile 2012 , l’uso del Service Bus verrà fatturato usando due nuove metriche e non verrà più fatto pagare in base alle connessioni. <b></b></li>    <ul>     <li>Relay Hours - $0.10 per 100 <b></b></li>      <li>Message Operations - $0.01 per 10,000 </li>   </ul> </ul>  <p>Se volete saperne di più non perdete questo appuntamento live <a title="http://www.learnwindowsazureevent.com/" href="http://www.learnwindowsazureevent.com/">http://www.learnwindowsazureevent.com/</a>, una conferenza dedicata a Windows Azure con speaker di eccezione come Scott Guthrie, Dave Campbell, and Mark Russinovich!</p>]]></content:encoded>
    </item>
    <item>
      <title>How to know where (Azure Datacenter) my app is running ?</title>
      <link>https://docs.microsoft.com/archive/blogs/fabiosantini/how-to-know-where-azure-datacenter-my-app-is-running</link>
      <pubDate>Mon, 21 Nov 2011 07:17:02 GMT</pubDate>
      <dc:creator><![CDATA[Fabio Santini]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fabiosantini/2011/11/21/how-to-know-where-azure-datacenter-my-app-is-running/</guid>
      <description><![CDATA[Do you want to know (which Datacenter) where your Azure application is running ? Do you need all the...]]></description>
      <content:encoded><![CDATA[<p>Do you want to know (which Datacenter) where your Azure application is running ? Do you need all the information about your deployment from a Web Role ? Ok, is not and easy game unfortunatly. I had a question from my partner asking me how to deploy the same application in different Datacenter and change the behavior of the app at runtime checking where it is running. I first checked the ServiceRuntime API but I did’t find anything useful: we have two main classes, RoleEnvironment, Role and Roleinstances. </p>  <p>RoleEnviroment    <br /><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/7610.image_4EDB48F1.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/7610.image_5F00_4EDB48F1.png"><img style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/4478.image_thumb_5449B995.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/4478.image_5F00_thumb_5F00_5449B995.png" width="224" height="202" /></a></p>  <p>We can understand if we are in emulation or not, if our role is available and the current RoleInstance. We can also get the DeploymentID , the <strong>unique identifier </strong>of the deployment in which the role instance is running. This is where I started. The only way to get all the information I needed was to using the Management API. So let’s look into the process to get the name of the Datacenter where my solution is running.</p>  <p>To use the Management API from our Web Role (or Worker Role) we need :</p>  <ol>   <li><font color="#4c4c4c">Subscription ID</font></li>    <li><font color="#4c4c4c">Thumbprint of the certificate use to connect using the API</font></li>    <li><font color="#4c4c4c">The same certificate uploaded into the HostedServices (at runtime we have to use this)</font></li> </ol>  <p>I wrote a library that does all the job and this is the code needed to get the Datacenter Name:</p>  <pre>string subId = RoleEnvironment.GetConfigurationSettingValue(&quot;SubscriptionID&quot;).ToString();
string thumbPrint = RoleEnvironment.GetConfigurationSettingValue(&quot;Thumbprint&quot;).ToString();
 
WATools.WADeploymentInfo depInfo = new WATools.WADeploymentInfo(subId,thumbPrint,RoleEnvironment.DeploymentId,&quot;&quot;);
WATools.WAToolsResponse resp = depInfo.GetWindowsAzureLocation();
if (!resp.HasError) lblDatacenter.Text = resp.ReturnValue;</pre>

<p>How it works ?</p>

<p>Every Management API calls I did in the code use this two easy function:</p>

<p>private Uri <strong>CreateUri</strong>(string method, string newServiceName = null) 

  <br />{ 

  <br />&#160;&#160;&#160; string hostName = &quot;&quot;;</p>

<p>&#160;&#160;&#160; if (newServiceName == null) hostName = HostedServiceName; else hostName = newServiceName; 
  <br />&#160;&#160;&#160; Uri uri = null; 

  <br />&#160;&#160;&#160; String uriString; 

  <br />&#160;&#160;&#160; switch (method) 

  <br />&#160;&#160;&#160; { 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;ChangeConfig&quot;: 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; uriString = String.Format(&quot;<a href="https://management.core.windows.net/&quot;">https://management.core.windows.net/&quot;</a> + SubscriptionID + 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;/services/hostedservices/{0}/deploymentslots/production/?comp=config&quot;, hostName); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; uri = new Uri(uriString); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break; 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;GetHostedServiceProperties&quot;: 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; uriString = String.Format(&quot;<a href="https://management.core.windows.net/&quot;">https://management.core.windows.net/&quot;</a> + SubscriptionID + 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;/services/hostedservices/{0}?embed-detail=true&quot;, hostName); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; uri = new Uri(uriString); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break; 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;GetDeploymentInfo&quot;: 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; uriString = String.Format(&quot;<a href="https://management.core.windows.net/&quot;">https://management.core.windows.net/&quot;</a> + SubscriptionID + 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;/services/hostedservices/{0}/deploymentslots/production&quot;, hostName); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; uri = new Uri(uriString); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break; 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;ListHostedServices&quot;: 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; uriString = String.Format(&quot;<a href="https://management.core.windows.net/&quot;">https://management.core.windows.net/&quot;</a> + SubscriptionID + &quot;/services/hostedservices&quot;); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; uri = new Uri(uriString); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break; 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; case &quot;GetLocation&quot;: 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; uriString = String.Format(&quot;<a href="https://management.core.windows.net/&quot;">https://management.core.windows.net/&quot;</a> + SubscriptionID + &quot;/locations&quot;); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; uri = new Uri(uriString); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; break; 

  <br />&#160;&#160;&#160; }</p>

<p>&#160;&#160;&#160; return uri;</p>

<p>}</p>

<p>private HttpWebRequest <strong>CreateHttpRequest</strong>(Uri uri, X509Certificate2 cert, string method, string version) 

  <br />{ 

  <br />&#160;&#160;&#160; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri); 

  <br />&#160;&#160;&#160; request.Method = method; 

  <br />&#160;&#160;&#160; request.ClientCertificates.Add(cert); 

  <br />&#160;&#160;&#160; request.ContentType = &quot;application/xml&quot;; 

  <br />&#160;&#160;&#160; request.Headers.Add(&quot;x-ms-version&quot;, version); 

  <br />&#160;&#160;&#160; return request; 

  <br />}</p>

<p>First we need to call the <strong>List Hosted Services</strong> to get the list of Hosted Service within the subsciption. This API required just the Subscription ID.</p>

<p>public List&lt;string&gt; <strong>GetHostedServices</strong>(X509Certificate2 cert) 

  <br />{</p>

<p>&#160;&#160;&#160; Uri uri = CreateUri(&quot;ListHostedServices&quot;); 
  <br />&#160;&#160;&#160; HttpWebRequest request = CreateHttpRequest(uri, cert, &quot;GET&quot;, &quot;2010-10-28&quot;);</p>

<p>&#160;&#160;&#160; List&lt;string&gt; HostedServices = new List&lt;string&gt;();</p>

<p>&#160;&#160;&#160; try 
  <br />&#160;&#160;&#160; { 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Stream dataStream = response.GetResponseStream();</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; XElement hostedServiceElement = XElement.Load(dataStream);</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; IEnumerable&lt;XElement&gt; ServicesName = hostedServiceElement.Descendants(&quot;{<a href="http://schemas.microsoft.com/windowsazure}ServiceName&quot;);">http://schemas.microsoft.com/windowsazure}ServiceName&quot;);</a></p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; foreach (XElement el in ServicesName) 
  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; HostedServices.Add(el.Value);</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return HostedServices; 
  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; } 

  <br />&#160;&#160;&#160; } 

  <br />&#160;&#160;&#160; catch (Exception ex) 

  <br />&#160;&#160;&#160; { 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return null;</p>

<p>&#160;&#160;&#160; }</p>

<p>&#160;&#160;&#160; return null; 
  <br /> }</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/2744.HostedServices_72B3FA7E.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/2744.HostedServices_5F00_72B3FA7E.png"><img style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="HostedServices" border="0" alt="HostedServices" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/4885.HostedServices_thumb_2573DB26.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/4885.HostedServices_5F00_thumb_5F00_2573DB26.png" width="797" height="423" /></a></p>

<p>We need now to enumarate all the Hosted Services and for each one we have to call <strong>Get Deployment </strong>API. </p>

<p>public string <strong>FindHostedServiceById</strong>(X509Certificate2 cert, List&lt;string&gt; hostedServices, string DeploymentID) 

  <br />{</p>

<p>&#160;&#160;&#160; foreach (string name in hostedServices) 
  <br />&#160;&#160;&#160; {</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; Uri uri = CreateUri(&quot;GetDeploymentInfo&quot;, name); 
  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; HttpWebRequest request = CreateHttpRequest(uri, cert, &quot;GET&quot;, &quot;2010-10-28&quot;); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; try 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; { 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; {</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Stream dataStream = response.GetResponseStream();</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; XElement hostedService = XElement.Load(dataStream);</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; XElement PrivateId = hostedService.Descendants(&quot;{<a href="http://schemas.microsoft.com/windowsazure}PrivateID&quot;).First();">http://schemas.microsoft.com/windowsazure}PrivateID&quot;).First();</a></p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (PrivateId.Value == DeploymentID) return name;</p>

<p>
  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; dataStream.Close();</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } 
  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; } 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; catch (Exception ex) 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; { 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return null;</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; } 
  <br />&#160;&#160;&#160; }</p>

<p>&#160;&#160;&#160; return null; 
  <br />}&#160; </p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/0172.DeploymentInfo_46C35AF5.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/0172.DeploymentInfo_5F00_46C35AF5.png"><img style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="DeploymentInfo" border="0" alt="DeploymentInfo" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/3731.DeploymentInfo_thumb_0BCC025F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/3731.DeploymentInfo_5F00_thumb_5F00_0BCC025F.png" width="804" height="434" /></a></p>

<p>For each hosted service we have a bunch of useful information but the most important one is the PrivateID. This ID is exactly the same we have calling RoleEnvironment.DeploymentId. Doing a match we know which HostedServiceName has our PrivateID so we know the name of the HostedService where our app is running on. The final step is to call the <strong>Get Hosted Service Properties </strong>API:</p>

<p>public WAToolsResponse <strong>GetWindowsAzureLocation</strong>() 

  <br />{</p>

<p>&#160;&#160;&#160; X509Certificate2 cert = GetCertificate(); 
  <br />&#160;&#160;&#160; if (cert == null) 

  <br />&#160;&#160;&#160; { 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new WAToolsResponse(true,&quot;&quot;,new Exception((string.Format(&quot;Unable to load {0} certificate&quot;,Thumbprint))),&quot;&quot;,&quot;OpenCertificate&quot;); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160; }</p>

<p>&#160;&#160;&#160; // Request Hosted Services List to find the righ HostedServices throuhg the PrivateID 
  <br />&#160;&#160;&#160; List&lt;string&gt; hostedServices = <strong>GetHostedServices</strong>(cert);</p>

<p>&#160;&#160;&#160; if (hostedServices==null) 
  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new WAToolsResponse(true, &quot;&quot;, new Exception((string.Format(&quot;Unable to enumerate hostedservices&quot;, Thumbprint))), &quot;&quot;, &quot;GetHostedServices&quot;); 

  <br />&#160;&#160;&#160; <br />&#160;&#160;&#160; // Try to find the HostedServiceName from the Deployment ID 

  <br />&#160;&#160;&#160; string HostedName = <strong>FindHostedServiceById</strong>(cert, hostedServices, HostedServicePrivateId);</p>

<p>&#160;&#160;&#160; if (HostedName == null) 
  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new WAToolsResponse(true, &quot;&quot;, new Exception((string.Format(&quot;Unable to find the PrivateID:{0}&quot;, HostedServicePrivateId))), &quot;&quot;, &quot;GetHostedServices&quot;); ;</p>

<p>&#160;&#160;&#160; Uri uri = CreateUri(&quot;GetHostedServiceProperties&quot;, HostedName);</p>

<p>&#160;&#160;&#160; HttpWebRequest request = CreateHttpRequest(uri, cert, &quot;GET&quot;, &quot;2011-06-01&quot;); 
  <br />&#160;&#160;&#160; <br />&#160;&#160;&#160; try 

  <br />&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; try 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Stream dataStream = response.GetResponseStream();</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; XElement hostedService = XElement.Load(dataStream);</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; XElement Location = hostedService.Descendants(&quot;{<a href="http://schemas.microsoft.com/windowsazure}Location&quot;).First();">http://schemas.microsoft.com/windowsazure}Location&quot;).First();</a></p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new WAToolsResponse(false,<strong>Location.Value</strong>,null,uri.ToString(),&quot;GetResponse&quot;);</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } 
  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; catch (Exception ex) 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; { 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new WAToolsResponse(true,&quot;&quot;,ex,uri.ToString(),&quot;GetResponseStream&quot;);</p>

<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } 
  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; } 

  <br />&#160;&#160;&#160; } 

  <br />&#160;&#160;&#160; catch (Exception ex) 

  <br />&#160;&#160;&#160; { 

  <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return new WAToolsResponse(true,&quot;&quot;,ex,uri.ToString(),&quot;HttpWebRequest&quot;); 

  <br />&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160; } 

  <br />&#160;&#160;&#160; <br />}</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/0677.DeploymentInfoAll_7404A52B.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/0677.DeploymentInfoAll_5F00_7404A52B.png"><img style="border: 0px currentcolor; padding-top: 0px; padding-right: 0px; padding-left: 0px; display: inline; background-image: none;" title="DeploymentInfoAll" border="0" alt="DeploymentInfoAll" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/8130.DeploymentInfoAll_thumb_7D6D3DD4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/8130.DeploymentInfoAll_5F00_thumb_5F00_7D6D3DD4.png" width="811" height="590" /></a></p>

<p>We have a lot of useful information here and finally the Location property of our application.</p>

<p><a href="http://isvitaly.blob.core.windows.net/tools/WATools.zip">Here</a> the Visual Studio 2010 project of WATools.</p>

<p>Fabio </p>]]></content:encoded>
    </item>
    <item>
      <title>Cloud Computing: futuro o moda?</title>
      <link>https://docs.microsoft.com/archive/blogs/fabiosantini/cloud-computing-futuro-o-moda</link>
      <pubDate>Sun, 13 Nov 2011 11:25:57 GMT</pubDate>
      <dc:creator><![CDATA[Fabio Santini]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fabiosantini/2011/11/13/cloud-computing-futuro-o-moda/</guid>
      <description><![CDATA[Ieri mattina sul gruppo Windows Azure Italia di Linkedin è apparso un post interessante che aveva...]]></description>
      <content:encoded><![CDATA[<p>Ieri mattina sul gruppo Windows Azure Italia di Linkedin è apparso un post interessante che aveva esattamente il titolo di questo post. Cloud Computing: futuro o moda ? La richiesta era quella di capire realmente quali fossere le differenze del Cloud rispetto ai sistemi classici di Hosting e se fosse veramente una piattaforma su cui investire per il futuro o solo una moda di passaggio. Condivido la risposta che ho dato al gruppo aggiungendo qualche altro spunto di discussione.</p>  <p>“Cerco di darti la mia visione del cloud dopo quasi un anno e mezzo che mi ci sono immerso. </p>  <p>La prima domanda è quella che mi sento rivolgere tutte le volte che partecipo a delle conferenze in cui parlo di Windows Azure : cosa c'è di diverso tra ASP, Hosting e Cloud ? Alla base di tutto credo ci sia un economia di scala che fà la differenza. Avere Data Center distribuiti nel mondo ognuno con la stessa infrastruttura, le stesse risorse, le stesse funzionalità, lo stesso sistema di gesione con centinaia di migliaia di server che possono essere allocati anche solo per qualche ora rende il cloud molto ELASTICO ed ECONOMICO. Ho messo in maiuscolo queste due parole (qui non c'è il bold :-)) perchè credo che la principale differenza stia qui. Quando hai bisogno di aggiungere risorse al tuo sistema e devi farlo nell'arco di 5 minuti e devi farlo in modo affidabile ecco che hai bisogno dell'economia di scala di cui parlavo prima. Hai virtualmente migliaia di server destinati a te senza averli pagati, li richiedi e ti vengono dati in un attimo e li paghi per quanto ti servono. Difficile (anche se non impossibile) ottenere lo stesso tipo di comportamento in modalità hosting o ASP. Elastico però vuol dire anche rilasciare i server quando non servono più e solo chi si può permettere di averne a disposizioni così tanti può anche permettersi di riallocarli ad altri. Economia di scala vuol dire abbassare i costi di gestione perchè la corrente, il condizionamento, la gestione viene suddivisa per tutti i server che vengono gestiti in ogni Datacenter e quindi evidentemente i costi alla base sono più bassi e quindi il costo per l'utente finale è normalmente più basso. Ma c'è anche un aspetto che magari un pò nascosto identifica in maniera chiara la differenza tra hosting e cloud : UNIFORMITA'. In ogni momento , qualunque sia il Datacenter , sai a priori che tutti i server sono uguali , che si comporteranno alla stessa maniera, che il sistema è lo stesso, che l'Hyper V che controlla le macchine è uguale per tutti . E questa è una grande notizia perchè significa dimenticarsi di tutte le incompatibilità indipendente da dove si decide di distribuire la propria applicazione.   <br />Poi la domanda del secolo : quanto costa ? Qualche mese fa feci un post per raccontare in modo spero semplice come si calcola il costo del cloud ma è evidentemente un calcolo complicato ma per la natura del sistema stesso. Se ti do la possibilità di pagare a ora e per ogni risorsa che usi è evidente che calcolare il costo di esercizio è complicato e richiede molta attenzione per evitare di sottovalutare questo aspetto. Al tempo stesso la mia esperienza mi dice che il costo di Windows Azure è sempre di almeno un unità di grandezza rispetto a quello che sarà poi il prezzo di vendita della soluzione che verrà venduta (vale quasi in tutti i casi). Il fatto di essere elastico mi permette di ridurre al limite i costi , magari per esempio riducendo il numero di server durante il weelk end o durante la notte. Se puoi vuoi capire quanto costa nel dettaglio allora mandami una mail a fsantini@microsoft.com :-).    <br />Ultimo punto, la migrazione. Windows Azure ha come base di partenza Windows Server 2008R2, .NET Framework 4.0 e IIS 7.0. Se ho un applicazione fatta così la migrazione è instantanea (sempre che si sia gestito in modo corretto lo stato dell'applicazione con più front end, ma questo non è solo un problema del cloud). Se hai un applicazione in PHP, o Java , o Ruby puoi tranquillamente migrare la tua applicazione su Azure con pochi o tanti sforzi che dipendono molto da come è stata scritta e da queli engine sono stati usati. Nel tuo caso per esempio, paradossalmente potevi caricare sulla tua macchina anche il framework 2.0 e far girare tutto senza ricompilare niente ma avresti perso tutti i vantaggi del Platform as as Service che chi sviluppo software su WIndows Azure apprezza. </p>  <p>Parliamo della sicurezza che è una di quelle domande che mi sento rivolgere sempre. I miei dati e la mia applicazione stanno nel cloud, come faccio ad essere sicuro che nessuno potrà mai accedere a quelle informazioni tranne me ? Si parte dal presupposto che gestire i dati sui propri server sia più sicuro o poter andare a vedere il server all’interno della server farm dia maggiori garanzie su come i dati vengono gestiti. Ma siamo proprio sicuri che sia così ?</p>  <p>Io personalmente non ci credo, sarà perchè ho avuto la fortuna di visitare il Datacenter di Dublino e la gestione della sicurezza è maniacale. A partire dall’arrivo al Datacenter, hai controlli di Identità, alla gestione della sicurezza interna, alla certificazione delle persone autorizzate a lavorare all’interno del Datacenter stesso. Chi fornisce una piattaforma Cloud ha sicuremante come prima priorità la sicurezza perchè su quella si basa la fiducia e l’adozione da parte di partner e clienti. E’ chiaro che anche gli hoster locali pensino alla sicurezza in modo maniacale ma se mi permettono di accedere alle mie macchine vuol dire che lo fanno fare anche agli altri e quindi il potenziale problema c’è. Nel Cloud non ci si va, non si prende la macchina o l’aereo per andare a vedere il proprio server, semplicemente non si può. Allora meglio che li tengo in casa che sono sicuro….forse no. Oggi sono in aumento i furti di dati ma non come avvenivano una volta, cioè attraverso virus o attacchi interni, semplicemente entrando nelle aziende e portando via le macchine. Provate ad entrare in un Datacenter che ha 400.000 macchine e portarvi via proprio la vostra, be c’è qualche difficoltà in più <img style="style" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/2055.wlEmoticon-smile_23A256EA.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/2055.wlEmoticon_2D00_smile_5F00_23A256EA.png" />. E poi quando parliamo di sicurezza parliamo anche di affidabilità e quindi del fatto che il servizio sia sempre attivo. Siamo proprio certi di riuscire nel nostro datacenter ha garantire l’affidabilità che vogliamo ? Abbiamo ridondato tutto per essere sicuri che una rottura fisica non abbia un impatto sul nostro sistema ? Abbiamo una doppia banda, un triplo sistema di fornitura di energia elettrica, doppi router distinti fra loro, doppio condizionamento elettrico, etc etc. Certo qualcuno ce l’ha ma il costo di gestire tutto questo è dato a pochi e non a tanti. Quindi la maggior parte delle persone potrebbe avere un sistema così sicuro e ridondato senza spendere i costi che sarebbero necessari per averlo in casa propria. Gli hoster ? Be si certo loro queste cose le controllano e le gestiscono perchè fa parte del loro business quindi ci sia aspetta che il sistema sia sempre affidabile ma posso avere datacenter distribuiti nel mondo per sicurezza ? Tante sono le domande che vengono in mente ovviamente, ma alla fine si torna sempre all’economia di scala. Con il Cloud si ottengono tutte queste cose ad un prezzo decisamente inferiore e si può contare su una infrastuttura Elastica, Scalabile, Sicura, Affidabile e la si può comprare quando serve”</p>]]></content:encoded>
    </item>
    <item>
      <title>E’ arrivato il nuovo PC , e adesso ?</title>
      <link>https://docs.microsoft.com/archive/blogs/fabiosantini/e-arrivato-il-nuovo-pc-e-adesso</link>
      <pubDate>Tue, 01 Nov 2011 15:38:12 GMT</pubDate>
      <dc:creator><![CDATA[Fabio Santini]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fabiosantini/2011/11/01/e-arrivato-il-nuovo-pc-e-adesso/</guid>
      <description><![CDATA[Da qualche ora ho tra le mani il mio nuovo portatile, un Lenovo W520 con 16Gb di Ram e un processore...]]></description>
      <content:encoded><![CDATA[<p>Da qualche ora ho tra le mani il mio nuovo portatile, un Lenovo W520 con 16Gb di Ram e un processore quadcore 64bit(finalmente un PC che sembra un server <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/7506.wlEmoticon-smile_768A5FE3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/7506.wlEmoticon_2D00_smile_5F00_768A5FE3.png" />) e come tutti quelli che si trovano nella mia situazione comincio a farmi le solite domande:</p>  <ul>   <li>Che sistema operativo installo ?</li>    <li>Come faccio a fare il backup dei miei dati dal pc vecchio senza dimenticarmi niente ? (per esempio i certificati…)</li>    <li>Come faccio a restituire il vecchio pc senza per forza dover reinstallare tutto su quello nuovo ? (e se mi serve proprio quel programma li che ho configurato e che non trovo più….)</li>    <li>Come faccio a fare tutto questo in fretta ? <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/7506.wlEmoticon-smile_768A5FE3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/7506.wlEmoticon_2D00_smile_5F00_768A5FE3.png" /></li> </ul>  <p>Ma allora cosa c’entra questo post con Windows Azure ? Be , c’entra perchè mi aiuta a rispondere alla prima domanda.</p>  <p>Per utilizzare il VM Role di Windows Azure è necessario utilizzare Hyper-V per creare le macchine virtuali e poi uploadarle sul portale e per questo motivo ho deciso di installare Windows Server 2008 R2 come sistema operativo di base (ci sono anche altri modi per farlo ma questo mi sembra il più lineare). Il sistema operativo del vecchio PC è Windows 7 e il disco è protetto da BitLocker (giusto per complicare un pò le cose).</p>  <p>Windows Server 2800 R2 si installa in pochissimo tempo e dopo averlo configurato correttamente mi appresto a rispondere alle altre domande. Devo copiare tutti i dati dal pc veccio a quello nuovo senza dimenticarmi nulla e di solito quando si fanno queste operazioni qualcosa si dimentica sempre:</p>  <ul>   <li>Favorites di IE</li>    <li>My Received File</li>    <li>Download</li>    <li>PST di Outlook</li>    <li>Certificati di sistema</li>    <li>Chiavi di licenza</li>    <li>etc.</li> </ul>  <p>Tutte le volte che ho cercato di ricordarmi tutto mi sono dimenticato qualcosa e allora ho deciso di tagliare la testa al toro e di provare una strada diversa. Ho pensato, ma sarà possibile creare un file VHD da un disco fisico ? Se fosse possibile sarebbe perfetto , perchè potreti riversare in un unico file l’interno contenuto del disco e quindi sarei sicuro di non dimenticarmi nulla. Certo otterrei un file da 120GB ma tanto ormai i dischi esterni costano talmente poco che il gioco vale la candela. Per mia fortuna la risposta è che si può fare, basta scaricare questo <a href="http://www.winimage.com/">software</a> ed eseguirlo selezionando le partizioni che si voglio trasferire nel file VHD. Il programma permette di selezionare le partizioni che si vogliono copiare e nel mio caso ho selezionato quella riservata al boot e quella del sistema operativo. Dopo circa un ora e mezza avevo il mio file VHD bello pronto sul mio HD esterno USB 3.0. Dato che il mio disco di partenza è protetto da BitLocker è necessario fare il backup della chiave di sicurezza che ci servirà per rileggere il file una volta apero. Dal menù di BitLocker in Windows 7 è possibile esportare la chiave in un file di testo.</p>  <p>Con Windows 7 e Windows Server 2008 R2 è possibile fare un Attach di un file VHD e vederlo come un disco esterno:&#160; </p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/3288.image_239F4CB2.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/3288.image_5F00_239F4CB2.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/4784.image_thumb_1343D4F9.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/4784.image_5F00_thumb_5F00_1343D4F9.png" width="813" height="587" /></a></p>  <p>Faccio Attach VHD e seleziono il file da 120GB. In questo modo Windows Server vedrà un nuovo disco (nel mio caso due) come fosse un nuovo hard disk:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/2543.image_21529E29.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/2543.image_5F00_21529E29.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/2630.image_thumb_3EE47928.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/2630.image_5F00_thumb_5F00_3EE47928.png" width="819" height="591" /></a></p>  <p>La prima volta vi verrà richiesta la chiave BitLocker per poter accedere al file, in seguito è possibile per comodità impostare una password e utilizzarla tutte le volte per accedere al disco. Fatto questo, nel disco G ho tutto il mio vecchio pc, tutti i file, tutte le cartelle, tutto….o quasi.</p>  <p>Di sicuro ho recuperato tutti i file ma le voci di registro e i certificati no. Ma almeno dopo un ora e mezza sono sicuro di avere tutto ed è già qualcosa <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/7506.wlEmoticon-smile_768A5FE3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/7506.wlEmoticon_2D00_smile_5F00_768A5FE3.png" />.</p>  <p>Mi sposto alla terza domanda e mi rendo conto che la risposta viene automatica. Ho un file VHD , con due partizioni, un boot loader e il mio vecchio sistema operativo….be ma allora…posso creare una macchina virtuale con Hyper-V ed eseguire il mio vecchio Windows 7 su Windows Server 2008 !!! Si può fare, o almeno si può provare e così faccio.</p>  <p>Per sicurezza mi faccio una copia del mio VHD e con Hyper-V creo una nuova macchina virtuale e seleziono il mio VHD come disco. Faccio partire il PC che però si incavola !! Quello che è successo non gli piace molto, si aspettava di partire su un PC e invece adesso si trova in un mondo nuovo e quindi un pò si arrabbia. Ma c’è il modo di uscirne. Scarico dal mio abbonamento MSND la iso di Windows 7 Enteprise e la collego con DVD ad Hyper-V. Rifaccio ripartire la macchina ma questa volta faccio fare il boot da DVD. Una volta arrivato sulla schermata di installazione di Windows dico al setup che voglio fare un Repair e lascio al DVD il compito di riparare il mio vecchio Windows 7. Lo lascio lavorare, il sistema riparte e dopo aver inserito la chiave di BitLocker (ancora si, se non è sicurezza questa <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/7506.wlEmoticon-smile_768A5FE3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/7506.wlEmoticon_2D00_smile_5F00_768A5FE3.png" />) ottengo sul mio Windows Server 2008 R2 una bella macchina virtuale con il mio vecchio PC, esattamente come l’avevo lasciato:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/2146.image_48E8F486.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/2146.image_5F00_48E8F486.png"><img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/7851.image_thumb_08A2B53F.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/7851.image_5F00_thumb_5F00_08A2B53F.png" width="848" height="659" /></a></p>  <p>ps. che soddisfazione poter dare 8GB di Ram al mio vecchio PC <img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/7506.wlEmoticon-smile_768A5FE3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/7506.wlEmoticon_2D00_smile_5F00_768A5FE3.png" /></p>  <p>Adesso ho tutto, ho i dati e ho tutto il software funzionante e posso restituire il vecchio pc senza problemi, il tutto dopo circa 2 ore di lavoro, non male dire !!!</p>]]></content:encoded>
    </item>
    <item>
      <title>Rilasciata la nuova versione CTP di SQL Azure Data Sync</title>
      <link>https://docs.microsoft.com/archive/blogs/fabiosantini/rilasciata-la-nuova-versione-ctp-di-sql-azure-data-sync</link>
      <pubDate>Sat, 22 Oct 2011 08:16:00 GMT</pubDate>
      <dc:creator><![CDATA[Fabio Santini]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fabiosantini/2011/10/22/rilasciata-la-nuova-versione-ctp-di-sql-azure-data-sync/</guid>
      <description><![CDATA[&nbsp;
Questo sar&agrave; un post molto lungo quindi preparatevi !! E&rsquo; stata da poco...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p>Questo sar&agrave; un post molto lungo quindi preparatevi !! <br />E&rsquo; stata da poco rilasciata una nuova CTP release di SQL Azure Data Sync, un motore di sincronizzazione cloud che permette appunto di mantenere allineate basi dati presenti sia nel Cloud che on premise. E&rsquo; quindi possibili attivare una sincronizzazione tra pi&ugrave; database SQL Azure oppure realizzare una sincronizzazione tra un database presente sulla propria macchina locale o su un server aziendale con uno o pi&ugrave; database presenti nel cloud. Con questa nuova funzionalit&agrave; di Windows Azure si possono aprire scenari molto interessanti quali :</p>
<ol>
<li><strong>Backup live di un database locale</strong> : potrebbe essere utilie utilizzare SQL Azure come sistema di backup real time di una base dati locale che viene utilizzata per un software interno. Questo permetterebbe non solo di avere una copia allineata del proprio DB ma anche di poter fare un restore molto rapidamente avendo a disposizione il database nel cloud sempre attivo. Microsoft si occupa poi di fare il backup dei dati in SQL Azure il che garantisce un ulteriore strato di sicurezza delle proprie informazioni</li>
<li><strong>Esporre verso l&rsquo;esterno alcuni dati aziendali</strong> : alle volte le aziende hanno costruito delle soluzioni interne utilizzate dai dipendenti dell&rsquo;azienda stessa. Quando arriva la necessit&agrave; di esporre questi dati all&rsquo;esterno ovviamente si devono affrontare problemi di sicurezza, dmz , firewall perch&egrave; il server normalmente &egrave; all&rsquo;interno delle mura aziendali. E&rsquo; possibile con Data Sync sincronizzare alcune tabella dal database centrale verso SQL Azure e poi costuire un applicazione di front end per consumare questi dati magari utilizzando i SQL Azure Reporting Services come motore di reportistica. Dato che &egrave; possibile fare una sincronizzazione bidirezionale &egrave; possibile anche recuperare delle informazioni dagli utenti esterni (agenti, fornitori) e portarle semplicemente all&rsquo;interno dell&rsquo;azienda in modo sicuro senza dover costruire un infrastruttura locale complessa.</li>
<li><strong>Distribuzione della propria applicazione su diversi datacenter</strong>: immaginate di avere un applicazione che viene usata in Europa ma anche in America. Per poter dare una esperienza unica ai proprio utenti e per poter rendere l&rsquo;accesso alla propria applicazione il pi&ugrave; veloce possibile &egrave; possibile con Windows Azure distribuire i proprio front end su datacenter diversi (America e Europa) e attraverso il Traffic Manager direzionare gli utenti al datacenter pi&ugrave; comodo e volece. Ovviamente se l&rsquo;applicazione ha bisogno di un database non avrebbe senso in una situazione di questo tipo avere un SQL Azure solo in uno dei due datacenter. Usando Data Sync &egrave; possibile mantenere allineati due database SQL Azure presenti in due datacenter diversi dando alla propria applicacazione un distribuzione completa.</li>
<li><strong>Distaster e Recovery</strong> : immaginate un applicazione mission critical in esecuzione sul datacenter di Amsterdam. Windows Azure garantisce una sicurezza e una affidabilit&agrave; molto alta ma potrebbe accadere ovviamente di tutto e il datacenter potrebbe non essere pi&ugrave; in grado di fornire il servizio. E&rsquo; possibile pubblicare la propria applicazione anche in un altro datacenter (Dublino per esempio) e lasciarla spenta (cio&egrave; gli utenti si collegano sempre ad Amsterdam) e sincronizzare il database nel primo datacenter con uno nel secondo. Nel caso di situazione critica &egrave; possibile attivare la propria applicazione a Dublino, farla puntare al database anch&rsquo;esso a Dublino che &egrave; stato costantemente sincronizzato e con il Traffic Manager spostare gli utenti verso l&rsquo;Irlanda garantendo una continuit&agrave; di servizio completa.</li>
</ol>
<p>Probabilmente ci sono molto altri scenari che si possono realizzare con il Data Sync ma gi&agrave; l&rsquo;elenco qui sopra ci da un buon motivo per capire come funziona. Ecco i passi da fare per attivare il Data Sync per sincronizzare un database locale (sul mio pc in questo caso) e un database su Windows Azure.</p>
<p>Per cominciare diamo per scontato di aver attivato una sottoscrizione Windows Azure (&egrave; possibile attivare una trial <a href="http://www.microsoft.com/windowsazure/free-trial/">qui</a>) e di aver creato un database attraverso il portale di gestione <a title="https://windows.azure.com/" href="https://windows.azure.com/">https://windows.azure.com/</a>. Il mio esempio si basa su una versione leggermente modificata del database di esempio presente con SQL Server 2008 chiamato AdventureWorksLT.</p>
<p><strong>Attivazione il Data Sync Preview Server</strong></p>
<p>Nella schermata qui sotto vedete evidenziato il database SQL Azure che ho creato su Windows Azure. Il database in questo momento &egrave; completamente vuoto.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/7462.capture_20102011_151602_564F1EB8.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/7462.capture_5F00_20102011_5F00_151602_5F00_564F1EB8.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_151602" border="0" alt="capture_20102011_151602" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/3264.capture_20102011_151602_thumb_2089B391.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/3264.capture_5F00_20102011_5F00_151602_5F00_thumb_5F00_2089B391.jpg" width="854" height="473" /></a></p>
<p>Selezioniamo dal men&ugrave; di sinistra la voce <strong>Data Sync </strong>e selezioniamo la voce <strong>Provision Data Sync Preview Server</strong><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/7571.capture_20102011_151636_56AB2BE0.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/7571.capture_5F00_20102011_5F00_151636_5F00_56AB2BE0.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_151636" border="0" alt="capture_20102011_151636" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/0121.capture_20102011_151636_thumb_5E06EB8D.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/0121.capture_5F00_20102011_5F00_151636_5F00_thumb_5F00_5E06EB8D.jpg" width="856" height="473" /></a></p>
<p>Una volta terminato il provisioning del server creiamo un <strong>Sync Group.</strong> Un Sync Group &egrave; un raggruppamento logico di sincronizzazione che contiene le informazioni necessarie per mantenere sincronizzati vari database. E&rsquo; possibile inserire lo stesso database in pi&ugrave; Sync Group anche se &egrave; necessario prestare attenzione per non entrare in un loop infinito <img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/6087.wlEmoticon-smile_2FCCEFD3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/6087.wlEmoticon_2D00_smile_5F00_2FCCEFD3.png" />. Nel mio caso io ho creato un Sync Group chiamato <strong>Adventure Works</strong>.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/3660.capture_20102011_151722_413D50AB.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/3660.capture_5F00_20102011_5F00_151722_5F00_413D50AB.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_151722" border="0" alt="capture_20102011_151722" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/3264.capture_20102011_151722_thumb_5DF6C5C0.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/3264.capture_5F00_20102011_5F00_151722_5F00_thumb_5F00_5DF6C5C0.jpg" width="854" height="472" /></a></p>
<p>Sulla parte sinistra della console possiamo selezionare ogni quando vogliamo eseguire la sincronizzazione e come verranno gestiti i conflitti (cio&egrave; se in caso di conflitto vincer&agrave; il client o il server). Ora premiamo il + presente sull&rsquo;icona del database <strong>Sync Hub</strong> nella fascia <strong>Cloud</strong>.<strong> </strong>In ogni Sync Group deve essere presente un database che faccia da Sync Hub. Il database poi pu&ograve; far parte della sincronizzazione oppure no ma in ogni caso deve essere sempre presente.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/3364.capture_20102011_152221_34334ACD.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/3364.capture_5F00_20102011_5F00_152221_5F00_34334ACD.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_152221" border="0" alt="capture_20102011_152221" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/5327.capture_20102011_152221_thumb_0CAC5896.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/5327.capture_5F00_20102011_5F00_152221_5F00_thumb_5F00_0CAC5896.jpg" width="855" height="472" /></a></p>
<p>Nella finestra che appare inseriramo la stringa di connessione completa per accedere al server SQL Azure e il nome del database fornendo anche le credenziali di accesso. Premiamo <strong>Add</strong>. Ora ripetiamo l&rsquo;operazione premendo il + presente sull&rsquo;icona del database nella fascia <strong>On-Premise.</strong></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/0636.capture_20102011_152241_4D8B283A.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/0636.capture_5F00_20102011_5F00_152241_5F00_4D8B283A.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_152241" border="0" alt="capture_20102011_152241" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/6087.capture_20102011_152241_thumb_5F1B1305.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/6087.capture_5F00_20102011_5F00_152241_5F00_thumb_5F00_5F1B1305.jpg" width="855" height="472" /></a></p>
<p>La prima volta che facciamo questa operazione selezioniamo <strong>Add a new SQL Server database in the sync group</strong> , le volte successive il nostro database on-premise sar&agrave; gi&agrave; &ldquo;conosciuto&rdquo; da Windows Azure. Selezioniamo Bi-Directional (ovviamente possiamo decidere che tipo di Sync attivare) e premiamo Next. La prima volta ci verr&agrave; richiesto di installare un Agent locale che &egrave; quello che si occuper&agrave; di far parlare in nostro server locale con quello nel cloud.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/2287.capture_20102011_152245_153C8B55.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/2287.capture_5F00_20102011_5F00_152245_5F00_153C8B55.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_152245" border="0" alt="capture_20102011_152245" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/8561.capture_20102011_152245_thumb_71BFE6EF.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/8561.capture_5F00_20102011_5F00_152245_5F00_thumb_5F00_71BFE6EF.jpg" width="855" height="472" /></a></p>
<p>Scarichiamo l&rsquo;agent e procediamo con la fase di installazione</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/5824.capture_20102011_152251_6334C4FD.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/5824.capture_5F00_20102011_5F00_152251_5F00_6334C4FD.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_152251" border="0" alt="capture_20102011_152251" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/7573.capture_20102011_152251_thumb_2AC69E25.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/7573.capture_5F00_20102011_5F00_152251_5F00_thumb_5F00_2AC69E25.jpg" width="855" height="473" /></a></p>
<p>Troveremo sul computer il software chiamato <strong>Microsoft SQL Azure Data Sync Agent Preview</strong>. Eseguiamolo.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/8561.capture_20102011_152553_40CD09B7.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/8561.capture_5F00_20102011_5F00_152553_5F00_40CD09B7.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_152553" border="0" alt="capture_20102011_152553" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/0537.capture_20102011_152553_thumb_6C312AB1.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/0537.capture_5F00_20102011_5F00_152553_5F00_thumb_5F00_6C312AB1.jpg" width="325" height="367" /></a></p>
<p>Inseriamo un Agent Name che sar&agrave; di fatto la chiave univoca che collegher&agrave; il nostro agente con Windows Azure. Nel mio caso con molta fantasia ho inserito <strong>FabioSymc <img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/6087.wlEmoticon-smile_2FCCEFD3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/6087.wlEmoticon_2D00_smile_5F00_2FCCEFD3.png" />.</strong></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/5417.capture_20102011_152634_232B08EB.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/5417.capture_5F00_20102011_5F00_152634_5F00_232B08EB.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_152634" border="0" alt="capture_20102011_152634" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/3386.capture_20102011_152634_thumb_149FE6F9.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/3386.capture_5F00_20102011_5F00_152634_5F00_thumb_5F00_149FE6F9.jpg" width="864" height="477" /></a></p>
<p>Per garantire una corretta sicurezza di comunicazione tra il server locale e quello cloud &egrave; necessario utilizzare una chiave che potete generare e copiare all&rsquo;interno della clipboard. Questa stessa chiave dovr&agrave; essere in seguito inserita nel software locale che abbiamo precedentemente installato.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/1614.capture_20102011_152642_43A222D0.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/1614.capture_5F00_20102011_5F00_152642_5F00_43A222D0.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_152642" border="0" alt="capture_20102011_152642" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/0640.capture_20102011_152642_thumb_4E12D123.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/0640.capture_5F00_20102011_5F00_152642_5F00_thumb_5F00_4E12D123.jpg" width="863" height="476" /></a></p>
<p>Prima di tutto memorizziamo la chiave appena generate all&rsquo;interno dell&rsquo;agent locale. Premiamo Submit Agent Key e inseriamo la chiave appena copiata nella clipboard. <br />Ora selezioniamo <strong>Register.</strong></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/6320.capture_20102011_152711_2F0CAD85.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/6320.capture_5F00_20102011_5F00_152711_5F00_2F0CAD85.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_152711" border="0" alt="capture_20102011_152711" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/8154.capture_20102011_152711_thumb_08CA542D.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/8154.capture_5F00_20102011_5F00_152711_5F00_thumb_5F00_08CA542D.jpg" width="485" height="361" /></a></p>
<p>Decidiamo il tipo di autenticazione vogliamo che l&rsquo;agent utilizzi per accedere al server locale. Facciamo attenzione di utilizzare un utente con i permessi necessari per accedere alle tabelle che vogliamo sincronizzare (lo so <strong>sa</strong> non &egrave; sicuro ma &egrave; un esempio dai !!! <img style="border-style: none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/6087.wlEmoticon-smile_2FCCEFD3.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/6087.wlEmoticon_2D00_smile_5F00_2FCCEFD3.png" />)</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/1526.capture_20102011_152852_18F61C26.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/1526.capture_5F00_20102011_5F00_152852_5F00_18F61C26.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_152852" border="0" alt="capture_20102011_152852" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/7506.capture_20102011_152852_thumb_700B071C.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/7506.capture_5F00_20102011_5F00_152852_5F00_thumb_5F00_700B071C.jpg" width="492" height="372" /></a></p>
<p>Una volta terminata l&rsquo;operazione dovreste trovare all&rsquo;interno della combobox <strong>Select Database</strong> il database appena configurato.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/2210.capture_20102011_152936_1BDB5B0C.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/2210.capture_5F00_20102011_5F00_152936_5F00_1BDB5B0C.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_152936" border="0" alt="capture_20102011_152936" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/4760.capture_20102011_152936_thumb_5843A9E9.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/4760.capture_5F00_20102011_5F00_152936_5F00_thumb_5F00_5843A9E9.jpg" width="841" height="465" /></a></p>
<p>Premiamo <strong>Finish.</strong></p>
<p>Il nostro Sync Group non &egrave; ancora stato pubblicato , manca ancora un operazione importante che &egrave; quella di stabilire cosa sincronizzare. Premiamo <strong>Edit Dataset</strong> a destra della schermata.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/6825.capture_20102011_152945_672AD903.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/6825.capture_5F00_20102011_5F00_152945_5F00_672AD903.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_152945" border="0" alt="capture_20102011_152945" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/4760.capture_20102011_152945_thumb_589FB711.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/4760.capture_5F00_20102011_5F00_152945_5F00_thumb_5F00_589FB711.jpg" width="839" height="463" /></a></p>
<p>Selezioniamo il database on-premise (l&rsquo;unico che in questo momento ha dei data reali) e definiamo quali tabelle e quali campi voglia sincronizzare. Attenzione che in questa Preview non &egrave; possibile sincronizzare campi di tipo User Defined e campi calcolati (ecco perch&egrave; ho dovuto modificare la struttura di AdventureWorks <img style="border-style: none;" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/7802.wlEmoticon-winkingsmile_2E700929.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/7802.wlEmoticon_2D00_winkingsmile_5F00_2E700929.png" />). Premiamo Ok.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/0564.capture_20102011_173856_34B6DFB7.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/0564.capture_5F00_20102011_5F00_173856_5F00_34B6DFB7.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_173856" border="0" alt="capture_20102011_173856" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/2627.capture_20102011_173856_thumb_70B2FB9F.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/2627.capture_5F00_20102011_5F00_173856_5F00_thumb_5F00_70B2FB9F.jpg" width="838" height="463" /></a></p>
<p>Premiamo in alto <strong>Deploy. </strong>Alla fine del deploy dovremmo avere una scheramta simile a quella qui sotto :</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/6332.capture_20102011_185925_148BAD2D.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/6332.capture_5F00_20102011_5F00_185925_5F00_148BAD2D.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_185925" border="0" alt="capture_20102011_185925" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/5758.capture_20102011_185925_thumb_2306A952.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/5758.capture_5F00_20102011_5F00_185925_5F00_thumb_5F00_2306A952.jpg" width="840" height="463" /></a></p>
<p>Possiamo anche volendo, attraverso la tabella di destra, attivare dei filtri sulle colonne per avere un maggior controllo sui dati che vogliamo portare nel cloud. Per capire quali operazione sono state fatte e sopratutto per controllare possibili errori possiamo usare il <strong>Log Viewer</strong>.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/0167.capture_20102011_185946_2011449F.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/0167.capture_5F00_20102011_5F00_185946_5F00_2011449F.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="capture_20102011_185946" border="0" alt="capture_20102011_185946" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/6428.capture_20102011_185946_thumb_55C689F9.jpg" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/6428.capture_5F00_20102011_5F00_185946_5F00_thumb_5F00_55C689F9.jpg" width="839" height="463" /></a></p>
<p>Durante la prima sincronizzazione verranno create su SQL Azure tutte le tabelle selezionate e le tabelle utilizzata dal Data Sync. In seguito a seconda dell&rsquo;intervallo selezionato avremo una sincronizzazione solo per differenze e nel nostro caso sar&agrave; bidirezionale.</p>
<p>SQL Azure Data Sync &egrave; sicuramente una funzionalit&agrave; molto interessante che ci permette di costuire scenari ad oggi quasi impossibili.</p>]]></content:encoded>
    </item>
    <item>
      <title>Annuncio : Ruoli in Windows Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/fabiosantini/annuncio-ruoli-in-windows-azure</link>
      <pubDate>Mon, 05 Sep 2011 03:57:47 GMT</pubDate>
      <dc:creator><![CDATA[Fabio Santini]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/fabiosantini/2011/09/05/annuncio-ruoli-in-windows-azure/</guid>
      <description><![CDATA[&#160;  Ieri il team di Windows Azure ha annunciato la possibilità di attivare 25 ruoli per ogni...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p>Ieri il team di Windows Azure ha annunciato la possibilità di attivare 25 ruoli per ogni deployment a differenza dei 5 attuali. Questo permette di avere a disposizione un mix di 25 ruoli differenti (Web Role, Worker Role, VM Role) come parte di un singolo deployment. In questo modo chi sviluppa applicazioni può avere maggior controllo sulla scalabilità della propria applicazione. Perchè è importante ? </p>  <p>Immaginiamo per esempio di avere un applicazione web così composta. </p>  <ol>   <li>Un interfaccia web realizzata con ASP.NET MVC</li>    <li>Servizi di business dell’applicazione esposti tramite WCF</li>    <li>Servizi di integrazione dell’applicazione esposti tramite WCF</li>    <li>Un interfaccia web di amministrazione scritta in ASP.NET</li>    <li>Servizi di comunicazione per un applicazione Windows Phone 7 esposti tramite REST API</li>    <li>Servizio di import/export dei dati basato su code</li>    <li>Database SQL Server</li> </ol>  <p>Senza entrare troppo nel dettaglio delle mille architetture possibile per realizzare questa applicazione, possiamo facilmente identificare dei ruoli ben precisi che dovremmo trattare come unità isolate. Per poter avere un minimo di scalabilità ovviamente dobbiamo pensare che ogni ruolo venga esposto con più istanze (più frontend) a seconda ovviamente del numero di utenti che ci aspettiamo.</p>  <p>Il database fa storia a se ovviamente, chiediamo ad Azure di costruire un database della dimensione che ci interessa e avremo la stringa di connessione per fare tutto quello che ci pare.</p>  <p>In Windows Azure esiste il concetto di Hosted Service. Un hosted service è un qualcosa che risponde ad un URL definito. La forma dell’URL è tipicamente <strong>mycomplexapp.cloudapp.net</strong>. La domanda a questo punto è : quanti hosted services ci servono per la nostra applicazione ?</p>  <p>Potremmo per esempio avere un hosted services per la parte web che includa due ruoli, l’interffaccia principale MVC a l’interfaccia di amministrazione (<strong>mycomplexappui.cloudapp.net), </strong>un hosted service che contenga i servizi esposti (tre ruoli in totale –<strong>mycomplexappsvc.cloudapp.net) </strong>e un hosted service che contenga un solo ruolo per l’importazione dei dati (<strong>mycomplexappwrk.cloudapp.net)</strong>. Quindi riassumendo avremo un totale di 11 istanze:</p>  <table border="0" cellspacing="0" cellpadding="2" width="985"><tbody>     <tr>       <td valign="top" width="215">Hosted service</td>        <td valign="top" width="135">Numero di ruoli</td>        <td valign="top" width="375">Numero totale di istanze</td>        <td valign="top" width="258">Totale istanze</td>     </tr>      <tr>       <td valign="top" width="217"><strong>mycomplexappui.cloudapp.net</strong></td>        <td valign="top" width="135">         <p align="center">2</p>       </td>        <td valign="top" width="375">3 istanze per MVC, 1 per l’admin</td>        <td valign="top" width="258">4</td>     </tr>      <tr>       <td valign="top" width="218"><strong>mycomplexappsvc.cloudapp.net</strong></td>        <td valign="top" width="135">         <p align="center">3</p>       </td>        <td valign="top" width="375">2 istanze per i servizi applicativi, 2 istanze per i servizi di comunicazione e 2 per i servizi WP7</td>        <td valign="top" width="258">6</td>     </tr>      <tr>       <td valign="top" width="218"><strong>mycomplexappwrk.cloudapp.net</strong></td>        <td valign="top" width="135">         <p align="center">1</p>       </td>        <td valign="top" width="375">1 istanza per import/export</td>        <td valign="top" width="258">1</td>     </tr>   </tbody></table>  <p>Uno dei vantaggi che abbiamo usando questa architettura è quello di poter dividere l’applicazione in deployment differenti (per esempio potremmo mettere la parte web su un datacenter e i servizi su un altro) o anche di poter addirittura dividere i servizi in sottoscrizioni diverse (una a consumo e una a risorse definite). Insomma abbiamo la possibilità di distribuire le unità come ci pare rendendo la nostra applicazione più semplice da mantenere (per esempio se devo aggiornare solo il servizio di import/export non devo aggiornare tutti i ruoli ma solo quello che mi serve). Uno degli svantaggi di questa architettura è il fatto che le comunicazioni tra i servizi avvengono sempre passando attraverso il LB. Vuol dire che se l’istanza 1 dell’hosted service mycomplexappui (A1)<strong> </strong>deve chiamare l’istanza 1 del servizio mycomplexappsvc (B1) la comunicazione partirà dalla macchina virtuale A1 verso l’esterno di internet fino al DNS e poi sarà ridirezionata all’interno di Windows Azure verso la macchina virtuale (B1) tramite il load balancer. In Windows Azure <strong>non è possibile eseguire comunicazioni dirette tramite hosted services diversi.</strong> </p>  <p>Per rendere tutta l’applicazione più veloce e per permettere per esempio di attivare dei canali di comunicazioni diretti (TCP/IP – Named Pipe) tra macchine virtuali diversi e ruoli diversi il&#160; mio deployment dovrà essere fatto su un unico hosted service. A quel punto la mia applicazione sarà esposta nel sequende modo:</p>  <table border="0" cellspacing="0" cellpadding="2" width="985"><tbody>     <tr>       <td valign="top" width="233">Hosted service</td>        <td valign="top" width="117">Numero di ruoli</td>        <td valign="top" width="375">Numero totale di istanze</td>        <td valign="top" width="258">Totale istanze</td>     </tr>      <tr>       <td valign="top" width="233"><strong>mycomplexappui.cloudapp.net</strong></td>        <td valign="top" width="117">         <p align="center">1</p>       </td>        <td valign="top" width="375">3 istanze per MVC</td>        <td valign="top" width="258">3</td>     </tr>      <tr>       <td valign="top" width="233"><strong>mycomplexappui.cloudapp.net</strong>:<strong>8080</strong></td>        <td valign="top" width="117">         <p align="center">1</p>       </td>        <td valign="top" width="375">1 istanza di admin</td>        <td valign="top" width="258">1</td>     </tr>      <tr>       <td valign="top" width="233"><strong>mycomplexappsvc.cloudapp.net:9090</strong></td>        <td valign="top" width="117">         <p align="center">1</p>       </td>        <td valign="top" width="375">2 istanze per i servizi applicativi</td>        <td valign="top" width="258">2</td>     </tr>      <tr>       <td valign="top" width="233"><strong>mycomplexappsvc.cloudapp.net</strong>:<strong>9091</strong></td>        <td valign="top" width="117">         <p align="center">1</p>       </td>        <td valign="top" width="375">2 istanze per i servizi di comunicazione</td>        <td valign="top" width="258">2</td>     </tr>      <tr>       <td valign="top" width="233"><strong>mycomplexappsvc.cloudapp.net</strong>:<strong>9092</strong></td>        <td valign="top" width="117">         <p align="center">1</p>       </td>        <td valign="top" width="375">2 per i servizi WP7</td>        <td valign="top" width="258">2</td>     </tr>      <tr>       <td valign="top" width="233"><strong>mycomplexappwrk.cloudapp.net:7070</strong></td>        <td valign="top" width="117">         <p align="center">1</p>       </td>        <td valign="top" width="375">1 istanza per import/export</td>        <td valign="top" width="258">1</td>     </tr>   </tbody></table>  <p>Il numero totale di istanze rimane invariato ma come vedete l’applicazione risponderà ad un unico URL utilizzando diverse porte per poter connettere le varie unità. In realtà se volessimo potremmo non esporre le due istanze sulla porta 9090 (utilizzate solo per la comunicazione interna) ma semplicemente dichiarare degli InternalPoint di comunicazione diretta tra il frontend ed il middleware.</p>  <p>Quanti sono i ruoli all’interno del nostro hosted services adesso ??? Sono <strong>6 </strong>e prima di oggi non era possibile averli <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/44/76/metablogapi/5381.wlEmoticon-smile_46098DD9.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-44-76-metablogapi/5381.wlEmoticon_2D00_smile_5F00_46098DD9.png" /> mentre oggi possiamo arrivare fino a <strong>25 </strong>che ci permette di avere architetture molto complesse e benificare del fatto che la comunicazione interna (tramite VIP – Virtual IP Addess) sia permessa.</p>  <p>Ps. Uno dei motivi per i quali non è permessa in questo momento una comunicazione diretta tramite hosted service diversi è quello di impedire che la piattaforma venga usata per fare DOS tra servizi differenti. Potrei caricare per esempio 5 VM e mettere un servizio che faccia chiamate interne a tutti gli altri servizi esposti dalla server farm ed è stato deciso quindi di limitare questa possibilità.</p>]]></content:encoded>
    </item>
  </channel>
</rss>