3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>
Il Common Language Runtime di .NET Micro Framework
La cosa più sorprendente di uF è il fatto che la porzione di CLR, conforme alle specifiche ECMA, se rapportata al contesto di utilizzo non ha nulla da invidiare alle altre implementazioni di .NET fornendo di fatto tutti i benefici tipici di un ambiente gestito.
Il CLR di uF supporta il linguaggio di programmazione C#. Include un insieme ridotto delle Base Class Libraries di .NET (BCL) fortemente adattate alle esigenze di applicazioni embedded: si parla di circa 70 classi e 420 metodi. Include librerie specifiche per la gestione dell'interfaccia utente basate sul modello di Windows Presentation Foundation (WPF) private del supporto per il linguaggio dichiarativo XAML nonché classi per la gestione delle comunicazioni, del networking, della crittografia ed altro ancora.
Le Base Class Libraries implementate nella versione 2.0 SP1 includono:
System
System.Collections
System.Diagnostics
System.Globalization
System.IO
System.Net
System.Net.Sockets
System.Reflection
System.Resources
System.Runtime.CompilerServices
System.Runtime.InteropServices
System.Runtime.Remoting
System.Text
System.Threading
Notiamo alcune assenze eccellenti quali, ad esempio, System.Xml.*, System.Data.*, System.Web.* (escluse per non appesantire la distribuzione e comunque al vaglio del gruppo di sviluppo Microsoft per una eventuale implementazione nei prossimi rilasci).
Le altre classi, tra cui quelle di gestione dell'interfaccia utente, sono implementate all'interno del namespace Microsoft.SPOT così composto:
| Microsoft.SPOT | Contiene le classi, i delegate e gli enumeratori specifici della piattaforma .NET uF. Tra gli altri troviamo: la classe Math che contiene alcuni metodi statici per operazione matematiche (calcolo del seno, coseno e generazione numeri casuali); le classi Font e Bitmap; le classi per il supporto RPC sia client che server; le classi per la gestione dell'orario e del timezone (fuso orario) e molto altro. |
| Microsoft.SPOT.Cryptography | Contiene gli strumenti essenziali per la codifica e decodifica dei dati. In particolare sono supportati gli algoritmi RSA e XTEA (Extended Tiny Encryption Algorithm). |
| Microsoft.SPOT.Hardware | Contiene le classi specifiche per la gestione del dispositivo hardware. Troviamo, a titolo di esempio, le classi per il controllo della batteria (o del caricatore stesso), quelle per la gestione dei dispositivi I2C o SPI, degli I/O, del controllo della luce di fondo del pannello LCD (backlight) e molto altro ancora. |
| Microsoft.SPOT.Input | Contiene le classi, i delegate e gli enumeratori per il supporto al sistema di input basato su WPF. |
| Microsoft.SPOT.Net.NetworkInformation | Sostanzialmente contiene una sola classe chiamata NetworkInterface che permette di ottenere informazioni sulle periferiche di rete connesse al dispositivo nonché configurarle. |
| Microsoft.SPOT.Presentation Microsoft.SPOT.Presentation.Controls Microsoft.SPOT.Presentation.Media Microsoft.SPOT.Presentation.Shapes | Questa parte di namespaces è dedicata alla gestione delle finestre, del rendering grafico, delle immagini, dei controlli e di quanto altro inerente l'interfaccia utente (GUI). |
Va evidenziato come malgrado una implementazione ridotta di WPF sia comunque possibile effettuare numerose ed interessanti operazioni verso l'interfaccia utente anche attraverso il disegno basato sull'uso di primitive. All'interno della classe Microsoft.SPOT.Presentation.Media.DrawingContext (che rappresenta la superficie di disegno) troviamo, ad esempio, i metodi per disegnare rettangoli, ellissi, linee e poligoni, testo, immagini (con possibilità di eseguire l'overlay gestendone l'opacità) fino a settare il singolo pixel.
Altrettanto interessanti i controlli (chiamati anche elementi) presenti nel namespace Microsoft.SPOT.Presentation.Controls utili per l'interazione tra utente ed applicazione. Tra gli altri troviamo le classi: Border (per disegnare un bordo attorno ad un elemento), Canvas (utile per definire un'area detta appunto canvas all'interno della quale è possibile inserire altri elementi facendo riferimento alle coordinate relative dell'angolo superiore sinistro dell'area stessa) , Image (per visualizzare bitmap), ListBox , ScrollViewer (per la definizione delle caratteristiche e delle funzionalità di un'area di scorrimento nel display), Text (per la visualizzazione di testo quindi simile ad una Label) e TextFlow (per il controllo dello scorrimento del testo).
Da quanto appena riportato intuiamo come il CLR implementi tutte le più importanti caratteristiche degli equivalenti CLR nelle versioni cosiddette "intere" (per rendersene conto basta dare un'occhiata al contenuto del namespace System) così come una serie di caratteristiche che invece non hanno equivalenti nel CLR di Microsoft .NET. Ne cito alcune tra le numerose presenti:
- Supporto per tutti i tipi di dato numerici nonché i value types (Boolean, Char, DateTime, TimeSpan, Single, Double, Byte , Int16, Int32, Int64 solo per citarne alcuni), i tipi di dato Class, gli array (limitati ad una sola dimensione), i delegate (puntatori a funzioni), gli eventi, i riferimenti (puntatori ad oggetti), i riferimenti deboli (weak references) e i riferimenti deboli estesi (extended weak references che in uF hanno un ruolo particolare in quanto vengono persistiti nella EEPROM o nella memoria flash).
- Il supporto per i tipi di dato stringa esposti in Unicode, ma memorizzati con codifica UTF8 per minimizzare l'uso della memoria.
- Il supporto per tipi di dati BLOB (quali, a titolo di esempio, immagini e audio).
- La Reflection e la Serialization (quest'ultima particolarmente ottimizzata anche attraverso un uso di specifici Attributes al fine di ottenere rappresentazioni estremamente compatte dei dati serializzati).
- L'allocazione dinamica della memoria, la deframmentazione della memoria e la garbage collection (anche questa ottimizzata applicando tecniche specifiche sia per ridurre i tempi di esecuzione di questo processo che per gestire la persistenza degli oggetti di tipo extended weak references).
- La gestione delle eccezioni. L'implementazione in uF, del tutto simile alla versione completa di .NET, ha una interessante caratteristica aggiuntiva che consiste nella possibilità, da parte di CLR, di inserire un programma in una blacklist qualora questo continui a fallire secondo quanto eventualmente stabilito da un algoritmo euristico.
- La gestione del multi-threading basato su time-slice di 20ms; la possibilità di definire la priorità di esecuzione delle thread nonché di interromperne l'esecuzione stessa grazie alla particolare implementazione dell'Execution Engine descritto di seguito; il supporto per l'accesso sincrono alle risorse condivise effettuato da parte di più thread.
3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>
Contenuti dell'articolo
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Difficoltà
Utilità
Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!

Complimenti per l'articolo, ha stuzzicato curiosità per questa tipologia di dispositivi.Interessante studio a livello hobbystico. Ma dove si possono ...
Continua »»» | Rispondi »»»