Bewise

Nous développons... votre avance

Trucs et astuces pour l’utilisation des Web Services d’Exchange server 2007

SLF
ASC
12/11/2009 - Jérémy Touyarou
Télécharger la version Word
Télécharger les sources

Introduction

Exchange server est la plateforme de référence développée par Microsoft qui permet de gérer de manière centrale, les contacts, les comptes mail ou les plannings de toutes les personnes d’une organisation. Les bénéfices de cette plateforme en termes de centralisation, de sauvegarde, ou de partage de ces données sont bien évidemment immenses.

La partie la plus visible de cette plateforme est sans conteste l’intégration avec Office Outlook qui offre la possibilité de manipuler ces données au travers d’une application cliente. Cependant, Microsoft a mis à la disposition des développeurs un autre moyen de manipuler le modèle objet d’Exchange grâce à l’exposition de web services.

Ces web services sont largement documentés sur la msdn, avec notamment la description des messages soap, mais on trouve très peu d’exemple d’utilisation de ces services via du code. C’est justement cela que nous allons voir dans cet article. Plus particulièrement nous allons nous concentrer sur la création, la modification et la suppression de rendez-vous dans le planning d’un utilisateur Exchange. Si l’utilisation des web services peut paraître assez simple, certaines subtilités liées à Exchange ralentissent le développement de ces opérations.

Le but de cet article est de donner quelques bonnes pratiques pour consommer les web service Exchange et ainsi gagner du temps lors du développement d’application tierce basée sur Exchange server.

Référencement du web service exchange

Première étape pour pouvoir utiliser les services web d’Exchange, les référencer à l’intérieur de son projet dans Visual Studio. Pour ce faire la manière la plus simple est d’utiliser l’utilitaire d’ajout d’une référence web intégré à Visual Studio.

image

Pour les utilisateurs de Visual Studio 2008, la fenêtre est un peu cachée. Pour la retrouver, faire « Ajouter une référence service », puis cliquez sur le bouton « Avancé » et dans la fenêtre ouverte, il faut cliquer sur « Ajouter une référence Web ».

Une fois dans la fenêtre suivante, rentrer l’url correspondant à l’adresse à l’adresse des services Exchange que vous souhaitez utiliser, puis donnez un nom au namespace qui correspondra à votre service.

clip_image005

Après avoir validé, vous devez trouver un répertoire «  Web References » à l’intérieur duquel on retrouve l’espace de nom précisé précédemment.

clip_image007

Maintenant que l’on a une référence vers les web services Exchange, nous allons pouvoir commencer à les utiliser.

Initialisation du service

A l’intérieur de l’espace de nom que l’on a créé on va trouver une classe particulière appelée ExchangeServiceBinding qui constitue la classe principale pour accéder aux services.

clip_image009

A l’intérieur de cette classe on va trouver de nombreuses méthodes qui vont nous permettre de manipuler les objets Exchange, ainsi que les propriétés qui servent à authentifier l’utilisateur. Voici comment créer le service.

clip_image011

Une fois le service créé nous allons pouvoir utiliser l’objet renvoyé pour effectuer nos opérations de création, récupération, modification et suppression d’un rendez-vous.

Création d’un rendez-vous

Maintenant que nous avons initialisé le service nous allons pouvoir créer le rendez-vous avec les données que l’on souhaite. Pour illustrer cet article nous allons renseigner la date de début, la date de fin, le sujet, ainsi qu’une donnée personnelle qu’on insérera dans un champ custom du rendez-vous.

Voici la méthode qui permet de créer une entité correspondant au rendez-vous Exchange.

clip_image013

Plusieurs points sont à noter sur ce bout de code.

Premièrement, on remarque qu’en plus du renseignement des données évoquées plus haut, on renseigne des propriétés supplémentaires (StartSpecified, EndSpecified, AllDayEventSpecified). Ces propriétés doivent absolument être spécifiées sans quoi les valeurs des champs associés (Start, End, IsAllDayEvent) ne seront pas correctement enregistrées.

