Andrea Marzilli ha intervistato alcune persone alla fine del PhpDay2008, ecco la mia:
http://www.ictv.it/file/vedi/693/brambati-iis7-fastcgi-e-php/
Sono un po' noioso lo so, scusate :-)
Anche quest'anno (sono arrivato alla mia seconda edizione!) ho partecipato al PhpDay, svoltosi a Rimini lo scorso venerdì e sabato.
Mi ha fatto piacere rivedere alcune facce note, che potete vedere nella foto scattata, l'unica nella mia macchina
Le slide della sessione le trovate sotto, in sintesi gli argomenti trattati:
Un titolo un po' complicato, certo, vediamo di chiarire meglio il contenuto di questo post. Lo scopo è di illustrare con un po' di codice una delle novità della SP1 di .NET 3.5, in particolare il supporto di WCF per la serializzazione delle entità generate dall' Entity Framework, anche quest'ultimo, come forse avete letto, lo trovate ora, insieme al designer installando la SP1. Potete leggere le novità della SP1 qui.
Dopo aver installato l'SP1 su una macchina di test, creiamo dunque un progetto di tipo WCF Service Application, come mostrato in figura:
Aggiungiamo ora un nuovo item di tipo ADO.NET Entity Data Model. Due parole sull' Entity Data Model (EDM), per chi non ne ha mai sentito parlare, per gli altri saltate pure il paragrafo. L' EDM rapprenta il cuore dell ' Entity Framework (EF), consentendovi di "rappresentare" il dominio applicativo della vostra applicazione. L'insieme delle classi che ne scaturiscono non sono necessariamente legate a come è fatto il vostro database in termini di tabelle etc.L' EDM è implementato attraverso un file CSDL, come descritto nella documentazione. Nella sua intimità il designer di VS, che useremo nell'esempio, crea tre file XML: il CSDL descrive appunto le entità con cui la nostra applicazione vuole parlare, ad esempio un cliente ed un ordine, un secondo file SSDL descrive invece come è la struttura relazionale del nostro database, che può non necessariamente mapparsi in modo diretto sulle entità, ad esempio posso avere più tabelle che rappresentano sul db come è fatto un customer. Un terzo e ultimo file MDL descrive invece il mapping tra le entità e le tabelle sul database. Il designer che Visual Studio 2008 ci mette a disposizione crea un file .edmx, che al suo interno è fatto appunto dai tre file XML. Ok, scusate la brevità, ma potete leggere un'introduzione a EF e EDM a questo link.
Nella figura seguente aggiungiamo quindi un nuovo item e seguendo il wizard proposto utilizzate come database il classico Northwind e per gli scopi di questo post inserite solo le tabelle Customers e Orders.
Il risultato mostrato nel designer dell'EF sarà qualcosa del genere, in cui vedete espressa, una relazione 1-a-molti tra le entità, ad ogni entità corrisponde una classe che poi useremo nell'applicazione. Infatti il designer creerà delle classi, oggetti .NET, che useremo per scrivere il codice e una classe NorthwindEntities che serve a EF e che sarà il nostro entry-point per poter lavorare con EF.
Ora vogliamo esporre un servizio WCF con un semplice metodo che restituisca l'elenco dei client e dei relativi ordini, per fare questo per prima cosa modifichiamo il file IService1 creato in automatico quando abbiamo aggiunto il progetto WCF, come in figura:
Nella figura vedete che ho aggiunto il namespace NorthwindModel, che mi è stato creato quando ho usato il designer dell' EF, quindi ho definito nell'interfaccia un unico metodo che restituisce l'elenco di customers, il numero massimo è controllato dal parametro del metodo. Il metodo ha intenzione di restituire l'elenco di clienti e relativi ordini all'applicazione client che invocherà il servizio. Implementiamo ora il servizio nel file service1.svc.cs usando una query LINQ to Entities. LINQ to Entities è una delle modalità di interrogazione che offre EF, potete anche usare Entity SQL in diversi scenari... questi argomenti sono fuori dallo scopo di questo post.
Nell'esempio vedete una semplice query LINQ to Entities, che espone i Customers (al massimo il numero indicato). Nella query notate la clausola Include. Questa viene usata perchè l'EF ha un meccanismo esplicito per il caricamento delle entità, possiamo vedere la query generata su database ad esempio usando il Profiler di SQL Server. Se volete saperne di più sulle strategie di caricamento dell' EF e modalità di interrogazione, leggete questo interessante articolo.
Bene, ora aggiungiamo una semplice console application e aggiungiamo un riferimento al servizio WCF presente nella solution, come mostrato in figura, in cui stiamo, per l'appunto, aggiungendo una Service Referece all'applicazione console.
Ora scriviamo il codice necessario per mostrare l'elenco dei clienti, diciamo i primi due e i relativi ordini
Quello che succede è che l'applicazione client non vede la classe Orders, poichè questa non è stata serializzata, perdiamo quindi la possibilità di navigare da un generico Customer a tutti i suoi Orders, se non esponendo gli ordini direttamente dal metodo WCF.
Le novità introdotte a WCF nella SP1 supportano la serializzazione del grafo delle entità generate dall'Entity Framework, quindi possiamo scrivere il seguente codice, che ci permette di fare sul client quello che volevamo senza complicare il metodo del servizio WCF.
Ecco il codice, in cui vedete che abbiamo accesso, dato un cliente, anche alla lista degli ordini.
Il risultato è quello atteso:
Potete scaricare l'esempio di codice a questo link.
Sono disponibili per il download le sessioni del The Next Web Now, Mix Essentials. Potete scaricaricare la mia sessione sullo sviluppo con Windows Live ai due link sotto:
Windows Live - parte I
Windows Live - parte II
Se siete interessati ad approfondire l'argomento vi annuncio in anteprima che stiamo lavornado, insieme a Davide Vernole, Microsoft MVP, ad un tutorial su Windows Live, che sarà a breve disponibile, un po' di pazienza ...
Sono disponibili anche tutte le altre sessioni sullo sviluppo con Silverlight 2 , Silverlight per mobile e la keynote tecnica:
Ecco i link diretti:
Happy Coding
Tra le novità di Microsoft Expression Web 2, da poco rilasciato, c'è il supporto per PHP. Potete leggere un articolo completo sulle novità a questo link. Nell'articolo trovate utili informazioni su come configurare il run-time PHP per lo sviluppo con Expression Web 2.
In sintesi qualche snap-shot sulle funzionalità:
Consente di vedere la preview della pagina che contiene codice HTML/CSS e PHP, compresa la preview delle pagine inserite via php include: nella figura la pagina menu.php inserita nella pagina principale usando lo script include, viene visualizzata nelle finestra di preview sottostante.
Per testare un'applicazione PHP direttamente usando Expression Web, usando comunque il run-time PHP. Nell'immagine la preview della pagina viene lanciata premendo F12 da Expression Web 2 e gira in un processo apposito lanciato dall' IDE su una porta generata dinamicamente.
Chi usa PHP per lo sviluppo di applicazioni web troverà sicuramente vantaggio nel supporto avanzato per i CSS e la loro preview direttamente nell' IDE.
Se volete provare con mano le novità, potete scaricare una versione trial di Expression Web 2.
Oggi in effetti ho avuto una giornata un po' particolare, sicuramente diversa dal solito. Sono infatti stato intervistato in televisione per la trasmissione MyTech di Class Life, che va in onda su Sky e sul digitale terrestre.
Ammetto è stata un'esperienza nuova e sicuramente emozionante, al contempo divertente, e sebbene sia abituato a parle in pubblico anche difronte a molte persone, abbia fatto un po' di interviste su internet registrare qui in Microsoft, una trasmissione televisiva è sicuramente un'esperienza diversa.
La prima cosa di cui sono rimasto colpito è l' "angolo" nel quale Davide Fumagalli mi ha intervistato, si trovava in fatti all'interno di una redazione giornalistica e quindi abbiamo registrato mentre altri lavoravano ... spero di non aver dato troppo fastidio. Problemi: sicuramente parlare di fronte ad una videocamera non è facilissimo, ma ammetto la sgradevole sensazione che si prova quando registro un webcast è sicuramente peggio. Il format mi è piaciuto molto: un mix di domande, risposte e servizi mandati in onda e da commentare; sicuramente diverso dalle mie solite presentazioni in cui alterno slide e demo.
Grazie all'aiuto di Luciano che mi ha accompagnato, sono riuscito a scattare questa frugale foto, subito dopo la registrazione.
Ora mi rimane un unico dubbio: ma sarò venuto bene in tv? Ma devo aspettare di vedermi...
Se volete seguire la trasmissione vi farò sapere quando andrà in onda ... e se volete farmi sapere cosa ne pensate sono qui. Forse sarà anche scaricabile ... ok aggiornerò il blog, nel caso
Ciao
-Pietro
Con la beta 1 della SP1 di .NET 3.5 arriva una nuova importante modalità di installazione del .NET Framework. Un sottoinsieme delle librerie di .NET 3.5 SP1 saranno pacchettizzate per offrire le funzionalità necessarie alle sole applicazioni client. Inoltre un nuovo bootstrapper più leggero (circa 200KB) migliorerà le performance in fase di installazione.
Perchè una versione Client di .NET ?
Con la maturità e complettezza delle funzionalità di .NET 3.5 la dimensione del framework è diventata ormai importante. Per chi sviluppa applicazioni client si apre quindi una nuova possibilità: usare una versione ridotta di .NET FX 3.5 pensata appunto per le sole applicazioni client.
La versione client di .NET è composta da un sottoinsieme, che occupa circa 26 MB, degli assembly del full-net framework: le librerie sono le stesse, non serve quindi ricompilare un'applicazione pacchettizzata per .NET client profile per farla girare sulla versione full. Le componenti di massima incluse sono:
Scenari di installazione del .NET Framework
Il nuovo bootstrapper è in grado di gestire scenari di upgrade, ad esempio se ho una macchina con installato già .NET 3.0, verranno scaricati solo i file di update per la versione 3.5 SP1 del framework e le relative fix per la versione 2.0 e 3.0 del framework.
Supporto in Visual Studio 2008
VS 2008 già supporta la possibilità di scegliere il framework di riferimento per creare un' applicazione, con la nota funzionalità detta di multi-targeting con cui posso decidere se sviluppare per .NET 2.0, .NET 3.0 o .NET 3.5. Ora una proprietà di progetto, esposta tramite un check-box abiliterà il supporto per l'uso del Client Framework, come si vede in figura:
In caso useremo API o metteremo reference a dll non presenti nella versione client del Framework riceveremo un warning a compile-time. Le applicazioni così realizzate verrano inoltre marcate nel manifest con un opportuno flag che permetterà al run-time in esecuzione di sapere se l'applicazione è in grado di girare correttamente. Se si cerca di far girare un'applicazione che richiede il full-framework, il client profile avvertirà quindi l'utente di scaricare la versione completa.
La nuova SP1 di .NET 3.5 (rilasciata oggi in beta 1) e Visual Studio 2008 contiene molte altre novità, potete partire da questo post per farvi un'idea.