Roberto Brunetti Mobile Blog

Bridging the Mobility Gap !

Recent Posts

Tags

Community

Email Notifications

.NET Blogs

Archives

October 2007 - Posts

Network Logger Viewer per .NET CF 3.5

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.

WCF su .NET CF 3.5

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
Visual Studio Team System 2008 Architect Power Tools

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.