La fin de la création du rendez-vous est consacrée à la création de la propriété étendue. Le GUID associé à la propriété permettra de l’identifier et ainsi de pouvoir modifier la propriété plus tard. Ici l’identifiant de la propriété est déféni comme suit :

clip_image014

Une fois l’objet CalendarItemType initialisé nous allons utiliser le service pour créer le rendez-vous sur le serveur Exchange.

clip_image016

Pour vérifier que le rendez-vous s’est bien créé, il suffit d’ouvrir Outlook configuré avec le compte que l’on a utilisé pour initialiser le service et vérifier que le rendez-vous est bien présent dans le calendrier de l’utilisateur.

Récupération des informations du rendez-vous

Pour récupérer les données associées au rendez-vous créé précédemment (y compris les données personnelles), nous allons utiliser le code suivant :

clip_image018

De manière à récupérer l’intégralité des propriétés associées au rendez-vous, la propriété importante est celle définie en début de méthode, c'est-à-dire «  ItemResponseShapeType ». On remarque qu’on y associe une forme de base qui permet de récupérer toutes les propriétés de base, et on ajoute ensuite les champs personnels grâce à l’identifiant défini plus tôt.

Modification d’un rendez-vous

Voyons à présent comment modifier plusieurs champs d’un même rendez-vous en même temps. Cette fois encore quelques spécificités de ces services web sont à prendre en compte. Le plus simple est de voir le code puis d’expliquer les parties un peu particulières.

clip_image020

La classe ItemChangeType représente un changement à effectuer sur l’item à modifier. Donc si l’on veut modifier plusieurs valeurs en même temps sur un même item on va devoir créer autant d’instance d’ItemChangeType, qu’il y a de propriétés à modifier. Voyons maintenant comment on instancie les objets de type ItemChangeType.

clip_image022

Encore une fois pour que le changement de valeur soit pris en compte, il faut renseigner la propriété « StartSpecified ». Si la propriété n’est pas renseignée, la mise à jour échouera.

Suppression d’un rendez-vous

Pour pouvoir supprimer le rendez-vous, il suffit de renseigner l’identifiant du rendez-vous et la « ChangeKey » associée. Voici comment effectuer cette suppression.

clip_image024

Conclusion

Au travers de ces simples opérations de création, récupération, modification et suppression de rendez-vous via les web services exposés par Exchange Server, on remarque que certaines spécificités de ces web services peuvent rendre le développement d’une application cliente plus lent. Le problème ici, n’est pas tellement la difficulté de l’utilisation que le manque de documentation précise sur ces services. Je prends par exemple la nécessité de renseigner les propriétés « Specified » sans quoi les modifications ne sont pas prises en compte.

J’espère que grâce à cet article vos différents développements autour des services web exchange seront plus efficaces.

> Tous les articles

Commentaires

aucun commentaire
Page 1/1
   
Connexion
  • Accueil
  • Plan du site
  • Contact
Bewise TV, Blog technique, Webcasts...

Votre carrière et nous

  • Nos offres
  • Votre candidature
Ignorer les liens de navigation > Accueil > Nos Métiers > Administration, Système et Communication > Détail Article
Ignorer les liens de navigation
Nous
Nos Métiers
Vous Former
Nos Evènements
Nos Références
Nos Activités
Nos Certifications
Nos Chiffres
Le Groupe
Nos Partenaires
On Parle de Nous
Nous contacter
Votre Carrière et Nous
Défiler vers le haut
Défiler vers le bas
Administration, Système et Communication
Architecture, Méthodes, Industrialisation
Décisionnel et Gestion des Données
Nouvelles Interfaces Utilisateurs
Portail et Travail Collaboratif
Solutions Langages et Framework
Solutions Web Avancées
Défiler vers le haut
Défiler vers le bas
Nos cours
Le Planning
Offres promotionnelles
Défiler vers le haut
Défiler vers le bas
Bewise Day Conference 2011
Nos Expresso
Défiler vers le haut
Défiler vers le bas
  • Infos légales
  • Lettre du Regional Director
  • Revue de presse