Sta arrivando! Il (vero) successore di Windows Mobile (Windows Embedded Handheld 6.5.x) arriverà nei prossimi mesi (settimane?), come già ben sappiamo.
Abbiamo anche ben compreso che la prossima generazione di terminali portatili sarà basata su Windows Phone OS (il nome corretto è Windows Embedded 8 Handheld o WE8H), per questo ho iniziato il porting, o forse sarebbe meglio dire riscrittura, di una delle mie applicazioni gestionali che ho sviluppato negli ultimi anni, verso il nuovo sistema operativo.
TQuesto è il primo di una numero imprecisato di post, in cui cercheò di analizzare e mostrare ogni aspetto del porting/riscrittura dell’applicazione.
La App
E’ stata sviluppata per alcuni clienti operanti nel settore della moda e abbigliamento per gestire I trasferimenti di merce fra negozio e negozio, fra magazzini e negozi e vice versa.
Oltre ai trasferimenti la applicazione implementa le procedure di inventario della merce per il magazzino o per il negozio. Gli articoli sono identificati naturalmente dal loro codice a barre che corrisponde ad un articolo in un certo colore (o variante) e taglia. Gestiamo anche alcune altre informazioni di cui vedremo I dettagli in uno dei prossimi post.
I Dati
Di solito I barcode risiedono in un DB locale installato sul device e sincronizzato ogni notte con il server centrale dell’azienda. Ai tempi in cui fu scritta questa applicazione la disponibilità reti WiFi affidabili nei magazzini non era comune, per questo la maggior parte delle installazioni utilizzano il DB locale sul device.
In molti casi il numero di barcode (record) è molto elevato, ho delle installazioni di questa procedura con 4 Milioni di record nel DB, si 4.000.000 righe in un file sdf di un DB SQLCe che necessita di essere sincronizzato ogni notte (moltiplicato per il numero di dispositivi installati).
In molti casi ho cercato di di convincere il cliente ad installare un server di backoffice, degli access point ed utilizzare un servizio WCF sul server per reperire il barcode e le altre informazioni dal terminale via connessione WiFi. Ho quasi sempre fallito!
Considerare di passare questa struttura su WP8 non è molto difficile, possiamo continuare ad utilizzare SQLCe ma non con le metodologie di accesso precedenti (connessione, command esecuzione della query ecc) ma solo via LINQ to SQL, non c’è supporto per T-SQL su WP8. potremmo anche considerare l’adozione di un DB SQLite, che viene utilizzato sempre più spesso nelle applicazioni WP8 e Win8, visto anche che su quest’ultimo non c’è supporto a SQLCe.
Al giorno d’oggi tutti (la maggior parte ) dei magazzini sono equipaggiati con una copertura WiFi che permetterebbe più semplicemente di utilizzare lo scenario di lavoro connesso. C’è comunque da tenere in considerazione e gestire le modalità di lavoro disconnesse per tutte le situazioni di lavoro fuori copertura, o in negozio dove potrebbe non esserci copertura o accesso al server.
I device
Solitamente io ho sempre installato dispositivi Symbol (Motorola) ed in particolare I modelli MC70/75 e MC3000/3100.
Questi device montano dei processori ARM a 600 MHz ed hanno un massimo di 256 MB Ram /1GB Flash (per I modelli più recenti) nulla al confronto dei requisiti minimi di un device WP8: processore Snapdragon a non meno di 1 GHz dual core, 512 MB Ram /4GB Storage.
Per ora non sono disponibili e non sono stati ancora annunciati device WE8H, Suppongo però che le specifiche tecniche non differiranno di molto da quelle di WP8. La principale differenza sarà la costruzione di tipo rugged (1), il lettore di codici a barre, le tipologie di radio che avranno a bordo (Wi-Fi, GSM/3G/LTE, Bluetooth), o I tipi di interfacce di scrittura/lettura tipo NFC or RFID.
Nel prossimo post vedremo la struttura della applicazione ed inizieremo ad analizzare come “portare” alcune caratteristiche valutando le differenze dei sistemi operativi e considerando le guideline per le Modern UI app per la User Experience e per la User Interface.
(1) Contenitori e strutture del device che permettono di resistere a cadute a terra o schizzi e polvere, o di lavorare in ambienti con agenti ambientali sfavorevoli.