Inizia oggi il periodo di billing di test per AppFabric che si protarrà fino al 9 Aprile quando verrà rilasciato ufficialmente la piattaforma.
AppFabric (ex .NET Services nelle prime Beta/CTP e così indicato sul mio libro) si compone di Service Bus e Access Control Service, che, nel tempo hanno visto componenti uscire dal prodotto (Workflow ad esempio oppure autenticazione integrata con Facebook, OpenID).
Ad oggi, riportando testualmente il “contenuto”,
Windows Azure platform AppFabric includes Service Bus and Access Control services. AppFabric Service Bus connects services and applications across network boundaries to help developers build distributed applications. AppFabric Access Control provides federated, claims-based access control for REST web services.
Per avere un’idea del pricing, le tabelle comparative disponibili all’indirizzo http://www.microsoft.com/windowsazure/offers/ sono sempre un buon punto di partenza.
Per chi ci sarà, ci vediamo al .NET Campus 2010.
Per fare più chiarezza sul fatto che una applicazione installata su Windows Azure viene considerata dal meccanismo di billing anche se non è in esecuzione, questo il warning che appare appena si effettua il deploy:

Nell’ultimo post ci siamo lasciati con installazione in corso. Ho lasciato il tutto nella notte e la mattina:
Ci vengono riepilogate anche le operazioni effettuati sui componenti dipendenti, come ad esempio IIS o le porte aperte sul firewall per l’interazione con i vari Site SharePoint e Report.
Ritornando alla Administration Console in qualunque momento vedremo lo stato della nostra configurazione:
Installazione del Build Service è altrettanto semplice (conviene usare un account specifico, come da sempre si fa su Windows).
Nel primo passo si possono scegliere i settaggi e il numero dei Build Agent (nella versione 2010 le build possono essere eseguite in parallelo su più macchine)
Scelta la configurazione sul Build Agent si passa alla configurazione principale: account da usare, porte da aprire:
Al termine viene visualizzato un riepilogo per verificare i parametri rispetto alla configurazione della macchina, ai prerequisiti:
In meno di 3 minuti, sulla mia macchina virtuale, tra l’altro monata su un PC desktop appare il riepilogo generale sempre molto piacevola da vedere :-)
E’ divertente vedere che un anno e mezzo fa avevo scritto 4 articoli basati sulla CTP di PDC 2008 il cui contenuto è ancora valido, ma vedere anche le differenze apportate nella grafica.
Intro Parte 1 : http://blogs.devleap.com/articolidevleap/archive/2008/10/17/visual-studio-team-system-2010-primo-contatto.aspx
Intro Parte 2: http://blogs.devleap.com/articolidevleap/archive/2008/10/26/visual-studio-team-system-2010-primo-contatto-parte-2.aspx
Parte 3 Testing & Dubugging: http://blogs.devleap.com/articolidevleap/archive/2008/11/30/visual-studio-2010-primo-contatto-parte-3.aspx
Parte 4 Architecting Apps: http://blogs.devleap.com/articolidevleap/archive/2008/12/03/visual-studio-2010-primo-contatto-parte-4.aspx
Buona lettura.
Al termine dell’installazione di TFS (nel mio caso con Build Server), al posto di fare i famosi 18 o 22 passi manuali di installazione della versione 2008, ecco un vero setup come promesso sin dalla PDC 08:
Primo passo
Fatto Next occorre creare un account per l’interazione con SharePoint e Reportin Services. Il passo successivo del wizard chiede proprio questo:
Ci viene giustamente segnalata l’assenza di componenti “fondamentali” come ad esempio Reporting Services. Esiste anche, come indicato nel warning un Advanced Install Wizard per gestire installazioni meno lineari.
Dopo aver installato Reporting Services si può proseguire con il wizard, che è abbastanza furbo da controllare non solo il setup dei componenti importanti, ma anche la loro configurazione.
E’ possibile configurare e gestire in generale i servizi TFS da uno strumento centralizzato. Ad esempio interrompendo il setup per installare/configurare Reporting Service possiamo riaccedere alla confeigurazione tramite TFS Central Configuration:
In un altro server di test l’installazione non è invece andata a buon fine: il motivo si scopre dal file di log: E’ COLPA DI FRONTPAGE !!!!
[Error @20:21:30.613]
Exception Message: Invalid namespace (type ManagementException)
Exception Stack Trace: at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
at System.Management.ManagementScope.InitializeGuts(Object o)
at System.Management.ManagementScope.Initialize()
at System.Management.ManagementObjectSearcher.Initialize()
at System.Management.ManagementObjectSearcher.Get()
at Microsoft.TeamFoundation.Admin.RealAdminExternals.Microsoft.TeamFoundation.Admin.IAdminExternals.RunWqlQuery(String queryScope, String queryString)
at Microsoft.TeamFoundation.Admin.VerifyHelpers.GetCountOfWqlQuery(WqlQuery query)
at Microsoft.TeamFoundation.Admin.VerifyNoFrontPage.Verify()
[Error @20:21:30.614] !Verify Error!: TF255437: An error occurred while querying the Windows Management Instrumentation (WMI) interface on the following computer: metello. The following error message was received: Invalid namespace .
La colpa in realtà era dell’installazione della macchina: mancava IIS 6 WMI come componente e quindi il wizard si fermava in quando non era in grado di fare la verifica proprio sul componente FPExt…
Fatte queste operazioni preliminari: leggere la setup guide per i prerequisiti completi, si procede.
Prima di arrivare all’installazione vera e propria, il wizard esegue altri controlli segnalandoci ad esempio la nascita di un nuovo Application Pool per SharePoint admin, piuttosto che warning sul dimensionamento della macchina.
Prossimo step: fare un upgrade di un TFS esistente: penso di aspettare la verisone RTM prima di provarci, visto che, anche se non ho avuto problemi, è pur sempre un RC.
Dopo aver installato la versione 1.1 dei Windows Azure Tools su Visual Studio Ultimate 2010 RC, è sufficiente creare un progetto di tipo Cloud Service per ottenere (anche senza fare niente sul progetto) il seguente errore:
Il problema era presente anche nella Beta1 su progetti di tipo DLL, ma era sparito nella Beta2 (almeno non mi è mai capitato).
Il problema è che la configurazione di default di un progetto Cloud Service è impostata su “Platform=HPD” come indica chiaramente il messaggio di errore.
La soluzione è aggiungere alla configurazione tale configurazione al file .csproj del progetto Cloud. Per fare prima si può fare
1) Unload del progetto (direttamente dal progetto, tasto destro)
2) Edit del progetto (sempre da progetto, tasto destro)
3) Localizzare la configurazione Debug e Release e inserire “|HPD” al posto di AnyCPU
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
Ovviamente questo tappo serve se avete solo il progetto Cloud. Se occorre, come è probabile, referenziare altre Dll che hanno bisogno di AnyCPU come Platform, conviene creare una nuova voce di configurazione.
Hope useful
Sempre sul progetto di cui abbiamo parlato in post precedenti stiamo valutando l’introduzione di ADO.NET EF 4.0 al posto dell’attuale Linq to SQL: la scelta iniziale era caduta su L2S per creare velocemente uno strado DAL che veniva poi disaccoppiato dal layer Dal generico superiore che incapsula tutte le chiamate.
Visto che il database è 2 TB occorre stare un attimo attenti: anche L2S potrebbe rappresentare un problema di performance, ma visto quanto costa creare il modello possiamo permetterci di valutarlo prima di riprendere il nostro generatore di codice con il buon vecchio DataReader a manella.
Ovviamente stiamo sperimentando l’utilizzo di classi POCO e non. Dopo varie prove siamo arrivati a costruire il modello (tramite .tt) in automatico e ben soddisfatto del risultato ho inserito il modello .edmx nello stesso progetto Dal che contiene il modello che non usa le classi POCO.
Anche se i nomi delle classi POCO e del rispettivo modello .edmx iniziano tutte per POCO (POCOCatalog) e le classi derivate da EntityObject hanno invece i nomi reali, a runtime, sembra, che EF non riesca a eseguire il mapping durante l’esecuzione di una query.
Avevo tenuto i nomi diversi proprio per evitare di creare confusione nella scrittura dei primi test e unit test.
Visto che i nomi delle proprietà delle classi devono corrispondere a quelle del modello ho passato oltre un ora a capire perchè continuava a dare questo errore:
Mapping and metadata information could not be found for EntityType 'XXXX.POCOCatalog’
I problemi potrebbero essere
1) Nome del campo sbagliato…visto che li autogenero era impossibile, ma controllare non guasta mai
2) Non aver marcato “virtual” le proprietà collection (che servono per creare le navigation properties). Serve per Lazy Load.
Alla fine di un controllo da certosino ho deciso di partire con una cosa semplice (che mi funzionava in qualche progetto di test): ho distrutto l’edmx e l’ho ricreato con una sola Entità con 3 sole proprietà: in questo modo non potevo sbagliare. Niente da fare.
Dopo altri tentativi ho scoperto che se il progetto Visual Studio contiene due file .edmx, anche se hanno nomi diversi, viene fuori il problema.
E’ bastato spostare il modellone in un’altra dll e tutto funziona…
“The most you use it the most you love it” recitava un antico detto popolare delle mie parti :-).
Un esempio veloce per capire quanto siano utili le informazioni di debug. Sto usando Entity Framework 4.0 su un modello reale ma in un mini-form (fatto in Windows Forms) per testare alcuni comportamenti della nuova versione (Execute diretto ad esempio).
Senza Intellitrace avrei dovuto registrare da qualche parte i comandi SQL generati oppure usare il profiler di SQL Server. Con Intellitrace posso tranquillare risalire a tuti i comandi generati visto che tiene traccia anche delle chiamate a ADO.NET e compagni.
E’ semplicemente troppo comodo avere tutto sotto controllo, anche se abbiamo fatto un F10 di troppo oppure un F11 per entrare in un altro metodo: basta risalire nella storia per ritrovare subito quello che ci serve.
Al .NET Campus 2010, conferenza gratuita che terremo a Roma in collaborazione con ASPItalia e UGIdotNET, Matteo Emili terrà una sessione sulle novità dell’ambiente. Non mancate.
Potete fare riferimento a questo mio post per altre info su Intellitrace: http://blogs.devleap.com/rob/archive/2010/01/15/intellitrace-e-pinned-debug.aspx.
Ci sono informatici fortunati e informatici meno fortunati. Io forse appartengo alla seconda categoria o almeno ci sono entrato negli ultimi tempi.
Stiamo lavorando a un progetto di medie dimensioni con Visual Studio 2010 dall’inizio di gennaio. La Beta 2 sinceramente sarà crashata solo 3/4 volte considerando oltre un mese di sviluppo sommando le due persone coinvolte. L’unico problema a lavorare con la Beta 2 era la lentezza di compilazione e debug visto che la solution ha una decina di progetti al suo interno, unit test e così via.
Il 9 notte installo VS 2010 RC sperando in un incremento di performance notevole: l’incremento c’è ed è veramente apprezzabile; mi verrebbe quasi da dire che va meglio del 2008 sulla stessa macchina.
La sfiga però mi ha colpito: ogni 3/4 colpi di intellisense Visual Studio crasha. Ho scoperto che lo fa solo su alcune macchine e ovviamente ci sono rientrato :-)
Il problema arriva dalle UI Automation 3.0 API che comprendeono tablet PC…e non è il mio caso…screen reader software…e non è il mio caso…multi-touch driver…preso !
Sto lavorando con il TouchSmart proprio per avere anche il supporto Multitouch di WPF 4. In realtà le API
Soluzione:
1) Se avete un tablet occorre disabilitare il servizio Tablet: da start cercare “services”, entrare in User Account Control con Continue e disabilitare Table PC Input Service, poi fare Stop.
2) Soluzione meno elegante ma che consente di tenere i servizi del tablet (io spesso sul touchsmart scrivo direttamente sul monitor) è andare nel registry e creare la chiave KEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\General\EnableUnhandledExceptionDisplay. Creare una chiave DWORD e impostarla a 1
La soluzione 2 ha un problema nel problema. In pratica VS evita di crashare, ma vi propone la prima volta questo:

