papadi Development Blog

.NET and Software Development by Dimitris Papadimitriou 
Filed under

Mobile

 

Εργαλείο για Performance Profiling εφαρμογών Compact Framework (και όχι μόνο)

Πριν περάσω στο θέμα, λίγα λόγια για το Profiling. Πόσες φορές στο παρελθόν (ίσως και παλιά στα χρόνια της VB 6) δεν βάλατε ένα timer στην αρχή και στο τέλος μιας συνάρτησης για να μετρήσετε πόσο χρόνο κράτησε η κλήση της; Αυτό ακριβώς πετυχαίνετε με το Profiling, χωρίς όμως να γράψετε ούτε μια γραμμή κώδικα! Ναι! Και το αποτέλεσμα είναι εντυπωσιακό! Έχετε χρόνους κλήσης για κάθε μια μέθοδο του κώδικά σας ξεχωριστά!
Υπάρχουν δυο βασικές κατηγορίες Profiling. Το Performance και το Memory Profiling. Με το πρώτο μετράμε χρόνους κλήσεων και με το δεύτερο την κατανάλωση μνήμης.

EQATEC Profiler
Ο EQATEC Profiler είναι ένα δωρεάν εργαλείο με το οποίο μπορείτε να κάνετε Performance Profiling. Το εργαλείο λειτουργεί δίνοντας του αρχικά το deployment folder της εφαρμογής σας. Επιλέγετε ποια dll θέλετε να "μετρήσετε" και το εργαλείο παράγει ένα δεύτερο deployment folder που το ονομάζει Profiled. Χρησιμοποιήστε τα αρχεία αυτά αντί για τα κανονικά και αυτό είναι όλο. Στο κλείσιμο της εφαρμογής σας θα δημιουργηθεί ένα xml report με το αποτέλεσμα του profiling. Ανοίξτε αυτό το report με τον ειδικό viewer που συνοδεύει τον EQATEC Profiler για να δείτε τα αποτελέσματα (βλ. εικόνα). Γράφοντας μάλιστα και λίγο προαιρετικό κώδικα μπορείτε να παίρνεται reports και όσο η εφαρμογή σας τρέχει, πατώντας για παράδειγμα ένα πλήκτρο της.
Το εκπληκτικό είναι ότι με αυτό τον profiler μπορείτε να μετρήσετε compact και desktop εφαρμογές ή ακόμα και web applications και windows services. Και μάλιστα μπορείτε να το κάνετε ακόμα και στο περιβάλλον του χρήστη χωρίς να χρειάζεται να εγκαταστήσετε εκεί κάποιο ειδικό εργαλείο. Αρκεί να στείλετε στο χρήστη να εγκαταστήσει την ειδική 'Profiled' έκδοση που παράγει ο EQATEC Profiler. Ο χρήστης θα χρησιμοποιήσει την εφαρμογή σας κανονικά, στην mobile συσκευή του ή στο desktop του και θα σας στείλει πίσω το xml report που θα δημιουργηθεί!

Παρενέργειες και απόδοση

Οι παρενέργειες που προκαλεί αυτό ο Profiler είναι ότι αυξάνει το μέγεθος της εφαρμογής σας περίπου 20% και μειώνει την απόδοσή της κατά περίπου 30%. Νούμερα αρκετά ικανοποιητικά για το αποτέλεσμα που έχει κανείς. Η EQATEC ισχυρίζεται ότι έχει κάνει Profiling στην εφαρμογή World Wind της Nasa, μια που το εργαλείο αυτό μπορεί αν χρησιμοποιηθεί και για εφαρμογές για τις οποίες δεν έχετε τον κώδικα!

Συν και πλην

Εντάξει, δωρεάν εργαλείο είναι, κάτι θα του λείπει! Ο EQATEC Profiler μετράει τους χρόνους κλήσεων των δικών σας συναρτήσεων και όχι των System.*. Που σημαίνει ότι δεν μπορείτε να έχετε αναλυτικά χρόνους εκτέλεσεις της κάθε γραμμής κώδικα ξεχωριστά. Μόνο τους χρόνους των μεθόδων σας. Για αναλυτικότερο profiling θα πρέπει να χρησιμοποιήσετε ένα εργαλείο όπως το εκπληκτικό dotTrace της JetBrains (δημιουργός του επίσης εκπληκτικού ReSharper). Αυτό όμως ούτε δωρεάν είναι ούτε παράγει Profiled εκδόσεις της εφαρμογής σας. Που σημαίνει ότι πρέπει να είναι εγκατεστημένο στον υπολογιστή που θα γίνει το Profiling και μάλιστα η εφαρμογή να ξεκινήσει από το περιβάλλον του. Και φυσικά δεν μπορεί να χρησιμοποιηθεί για mobile εφαρμογές καθώς βέβαια δεν μπορεί να εγκατασταθεί σε Windows Mobile. Εκεί είναι που έρχεται ο EQATEC Profiler και μας λύνει τα χέρια!

