La nouvelle version 7 de l’API AJAX ne manque pas d’amener des interrogations légitimes quant à l’évolution du contrôle AJAX et plus généralement de la plateforme Bing Maps for Enterprise.

Bing Maps évolution de la plateforme et précisions - Bing Maps AJAX v7

Lors des Bing Maps Days, événement organisé par Microsoft et dont j’ai fais le résumé dans ce précédent billet, nous avons pu échanger avec l’équipe représentée notamment par Marie Chenut, Tony Young ou encore Johannes Kebeck.

 

Annonce de la nouvelle version 7 de l’API AJAX

Microsoft a annoncé jeudi 18 novembre 2010 la version 7.0 de l’API AJAX à travers son blog officiel :

http://www.bing.com/community/site_blogs/b/maps/archive/2010/11/18/
introducing-the-ajax-v7-control.aspx

Le changement était également introduit à travers un autre billet présentant la nouvelle version du portail Bing Maps disponible ici : http://www.bing.com/community/site_blogs/b/maps/archive/2010/11/18/
announcing-the-new-bing-maps-site-with-a-redesigned-left_2d00_rail-and-broader-access-to-map-apps-_2600_-streetside.aspx

Microsoft, en France et en Europe, a organisé des événements regroupant partenaires et clients afin de communiquer sur les aspects techniques et fonctionnels de cette nouvelle version de l’API AJAX comme à propos de la plateforme plus généralement. Je propose à travers ce lien un résumé complet des présentations partenaires et des contenus techniques.

Bing Maps Days Présentation AJAX Silverlight et Bing Maps for Enterprise API

 

Support de la version 6.3

Microsoft n’annonce pas de date de fin de vie pour cette version de l’API et indique en supplément que si celle-ci devait être programmée, elle n’interviendrait pas avant 2 ans et que cette durée de 2 ans était véritablement une durée minimale.

Microsoft prévoit vraiment un support à long terme, très conscient de l’impact des modifications en profondeur effectué sur l’API AJAX. Bing Maps est une composante stratégique de Microsoft

La plateforme Bing Maps for Enterprise est un élément majeur dans la stratégie de Microsoft, ils n’hésiteront pas à y apporter tout le support nécessaire afin d’aider les entreprises à conserver leurs applications fonctionnelles ou en tout cas à minimiser l’impact des modifications si celles-ci s’avéraient nécessaires après plusieurs années.

 

Compatibilité et maintenance des applicatifs

Les questions de compatibilité sont forcément importantes et nombreuses à la vue des modifications impliquées par la version 7.

Alors fondamentalement quels sont ces changements et quel est l’impact dans les développements. Ici une liste qui classe par impact et type ces derniers :

  • Evolution du modèle objet JavaScript de l’APIModèle objet javascript et extension de Bing Maps AJAX

La modification complète des espaces de nom, classes, propriétés et méthodes bref de l’API dans son ensemble ont un impact important en termes de code.

Cependant, il garantit une meilleure évolutivité et compatibilité en renforçant les performances mais propose également de grandes possibilités en termes d’extension, j’y reviendrai en détails dans de prochains articles.

  • Fonctionnalités retirées

Dans cette version 7 actuelle, on retrouve quelques fonctionnalités qui ont été supprimées ou modifiées en accord avec la stratégie d’extension de leur API.

Ainsi, le printing est modifié ou encore on retrouve le clustering client qui n’est pas directement intégré nativement et nécessitera du code personnalisé. Ces fonctionnalités manquantes ou modifiées pourront être ajoutées/modifiées en tirant partie des possibilités d’extension de l’API précédemment citées.

  • Appel aux méthodes des Web Services

L’ensemble des méthodes qui effectuaient un appel aux services de la plateforme Bing Maps a été retiré pour laisser place à un modèle plus simple laissant la main à l’utilisateur pour effectuer des appels directs aux services REST.

  • Authentification clienteAuthentification cliente de Bing Maps AJAX - Ajax authentication client-side

Ce point prête à réflexion car pour nombre d’utilisateurs de l’API, la gestion de l’authentification n’était pas réalisée et même le fonctionnement de l’API et le système de Microsoft a évolué aux fils des années, sans véritablement être très clairement fixé.

En version 6.3 pour authentifier le site utilisant, il était nécessaire de spécifier la clé en utilisant la méthode SetCredentials de la classe VEMap.

En version 7, il suffit de spécifier cette clé dans le chargement et l’initialisation du contrôle comme suit :

var map = new Microsoft.Maps.Map(
    document.getElementById("mapContainer"),
    { credentials: "Your Bing Maps Key" }
);

Au final dans un contexte d’utilisation commerciale, cette authentification n’est pas fondamentalement modifiée car elle existait déjà et reposée sur le même fonctionnement, seule la méthode de déclaration change.

 

Dans la mesure où la version 6.3 est maintenue et supportée par Microsoft, la maintenance de vos applications ne diffère pas cependant il peut être important de déjà considérer la migration et donc la modification de vos scripts/Frameworks/composants ou de vos applications complètes vers la nouvelle version 7 pour vos prochains projets.

 

Choix technique et préconisations

Ce changement nécessaire dans l’API s’inscrit dans une logique d’évolution de la plateforme et cette nouvelle version va permettre aux équipes de s’appuyer sur ce contrôle pour tirer au mieux partie des nouvelles fonctionnalités d’HTML5 et des capacités toujours améliorées des navigateurs.

Preconisation usage javascript ou silverlight pour Bing Maps Une rapide analyse peut nous indiquer que les récents débats autour du plugin Silverlight et de son utilité pour les prochaines années peuvent amener à penser, comme on peut le voir ici avec l’API Bing Maps, à ce que son intérêt soit réduit à quelques points techniques limités et à des simplifications de développement qui n’en sont pas vraiment.

Les deux contrôles ont le mérite d’exister et ces derniers se complètent pour répondre au maximum de scenarios.

En clair ici, ce contrôle AJAX en nouvelle version souligne la volonté de Microsoft de continuer de miser sur les technologies standards du web sans vouloir imposer sans cesse le plugin Silverlight.

  Utilisation Bing Maps AJAX controle et REST choisir

Actuellement, pour Bing Maps, la solution à privilégier est très clairement celle de l’utilisation de l’API AJAX couplée à celle des REST Web Services. C’est le discours tenu dans la session technique de Johannes Kebeck, c’est également mon avis.

Plusieurs raisons à cela :

  • Compatibilité multiplateforme et multi-navigateurs + support HTML5
  • Possibilité d’extension du modèle objet utilisé (prototype-based)
  • Capitalisation de connaissance et réutilisabilité

On pourrait trouver bien d’autres raisons qui justifieraient ce point de vue, et d’autres qui contrediraient parfaitement en favorisant l’utilisation du contrôle Silverlight. Comme dans tout projet, il n’existe pas de solution simple et à chaque besoin, sa solution adaptée.

Autrement dit, il faut très clairement estimé le besoin et les solutions techniques que l’on a, les avantages et inconvénients de ces dernières.

Il y aura ainsi des cas d’utilisation où utiliser AJAX sera le choix le plus judicieux, et inversement où retenir Silverlight sera plus pertinent. C’est d’ailleurs pour cette raison que Microsoft continue de supporter activement les deux contrôles.

 

Stratégie et solutions pour une migration soupleMigration 6.3 a 7 BingMaps AJAX

Il existe plusieurs solutions possibles permettant de minimiser l’effort de modification des scripts existants.

La liste de ces solutions n’est pas exhaustive, mais parmi celles-ci on peut retrouver :

  •  Migration partielle des scripts :

En utilisant cette solution, on peut tout à fait envisager de modifier, par exemple, les requêtes de géocodage, de calcul d’itinéraire de manière à appeler les REST Web Services tout en conservant les traitements liés au contrôle en lui-même.

Cette migration partielle permets d’amortir le coût de développement ou de migration à terme à travers plusieurs projets ou plusieurs évolutions du projet tout en garantissant un résultat final concluant.

  • Définition d’un script de compatibilité (notion de stub)Bing Maps retrocompabilité v6.3 à 7 - retrocompatibility javascript Bing Maps API

Cette solution plus complexe à réaliser, proposée suite à une discussion avec mon collègue Aurélien Verla, autrement plus appréciable dans un scénario d’utilisation multiple, elle consiste à réaliser un script à qui on va déléguer le “mapping” des différentes méthodes de l’ancienne API vers celles proposées dans la nouvelle version ou l’appel aux REST Web Services dédiés.

De cette manière, il suffit de modifier la référence au script du contrôle Bing Maps AJAX et d’ajouter la référence à ce simple fichier. L’ensemble du code reste inchangé mais les appels aux méthodes sont réalisés à travers la nouvelle API qui joue le rôle d’un pseudo-proxy d’appel.

L’intérêt est double car on retrouve alors tous les avantages apportés par la nouvelle plateforme en termes de performances ou support navigateur tout en minimisant l’effort de développement.

 

Comme indiqué plus tôt, ces quelques solutions (il en existe d’autres) sont à considérer et à adapter selon le besoin.

 

Avenir de la version 7

Ce lancement de la nouvelle version 7 du contrôle AJAX de la plateforme Bing Maps va permettre de proposer un ensemble cohérent et évolutif.

Microsoft annonce également qu’une prochaine version devrait arriver au courant de Décembre 2010 pour ajouter quelques fonctionnalités manquantes ou suggérées par les clients et qu’ils estiment pouvoir intégrer raisonnablement en accord avec la stratégie avec cette version.

D’un point de vue des projets communautaires, il devrait y avoir des initiatives permettant de simplifier les développements et de fournir les codes usuels à la manière de script d’extension de l’API. Ceci serait alors un équivalent de ce que tout à chacun peut réaliser dans son framework d’entreprise pour cette brique Bing Maps.Evolution de l'API Bing Maps AJAX v7

 

Conclusions

Cette nouvelle version 7 implique des changements profonds de nos développements qui peuvent être minimisés en utilisant les techniques adéquates.

Elle n’est pas sans impact mais Microsoft est conscient des modifications, des impacts et d’expérience, ils ont toujours maximisé avec beaucoup de considération cette rétrocompatibilité et le support de la plateforme comme une composant très importante. C’est d’ailleurs un des points différenciateurs de la concurrence.

Aussi, et dans l’architecture et la conception même de projet, il faut rappeler que dans de nombreux cas, le développement de la couche présentation ici effectué en client-side (JavaScript) doit intégré le fait qu’il s’agit d’une couche pouvant être amenée à évoluer ou être remplacée. Il est donc important d’envisager ce point dans l’architecture logicielle retenue et de prévoir son évolution.

Encore une fois, il y a de forte chance pour que Microsoft et la communauté accompagnent la migration à travers des outils et Frameworks dédiés dans le but de simplifier cette opération.

Enfin, rappelons également que Microsoft et plus particulièrement pour nous Français, l’équipe Bing Maps France et Europe restent mobilisés et accessibles pour vous aider dans vos décisions ou pour vous informer sur la plateforme.