![]() |
![]() |
|
MEDC
2006
|
![]() |
Depuis maintenant plusieurs années, Microsoft organise une conférence annuelle dont le thème est le développement mobilité. Ces conférences s'adressent à une cible bien précise que sont les développeurs, chefs de projet et architectes travaillant dans le domaine du développement d'applications mobiles ou de solutions embarquées. Cette année, la MEDC s'est déroulée à Nice, les 6, 7 et 8 juin. Dans cet article, je vais me concentrer uniquement sur la partie mobilité. Dans ce domaine, les sessions proposées ont principalement mis l'accent sur l'utilisation rationnelle de la technologie .NET et l'annonce de Windows CE 6. |
|
Cela fait maintenant plusieurs années que j'ai le privilège d'assister à la MEDC comme contact presse CodePPC. Je tiens à ce titre, à remercier toutes les personnes qui sont, chez Microsoft, à l'origine de l'invitation de cette année (les personnes concernées se reconnaîtrons). J'ai eu la chance de pouvoir participer à celle de 2002 (la toute première) et 2003. A l'époque cette conférence s'appelait MDC pour Mobility Developer Conference et était commune à la zone Europe. A ce titre toutes les sessions (la conférence durait plusieurs jours) étaient 100% en anglais. C'est en 2005 qu'est née la MEDC pour Mobile and Embedded Developer Conference. En plus de l'aspect mobilité, l'aspect embarqué (le E en plus dans le sigle) est aussi abordé. |
![]() |
L'année dernière nous avons eu droit à une journée spéciale MEDC 2005 à Paris pendant laquelle les personnes de Microsoft France ont servi de relais entre la conférence qui avait eu lieu aux US et la rétrospective française. Une journée gratuite et très réussie pendant laquelle nous avons appris énormément de choses (voir compte rendu de l'année dernière).
|
Olivier, Christophe et Eric |
La MEDC de cette année s'est passée à Nice. Pendant 3 jours toutes les personnes de la zone Europe ont été convié à participer à plus de 70 conférences et laboratoires. Plus de la moitié de ces sessions avaient pour sujet la mobilité. Pour ceux qui ne l'auraient pas compris, la MEDC est payante. Il y avait aussi des exposants, tous acteurs de la mobilité ou de l'embarqué, qui pendant chaque pause répondaient aux questions des visiteurs. Parmi les sociétés représentées, Microsoft avait, c'est évident, le plus gros stand. En fait, il était possible de retrouver sur ce stand les différents experts qui animaient les sessions pour un jeu de questions réponses (en anglais of course à vélo) permettant à tous de venir poser la question qui tue à l'expert qui va bien. Une très bonne initiative que j'ai personnellement trouvée très utile et fort sympatique, à l'image de l'ambiance générale de cette conférence d'ailleurs. Dans l'équipe Microsoft, j'ai pu retrouver l'une des vedettes des DevDays, Eric Mitellette (à droite sur la photo), et faire la connaissance d'un nouveau venu dans l'équipe MS France, Olivier Bloch (à gauche) qui m'a très gentillement servi d'interprête pendant l'interview que j'ai réalisé de Mike Hall (nous verrons ça un peu plus bas). Petit coucou à Christophe, au centre, stagiaire chez MS de son état. |
Les
conférences et labos (mobilité uniquement)
| Windows CE Overwiew |
|
Windows Mobile Enterprise Features and Futures |
| Introducing Device Development with Visual Studio 2005 |
| Inside Windows CE Kernel |
| Building Successful Mobile Line of Business Application with Visual Studio 2005 for Devices, Windows Mobile 5.0 and SQL Mobile 2005. |
| Realizing the Potential of the Windows Mobile 5.0 Managed APIs |
| Windows Mobile Application Security |
| Best Practices of Windows Mobile Enterprise Deployments |
| Maximising Application Compatibility for Windows Mobile 5.0 and Beyond |
| Writing Device Independent Windows Mobile Applications |
| Developping an SQL Mobile Application width Visual Studio 2005 and SQL Server 2005 |
| Mobile2Market - What's New in Certifying and Signing your Windows Mobile Applications |
| Building Media Server Client with .NET Compact Framework |
| Creating Conductive Windows Mobile Solution for Business Customers |
| Mobile2Market's New Distribution Channels for Windows Mobile Applications |
| DirectX Graphics Development on Windows Mobile |
| Developing Multithreaded Applications with .NET Compact Framework |
| The Microsoft Device Emulator |
| Managed Direct 3D Mobile - Advanced Techniques |
| Windows Mobile Enterprise Security Internals |
| Writing Today Plugins for PPC and How Palm Phused the Envelope on Treo 700W |
| The Windows CE Graphics Architecture |
| Advanced Windows CE Power Management |
| Synchronizing SQL Server 2005 Mobile Edition to your Enterprise Systems |
| Implemeting Custom Controls for .NETCF 2.0 with Visual Studio 2005 |
| SQL Server CE and SQL Mobile Performance Tuning, Deployment, And Scalability |
| Time to Call a CAB : Building Smart Device Deployment Projects in Visual Studio 2005 |
| Performance and Memory Optimization of Windows Mobile Applications |
| Mashing Up Virtual Earth in Mobile Location-Aware Applications |
| Patterns and Practices for Mobile Clients |
| Developing Winning LBS Applications |
| .NET Compact Framework 2.0 : Optimizing for Performance |
| Advanced Windows Mobile Features |
| Memory Leak Detection in Windows CE |
| Windows Mobile 5.0 Local Authentification Sub system |
Windows
CE 6
|
Concernant Windows CE 6, j'ai eu le privilège d'interviewer Mike Hall, Senior Technical Product Manager, Microsoft Embedded Devices Group. En d'autres termes, la bonne personne à rencontrer pour parler de Windows CE en général et de la nouvelle version 6 en particulier. Vous pouvez accéder à son blog à cette adresse : http://blogs.msdn.com/mikehall Voici globalement ce qui ressort de cet entretien concernant Windows CE 6 : Cette nouvelle version possède une architecture complètement revue et propose de nombreuses améliorations. Windows CE est en train de subir une mutation profonde, destinée à le rendre apte à répondre aux nouveaux usages des technologies mobiles dont les annonces se bousculent depuis plusieurs mois. Parmi ces technologies, la voix sur IP et la géo localisation sont les plus connues. Rappelons que Windows CE est né en 1996 et que nous fêtons cette année son 10ème anniversaire. Pendant ces années, Windows CE, au départ lourd et lent, est devenu un OS puissant, robuste, et moderne, utilisable dans une quantité incroyable de situations, tournant sur une quantité incroyable de plates-formes matérielles. |
![]() Mike Hall et votre serviteur |
|
Du robot industriel, jusqu'aux téléphones et PDA, Windows CE est capable d'animer une très grande diversité d'appareils, de toute forme, taille, puissance et usage. Techniquement, le très gros défaut de la version actuelle de Windows CE est son incapacité à gérer plus de 32 processus simultanés. Si on prend l'exemple d'un Smartphone sous WM5, dont le coeur est un Windows CE 5, le nombre de processus utilisés dès le démarrage dépasse le nombre de 25. On est aujourd'hui aux limites de ce type de gestion. Autre limitation, chaque processus ne peut gérer que 32 Mo de mémoire, ce qui va très vite être insuffisant tant le volume de données que l'on manipule sur ce type de matériel est de plus en plus important. Avec Windows CE 6 le nombre de processus simultanés passe à 32000 pouvant chacun gérer 2 Go de mémoire. Cette transformation s'est traduite par la réécriture d'un importante partie du système et principalement la réorganisation du Kernel et la mise en place de privilèges d'exécution différents pour le Kernel, les drivers et les applications utilisateur (je simplifie un max). |
![]() La nouvelle organisation interne de Windows CE 6 |
|
Kit de développement Windows CE 6 béta (faisant partie de la dotation de chaque participant) |
Coté compatibilité, Mike Hall s'est voulu très rassurant. En fait pour les applications écrites en .NET tout sera transparent. Protégées par la "bulle" .NET elles fonctionneront sans aucune modification. Pour les applications classiques (écrites en C++ par exemple), certaines risquent de ne pas être compatibles si elles utilises des fonctions liées aux Kernel, car avec la version 6, ce n'est plus possible (pour des raisons de stabilité). Dans ce cas, il faudra créer une version adaptée à Windows CE 6. Le nombre de fonctions concernées est très faible et un utilitaire fourni dans le SDK de Windows CE 6 permet de scanner une application "ancienne" à la recherche des appels interdits, ce qui simplifiera le travail des développeurs devant adapter leurs applications à la nouvelle version de Windows CE. Pour les applications n'utilisant pas ces quelques fonctions devenues interdites, la compatibilité sera complète. Pour revenir aux applications écrites en .NET, il est certain que si elles invoquent les fameuses fonctions interndites via un P/Invoke, elles auront elles aussi des problèmes, mais d'après Mike, ce cas de figure est maginal. J'ai profité de la présence de Mike Hall pour lui poser une question qui m'a souvent été posée par les utilisateurs de Windows CE. Comme vous le savez, Windows CE est fourni avec une interface qui a le look de Windows 95. Ce n'est pas très beau, ça fait vieux, et ça ne met pas du tout en valeur la haute technologie du système. Mike m'a répondu très simplement, et avec un très grand sourire, que le shell fourni avec Windows CE (les sources sont fournies aussi) sert juste d'exemple pour que les intégrateurs puissent créer leur propre shell. Il m'a aussi expliqué qu'une version avec le look de Windows XP est aussi disponible (elle aussi avec ses sources). Il en a profité pour me montrer une application que permet de créer très simplement des interfaces simples pour des appareils de type appareil photo ou lecteur multimédia, le tout étant basé sur une collection d'images mises en scène via un script. Très sympa (hélas je n'ai pas de photo). |
J'en profite pour rappeler que Windows CE est le coeur de Windows Mobile. En fait, Microsoft s'est placé comme intégrateur de son propre système et a créé un shell spécial pour Pocket PC, un autre pour Smartphone et a sélectionné une série de fonctionnalités proposées par Windows CE pour créer Windows Mobile. Le coeur est Windows CE, l'emballage est propre aux besoins précis de Windows Mobile. Mike Hall n'a pas pu nous donner une date de sortie pour Windows Mobile 6 mais d'après lui il faudra au moins 12 à 18 mois après la sortie de Windows CE 6 pour voir apparaître les premiers devices capables de faire tourner Windows Mobile 6. On a donc encore quelques temps pour utiliser à fond Windows Mobile 5.
Utiliser
le .NET Compact Framework de manière rationnelle !
Utiliser le .NET Compact Framework de manière rationnelle a été le maître mot de toutes les sessions concernant le développement mobile avec .NET. Ca semble évident et pourtant l'accent a été mis avec force, ce qui prouve que dans la pratique, certains développeurs gardes les habitudes acquises avec le développement .NET PC et ne les adaptent pas aux fortes contraintes des développements .NET mobilité.
|
Il est vrai que les outils de développement .NET pour Windows CE ou Windows Mobile sont les mêmes que ceux pour le développement PC. Les outils, et aussi une grande partie des objets du Framework, qu'ils soient utilisés pour créer l'interface ou pour manipuler des données. S'arrêter à ce constat est le meilleur moyen de tomber dans un grand piège, celui de croire que l'utilisation des objets est forcément la même et que leur capacités (en terme de volume de données et de vitesse) sont les mêmes. C'est par exemple ce qu'a essayé de nous expliquer João Paulo Figueira, MVP de sont état, pendant plus d'une heure 1/2 avec le sourire et la bonne humeur bien connue des MVP :) Joãno Paulo nous a donné toute une série de conseils pour réaliser des applications rapides et fiables. Il a pris comme exemple la manière d'utiliser SQL Mobile et les objets d'accès aux données. Il conseille (et je suis 200% d'accord avec lui) d'utiliser en priorité les DataReader pour lire les données et les SqlCeResultSet s'il faut aussi les modifier, et bannir coûte que coûte l'utilisation des DataSet et DataAdapter qui font une duplication des données en mémoire et ralentisse de ce fait considérablement les traitements. Lorsque vous avez une application qui utilise une base de données SQL Mobile, il est ridicule d'aller sélectionner des données, les placer en mémoire pour les lire et/ou les modifier puis de synchroniser le tout pour que les changements effectués soient restitués dans la base. Dans ce cas de figure il faut rester en prise directe avec la base de données, et lire et écrire les informations à chaque fois que nécessaire. Le résultat est bien meilleur, c'est certain. |
|
Il faut aussi éviter à tout prix les requêtes du type SELECT * FROM ... et bien spécifier les champs que l'on veut car sur des tables comportant un nombre important de champs, ce type de requête peut coûter très cher en temps. Un autre conseil était d'utiliser au maxmium les requêtes paramétrées afin d'optimiser le traitement du parseur SQL. Plein de conseils simples, souvent évident, mais que pas mal de développeurs oublient de mettre en pratique dans les applications mobiles.
Frank a aussi animé une autre session dans laquelle il nous a expliqué comment créer des contrôles utilisateurs avec VS 2005 et comment faire pour qu'ils soient utilisables dans l'environnement de développement au même titre que ceux fournis en standard par Microsoft. Le principe sous VS 2005 est plus simple que sous VS 2003 mais il faut toujours prévoir une version PC (celle qui tourne dans le designer de form de VS 2005) et une version pour le Compact Framework (celle utilisée par l'application). Nous avons pu aussi voir des exemples d'utilisation des "State and Notification broker" qui permettent sous WM5 de s'abonner à des événements système (appel entrant, réseau actif, ActiveSync activé, etc...) dont plus d'une centaine sont disponibles depuis du code managé. |
![]() |
Frank nous a aussi montré comment savoir si le device qui fait tourner votre code managé est un Pocket PC ou un Smartphone en utilisant l'API SystemParametersInfo (ça me dépasse que ce ne soit pas de base dans le CF2 cette affaire là !). Ou encore comment savoir si les fonctions de téléphonie sont présentes sur le device concerné (il faut vérifier la présence de phone.dll dans le dossier Windows).
|
|
Nous avons aussi pu voir comment gérer au mieux les différents types d'écrans (VGA, QVGA) et aussi le changement d'orientation. L'apparition dans le CF2 des propriétés Anchor et Dock est vraiment une bonne chose, car gérer la rotation de l'écran avec le CF1 ce n'était vraiment pas glop ! On a pu voir aussi qui Anchor et Dock ne suffisent pas à résoudre tous les problèmes et que du bon vieux code dans l'événement Resize de la fenêtre était parfois encore nécessaire. Andy Wigley a pour sa part animé une session ".NET Compact Framework 2.0 : Optimizing for Performance" pendant laquelle il s'est livré à quelques tests grandeur nature sur l'usage et les bonnes manières avec le CF2. Il nous a expliqué par exemple que l'appelle à une méthode virtuelle était bien plus long qu'un appel classique, et que les ArrayList sont jusqu'à 100 fois plus lents que les tableaux (ça je m'en étais déjà bien rendu compte). Il nous a expliqué aussi comment gagner du temps (d'exécution) en utilisant les generics pour éviter le boxing/unboxing, très gourmand en temps d'exécution.Un test sur l'utilisation des StringBuilder en lieu et place des String pour tout ce qui est composition de chaîne a été sans appelle tant le résultat a été évocateur ! Le code utilisant des StringBuilder pour concaténer des chaînes s'est exécuté de manière quasi instantanée, alors que le même code utilisant des String a du être arrêté à environ 30% de son exécution tellement c'était long. Ca se passe de commentaire ! Andy nous a aussi parlé du fonctionnement du Garbage Collector et de nouveaux outils de tests de performance qui seront disponibles avec la sortie du Compact Framework SP1 (la version béta est téléchargeable pour ceux qui souhaiteraient la tester). |
La conclusion de toutes ces sessions sur l'utilisation rationnelle du Compact Framework est qu'avec les projets de type Smart Device, il faut encore réfléchir à une certaine optimisation du code et à la manière de gérer au mieux les ressources de la machine, et ça, personnellement, j'adore !!!!
A noter que la dernière version du kit de développement Windows Mobile 5 a été remise à tous les participants. Kit que CodePPC va très bientôt pouvoir vous proposer dans le cadre de son opération d'envoi en partenariat avec Microsoft France.
Après
le Compact Framework, le Micro Framework
|
La famille des Framework .NET s'agrandit ! Après le Framework, le Compact Framework, voici le Micro Framework. Le .NET Micro Framework est en fait une évolution de SPOT (pour Smart Personal Objects Technology). Son empreinte mémoire est très faible (en 200 et 400 Ko). Il est destiné aux plates-formes plus faibles que Windows CE comme des télécommandes, des capteurs, etc... En fait, d'après ce que j'ai compris, .NET Micro Framework n'est pas le sur ensemble d'une plate-forme, il est lui même la plate-forme, incluant ses propres drivers de périphériques. Seul le C# est supporté en mode interprété, programmé depuis VS2005 (of course). Coté processeurs, seuls les ARM7 et ARM9 sont supportés. Pour plus d'infos je vous propose ce lien : http://www.aboutnetmf.com/entry.asp
|
![]() |
C'est
tellement plus cool de développer pour sa Xbox avec VS2005 !
Depuis Windows Mobile 5, les classes managée pour utiliser DirectX sont maintenant disponibles. Ce qui signifie qu'il est maintenant possible de faire des jeux en 3D rapides avec la technologie DirectX pour Pocket PC et Smartphone (sympa !).
![]() Chris Muench |
Chris Muench nous a donc présenté le développement DirectX pour Windows Mobile avec VS2005. Ce sujet là, on l'avait déjà abordé l'année dernière, donc la surprise n'a été que partielle. Par contre, là où tout le monde a été bluffé, c'est quand Chris a commencé à nous montrer le code de son jeu Windows Mobile, remanié pour tourner pour... Xbox !!! En fait, le développement de jeu pour Xbox sera très bientôt possible avec VS2005 grâce au projet XNA. Ce projet permettra de développer en .NET des applications (des jeux principalement) pour Windows Mobile, PC et Xbox. Pour plus d'infos concernant le projet XNA je vous propose le lien suivant : http://www.microsoft.com/xna/default.aspx |
En
conclusion...
La MEDC est un moment pendant lequel les développeurs mobilité sont en contact privilégié avec les experts des technoloqies Microsoft. La qualité des sessions, des labos et la disponibilité de tous les acteurs, fait de cette conférence un événement aussi sympatique qu'utile. L'organisation a été comme à chaque fois parfaite et la somme d'information distribuée très importante. Mon seul regret est que j'ai trouvé certaines session .NET pas assez techniques alors que celles sur Windows CE l'étaient parfois trop. Ce n'est pas simple de contenter tout le moment, c'est certain, mais globalement je trouve que le paris est encore cette année réussi.
J'espère de tout coeur que nous aurons de la part de l'équipe d'Eric Mitellette un compte rendu franco français de cette MEDC, comme l'année dernière. Mais sa présence avec une partie de son équipe ne peut que nous inciter à penser qu'un tel compte rendu aura bien lieu, et ce pour tous.
|
|