Roberto Brunetti

Developing in the cloud

.NET Programming

Archives

November 2009 - Posts

Acer 1420P

Quest’anno non ci possiamo proprio lamentare sui gadget che ci hanno dato a PDC. Sembra ieri quando, un po’ tutti, a PDC 2008, si lamentavano della penna che scrive poco, del mouse pad troppo sottile, della inutile borraccia…e cosi’ via.

Quest’anno le cose sono iniziate nello stesso modo: una borsina non troppo robusta, qualche foglio stampato dalla zia di Bill in casa….poi stamani…

TUTTI I PARTECIPANTI RICEVERANNO IL TABLET INDICATO NEL SUBJECT.

C’e’ stato un attimo di silenzio nella sala, dovuto probabilmente all’incredulita’ generale, poi l’ applauso.

Devo dire che il giochino e’  veramente carino: leggero, veloce e con un ottimo schermo, sensibile quanto basta al multi-touch e alla stylus.


In plenaria avevano dato un 3.2 di rating di Windows 7 e invece, con sorpresa questo il risultato: e’ 3.2 ma il valore si riferisce alla grafica Aero. Il 4.7 sulla memoria (2GB per adesso) e sul disco 5.4 sono ben al di sopra di quanto mi aspettassi.

image


Batteria dichiarata per 8 ore.

Che dire: GRAZIE !

Una cosa di cui mi stupisco sempre: preso il nuovo Tablet, 10 minuti dopo avevo Windows 7 installato e configurato, navigavo su internet e dopo al 20 minuti tutta la mia Inbox era sincronizzata con Exchange e ho iniziato a lavorare come se avessi il PC da anni.

AppFabric, Dallas e Vidalia

Tre novità importanti ci aspettano sul fronte Azure

1) Dallas: nome in codice per progetto di aggregazione dei dati. Sotto utilizza SQL Azure.

2) Windows Azure Platform AppFabric: questa novità riguarda anche le soluzioni onpremise. Per le soluzioni on premise è il nome ufficiale di quello che conoscevamo con il nome di Dublin a cui si aggiunge Velocity. Per quanto riguarda Azure, semplice: è la versione Azure del motore di gestione WCF/WF e Caching (Velocity appunto).

Dentro AppFabric finiscono Service Bus e Access Control Service per adesso. Il nome .NET Services viene sostituito da AppFabric come si nota dalla maschera di amministrazione del mio account sul portale. La cosa strana è che l’url del portale era stato modificato 10 giorni fa proprio in quello che si vede nella figura e che appunto è ancora “netservices”.

image

3) Vidalia: nome in codice per gestire la collaborazione fra domini (che si fidano fra di loro) dei dati sensibili. Anche in questo caso si tratta di una soluzione basata su Azure e in particolare, visto che si parla di dati, su SQL Azure.

Azure, SQL Azure e AppFabric stanno tutti sotto il cappello Windows Azure Platform come si nota dalla figura.

In due parole: siamo solo all’inizio della nuova era.

Posted: Nov 18 2009, 12:43 AM by rob | with no comments
Filed under:
Azure: November SDK Relase

Dopo le modifiche che avevo segnalato per Service Bus e Access Control Service, ecco le aggiunte/modifiche all’SDK di Windows Azure.

What's new for the November release:

  • Service Model UI: A redesigned and significantly more complete interface for manipulating Role configuration information. To access, double-click on a role node in the Solution Explorer.
  • Additional role templates: Support for ASP.NET MVC 2 (2010 only), F# worker roles (2010 only), and WCF Service Application web roles.
  • Support for dynamically creating tables: The Create Tables functionality is now performed automatically; there is no longer a need to right-click and select Create Tables… on the project after your table definitions have changed.
  • Full support for and installation of the November Windows Azure SDK release:
    • The sample storage client has been replaced by a new production quality library.
    • New Diagnostics library enables logging using .NET APIs and enables the collection of diagnostic information from the service.
    • Service Runtime library updated to support inter-role communication and notification of configuration changes .
    • Support for input endpoints on Worker Roles.
    • Higher fidelity simulation of Development Storage: supports all current cloud storage features, including dynamically creating tables.
    • Ability to choose the size of the VM for a role instance.
    • Ability to persist data in local storage even after the role is recycled.
    • Ability to manage certificates to install to the role VMs.