Le volte successive non viene fuori il messaggio, ma per riprendere il controllo occorre cliccare sull’editor (che ha perso il focus) prima di poter ricominciare a digitare.
A quanto ho capito il bug è già stato risolto e già inserito nel check-in che vedrà la build nella RTM, quindi non è escluso che venga proposta una patch velocemente
Sigh :-)
Ieri mi sono arrivate le prime fatture relative al traffico e compute hours di alcuni progetti su Windows Azure. Ho diviso i progetti in base ai miei account windows live in modo da suddividere anche la fatturazione.
Questa la fattura relativa al traffico dati del sito thinkahead.cloudapp.net
Mentre sotto la fattura relativa al costo computazionale:

Rilasciata da un paio di giorni la nuova versione degli strumenti per sviluppare progetti per Windows Azure.
La prima novità riguarda il supporto per Visual Studio 2010 RC (che sta per uscire). Se usate la versione Beta 2 di Visual Studio 2010 continuate a usare gli strumenti versione 1.0 di novembre !!!
Le novità che riporto direttamente dal download sono
New for version 1.1:
- Windows Azure Drive: Enable a Windows Azure application to use existing NTFS APIs to access a durable drive. This allows the Windows Azure application to mount a page blob as a drive letter, such as X:, and enables easy migration of existing NTFS applications to the cloud.
- OS Version Support: Allows a Windows Azure application to choose the appropriate Guest OS to run on in the cloud.
- Bug Fixes
- StorageClient: Expose account key from storage credentials, expose continuation tokens for pagination, and reduce maximum buffer size for parallel uploads.
- Windows Azure Diagnostics: Fix path corruption for crash dumps, OnDemandTransfer now respects LogLevelFilter.
- VS 2010: Improved packaging performance.
- VS 2010: Support for linked files in Web projects.
- VS 2010: Support for ASP.NET web project web.config transformations.
- Certificate selection lists certificates from LocalMachine\My instead of CurrentUser\My.
- Right click on Role under Roles folder to select whether to launch the browser against HTTP, HTTPS or not at all.
Il download a partire da quì http://www.microsoft.com/downloads/details.aspx?FamilyID=5664019e-6860-4c33-9843-4eb40b297ab6&displaylang=en
Al prossimo .NET Campus (13 marzo) terrò una sessione introduttiva sull'argomento.
Come abbiamo fatto per l’edizione di maggio 2009, anche il sito della prossima DevCon è ospitato su Windows Azure sfruttando il sistema operativo sia per la parte computazionale che per quanto riguarda lo storage (table e blob).
Quindi se anche a voi piace Cloud :-) questo l’indirizzo http://devcon.cloudapp.net.
Questa edizione di DevCon è frutto di varie riflessioni sui contenuti, sul modo di erogarli, sull’organizzazione degli slot e, non ultimo sulla presentazione dei dati.
L’agenda definitiva sarà pronta a inizio settimana prossima e le iscrizioni si apriranno a brevissimo.
Stiamo sviluppando un progetto per una importante azienda farmaceutica, che grazie alle spinte del responsabile progetto, ha deciso di iniziare il progetto su .NET 4.0 e Visual Studio Ultimate 2010.
Quando si affrontano progetti reali si scoprono sempre le magagne del prodotto che spesso, in versione “Demoware” va benissimo. Dall’altra parte però si apprezzano anche le nuove caratteristiche dell’interfaccia.
IntelliTrace è semplicemente fantastico (chi mi conosce sa che non direi mai una cosa del genere se non lo pensassi): sto buttando giù la parte architetturale dello strato DAL e quindi sto facendo girare diversi Unit Test per capire cosa sto combinando.
Tramite IntelliTrace è possibile risalire l’elenco delle chiamate effettuate durante il debug, ovvero “tornare indietro” per rivedere i punti del software da dove siamo passati: molto spesso infatti, quando si incontra un valore strano in una variabile, la colpa va ricercata nel flusso che abbiamo seguito.
Nella figura allegata (cliccarci per ingrandirla), si vede sulla destra la finestra di IntelliTrace che mostra l’elenco delle chiamate che la fase di debugging ha effettuato fino al punto corrente. Si notano una decina di righe di codice eseguite nel metodo GetLibraryByCompanyCompiledQuery che avevo appena eseguito premendo F11 sul punto corrente. Rispetto ad avere soltanto la gerarchia delle chiamate, sappiamo esattamente da dove siamo passati anche dopo l’uscita dal metodo stesso.
E’ inoltre possibile, semplicemente cliccando su ciascuna voce, rivedere le righe di codice eseguite (no…non è possibile rieseguirle) come se tornassimo indietro con un VCR qualunque sulle scene precedenti: il termina scena è appropriato in questo su ogni riga eseguita precedentemente è possibile rivedere la Call Stack e lo stato delle variabili !
Nella figura sotto ho semplicemente ricliccato sul punto evidenziato e come si nota stiamo vedendo il thread, il metodo da cui è stata effettuata la chiamata e cliccando sui “link” possiamo accedere allo stato dell’applicazione.
Altra feature carina e a prima vista “quasi inutile” è la possibilità di bloccare la visualizzazione durante il debugging di alcune variabili: in pratica anzichè dover inserire la variabile come watch è possibile, passando con il mouse sopra la variabile stessa, far apparire un box con l’analizzatore della classe…e fin quì….c’era tutto anche in VS 2008…vero, ma adesso è possibile fare il Pinning della finestrina e lasciarla lì per sempre !
A parole è impossibile spiegare quanto sia comodo: è comodo anche perchè in VS 2008 erano più le volte che spariva dalla vista non appena avevamo aperto tutto il grafo di oggetti passando 40 secondi ad arrivare al punto giusto…per poi sbagliare di un decimo di millimetro il click sull’ultimo “+”.
E’ anche possibile aprire con l’ultimo pulsantino in basso una finestrina di commento: anche questo commento resta nel sorgente per essere rivisto a posteriori. In pratica possiamo commentare alcuni punti del sorgente durante il debug.
Provare per credere
.NET Campus è un evento per sviluppatori organizzato dal gruppo DevLeap in collaborazione con il gruppo dei Microsoft Student Partner e le Community più attive per fornire a studenti e aziende un’intensa mattinata di sessioni tecniche. Insieme alle sessioni tecniche orientate alle novità che ruotano intorno al mondo .NET, la giornata rappresenta un momento unico dove aziende e studenti possono incontrarsi per confrontare i loro mondi e unire le loro esperienze.
La prima edizione gratuita, si tiene a Roma, presso l’università di Roma Tre, il 13 marzo 2010.
Consulta l’agenda e l’elenco degli speaker sul sito ufficiale dell’evento e, visto che i posti sono limitati, iscriviti il prima possibile.
Se sei interessato a sponsorizzare l’evento non esitare a scrivermi.
Oltre a ringraziare gli sponsor Platinum già a bordo, colgo l’occasione per ringraziare ASPItalia.com per il supporto alla comunicazione e per aver fornito numerosi speaker e sessioni.

Post natalizio
Luca Regnicoli e io stiamo scrivendo un articolo per Edizioni Master su Visual Studio 2010 e nel veloce controllo ortografico fatto con Word è uscito quest :-)

Sensazione strana…e pensare che un tempo era una cosa relativamente frequente e non simpatica…stasera ho provato veramente un qualcosa di strano, quasi una sensazione di affetto.
A cosa mi riferisco ? A questo…come cambiano i tempi e l’approccio alle cose…

More Posts
Next page »