Filed under  //   .NET   Greek   Mobile   Tools   VB  

Comments [0]

Windows Mobile - Χάρτης Προσανατολισμού

Νωρίτερα αυτή την άνοιξη είχα κάνει δυο παρουσιάσεις για τα 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).

Ελπίζω όλα αυτά να βοήθησαν λίγο την κατάσταση και να σας βοήθησαν να ξεδιαλύνετε λίγο τα πράγματα.

Filed under  //   .NET   Greek   Mobile   Visual Studio  

Comments [0]

15ο dNZ event - Mobile development - Post Event stuff!

Την περασμένη Τετάρτη, 9 Απριλίου παρουσίασα τις νέες δυνατοτήτες του Visual Studio 2008 σχετικά με την ανάπτυξη mobile εφαρμογών. Η παρουσίαση έγινε στα πλαίσια του 15ου dotNETZone event. Ήταν το 1ο μέρος μιας σειράς από 6 παρουσιάσεις που θα γίνουν έως το καλοκαίρι και θα παρουσιάζουν στα μέλη της κοινότητας τα νέα development εργαλεία της Microsoft, με επίκεντρο πάντα το Visual Studio.

Επισυνάπτω παρακάτω την παρουσίαση σε Power Point και δυο συμπιεσμένα αρχεια με τα παραδείγματα που είδαμε. Επίσης, κατά τη διάρκεια τους παρουσίασης είδαμε και ένα παράδειγμα συγχρονισμού δεδομένων μεταξύ μιας βάσης δεδομένων SQL Server Compact Edition και μιας SQL Server 2005. Όπως υποσχέθηκα, παραθέτω δυο links με αναλυτικά βήματα για το πως μπορεί να επιτευχθεί κάτι τέτοιο. Συνιστώ να ακολουθήσετε με μεγάλη προσοχή αυτά τα walkthtough καθώς περιέχουν σημαντικές λεπτομέρειες, τις οποίες αν παραβλέψετε μπορεί να... σπάσετε το κεφάλι σας μέχρι να το κάνετε να δουλέψει

Μεταξύ των άλλων θεμάτων, είδαμε και τον εξαιρετικό Cellular Emulator, ο οποίος μπορεί να εξομοιώσει εισερχόμενες και εξερχόμενες κλήσεις και SMS, δίκτυο 2G/3G και άλλες λειτουργίες ενός κινητού τηλεφώνου, εκτοξεύοντας έτσι την χρηστικότητα των ήδη πολύ χρήσιμων Windows Mobile Emulators που συνοδεύουν το Visual Studio και τα Windows Mobile SDKs.

Στους παρευρισκομένους μοιράστηκαν δωρεάν DVD με χρήσιμο υλικό που περιλάμβανε trial εκδόσεις των Windows Server 2008 (32/64bit), Visual Studio 2008 και CTP του SQL Server 2008, καθώς και ένα DVD σχετικό με Windows Mobile Development.

Ελπίζω η παρουσίαση αυτή να φάνηκε χρήσιμη σε όσους την παρακολούθησαν. Φυσικά... "στέι τιουντ" για τις επόμενες παρουσιάσεις του dotNETZone, στις οποίες θα έχετε την ευκαιρία γρήγορα και εύκολα να γνωρίσετε τις νέες προσθήκες στο Visual Studio 2008.

Special thanks to Michael Saffitz (Program Manager on the Windows Mobile Developer Experience team) and Daniel Moth (Microsoft Developer Evangelist) for their help getting ready for this presentation!

FAQ Σχετικά με τα events του dotNETZone

  • Πως μπορώ να μαθαίνω για τα events του dotNETZone.gr;
    Στην προσπάθειά μας να ενημερώνουμε το δυνατόν ευκολότερα για να events του dotNETZone.gr δημοσιεύουμε τα events μας στην πρώτη σελίδα του site μας. Παράλληλα δημοσιεύονται σε ελληνικά social bookmarking sites, το site του INETA Hellas και στο Facebook group του dotNETZone.gr.
  • Χρειάζεται προεγγραφή;
    Όχι
  • Που γίνεται;
    Στις εγκαταστάσεις της Microsoft Hellas στο Μαρούσι.
  • Πόσο κοστίζει;
    Είναι δωρεάν
  • Χρειάζεται να είμαι μέλος του dotNETZone.gr;
    Όχι, αλλά προτείνεται!
  • Πόση ώρα διαρκεί;
    Περίπου δυο ώρες ενώ στη συνέχεια ακολουθεί και μπύρα σε κοντινή μπυραρία...

Click here to download:
LowBatteryNotifications.zip (8 KB)

Click here to download:
demos._zip (7128 KB)

Filed under  //   .NET   dotNETZone   Greek   Mobile   Visual Studio  

Comments [0]