Updated and additional code samples are available online at: http://code.msdn.microsoft.com/windowsazuresamples

La libreria Storage Client è stata rilasciata ufficialmente come wrapper sopra le chiamate REST verso lo storage: questa è la buona notizia.

La cattiva (si fa per dire) è che è statao eseguito un pesante refactoring e quindi il codice (anche quello presentato settimana scorsa al seminario che ho tenuto in Microsoft) è ormai vecchio.

Ad esempio per aggiungere un blob al blob storage occorre passare da questo codice:

CloudStorageAccount account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");

CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference("gallery");

blobContainer.GetBlobReference(Guid.NewGuid().ToString()).UploadFromStream(FileUpload1.FileContent);

L’esempio riprende il codice del capitolo 3 del mio libro e consente di salvare un nuovo blob di cui l’utente ha eseguito l’upload tramite il classico FileUpload di ASP.NET.

Come si può notare, anche rispetto al codice del libro, è cambiata anche la modalità di lettura del file di configurazione per quanto riguarda endpoint e shared key e di conseguenza anche il file di configurazione deve essere scritto in modo diverso. Vi rimando ai sample per “rubare” la nuova sintassi del .cscfg.

In pratica: la teoria che abbiamo affrontato fino ad oggi resta validissima, ma a 4 giorni dal rilascio ufficiale di Azure avvenuto oggi, dopo oltre un anno in cui il codice della prima CTP è rimasto pressochè identico…è stato rifattorizzato il tutto.

Una nota: per chi lavora con Java SDK o Ruby SDK, i nomi delle classi, per adesso sono rimaste invariate.

Posted: Nov 17 2009, 11:54 PM by rob | with no comments
Filed under:
Cloud: Fifth Generation of Computing

A PDC, in plenaria e nella sessione che sto seguendo, il Cloud viene considerata la quinta generazione del “computing”.

In pratica viene visto il tutto come la quinta evoluzione/rivoluzione

1) Mainframe

2) Client-Server

3) Web

4) SOA

5) Cloud

A buon intenditore, poche parole.

Posted: Nov 17 2009, 10:37 PM by rob | with no comments
Filed under:
PDC 09 e Azure

Oggi giornata di Pre-conference quindi il centro congressi è ancora abbastanza vuoto.

L’intero corridoio di accesso alle sale è tempestato da cartelloni su Azure in tutte le sue forme, dal sistema operativo a SQL Azure passando per Access Control e Service Bus.

Le frasi, tutte sullo stesso stile, richiamano le affermazioni di PDC 08:

1) Vuoi sviluppare applicazioni pensando al codice oppure vuoi incasinarti con il deploy?

2) Vuoi scrivere T-SQL ottimizzato oppure gestire le problematiche un cluster SQL Server?

3) Vuoi lavorare con T-SQL oppure vuoi fare il sistemista SQL Server? Se sei uno sviluppatore, metti il DB in the cloud.

La sala del workshop su Azure è quasi piena.

Posted: Nov 16 2009, 06:46 PM by rob | with no comments
Filed under:
[OT] PDC 09: 12 anni di PDC

In albergo, mentre aspetto che arrivi anche l’aereo di Paolo, mentre tolgo le cose dalla valigia, vedo una felpa Microsoft che mi ero portato dietro.

Sopra una scritta aggianciante: Microsoft TechEd 99. Faccio mente locale scavando fra i ricordi e mi viene in mente Dallas, dove con Andrea Cogliati e David Papini, eravamo andati a vedere, per la mia quarta volta, una conferenza negli USA.

La prima fu, appunto PDC 97, 12 anni orsono, a San Diego.

