free hit counter
October, 2008 - Pietro Brambati Blog - Site Home - MSDN Blogs

Pietro Brambati Blog

Developer's stories

October, 2008

  • Pietro Brambati Blog

    I 10 anni di ASPItalia.com

    • 0 Comments

    image In occasione dei Microsoft Days 08, per la tappa Romana si è unita a noi AspItalia, che ha deciso di festeggiare i suoi primi 10 anni di vita community. Quando dico festeggiare intendo che c'era anche un grande e bella - spero- torta.

    Bene, ho filmato la serata, che è stata un ottimo connubio di momenti divertenti e di contenuti tecnici.  Nel filmato potrete vedere "la torta", ma anche gli argomenti delle sessioni tenute da Daniele Bochicchio, Cristian Civera, Marco e Alessio Leoncini. Per l'occasione si è unito al gruppo anche Riccardo Golia, che è stato così gentile da regalarmi una copia del loro nuovo libro : ASP.NET 3.5 per tutti, di cui potete trovare tutte le informazioni qui. Mi hanno detto che si può scaricare anche un capitolo d'esempio ...

  • Pietro Brambati Blog

    Controlli Open Source per Silverlight 2

    • 6 Comments

    Mentre sono in giro per l’Italia a parlare del nuovo Silverlight 2, ecco che a meno di due settimane dal lancio appaiono i primi controlli Open Source per Silverlight2, che trovate sul progetto Silverlight Contrib.

    Provate la demo live

    image

  • Pietro Brambati Blog

    Intervista a dotNetToscana.org

    • 5 Comments

    imageDurante i Micorosoft Day 08 a Firenze sono riuscito ad intervistare in un breve video i ragazzi di dotNetToscana.org, la neonata community che si propone di essere un riferimento per le zone di Firenze e Pisa.  Quando dico “neonata” intendo che hanno finalizzato il logo la sera prima dell’intervista, alle 11.00 :-)

     

     

     

    Potete conocere Andrea, Matteo e Marco nel video …  qunidi, non vi resta che registrarvi alla loro community.

  • Pietro Brambati Blog

    Microsoft Days08: le mie sessioni [slide]

    • 13 Comments

    Ormai la prima data dei Microsoft Days08 si avvicina e ora che Silverlight 2 è stato ufficialmente rilasciato, posso darvi i titoli definitivi delle mie sessioni.

    Sarò presente (salute permettendo) a tutte le tappe del tour: Firenze, Roma, Padova, Torino, Milano e Bari e non mi voglio perdere neanche i Community After Hours.

    Potete lasciare commenti e postare le vostre foto dell’evento su Facebook.

    image

    image

    <Materiali>

    Eccole slide delle presentazioni fatte a Firenze, ci vediamo alle prossime tappe …

    SIlverlight 2: pptx, pdf, esempio

    ASP.NET Dynamic Data e IE 8: pptx , pdf, esempio

    </Materiali>

  • Pietro Brambati Blog

    Silverlight 2 RC0 + ADO.NET Data Service + Entity Framework

    • 6 Comments

    [Updated Silverlight Client code VB & C#]

    Qualche giorno fa discutevo con un amico sulle seguenti problematiche:

    • Qual è il modo migliore da Silverlight 2 di fare una chiamata verso un servizio che espone dei dati provenienti da un database ?
    • Voglio poter serializzare le entità del mio modello dei dati ? Sì, ma non solo, voglio serializzare l’intero grafo di una relazione master/details. Devo costruirmi tutto a mano ?

    Ok ,vediamo una possibile soluzione che adotta l’uso di ADO.NET Data Service (DS) e ADO.NET Entity Framework (rilasciati con la RTM della SP1 di Visual Studio 2008) e la RC0 di Silverlight 2, in quest’ultima versione, da poco rilasciata, sono infatti state aggiornate le librerie client che consentono di lavorare con gli ADO.NET Data Service.

    Ma cosa sono gli ADO.NET Data Service?

    Beh, per chi non li conosce vi consiglio di dare uno sguardo alla prima parte di questo webcast. In estrema sintesi però posso dire che i DS permettono un accesso REST verso sorgenti dato esposte , in questo caso con EF. In realtà basta una qualsiasi sorgente dati che supporti l’interfaccia IQueryable.

    I DS mi consentono così di accedere via http/https con i semplici verbi GET, PUT, POST, DELETE ad una sorgente dati, che restituirà i dati in formato JSON o ATOMpubs.

    Se ad esempio voglio recuperare l’elenco dei customers(le mie entità) posso effettuare una chiamata GET del tipo http://localhost:48248/SilverlightADOnetDataServicesDemo.Web/NorthwindWebDataService.svc/Customers , dove NorthwindWebDataService.svc è il servizio che espone la mia sorgente dati; se voglio che mi venga restituito l’elenco dei Customers, aggiungo “/Customers” alla chiamata GET del servizio.

    Costruiamo un esempio

    Vado veloce nella prima parte, perché mi aspetto sia più nota, alla fine di questo post trovate scaricabile l’esempio completo. Dunque Creiamo un’applicazione Silverlight 2, ricordate che però questo esempio funziona solo con la RC e non con la beta 2; facciamo in modo che oltre alla creazione del progetto Silverlight 2 venga creato anche il sito web ASP.NET, ora come prima cosa aggiungiamo un nuovo template ADO.NET Entity Data Model, come in figura

    image

    Il wizard vi guiderà fino alla scelta di un database, prendiamo Northwind, quindi alla scelta delle tabelle da inserire e scegliamo Cutomers e Orders, per avere una relazione del tipo (0,1) a Molti, quindi avremo:

    image

    Ok ora viene il bello, aggiungiamo un nuovo template ADO.NET Data Service, come in figura:

    image

    Chiamiamolo NorthwindWebDataService, o come vogliamo, a questo punto nel nostro progetto web ci troviamo più o meno quello indicato in figura:

    image

    Andiamo ora nel file .cs in figura NorthwindWebDataService.cs, in questo caso dobbiamo abilitare quali entità del nostro dominio applicativo vogliamo siano rese visibili all’esterno dai data Service. Per fare questo basta registrare come vedete nel codice seguente il modello dei dati e specificare quali permessi vogliamo vengano dati a quali entità. Nel mio esempio ho optato per la scelta più sbrigativa, attenzione a non fare lo stesso in produzione.

    image

    Ora possiamo fare qualche prova dal browser ed invocare il nostro servizio con delle chiamate come le seguenti: http://localhost:48248/SilverlightADOnetDataServicesDemo.Web/NorthwindWebDataService.svc/

    che dà la lista delle entità esposte, aggiungendo in coda a questo url:

    • /Customers ottengo un file XML con l’elenco dei customers e le informazion su db
    • /Customers(‘ALFKI’) per avere le informazioni su uno specifico customer
    • /Customers?&expand=Orders : che dà l’elenco dei clienti ma anche i relativi ordini

    In questo ultimo caso abbiamo proprio un esempio di quello che ci serviva: i clienti ed i relativi ordini in una sola chiamata; ok è da valutare quando questo sia o meno conveniente o se al limite si poteva raffinare la ricerca selezionando meglio solo alcuni clienti. Vi mostro comunque il risultato del browser , il primo riquadro è l’ID del primo customer e gli altri due sono gli id dei primi due ordini, potete immaginare il resto…

    image

    Il client, Silverlight 2 in questo caso

    Bene, vediamo ora come chiamare gli ADO.NET Data Service da Silverlight 2 RC. Per essere completi dovrei aggiungere che posso utilizzarli, usando delle librerie client per AJAX e delle librerie client per Windows, quindi potrei usarli da WPF o da una Windows Form, oppure direttamente via http, anche se poi dovrei occuparmi del parsing del file XML o JSON.

    Dal progetto SL aggiungiamo il riferimento all’ assembly System.Services.Data.Client.

    Ora la mia applicazione SL si compone di due semplici ListBox, la prima che dà la lista dei clienti e la seconda la lista degli ordini per uno specifico cliente. Non vorrei soffermarmi sugli aspetti di databinding della UI, ma evidenziare come fare la chiamata da SL. Il modo più rapido è aggiungere un riferimento dal progetto Silverlight verso il servizio offerto dai Data Service, quindi verso il file .svc come se fosse un qualsiasi Web Service.

    Ora nel code behind della pagina page.xaml.cs aggiungiamo queso codice:

    image

    La classe DataServiceContext si occupa di gestire il contesto della chiamata, facendo il tracking delle entità aggiunte etc. La seconda chiamata è quella vera e propria dove definiamo cosa vogliamo ottenere; dovreste vedere la stringa che prima chiamavamo dal browser; quindi definiamo la funzione di call-back che verrà invocata alla fine della chiamata asincrona.

    image

    La nostra funzione di call-back semplicemente aggancia una lista di oggetti Customers al DataContext della nostra prima lista, che mostra quindi l’elenco dei Customer (alcune informazioni).

    Ora agganciamo all’evento SelectionChanged il fatto che vogliamo visualizzare gli ordini del cliente selezionato nella seconda lista.

    image

    Direi che il gioco è fatto, ecco la nostra applicazione funzionante: ok ammetto la grafica non è affascinante, ma spero di aver reso l’idea.

    image

    Conclusione

    L’uso degli ADO.NET Data Services aiuta in molti scenari in cui si voglia esporre via REST sorgeti dati, offrendo un meccanismo che ne semplifica il modo d’interrogare, filtrare, ordinare e modificare la sorgente dati sottostante. Può essere usato sia per lo sviluppo per il web ma anche per Windows e insieme a Entity Framework consente anche la facile serializzazione di grafi con relazioni master/detail.

    Potete scaricare il codice di esempio di questo post da qui. [Ho aggiornato il codice scrivendo lo stesso client anche in Visual basic]

  • Pietro Brambati Blog

    I nuovi MVP

    • 3 Comments

    Il buon Alessandro, che ormai scrive in inglese :-) ha segnalato i nuovi Microsoft Most Valuable Professionals, di ottobre 2008, quindi non potevo che fare:

    var italyMvp = from mvp in newMvp where mvp.Country == “Italy” select mvp;

    Il cui risulato dà:

    Name

    Technical Expertise

    Country

    Alessio Leoncini

    Client App Dev

    Italy

    Andrea Dottor

    ASP/ASP.NET

    Italy
    Ermanno Goletto Directory Services Italy
    Franco Leuzzi Windows Desktop Experience Italy
    Mario De Ghetto Visual Basic Italy
    Matteo Raumer Visual C# Italy
    Simone Chiaretta ASP/ASP.NET Italy
    Vito Arconzo Client App Dev Italy
    Giuseppe Traficante Exchange Server Italy

     

    Complimenti a tutti anche da parte mia!!

  • Pietro Brambati Blog

    Mi sono salvato in extremis, anzi in Vista!

    • 3 Comments

    Questa mattina mi sveglio, faccio colazione, vesto la mia bimba etc, (altri particolari omessi) … oggi sono a casa, faccio Home Office e volevo approfittare della tranquillità per fare qualcosa diciamo così di “produttivo” –bene- vediamo di andare avanti con una presentazione che sto preparando o meglio con una demo … e fin qui tutto a posto, quindi accendo il computer e faccio per cancellare una directory che pensavo non mi servisse, un po’ distrattamente (era mattina presto) … dopo qualche secondo realizzo!  devo aver cancellato la directory che contiene proprio la demo che stavo preparando e che mi era già costata parecchie ore di lavoro! No, no non ci posso credere!   Ancora abbastanza calmo guardo subito nel cestino … e no, no, non c’è neanche lì … torno indietro con la mente no accidenti ho usato proprio quella sequenza di tasti … ma perchè,  non lo faccio mai.  Il panico comincia a farsi largo … ma sì io tengo tutte le demo e presentazioni sulla chiavetta, quella lenta… la prendo e  no, no, no, non c’è, ma come mai non l’ho salvata, almeno una parte, lo faccio sempre, come può essere successo.

    Ok a questo punto ero assolutamente disperato, il racconto si farebbe cruento ( con me stesso) e già pensavo di usare strani toolletti che da anni non usavo più, di chiedere a Renato, di scrivere io un programmino, quando …

    imageMa aspetta un attimo le “Previous Versions” ?

    Eh sì, la storia finisce proprio così tasto destro sul folder che conteneva la directoy cancellata innavertitamente ed eccole lì: la lista per data delle modifiche fatte alla cartella. Ora basta fare un Restore oppure per maggiori scrupoli, fare la copia della versione che serve in un altro folder “et voilà” …

    ora sto meglio :-)

    Certe funzionalità non sono utili, fino a quando non servono.

Page 1 of 1 (7 items)