Νωρίτερα αυτή την άνοιξη είχα κάνει δυο παρουσιάσεις για τα Windows Mobile και σαν εισαγωγή προσπάθησα να συνοψίσω σε μια διαφάνεια τις βασικές τεχνολογίες και τα εργαλεία που πλαισιώνουν την ανάπτυξη λογισμικού σε αυτή την κατηγορία συσκευών. Πολλές φορές γίνεται μια σύγχυση των εννοιών Compact και Mobile, ενώ και οι συχνές αλλαγές ονομασιών για λόγους μάλλον μαρκετινγκ μπερδεύουν τα πράγματα περισσότερο. Δεν σας κρύβω ότι όταν για πρώτη φορά αποφάσισα να ασχοληθώ με το αντικείμενο αυτό είχα αρχίσει να πιστεύω ότι υπάρχει μια κρυφή συνομωσία και τα πράγματα είναι απλά για τους άλλους αλλά το κρύβει ο καθένας για τον εαυτό του! Δεν είναι εκνευριστικό όταν συμβαίνει αυτό;
Επιτρέψτε μου λοιπόν να επιχειρήσω να ξεδιαλύνω λίγο το τοπίο, ειδικά γι όσους θέλουν να ξεκινήσουν τώρα. Καταρχήν ας ρίξουμε μια ματιά στο παρακάτω slide:
Εκδόσεις "φορητών" Windows
Πατέρας όλων των Windows Mobile είναι τα Windows CE (Compact Edition). Προσοχή όμως, Compact Edition δεν σημαίνει απαραίτητα και mobile. Θα μπορούμε να δούμε Windows CE και σε σταθερές συσκευές, όπως... μια ραπτομηχανή. Για την ακρίβεια, τα Windows CE είναι μια πλατφόρμα-λειτουργικό σύστημα για συσκευές με περιορισμένης ισχύος hardware. Η διαφορά τους με άλλα λειτουργικά συστήματα για μικρές συσκευές, όπως τα Windows XP Embedded, είναι ότι πρόκειται για ένα σύστημα με ξεχωριστό kernel και όχι για απλά ένα λειτουργικό που του έχουν αφαιρεθεί χαρακτηριστικά για να "χωρέσει" σε μια μικρή συσκευή. Τα Windows Mobile από την άλλη αποτελούν μια (επιτρέψτε μου τη χρήση μιας λέξης βγαλμένης από έναν άλλο κόσμο) "διανομή" των Windows CE, η οποία έχει δημιουργηθεί από τη Microsoft για συσκευές PDA (Personal Digital Assistant) και κινητά τηλέφωνα. Άλλες "διανομές" των Windows CE, εκτός των Mobile, είναι τα Windows Automotive, αλλά σε αυτό το άρθρο δεν θα επεκταθούμε σε αυτά.
Τα Windows Mobile έχουν εμφανιστεί στην αγορά με διάφορα ονόματα, συνοδεύοντας πάντα συγκεκριμένες συσκευές (Δυστυχώς δεν μπορεί κανείς να αγοράσει τα Windows Mobile μόνο και να τα εγκαταστήσει μόνος στο κινητό του τηλέφωνο. Κυρίως λόγω των ιδιομορφιών και ασυμβατοτήτων που υπάρχουν σε θέματα hardware από συσκευή σε συσκευή. Υπάρχουν διάφοροι τύποι που προσπαθούν να κάνουν κάτι τέτοιο και ακόμα κι αν παραβλέψουμε τα θέματα νομιμότητας, το αποτέλεσμα δεν νομίζω να ικανοποιήσει κάποιον που θέλει το τηλέφωνό του να χτυπήσει οπωσδήποτε όταν έχει μια εισερχόμενη κλήση!!! Πίσω στο θέμα μας...). Η πρώτη έκδοση των Windows Mobile είχε το όνομα Windows Pocket PC 2000 και κράτησε το όνομά αυτό έως το 2003. Το όνομα που ακολούθησε είναι το Windows Mobile (εκδόσεις 5 και 6 μέχρι και σήμερα).
Κάθε έκδοση βγήκε στην αγορά με τρεις διανομές (φτου... πάλι κακιές λέξεις!): Smartphone, Pocket PC και Pocket PC Phone Edition. Και για να μην πλήττουμε με τα ίδια και τα ίδια, οι ίδιες διανομές πλέον έχουν τα ονόματα Standard, Classic και Professional αντίστοιχα. Η πρώτη απευθύνεται σε κινητά που μοιάζουν με τα κλασικά κινητά (αριθμητικό πληκτρολόγιο 9-12 πλήκτρων, χωρίς οθόνη αφής), τα δεύτερα είναι τα κλασσικά PDA (με ή χωρίς QWERTY πληκτρολόγιο και με οθόνη αφής) ενώ τα τελευταία είναι τα PDA που έχουν και λειτουργίες τηλεφώνου.
.NET Framework
Ας περάσουμε τώρα στον κόσμο της ανάπτυξης λογισμικού για τις συσκευές αυτές. Ο πιο εύκολος τρόπος να γράψει κανείς λογισμικό για Windows Mobile είναι φυσικά το .NET το οποίο και αυτό κυκλοφορεί σε διάφορες εκδόσεις. Η standard desktop έκδοσή του, η έκδοση Compact (γνωστή και ως .NET CF - Compact Framewok), η έκδοση Micro (για συσκευές ακόμα πιο μικρές από το κινητό μας τηλέφωνο) και άλλες όπως το Silverlight και το Mono (.NET για Linux) . Φυσικά για Windows Mobile μας ενδιαφέρει η έκδοση Compact. Η νεότερη έκδοση είναι η 3.5 η οποία φέρει μερικά από τα νέα χαρακτηριστικά της αντίστοιχης desktop έκδοσης.
Στην εικόνα δεξιά βλέπετε τα διαθέσιμα namespaces του .NET CF 3.5. Πρόκειται για ένα subset του desktop .NET, ενώ μεταξύ αυτών υπάρχει και το Microsoft.ServiceModel.Channels.Mail για το οποίο υπερυφανεύεται η ομάδα του .NET CF ότι είναι το πρώτο namespace που παιρνάει από το Compact στο desktop .NET Framework!
Ίσως δεν είναι αρκετά ξεκάθαρο, αλλά τα namespaces αυτά δεν καλύπτουν λειτουργικότητα όπως αποστολή sms, ανάγνωση των επαφών του Pocket Outlook και άλλα cool χαρακτηριστικά με τα οποία θα ήθελε κανείς να "παίξει" αναπτύσσοντας για Windows Mobile. Αυτά είναι χαρακτηριστικά τα οποία είναι προσβάσιμα μέσω του API των Windows Mobile (βλ. επόμενη παράγραφο). Το .NET CF προσφέρει τα βασικά που χρειάζεται κανείς για να γράψει λογισμικό π.χ. Arrays, Data Access, Forms κ.α. και φυσικά τις γλώσσες προγραμματισμού VB.NET και C#.
Κάντε κλικ εδώ για σχετικά Resources.
Managed vs Unmanaged API
Όπως και στο desktop development, έτσι και στα Windows Mobile το API του λειτουργικού συστήματος είναι διαθέσιμο για χρήση από τις εφαρμογές μας. Η λειτουργικότητα που προσφέρουν τα Windows Mobile και μπορούμε να χρησιμοποιήσουμε έχει να κάνει με το UI (Forms), με τις λειτουργίες του PocketOutlook (επαφές, sms, ημερολόγιο κλπ.), με τις λειτουργίες τηλεφώνου (αν υποστηρίζονται από τη συσκευή) κ.α. Οι λειτουργίες αυτές είναι διαθέσιμες μέσω Managed API (άμεση πρόσβαση μέσω .NET προσθέτοντας απλά .NET References στο project μας) ή μέσω Unmanaged API (πρόσβαση με χρήση native dlls). Το SDK των Windows Mobile 6 έχει αρκετά εμπλουτισμένο Managed API (βλ. σχετικά namespaces στην εικόνα αριστερά) και μπορούμε να έχουμε πρόσβαση στις περισσότερες λειτουργίες του λειτουργικού υστήματος χωρίς να μπερδευόμαστε με την πολυπλοκότητα του Unmanaged API. Κάντε κλικ εδώ για σχετικά Resources.
Development Environment και SDKs
Χρησιμοποιώντας το Visual Studio μπορούμε να δημιουργήσουμε εφαρμογές για όλες τις παραπάνω εκδόσεις των Windows Mobile χρησιμοποιώντας το .NET CF. Κάθε έκδοση του Visual Studio βγαίνει με προεγκατεστημένο κάποιο SDK (Software Development Kit) για κάποιες εκδόσεις των Windows Mobile που βρίσκονται στο προσκήνιο την ίδια χρονική περίοδο. Έτσι με το Visual Studio 2003 μπορούσαμε να δημιουργήσουμε εφαρμογές για Pocket PC 2002, με το VS 2005 για 2002-2003, ενώ με το 2008 μέχρι και για Windows Mobile 5. Εγκαθιστώντας επιπλέον SDKs που διανέμονται δωρεάν από την Microsoft μπορούμε να προσθέσουμε στο Visual Studio τη δυνατότητα να αναπτύξουμε και για νεότερες εκδόσεις. Π.χ. κάντε κλικ εδώ για να κατεβάσετε το SDK για τα Windows Mobile 6 Professional.
SQL Server
Για όλους εμάς που παρακολουθούμε την εξέλιξη των Windows Mobile, οι βάσεις δεδομένων σε τόσο μικρές συσκευές είναι κάτι δεδομένο (την ίδια στιγμή σε άλλα αντίστοιχα περιβάλλοντα η χρήση αρχείων για την αποθήκευση δεδομένων θεωρείται ακόμα τεχνολογία αιχμής και η "αρχαία" συζήτηση για τα προτερήματα της χρήσης βάσεων δεδομένων αντί αρχείων είναι ακόμα επίκαιρη!!!). Εμείς όμως έχουμε τον SQL Server CE (Compact Edition - στο παρελθόν SQL Server for Windows CE ή SQL Server Mobile Edition). Προσοχή όμως! Compact Edition δεν σημαίνει απαραίτητα Mobile. Μπορούμε να έχουμε SQL Server CE και σε desktop λειτουργικό (π.χ. Vista, XP). Η διαφορές με τον κλασσικό SQL Server φυσικά είναι εμφανής και έχουν να κάνουν με ελλειπή λειτουργικότητα αλλά και μικρότερο footprint (ακόμα μικρότερο και από τον SQL Server Express).
Ο SQL Server CE είναι ένα μεγάλο κεφάλαιο από μόνο του οπότε ίσως το αναλύσω σε κάποιο μελλοντικό post. Έως τότε μπορείτε να τον κατεβάσετε (δωρεάν) και να πειραματιστείτε. Απλά κάντε κλικ στο Add New Item στο Visual Studio και προσθέστε μια νέα βάση στο project σας (Database File).
Ελπίζω όλα αυτά να βοήθησαν λίγο την κατάσταση και να σας βοήθησαν να ξεδιαλύνετε λίγο τα πράγματα.
Comments [0]