Il post è completamente inutile, ma ho pensato di condividere con tutti lo sconforto per il tempo che passa: facendo due conti è la ventunesima volta che vengo in USA a seguire qualche conferenza, sommando altre 6/7 in Europa…forse è il momento di andare in pensione :-)

Però, un’oretta fa ho pranzato con Don Box e Scott Guthrie, che, casualmente sono nello stesso albergo nostro….ripensando al 97 …dove avevo seguito una sessione di proprio di Don Box (che ancora era in Developmentor), mi rincuoro perchè evidentemente il tempo passa, ma chi fa bene il suo mestiere…resiste ai cambi di stagione.

Posted: Nov 16 2009, 01:59 AM by rob | with 1 comment(s)
Filed under:
SQL Server Management Tools for Azure

Oggi è stato rilasciato l’atteso componente per gestire SQL Azure dal classico SQL Server Management Studio.

Oggi è disponibile solo per gli abbonati MSDN o TechNet, ma da domani sarà disponibile a tutti…sempre più strane le politiche di marketing :-)

Il tutto si scarica a partire da http://www.microsoft.com/sqlserver/2008/en/us/R2Downloads.aspx#CTP

Il tutto è parte della R2 di SQL Server 2008 Novembre CTP.

Domani dovrebbe uscire anche il link diretto come installazione separata dal resto della R2.

Posted: Nov 10 2009, 09:56 PM by rob | with no comments
Filed under:
Service Bus: November CTP Code

Con l’arrivo della CTP di Novembre (di cui avevo parlato quì) occorre modificare anche il codice rispetto alle CTP precedenti: il codice “vecchio” reggeva da un anno esatto.

Le modifiche rispetto alle demo che ho presentato a Devcon 2009, al Remix o al corso in Microsoft di settimana scorsa (lo avevamo anticipato durante il corso, ma le modifiche agli esempi da un giorno al successivo sono sempre “traumatici”) non sono molte, ma riguardano l’autenticazione e di conseguenza sono di vitale importanza anche per effettuare la prova più semplice.

Per prima cosa occorre rimuovere il behavior dalla configurazione. Nei miei esempi questa sezione sparisce dal da config del servizio che da quello del client

  <behavior name="transportClientBehavior0">
    <!--
      Specify
        - CardSpace (default)
        - UserNamePassword
        - X509Certificate
        - AutomaticRenewal (tgt)
        - FederationViaCardSpace
      for credentialType.
    -->
    <transportClientEndpointBehavior credentialType="UserNamePassword">
      <clientCredentials>
        <userNamePassword userName="devleaprob"
                          password="provapippo" />
      </clientCredentials>
    </transportClientEndpointBehavior>
  </behavior>
</endpointBehaviors>

Ho lasciato anche la password reale del mio account di test in quanto non più valide dopo le ultime modifiche al servizio.

Prima di costruire l’uri del servizio occorre impostare il nome della solution come sempre, solo che adesso il termine Solution è sparito e ha lasciato il posto a Service Namespace.

Il nuovo meccanismo di autenticazione prevede l’utilizzo di isserName e issuerKey: entrambi questi valori si ottengono durante la creazione di un Service Namespace (ripeto: ex-Solution).

Nel mio caso ho ricreato interamente il tutto visto che comunque i dati degli scope dell’Access Control non sono stati migrati come segnalato nel mio post precedente: ho preferito ripartire da zero soprattutto dopo le mille prove che avevo fatto in questo anno passato. Per le applicazioni reali non ho avuto problemi in quanto è stato sufficiente stoppare per un attimo il servizio e ricreare i namespace.

Queste gli screenshot di creazione del nuovo Service Namespace:

image

Creato il nuovo namespace, viene attivato il tutto dietro le quinte: operazione da 30 secondi circa. Si ottiene questo:

image

Entrando nei dettagli si ottengono le informazioni di cui stavamo parlando.

In pratica il codice della parte “service” in ascolto dovrebbe essere simile al seguente (NON camblare nel codice i parametri di accesso)

Uri address = ServiceBusEnvironment.CreateServiceUri("sb", “devleaprob”, "EchoService");

