Frédéric Colin
Windows Media Center et WCF : développez votre maison intelligente
Le développement d'applications pour Windows Media Center est facilité avec l'arrivée du SDK 5.3. Même si l'on sent un modèle objet bien lourd derrière, il devient plus facile d'exposer les fonctionnalités de WMC sous la forme de services WCF.
Par Frédéric Colin publié le 23/06/2008 à 08:04, lu 4101 fois, 10 pages
 3 | Un peu de théorie
Les points clés techniques autour de cet exemple sont :
  • Développement de services REST avec WCF
  • Utilisation du SDK Windows Media Center 5.3
  • Développement d'un client aussi léger que possible en Javascript avec compatibilité Safari IPhone, Safari Windows et Internet Explorer
Une architecture REST est simplement l'utilisation du modèle de programmation Web adapté au monde des services répartis. Une architecture REST vient juste décrire les éléments architecturaux d'un système réparti, mais surtout pas comment techniquement l'implémenter. Les concepts fondamentaux sont les suivants :
  • Utilisation des URIs pour l'identification des ressources
  • Utilisation de protocoles standards (HTTP et HTTPS)
  • HTML et XML sont utilisés pour la représenter le contenu des ressources accédées
  • Le ContentType et le type MIME sont utilisés pour connaitre le type des ressources récupérées (images, xml, vidéo, etc.)
  • Utilisation des verbes HTTP pour la gestion des ressources : PUT (Create), GET (Read), POST (Update), DELETE (Delete)
  • Passage de paramètre via la syntaxe d'une URI (http://192.168.0.10:8000/MediaCenter/IWebManagement/GetFile?filename=default.htm&encoding=text/html)
  • Pas d'encodage SOAP, juste du requêtage HTTP
  • Récupération des données structurées au format XML ou JSON. Voici un exemple JSON :
{"FirstName":"Frédéric" ,"Id":1,"LastName":"Colin" ,"TelephoneNumbers":[ {"Number":"0561751313" ,"Type":"pro"}]}

La simplicité du modèle, son poids plus faible en volume de données et la facilité de requêtage en font une technologie qui malgré quelques limites (protocole, peu d'outils pour l'instant, etc.) se révèle très intéressante pour les nouvelles applications de type RIA notamment.

Dans sa version 3.5, le Framework .NET apporte toutes les évolutions nécessaires pour une implémentation transparente des architectures REST, et ce, dans dénoter par rapport à ce qui était fait avant en gardant le principe du triptyque « Contrat, Binding et Address ». Une nouvelle Assembly du Framework .NET 3.5 fait donc son apparition pour cela : « System.ServiceModel.Web ».
Windows Media Center est en fait une « SandBox » dans laquelle nous avons la possibilité de développer des addins. Ces derniers peuvent posséder ou non une interface graphique. Le SDK de Windows Media Center en Version 5.3 est assez pauvre pour ce qui est des explications techniques et des exemples fournis que vous sortiez des chantiers battus ou non. On ne peut qu'espérer une amélioration sur ce sujet.

Afin d'implémenter correctement les services, les références suivantes peuvent être ajoutées (à partir du répertoire « c:\Windows\ehome ») :
  • ehepg : permet d'accéder aux classes permettant de gérer le guide des programmes
  • ehiProxy : permet d'accéder aux classes en rapport avec la gestion des chaînes TV notamment
  • ehRecObj : permet d'accéder à la classe LineUp sans laquelle le remplissage du guide serait impossible
  • Microsoft.MediaCenter : permet de fournir l'accès à la classe « AddInHost » la clé de voute du modèle objet de Windows Media Center
  • Microsoft.MediaCenter.UI : permet de fournir l'accès à la classe de base « ModelItem » dont hérite la classe « Application »
Au démarrage de l'addin, la classe suivante est appelée par Windows Media Center :
 
Classe de démarrage

Classe de démarrage

 
L'interface « IAddInModule » permet de s'abonner aux appels de Windows Media Center au démarrage de l'addin et à son arrêt via les méthodes « Initialize » et « Uninitialize » pour respectivement initialiser les variables privées et enregistrer les informations relatives à l'état et libérer les ressources mémoire.

L'implémentation de l'interface « IAddInEntryPoint » est obligatoire pour le démarrage de l'application via l'appel de la méthode « Launch ». Le paramètre envoyé par Windows Media Center à la méthode « Launch » permet d'accéder aux services fournis par Windows Media Center dans l'addin ainsi développé.
 
» Démarrer une discussion