Fra gli strumenti interessanti della nuova versione del .NET Compact Framework troviamo i vari Logger che consentono di creare appunto file di log sulle operazioni effettuate dalle applicazioni .NET CF.
Gli strumenti non sono inclusi in Visual Studio 2008, ma arrivano come Power Tools, per adesso scaricabili da http://www.microsoft.com/downloads/details.aspx?familyid=c8174c14-a27d-4148-bf01-86c2e0953eab&displaylang=en&tm e in versione September CTP.
Una volta installato il tutto si puó utilizzare Logging Configuration per abilitare e disabilitare, su device e emulatori, le varie opzioni di logging:
- Loader
- Native Interop
- Network
- Error
- Finalizer
Ogni logger scrive le informazioni in un file di log nella stessa directory dove gira l'applicazione.
Per effettuare analisi sul traffico di rete, i pacchetti spediti, i byte inviati e ricevuti é possibile usare il Network Logger Viewer che visualizza, in forma "grafica" il file di log relativo.
Ad esempio questo i log su una chiamata ad un servizio WCF in basicHttpBinding effettuata dall'emulatore.
Nella prima griglia si vedono, in base ai timestamp, i vari record di invio/ricezione pacchetti e abilitando (come da figura) le colonne Bytes Sent e Bytes Received si puó facilmente analizzare quante informazioni sono state inviate.
Per ogni record, nella finestra sotto troviamo il dettaglio dei byte scambiati e lo stream relativo, mentre nella finestrina a destra si vede la rappresentazione testuale.
In questo esempio, la chiamata riguarda appunto un servizio WCF che accetta un valore intero e restituisce, come da figura sotto la scadenza di una polizza.

Dopo il rilascio dei Power Toys per .NET CF 3.5 September CTP ecco la lista (sembra finale) del subset delle feature supportate da WCF sul Compact Framework 3.5.
|
Feature |
Desktop WCF |
Compact WCF |
| Binding: |
|
|
| · BasicHttpBinding |
Si |
Si |
| · CustomBinding |
Si |
Si |
| · WindowsMobileMailBinding |
N/A |
Si |
| · ExchangeWebServiceMailBinding |
Si, se si installa NetCF |
Si |
| Formatter: |
|
|
| · SoapFormatter |
Si |
Si |
| · BinaryFormatter |
Si |
No |
| Encoder: |
|
|
| · TextMessageEncoder |
Si |
Si |
| · BinaryMessageEncodingBindingElement |
Si |
No |
| · MTOMEncoder |
Si |
No |
| · GzipEncoder |
No |
No |
| Transport: |
|
|
| · HttpTransportBindingElement |
Si |
Si |
| · HttpsTransportBindingElement |
Si |
Si |
| · MailTransportBindingElement |
Si, se si installa NetCF |
Si |
| · MsmqTransportBindingElement |
Si |
No |
| · TcpTransportBindingElement |
Si |
No |
| · (other transports) |
Si |
No |
| XmlDictionaryReader/Writer |
Si |
Si; stub sopra XmlTextReader/Writer |
| DataContractSerializer |
Si |
No; compatibile però con DCS via XmlSerializer |
| Service proxy generation |
SvcUtil.exe |
NetCFSvcUtil.exe (si trova nei Power Toys, non in VS2008 |
| · Non-HTTP transports |
Si |
No |
| · Custom headers |
Si |
No |
| WS-Addressing |
Si |
Si |
| WS-Security message level security |
|
|
| · X.509 |
Si |
Si |
| · Username/password |
Si |
No |
| · SecurityAlgorithmSuite.Basic256Rsa15 |
Si |
Si |
| · SecurityAlgorithmSuite.Basic256 |
Si |
No |
| WS-ReliableMessaging |
Si |
No |
| Patterns |
|
|
| · Service model |
Si |
No |
| · Message layer programming |
Si |
Si |
| · Buffered messages |
Si |
Si |
| · Streaming messages |
Si |
No |
| · Endpoint descriptions in .config files |
Si |
No |
| Channel extensibility |
Si |
Si |
| Security channel extensibility |
Si |
No |
Dopo un mese di fuoco trovo finalmente il tempo di fare un post su questo strumento a mio avviso fondamentale per disegnare e progettare applicazioni che fanno uso di class library...praticamente tutte :-)
Nella versione 2005 di VSTS Architect Edition non era possibile rappresentare nel diagramma AD (Application Diagram) progetti di tipo class library che, come da documentazione, dovevano essere considerati parte del progetto principale: in pratica un progetto Windows Form, oppure ASP.NET, oppure Web Service ospitava nel digramma tutte le dll referenziate.
Noi, in DevLeap, avevamo optato per un workaround in modo da rappresentare in AD e DD (Deployment Diagram) i progetti di tipo DLL. Tutte le nostre implemtazioni fanno uso di UI Layer, composto da uno o piú progetti di tipo class library, di un Biz Layer che si appoggia a dei factory per l'accesso ai dati o la chiamata a servizi (Web Service o WCF). A tal proposito si vedano i post
http://blogs.devleap.com/rob/archive/2005/09/06/5670.aspx
http://blogs.devleap.com/rob/archive/2007/04/11/solution-che-accompagner-molte-demo-della-devcon-2007.aspx
In pratica il diagramma relativo alla parte BIZ/DAL evidenzia l'uso di Generic Application per rappresentare i progetti di tipo Class Library.
In Visual Studio 2008 Architect Edition, a parte altre interessanti novitá, la situazione é rimasta praticamente invariata, a meno di non installare i Power Tools per la versione Architect. Per adesso sono allineati alla Beta 2 di VSTS 2008.
Questo add-in consente di rappresentare e soprattutto descrivere i progetti di tipo class library, legarli al diagramma SDM e come sempre sincronizzarne le impostazioni con il progetto reale.
Ad esempio, partendo da un semplice esempio, é possibile rappresentare i progetti di tipo Class Library che appaiono nella toolbox dopo l'installazione dei Power Tools.
Ogni connessione fra applicazioni e class library verrá poi gestita con una reference fra i progetti Visual Studio, cosí come ogni reference effettuata dai progetti si riflette sul diagramma tramite la visualizzazione della connessione.
Tempo fa ho eseguito l'upgrade della nostra soluzione (presentata a DevCon 2005 e DevCon 2007) composta ormai da una settantina di progetti Visual Studio in unica solution: si veda il post http://blogs.devleap.com/rob/archive/2007/05/10/upgrade-to-orcas-beta-1.aspx.
Dopo aver montato i Power Tool ho deciso di ridisegnare AD e DD facendo uso dei progetti di tipo class library.
Giustamente il risultato che mi si é presentato riaprendo il diagramma dopo l'installazione é il seguente
In pratica l'AD si é accorto delle varie reference a progetti class library dai progetti reali e ha rappresentato le "figurine" e le relative connection sul diagramma. I nomi dei progetti sono gli stessi dei nomi reali dei progetti .csproj a cui sono stati tolti in automatico, come da prassi, i ".".
Per eliminare le Generic Application che avevamo usato come placeholder nella versione 2005 occorre procedere eliminando prima tutti i file .SDM (delle generic application) dalla solution di Visual Studio e poi eliminare dal diagramma i relaitivi elementi grafici.
Gli SDM relativi alle applicazioni di tipo Class Library vengono memorizzati direttamente nel relativo progetto Visual Studio, come accade da sempre per i tipi di applicazioni gestiti dall'AD.
Altra operazione che avevamo fatto come workaround era stata quella di legare le class library dello strato DAL al database, operazione non piú necessaria in quanto il legame fra applicazione e DB sta giustamente nell'applicazione principale (Windows Form, WPF, ASP.NET che sia) ove infatti, da sempre, sono memorizzate le connection string nei rispettivi file .config.
Alla prossima.