TransportClientEndpointBehavior cred = new TransportClientEndpointBehavior();
cred.CredentialType = TransportClientCredentialType.SharedSecret;
cred.Credentials.SharedSecret.IssuerName = "issuer name";
cred.Credentials.SharedSecret.IssuerSecret = "chiave";

host = new ServiceHost(typeof(EchoService), address);

host.Open();

Lo stesso discorso si applica alla parte client.

Per quanto riguarda Access Control e relativi permessi, è sparita l’interfaccia di amministrazione e viste le modifiche anche molti strumenti esterni non girano più: occorre aspettare qualche giorno oppure usare lo strumento acm.exe a riga di comando.

Posted: Nov 09 2009, 10:37 PM by rob | with 1 comment(s)
Filed under:
.NET Services November CTP

Come anticipato in questo mio post, .NET Services si avvia al rilascio e presenta le modifiche che avevo segnalato.

L’indirizzo del portale viene modificato il http://netservices.azure.com. La migrazione alla nuova CTP riguarda solo i progetti Service Bus, mentre non verranno migrati gli “scope” del servizio Access Control.

Il passaggio avverrà il 5 novembre per cui dalle 9 AM alle 12 PM (orario PST) non sarà possibile accedere al portale o usare le componenti.

Più precisamente per quanto riguarda il Service Bus

1) Queue vengono sostituite dal Message Buffer. Il Message Buffer accoglie in messaggi in transito. Le classi QueueClient, QueueManagementClient e QueuePolicy vengono rimosse per lasciare il posto a MessageBufferClient. In realtà, il Message Buffer, non ha le stesse caratteristiche delle “vecchie” Queue in quando non fornisce una caratteristica importante: “durability”; se abbiamo bisogno di ospitare in modo semi-permanente i messaggi occorre utilizzare lo storage di Azure. Nel tempo verranno reintrodotte le Queue

2) Router: vengono rimossi

3) I RelayBinding vegono messi in sicurezza per default. Occorre quindi usare HTTPS come trasporto al posto di HTTP. E’ possibile impostare EndToEndSecurityMode.None quando la sicurezza non è necessaria

4) CardSpace, X509Certificate, FederationViaCardSpace e UserNamePassword vengono rimossi come TransportClientCredentialType. I nuovi meccanismi, integrati come sempre con il servizio Access Control sono SharedSecret, SimpleWebTokens e Saml.

5) Non si può usare TcpRelayConnectionMode.Direct. Per ottenere una connessione diretta occorre utilizzare una connessione Hybrid, ovvero occorre stabilire prima una connesione Relayed per poi passare alla connessione diretta.

6)  WSHttpRelayBinindg e WS2007FederationHttpRelayBinding sono stati rimossi

Per quanto riguarda Access Control, ci sono altre novità rispetto a quanto avevo segnalato

1) Nella rimozione di alcuni meccanismi di autenticazione (vedi anche quando indicato sopra per il Service Bus), CardSpace, Certificate e UserNamePassword sono stati rimpiazzati da Issuer Credential (Issuer Name e Issuer Key). E’ possibile richiedere token al STS fornendo IssuerName e la chiave a 32 byte codificata base-64. Occorre modificare quindi la configurazione per i binding del Service Bus e il codice che usa direttamente ACS.

2) WS-Trust e WS-Federation sono stati rimpiazzati dal'l’accesso REST-based. Occorre modificare il codice per utilizzare la nuova modalità

3) Importante: i dati attuali delle solution non verranno migrati: scope, rule, certificate, username e password. Anche le regole e gli scope legati al Service Bus non verranno migrati. Se avete solamente fatto prove sul service bus e ACS, conviene cancellare le solution e ricrearle sulla nuova CTP.

4) Il portale non sarà più presente nella nuova CTP. Per gestire i dati del servizio ACS occorre usare uno strumento lo strumento a riga di comando che uscirà proprio con questa nuova CTP.

Posted: Nov 02 2009, 05:58 PM by rob | with 1 comment(s)
Filed under: