création d’applications windows phone 7 à l’aide...

99
Création d’applications Windows Phone 7 à l’aide des produits SharePoint 2010 et Unified Access Gateway Ce document est fourni en l’état. Les informations et les vues contenues dans ce document, y compris les URL et autres références de site Web Internet, sont susceptibles d’être modifiées sans préavis. Vous les utilisez à vos risques. Les exemples fournis ici le sont à titre d’illustration uniquement et sont fictifs. Aucune association ou connexion réelle n’est voulue ni suggérée. Ce document ne vous confère aucun droit sur la propriété intellectuelle contenue dans quelque produit Microsoft que ce soit. Vous pouvez copier ou utiliser ce document pour vos propres besoins de référence internes. Vous pouvez modifier ce document pour vos propres besoins de référence internes. Microsoft, SharePoint, Silverlight, Visual Studio et Windows Phone 7 sont soit des marques de Microsoft Corporation, soit des marques déposées de Microsoft Corporation aux États-Unis d’Amérique et/ou dans d’autres pays. © 2011 Microsoft Corporation. Tous droits réservés.

Upload: others

Post on 30-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

Création d’applications Windows Phone 7 à l’aide des produits SharePoint 2010 et Unified Access Gateway

Ce document est fourni en l’état. Les informations et les vues contenues dans ce document, y compris les

URL et autres références de site Web Internet, sont susceptibles d’être modifiées sans préavis. Vous les

utilisez à vos risques.

Les exemples fournis ici le sont à titre d’illustration uniquement et sont fictifs. Aucune association ou

connexion réelle n’est voulue ni suggérée.

Ce document ne vous confère aucun droit sur la propriété intellectuelle contenue dans quelque produit

Microsoft que ce soit. Vous pouvez copier ou utiliser ce document pour vos propres besoins de référence

internes. Vous pouvez modifier ce document pour vos propres besoins de référence internes.

Microsoft, SharePoint, Silverlight, Visual Studio et Windows Phone 7 sont soit des marques de Microsoft

Corporation, soit des marques déposées de Microsoft Corporation aux États-Unis d’Amérique et/ou dans

d’autres pays.

© 2011 Microsoft Corporation. Tous droits réservés.

Page 2: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

2

Création d’applications Windows Phone 7 à l’aide des produits SharePoint 2010 et Unified Access Gateway

Dave Pae

Microsoft Corporation

Todd Baginski

Aptillon, Inc.

Matthew McDermott

Aptillon, Inc.

Ben Ari

Microsoft Corporation

Mars 2011

S’applique à : Microsoft® SharePoint® Server 2010, Microsoft SharePoint

Foundation 2010, Microsoft Forefront Unified Access Gateway, Windows Phone 7™

Résumé :

Le présent livre blanc examine des scénarios professionnels de développement d’applications

mobiles qui utilisent les fonctionnalités des produits SharePoint 2010 à des fins de collaboration

tout en ayant recours à une authentification via Microsoft Forefront Unified Access Gateway

(UAG). Le corps principal du livre blanc présente les concepts et le code requis pour accéder aux

données de liste SharePoint de manière sécurisée à partir de Windows Phone 7. L’annexe décrit

l’installation et la configuration d’une instance de développeur d’UAG à des fins de test et de

développement d’applications mobiles avec des produits SharePoint 2010.

Page 3: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

3

Sommaire Sommaire ......................................................................................................................................................... 3 Vue d’ensemble et objectifs ................................................................................................................................. 5 Architecture ....................................................................................................................................................... 6

Intranet des produits SharePoint 2010............................................................................................................ 6

UAG ........................................................................................................................................................... 6 Scénario de collaboration intranet ........................................................................................................................ 6

Valeur métier de la collaboration .................................................................................................................... 7

L’application ................................................................................................................................................ 7 Sécurité .......................................................................................................................................................... 12

Stockage des informations d’identification ..................................................................................................... 12

Authentification ......................................................................................................................................... 13 SharePoint Services .......................................................................................................................................... 14

Consommation des services ........................................................................................................................ 14

Accès aux données de liste SharePoint à l’aide de la bibliothèque cliente OData ................................................. 14

Flux RSS d’activité ..................................................................................................................................... 23

Service de profil utilisateur : collègues.......................................................................................................... 25

Service de profil utilisateur : données de profil utilisateur ............................................................................... 28 Test ................................................................................................................................................................ 31

Test de l’application dans l’émulateur ........................................................................................................... 31

Test de l’application sur un appareil ............................................................................................................. 31 Considérations liées à Marketplace ..................................................................................................................... 31 Conclusion....................................................................................................................................................... 35 Annexe – Installation et configuration d’UAG pour les produits SharePoint 2010 ....................................................... 36

1. Créer un ordinateur virtuel SharePoint Server et un ordinateur virtuel UAG ................................................... 36

2. Configurer les réseaux virtuels de l’ordinateur hôte Hyper-V ........................................................................ 37

3. Configurer les réseaux de l’ordinateur virtuel Hyper-V ................................................................................ 39

4. Préparer l’ordinateur virtuel du serveur UAG à l’installation d’UAG ................................................................ 42

5. Générer un instantané de l’ordinateur virtuel du serveur UAG ...................................................................... 43

6. Installer le serveur UAG .......................................................................................................................... 43

7. Générer un instantané de l’ordinateur virtuel du serveur UAG ...................................................................... 49

8. Initialiser la configuration et l’activation du serveur UAG ............................................................................. 49

9. Créer la jonction HTTP pour publier le site SharePoint ................................................................................. 65

10. Créer l’application SharePoint ................................................................................................................ 75

11. Configurer l’application SharePoint ......................................................................................................... 85

12. Activer la configuration ......................................................................................................................... 87

13. Configurer et vérifier les mappages des accès de substitution SharePoint .................................................... 89

Page 4: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

4

14. Ajouter des entrées de fichiers d’hôtes à l’environnement de développement ............................................... 89

15. Tester la configuration .......................................................................................................................... 90

16. Tester le flux RSS de l’échange de News ................................................................................................. 95 Ressources ...................................................................................................................................................... 98

Forefront Unified Access Gateway sur TechNet ............................................................................................... 98

Closer to the Edge Blog .............................................................................................................................. 98

Blog de l’équipe des services Web Silverlight ................................................................................................. 98 À propos des auteurs ........................................................................................................................................ 98

Todd Baginski, MVP .................................................................................................................................... 98

Matthew McDermott, MVP ........................................................................................................................... 98

Ben Ari ..................................................................................................................................................... 99

Page 5: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

5

Vue d’ensemble et objectifs Tandis que les entreprises se développent, changent et suivent l’évolution des technologies, il existe un risque pour les employés de se sentir coupés de leur communauté professionnelle. Les produits Microsoft® SharePoint 2010 prennent en charge de nombreuses fonctionnalités qui permettent aux employés de s’impliquer et de collaborer, comme les listes et bibliothèques permettant de stocker et gérer les documents et informations, les profils utilisateur centralisés permettant aux employés de se décrire et de présenter leur rôle au sein de l’entreprise, ou encore le balisage et les notes qui facilitent la découverte d’informations à l’intérieur et à l’extérieur du pare-feu. Windows Phone 7™ est la dernière version des appareils mobiles qui incarne la vision de Microsoft d’un lieu de travail mobile. Windows Phone est fourni avec de nombreuses fonctionnalités qui prennent en charge « Office dans le Cloud », notamment des applications capables d’ouvrir et de lire des documents Microsoft Office. Le développement de Windows Phone 7 est conçu pour les développeurs .NET qui maîtrisent déjà parfaitement le développement de .NET et de Microsoft Silverlight®. Le présent livre blanc a pour objectif d’effectuer un rapprochement entre le développeur de Windows Phone et le développeur de SharePoint qui souhaitent créer des applications métier en mesure d’exploiter la puissance des produits SharePoint 2010 à partir de Windows Phone.

Remarque Dans le présent livre blanc, les produits SharePoint 2010 désignent Microsoft SharePoint® Server 2010 et Microsoft SharePoint Foundation 2010, sauf indication contraire. Les exemples et scénarios utilisent SharePoint Server 2010.

Le présent livre blanc a pour but d’expliciter les scénarios de développement suivants :

Comment préparer la connexion aux produits SharePoint 2010 à partir d’applications Windows Phone 7 ?

Comment se connecter à SharePoint via Unified Access Gateway ?

Comment se connecter aux services Web SharePoint, s’authentifier et consommer ces services ?

Comment créer et mettre à jour des éléments de liste SharePoint ?

Comment consommer les flux RSS fournis par SharePoint ?

Page 6: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

6

Architecture Dans le scénario illustré par le présent livre blanc, Contoso permet à ses

employés de se connecter aux produits SharePoint 2010 via Forefront Unified

Access Gateway (UAG). UAG traduit le nom d’hôte externe configuré sur le

téléphone en nom d’hôte interne configuré dans SharePoint, puis ajoute une

couche de sécurité et d’authentification dont les organisations ont besoin pour

protéger et contrôler leurs propriétés Web d’entreprise.

Intranet des produits SharePoint 2010 L’intranet de Contoso est une implémentation d’entreprise des produits

SharePoint 2010. Le site est configuré à l’aide d’une application de service de

profil utilisateur et d’une application de service de recherche. L’application

mobile va utiliser le service Web du service de profil utilisateur pour autoriser

les employés à consulter des informations de profil utilisateur sur leurs

téléphones portables.

Pour plus d’informations sur la configuration de l’application de service de

profil utilisateur, voir Administration du service de profil utilisateur (SharePoint

Server 2010) (http://technet.microsoft.com/fr-fr/library/ee721050.aspx).

UAG La publication d’un site SharePoint via un serveur UAG dans un environnement de développement implique

de configurer des réseaux sur l’ordinateur hôte Hyper-V, sur le serveur qui exécute SharePoint Server 2010 et

sur le serveur UAG, en plus d’installer et de configurer le serveur UAG.

L’annexe décrit comment configurer ces réseaux et installer et configurer un serveur UAG afin de publier un

site SharePoint pour le développement de Windows Phone 7. Ces étapes conviennent à un environnement

de développement ou autre environnement de non-production. Voir le Guide des solutions de publication

SharePoint (http://go.microsoft.com/fwlink/?LinkID=206256) sur TechNet lorsque vous déployez un

environnement comme celui-ci sur un environnement de production.

Scénario de collaboration intranet Contoso compte de nombreuses personnes compétentes à son service, réparties dans différents domaines

de production, tels que les produits pharmaceutiques et l’électronique. Le leadership chez Contoso privilégie

une vision de l’intégration des personnes et des logiciels afin de rendre le lieu de travail non seulement plus

productif mais aussi plus cohérent, du point de vue de l’employé. Contoso souhaite que chacun utilise les

données avec plaisir, et ainsi former une équipe épanouie et efficace. Contoso est partie sur des bases

solides avec son déploiement des produits SharePoint 2010. L’entreprise voit SharePoint comment

l’application d’entreprise centrale qui réunit les données et activités des utilisateurs. Contoso souhaite aller

plus loin, en offrant une solution de mobilité à ses associés. Pour cela, elle souhaite développer une

application mobile qui permettra aux utilisateurs de voir leurs activités depuis SharePoint, de suivre leurs

collègues et de mettre à jour les listes hébergées sur leur intranet SharePoint.

Page 7: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

7

Valeur métier de la collaboration Bien que certaines sociétés trouvent difficile de corréler directement la valeur métier avec les fonctionnalités

de collaboration des produits SharePoint 2010, Contoso a trouvé une relation directe entre l’établissement

du contact entre les personnes et l’émergence d’un sens de la communauté avec SharePoint. Plus les

employés sentent ce lien amical avec leurs collègues, plus ils ont de chances de s’épanouir dans leur travail.

Ce bien-être et cette satisfaction au travail entraînent une meilleure rétention du personnel (et facilitent

l’intégration des nouvelles recrues). Une meilleure rétention du personnel permet de réduire le coût de

l’embauche et d’améliorer les résultats de l’entreprise.

L’application Par l’intermédiaire de son application mobile, Contoso souhaite répliquer de nombreuses fonctionnalités que

les sites SharePoint Mes sites offrent dans un navigateur Web. Le flux de l’application va consister en une

page panoramique présentant des zones de liste Personnes affichées récemment, Mon échange de News,

Mes activités et Mes collègues. Quelque soit l’emplacement auquel un utilisateur sélectionne l’image d’un

autre utilisateur, le profil de ce dernier s’ouvre dans une nouvelle page. Les résultats de recherche seront

présentés dans une zone de liste et la sélection d’un utilisateur permettra d’afficher son profil. La figure 1

illustre ces composants.

Figure 1 : fonctionnalité sociale SharePoint que Contoso souhaite utiliser dans son application Windows

Phone 7.

Liste des tâches personnelles Chaque site personnel possède une liste des tâches que l’employé peut conserver pour suivre sa progression

personnelle dans ses missions. L’application permettra de se connecter à la liste des tâches du site personnel

et à l’employé de créer, mettre à jour et supprimer des tâches.

Page 8: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

8

Mon échange de News La fonctionnalité Mon échange de News (figure 2) sur le site SharePoint Mon site est l’emplacement prévu

pour que les utilisateurs échangent les dernières informations qui circulent au sein de l’entreprise. Puisque la

fonctionnalité Mon échange de News est évolutive, les entreprises comme Contoso peuvent ajouter d’autres

canaux pour les événements d’activité des autres systèmes.

Figure 2 : fonctionnalité Mon échange de News sur un site SharePoint telle qu’elle apparaît dans un

navigateur Web.

Page 9: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

9

Mes collègues La liste des collègues gérée par un utilisateur (« les personnes que je suis ») constitue une précieuse

ressource (figure 3). Contoso souhaite dupliquer cette liste dans le cadre d’une utilisation mobile.

Figure 3 : fonctionnalité Mes collègues sur un site SharePoint telle qu’elle apparaît dans un navigateur Web.

Page 10: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

10

L’application Windows Phone exploitera le contrôle Panorama pour afficher les informations, notamment les

derniers profils consultés, sur un panneau continu (figure 4).

Figure 4 : contrôle Panorama qui présente la vue d’ensemble de l’application Windows Phone 7.

Page 11: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

11

Fiche Profil La sélection d’un utilisateur permettra d’afficher les détails de son profil (figure 5). La fiche Profil présentera

les informations relatives à l’utilisateur dans l’affichage mobile.

Figure 5 : détails sur un utilisateur dans un site SharePoint tels qu’ils apparaissent dans un navigateur Web.

Page 12: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

12

Figure 6 : détails sur un utilisateur dans un site SharePoint tels qu’ils apparaissent dans l’application Windows

Phone 7.

Sécurité Pour le développeur de Windows Phone, la sécurité doit être envisagée à la fois pour les données en transit

et les données au repos. Le stockage sécurisé des informations d’identification est assuré par le recours au

chiffrement et au stockage isolé. Pour plus d’informations sur les fonctionnalités de sécurité du téléphone,

voir Sécurité pour Windows Phone (http://go.microsoft.com/fwlink/?LinkId=215977) sur MSDN.

Stockage des informations d’identification Windows Phone 7 prend en charge les algorithmes de chiffrement suivants :

AES

HMACSHA1

HMACSHA256

Rfc2898DeriveBytes

SHA1

SHA256

Le développeur d’une application mobile qui stocke des informations d’identification sur le téléphone doit

impérativement réfléchir à la sécurité des informations d’identification stockées en cas de perte ou de mise

en péril de l’appareil.

Page 13: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

13

Authentification Windows Phone 7 ne prend pas en charge l’authentification NTLM. Les requêtes de services Web effectuées

depuis le téléphone via UAG doivent créer l’en-tête d’authentification correct en récupérant les informations

d’identification de l’utilisateur dans le stockage chiffré, puis en les attachant à l’en-tête de l’objet

HttpWebRequest. Les requêtes Web doivent être effectuées sur HTTPS et les en-têtes d’authentification

transmis, comme dans l’exemple suivant.

upsRequest.Headers["Authorization"] = "Basic " +

Convert.ToBase64String(

Encoding.UTF8.GetBytes(AppSettings.Username + ":" + AppSettings.Password)) +

System.Environment.NewLine;

Lorsqu’une référence de service WCF est utilisée, l’en-tête peut être ajouté au client SOAP en accédant à

l’objet OperationContextScope, comme dans l’exemple suivant.

using (OperationContextScope scope =

new OperationContextScope(ups.InnerChannel))

{

//Créer la propriété du message de requête

HttpRequestMessageProperty request = new HttpRequestMessageProperty();

//Créer l’en-tête d’authentification et d’agent mobile

request.Headers[System.Net.HttpRequestHeader.Authorization] =

"Basic " +

Convert.ToBase64String(Encoding.UTF8.GetBytes(AppSettings.Username + ":" +

AppSettings.Password)) + System.Environment.NewLine;

request.Headers[System.Net.HttpRequestHeader.UserAgent] =

"Microsoft Office Mobile";

//Ajouter les en-têtes à la requête

OperationContext.Current.OutgoingMessageProperties.Add(

HttpRequestMessageProperty.Name, request);

//Appeler la méthode

ups.GetUserColleaguesAsync(account);

}

Page 14: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

14

SharePoint Services

Consommation des services L’application consomme plusieurs services SharePoint pour répondre aux besoins de l’entreprise, comme le

récapitule le tableau suivant.

Besoin URL du service Méthode

Lire et mettre à jour

les données de liste

http://sharepoint/_vti_bin/listdata.svc Bibliothèque cliente OData

Afficher l’échange de

News de l’utilisateur

http://mysitehost/_layouts/activityfeed.aspx?

consolidated=true

Consommer le flux RSS

fourni.

Afficher les collègues

de l’utilisateur

http://mysitehost/_vti_bin/userprofileservice.asmx GetUserColleagues

Afficher le profil

utilisateur

http://mysitehost/_vti_bin/userprofileservice.asmx GetUserProfileByName

Accès aux données de liste SharePoint à l’aide de la bibliothèque cliente OData La publication d’une collection de sites SharePoint via un serveur UAG permet une intégration entre les

applications Windows Phone 7 et les API SharePoint REST. La bibliothèque cliente OData pour Windows

Phone 7 série CTP (http://go.microsoft.com/fwlink/?LinkId=215984&clcid=0x40C (éventuellement en

anglais)) permet aux appareils Windows Phone 7 de consommer des flux OData. Les API SharePoint REST

peuvent être appelées à l’aide de la bibliothèque cliente OData pour fournir des opérations de création,

lecture, mise à jour et suppression (CLMS) sur les données de liste SharePoint. Cet appel offre la capacité

d’intégrer des appareils Windows Phone 7 à des applications de collaboration créées sur la plateforme

SharePoint. L’exemple de code suivant illustre la manière d’utiliser la bibliothèque cliente OData et les API

SharePoint REST pour effectuer des opérations CLMS sur les données de liste SharePoint.

Puisque vous ne pouvez pas ajouter des références de service pour les API SharePoint REST à une application

Windows Phone 7, vous devez générer une classe proxy manuellement et l’ajouter en tant que référence au

projet dans Microsoft Visual Studio®. DataSvcUtil.exe (http://go.microsoft.com/fwlink/?LinkID=215987) est

utilisé pour générer la classe proxy. Dans ce scénario, la classe proxy s’appelle ContosoIntranetDataContext.

Cette classe est considérablement utilisée dans les exemples de code qui suivent.

La méthode LoadTask illustre la manière de charger des tâches à partir d’une liste des tâches SharePoint.

Dans cette méthode, la classe ContosoIntranetDataContext utilise des paramètres de IsolatedStorage pour

déterminer le site SharePoint auquel se connecter. Le gestionnaire d’événements SendingRequest est affecté

Page 15: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

15

à l’instance de la classe ContosoIntranetDataContext. Ce gestionnaire d’événements se déclenche lorsque la

classe ContosoIntranetDataContext invoque une requête des API SharePoint REST. L’objet requestUri définit

l’opération REST, puis la méthode BeginExecute envoie la requête. La méthode BeginExecute inscrit

également la méthode de rappel asynchrone qui se déclenche lorsque la requête est terminée.

private void LoadTasks()

{

Deployment.Current.Dispatcher.BeginInvoke(() =>

{

if (allTasks == null)

{

allTasks = new ObservableCollection<Task>();

}

ObservableCollection<TasksItem> tasks = new

ObservableCollection<TasksItem>();

//Récupérer les paramètres auprès du stockage isolé

SettingsModel settings =

(IsolatedStorageSettings.ApplicationSettings["Settings"]

as SettingsModel);

//Configurer le contexte ODATA afin de pointer vers le site SharePoint

context = new ContosoIntranetDataContext(

new Uri(settings.ServerUri + "/_vti_bin/listdata.svc"));

//Inscrire le gestionnaire d’événements utilisé pour l’authentification

auprès d’UAG

context.SendingRequest += new EventHandler<SendingRequestEventArgs>(

context_SendingRequest);

//Définir l’URI pour interroger la liste des tâches

//Utiliser le développement pour récupérer les valeurs des colonnes de

recherche

Uri requestUri = new Uri(context.BaseUri.OriginalString +

"/Tasks()?$expand=AssignedTo,CreatedBy,ModifiedBy");

//Démarrer l’appel asynchrone pour interroger SharePoint

context.BeginExecute<TasksItem>(requestUri, QueryCallback, null);

});

}

Page 16: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

16

Le gestionnaire d’événements SendingRequest se déclenche lorsque la requête OData est envoyée aux

produits SharePoint 2010. Le code inclus dans ce gestionnaire d’événements est important : sans ce code,

un serveur UAG ne peut pas identifier correctement un appareil Windows Phone 7 ni interagir correctement

pour authentifier un utilisateur. L’en-tête d’agent utilisateur amène un serveur UAG à répondre par un HTTP

401 au lieu d’un 302. L’en-tête d’autorisation inclut les informations d’identification chiffrées de l’utilisateur

qui accède au flux OData. Les informations d’identification chiffrées sont utilisées par le serveur UAG pour

authentifier l’utilisateur.

private void context_SendingRequest(object sender, SendingRequestEventArgs e)

{

e.RequestHeaders["User-Agent"] = "Microsoft Office Mobile";

e.RequestHeaders["Authorization"] = "Basic " + Convert.ToBase64String(

Encoding.UTF8.GetBytes(App.Credential.Name + ":" +

App.Credential.Password)) + System.Environment.NewLine;

}

Une fois que la requête envoyée au serveur qui exécute SharePoint Server est terminée, la méthode

QueryCallback se déclenche. Cette méthode permet d’analyser les résultats renvoyés par la requête,

puis de les ajouter à l’objet ObservableCollection lié aux éléments d’interface utilisateur dans

l’application du téléphone.

private void QueryCallback(IAsyncResult asyncResult)

{

IEnumerable<TasksItem> results;

allTaskItems = new ObservableCollection<TasksItem>();

results = context.EndExecute<TasksItem>(asyncResult).ToList()

as IEnumerable<TasksItem>;

ObservableCollection<Task> returnedTasks =

new ObservableCollection<Task>();

foreach (TasksItem tasksItem in results)

{

//Code omis à des fins de concision : récupérer les métadonnées relatives à

la tâche…

//Créer la nouvelle tâche et définir ses propriétés

Task task = new Task()

{

Page 17: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

17

Title = tasksItem.Title,

Priority = taskPriority,

TaskStatus = taskStatus,

Body = tasksItem.Description,

Author = authorUser.Name,

Editor = editorUser.Name,

AssignedTo = assignedToUser.Name,

StartDate = DateTime.Parse(tasksItem.StartDate.ToString()),

Modified = DateTime.Parse(tasksItem.Modified.ToString()),

Created = DateTime.Parse(tasksItem.Created.ToString()),

DueDate = DateTime.Parse(tasksItem.DueDate.ToString()),

UIVersion = 1,

Last_x0020_Modified =

DateTime.Parse(tasksItem.Modified.ToString()),

Created_x0020_Date =

DateTime.Parse(tasksItem.Created.ToString()),

PercentComplete = (int)finalPercentComplete,

ListID = tasksItem.Id

};

//Ajouter chaque tâche à l’objet ObservableCollection lié aux éléments

d’interface utilisateur

returnedTasks.Add(task);

allTaskItems.Add(tasksItem);

}

allTasks = returnedTasks;

//Méthodes de rappel d’interface utilisateur omises à des fins de concision

}

La méthode SaveTask crée de nouvelles tâches et met à jour les tâches existantes. Le code suivant illustre la

manière d’utiliser la bibliothèque cliente OData pour créer de nouvelles tâches ou mettre à jour des tâches

existantes dans une liste des tâches SharePoint à partir d’un appareil Windows Phone 7. La classe TasksItem

représente une tâche dans une liste des tâches. Une instance TasksItem est créée, et les valeurs contenues

dans le formulaire utilisé pour créer ou modifier les tâches sont affectées à ses propriétés. L’instance

TasksItem est alors comparée aux tâches déjà chargées dans le téléphone pour déterminer si la tâche existe

Page 18: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

18

déjà. Cette vérification permet de déterminer si la bibliothèque cliente OData est utilisée pour créer une

nouvelle tâche dans la liste des tâches SharePoint ou mettre à jour une tâche existante. La méthode

BeginSaveChanges appelle l’opération adéquate et inscrit la méthode de rappel saveChangesCallBack.

public void SaveTask(Task task, Action<Task> callback)

{

taskToSave = task;

#region Create/update new task object

saveTaskCallback = callback;

//Récupérer les paramètres auprès du stockage isolé

SettingsModel settings =

(IsolatedStorageSettings.ApplicationSettings["Settings"]

as SettingsModel);

//Configurer le contexte ODATA afin de pointer vers le site SharePoint

approprié

context = new ContosoIntranetDataContext(

new Uri(settings.ServerUri + "/_vti_bin/listdata.svc"));

//Inscrire le gestionnaire d’événements utilisé pour l’authentification auprès

d’UAG

context.SendingRequest +=

new EventHandler<SendingRequestEventArgs>(context_SendingRequest);

TasksItem tasksItem = new TasksItem();

tasksItem.Title = task.Title;

tasksItem.Description = task.Body;

tasksItem.AssignedToId = assignedToUserID;

tasksItem.PriorityValue = task.Priority.DisplayString;

tasksItem.StartDate = task.StartDate;

tasksItem.DueDate = task.DueDate;

//Définir le pourcentage effectué

if (task.PercentComplete > 0)

{

tasksItem.Complete = (double)task.PercentComplete / 100;

Page 19: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

19

}

else

{

tasksItem.Complete = (double)0;

}

//Définir l’état des tâches

tasksItem.StatusValue = task.TaskStatus.DisplayString;

//Si la tâche existe déjà, alors la mettre à jour

if (allTasks.Count > 0 && DoesTaskExist(taskToSave) && task.ListID != 0)

{

tasksItem.Id = task.ListID;

context.AttachTo("Tasks", tasksItem, "*");

context.UpdateObject(tasksItem);

}

//Si la tâche n’existe pas, alors la créer

else

{

context.AddToTasks(tasksItem);

}

Deployment.Current.Dispatcher.BeginInvoke(

() =>

{

//Démarrer l’appel asynchrone de SharePoint pour valider les modifications

context.BeginSaveChanges(saveChangesCallBack, context);

}

);

}

Page 20: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

20

Une fois la requête terminée, saveChangesCallBack se déclenche. Cette méthode permet d’analyser les

résultats renvoyés par la requête, puis de mettre à jour l’objet ObservableCollection lié aux éléments

d’interface utilisateur du téléphone.

private void saveChangesCallBack(IAsyncResult asyncResult)

{

Deployment.Current.Dispatcher.BeginInvoke(

() =>

{

//Obtenir le contexte de données à partir de la réponse

context = asyncResult.AsyncState as ContosoIntranetDataContext;

//Appeler la méthode endsavechanges pour valider la modification

DataServiceResponse response = context.EndSaveChanges(asyncResult);

//Si la tâche existe déjà, alors la mettre à jour

if (allTasks.Count > 0 && DoesTaskExist(taskToSave))

{

for (int i = 0; i < allTasks.Count; i++)

{

if (allTasks[i].ListID == taskToSave.ListID)

{

//Mettre à jour la tâche correspondante dans la collection en mémoire

allTasks[i] = taskToSave;

//Appeler le rappel pour indiquer à l’interface utilisateur que

l’opération d’enregistrement est terminée

saveTaskCallback.DynamicInvoke(taskToSave);

break;

}

}

}

//Si la tâche n’existe pas, alors la créer

else

{

//Ajouter la tâche à la collection en mémoire

allTasks.Add(taskToSave);

//Appeler le rappel pour indiquer à l’interface utilisateur que l’opération

d’enregistrement est terminée

saveTaskCallback.DynamicInvoke(taskToSave);

Page 21: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

21

}

}

);

}

La méthode DeleteTask illustre la manière d’utiliser la bibliothèque cliente OData pour supprimer des tâches

dans une liste des tâches SharePoint à partir d’un appareil Windows Phone 7. Cette méthode prend l’ID

associé à une tâche sélectionnée dans l’application Windows Phone 7 et crée un objet Task basé sur cet ID.

L’objet Task est utilisé pour localiser le TasksItem correspondant dans le contexte de la bibliothèque cliente

OData associé à la liste des tâches SharePoint. Une fois que l’entrée correspondante est localisée, elle est

marquée pour suppression. La méthode de rappel BeginSaveChanges appelle l’API SharePoint REST et inscrit

la méthode de rappel DeleteCallback.

public void DeleteTask(int ID, Action callback)

{

deleteTaskCallback = callback;

taskToDelete = GetTask(ID);

//Récupérer les paramètres auprès du stockage isolé

SettingsModel settings =

(IsolatedStorageSettings.ApplicationSettings["Settings"]

as SettingsModel);

//Configurer le contexte ODATA afin de pointer vers le site SharePoint

approprié

context = new ContosoIntranetDataContext(

new Uri(settings.ServerUri + "/_vti_bin/listdata.svc"));

//Inscrire le gestionnaire d’événements utilisé pour l’authentification auprès

d’UAG

context.SendingRequest +=

new EventHandler<SendingRequestEventArgs>(context_SendingRequest);

foreach (TasksItem tasksItem in allTaskItems)

{

if (tasksItem.Id == taskToDelete.ListID)

{

context.MergeOption = MergeOption.OverwriteChanges;

context.AttachTo("Tasks", tasksItem, "*");

Page 22: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

22

context.DeleteObject(tasksItem);

//Démarrer l’appel asynchrone de SharePoint pour valider la suppression

context.BeginSaveChanges(DeleteCallback, context);

break;

}

}

}

Une fois la requête terminée, la méthode DeleteCallback se déclenche. Cette méthode permet d’analyser les

résultats renvoyés par la requête, puis de supprimer la tâche dans l’objet ObservableCollection lié aux

éléments d’interface utilisateur du téléphone.

private void DeleteCallback(IAsyncResult asyncResult)

{

Deployment.Current.Dispatcher.BeginInvoke(

() =>

{

//Obtenir le contexte de données à partir de la réponse

context = asyncResult.AsyncState as ContosoIntranetDataContext;

//Appeler la méthode endsavechanges pour valider la modification

DataServiceResponse response = context.EndSaveChanges(asyncResult);

//Supprimer la tâche de la collection en mémoire également

if (taskToDelete != null)

{

//Supprimer la tâche de la collection en mémoire

GetAllTasks().Remove(taskToDelete);

//Appeler le rappel pour indiquer à l’interface utilisateur que l’opération

de suppression est terminée

deleteTaskCallback.DynamicInvoke();

}

}

);

}

Page 23: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

23

Flux RSS d’activité

L’échange de News personnel et les activités récentes sont publiés à partir de l’hôte Mon site en tant que flux

RSS. L’application a uniquement besoin de demander le flux RSS, de télécharger la chaîne et d’ajouter les

résultats à un objet de collection. Les activités sont publiées à partir de l’hôte Mon site sur l’URL

http://<hôte_mon_site>/_layouts/activityfeed.aspx?consolidated=true. (Veillez à tester le flux RSS en suivant

les directives indiquées dans l’annexe située à la fin du présent livre blanc avant d’essayer d’y accéder via

l’approche par code soulignée ci-dessous.)

La méthode LoadNewsfeed illustre la manière de demander les informations sur les activités consolidées

pour l’utilisateur authentifié via UAG. Une nouvelle HtpWebRequest est créée en transmettant l’URI des

informations sur les activités consolidées. Les en-têtes clients nécessaires sont ajoutés à la requête.

Le compte et le mot de passe sont des variables accessibles dans le stockage isolé chiffré. Pour faciliter

l’utilisation du modèle MVVM (Model View View Model), le MVVM Light Toolkit est employé (pour plus

d’informations, voir le site Web MVVM Light Toolkit (http://go.microsoft.com/fwlink/?LinkId=216135).

Dans cet exemple, l’objet DispatcherHelper.CheckBeginInvokeOnUI est appelé pour gérer l’objet

ResponseStream et les résultats sont transmis à AddNewsfeedItems pour extraire les valeurs de résultat et

les ajouter à la collection NewsfeedItems.

private void LoadNewsfeed()

{

//URL RSS de Mon échange de News

string url =

String.Format(“{0}/my/_layouts/activityfeed.aspx?consolidated=true",

AppSettings.Url);

System.Uri authServiceUri = new Uri(url);

HttpWebRequest client =

WebRequest.CreateHttp(authServiceUri) as HttpWebRequest;

//Ajouter les en-têtes nécessaires pour UAG

client.Headers["User-Agent"] = "Microsoft Office Mobile";

client.Headers["Authorization"] = "Basic " +

Convert.ToBase64String(Encoding.UTF8.GetBytes(AppSettings.Username + ":" +

AppSettings.Password)) +

System.Environment.NewLine;

client.AllowReadStreamBuffering = true;

client.AllowAutoRedirect = true;

//Appeler et gérer la réponse

client.BeginGetResponse((asResult) =>

{

Page 24: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

24

DispatcherHelper.CheckBeginInvokeOnUI(

() =>

{

try

{

var response = client.EndGetResponse(asResult);

StreamReader reader = new

StreamReader(response.GetResponseStream());

string responseString = reader.ReadToEnd();

AddNewsfeedItems(responseString);

}

catch (WebException failure)

{

throw failure;

}

});

},

null);

}

Une fois le téléchargement terminé, AddNewsfeedItems ajoute les résultats à la collection liée à l’interface

utilisateur. L’objet responseString est analysé dans un XDocument et les deux espaces de noms sont ajoutés.

LINQ est utilisé pour interroger la collection d’entrées et créer des objets MyNewsfeedViewModel qui

stockent les éléments d’échange de News obtenus et les informations sur l’auteur. Enfin, les éléments sont

ajoutés à la collection MyNewsFeedItems.

private void AddNewsfeedItems(string responseString)

{

//Analyser la réponse XML

XDocument newsfeedDoc = XDocument.Parse(responseString);

//Ajouter les espaces de noms nécessaires

XNamespace ns = "http://www.w3.org/2005/Atom";

XNamespace af = "AF";

//Utiliser LINQ pour extraire les informations dans un modèle Vue

IEnumerable<MyNewsfeedViewModel> entries = from entry in

newsfeedDoc.Descendants(XName.Get("entry", ns.NamespaceName))

select new MyNewsfeedViewModel()

Page 25: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

25

{

Summary = entry.Element(ns + "summary").Value,

Published = entry.Element(ns + "published").Value,

Author =

(from author in entry.Descendants(XName.Get("author",

ns.NamespaceName))

select new PersonViewModel(NavigationService)

{

AccountName = author.Element(af + "AccountName").Value,

Name = author.Element(ns + "name").Value,

PersonalSiteUrl = author.Element(ns + "uri").Value,

Email = author.Element(ns + "email").Value,

PictureUrl = author.Element(af + "Picture").Value

}).FirstOrDefault()};

//Ajouter les éléments obtenus à la collection liée aux contrôles d’interface

utilisateur

DispatcherHelper.CheckBeginInvokeOnUI(() =>

{

foreach (MyNewsfeedViewModel e in entries.ToList())

{

MyNewsfeedItems.Add(e);

}

});

}

Service de profil utilisateur : collègues Le service de profil utilisateur SharePoint offre la possibilité d’afficher, de créer, de modifier et de gérer des

informations de profil utilisateur dans les produits SharePoint 2010. Ce service constitue le principal point

d’entrée pour que l’application récupère des informations sur les collègues et les profils utilisateur. Le code

suivant illustre la manière d’appeler le service de profil utilisateur depuis Windows Phone 7 via UAG.

Créer la référence au service de profil utilisateur Commencez par ajouter une référence de service à votre projet Windows Phone 7. Entrez l’URL du point de

terminaison du service de profil utilisateur, par exemple :

Page 26: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

26

http://spwp7intranet.contoso.com/_vti_bin/userprofileservice.asmx

Donnez à la référence de service un nom reconnaissable, tel que UserProfileService, puis cliquez sur OK.

Méthode Web GetUserColleagues La méthode LoadColleagueData utilise la méthode GetUserColleaguesAsync du service de profil utilisateur

pour renvoyer une collection de collègues en tant qu’objets ContactData. Après avoir créé BasicHttpBinding

et EndpointAddress, un nouveau UserProfileServiceSoapClient est créé avec les paramètres requis.

Les appels de service dans Silverlight doivent être effectués de manière asynchrone. Un nouveau

gestionnaire d’événements OnCompleted est ajouté pour l’événement GetUserColeaguesCompleted.

Pour ajouter les en-têtes requis par UAG, un objet OperationContextScope est utilisé et un objet

HttpRequestMessageProperty est créé pour contenir les deux en-têtes requis pour l’authentification auprès

d’UAG. Les en-têtes sont ajoutés au message sortant, puis l’appel asynchrone de GetUserColleaguesAsync

est effectué à l’aide du compte de l’utilisateur en tant que paramètre.

private void LoadColleagueData()

{

string url =

String.Format("{0}/_vti_bin/userprofileservice.asmx", AppSettings.Url);

BasicHttpBinding binding = new BasicHttpBinding();

EndpointAddress endpoint = new EndpointAddress(url);

UserProfileService.UserProfileServiceSoapClient ups =

new UserProfileServiceSoapClient(binding, endpoint);

//Ajouter le gestionnaire d’événements terminé

ups.GetUserColleaguesCompleted +=

new EventHandler<GetUserColleaguesCompletedEventArgs>(

ups_GetUserColleaguesCompleted);

//Ajouter les informations d’identification

using (OperationContextScope scope =

new OperationContextScope(ups.InnerChannel))

{

//Créer la propriété du message de requête

HttpRequestMessageProperty request = new HttpRequestMessageProperty();

//Créer l’en-tête d’authentification et d’agent mobile

request.Headers[System.Net.HttpRequestHeader.Authorization] =

"Basic " +

Convert.ToBase64String(Encoding.UTF8.GetBytes(AppSettings.Account +

Page 27: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

27

":" + AppSettings.Password)) + System.Environment.NewLine;

request.Headers[System.Net.HttpRequestHeader.UserAgent] =

"Microsoft Office Mobile";

//Ajouter les en-têtes à la requête

OperationContext.Current.OutgoingMessageProperties.Add(

HttpRequestMessageProperty.Name, request);

//Appeler la méthode

ups.GetUserColleaguesAsync(account);

}

}

Lorsque la méthode GetUserColleaguesAsync renvoie des résultats, l’événement

ups_GetUserColleaguesCompleted est appelé. En l’absence d’erreur, LINQ est utilisé pour créer la liste des

PersonViewModels à partir de l’objet ContactData obtenu. La dernière étape consiste à ajouter les objets

PersonViewModels à partir de la liste à l’objet ColleaguesList sur le thread d’interface utilisateur en appelant

CheckBeginInvoke et en transmettant notre liste des PersonViewModels.

private void ups_GetUserColleaguesCompleted(object sender,

GetUserColleaguesCompletedEventArgs e)

{

if (e.Error == null)

{

//Créer la liste des PersonViewModels

IEnumerable<PersonViewModel> colleagues =

from contact in e.Result

select new PersonViewModel()

{

AccountName = contact.AccountName,

UserProfileID = contact.UserProfileID.ToString(),

Name = contact.Name,

Title = contact.Title,

Email = contact.Email,

PersonalSiteUrl = contact.Url

};

//Charger la liste des collègues sur le thread d’interface utilisateur

DispatcherHelper.CheckBeginInvokeOnUI(() =>

Page 28: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

28

{

foreach (PersonViewModel c in colleagues.ToList())

{

Colleagues.Add(c);

}

});

}

else

{

Debug.WriteLine("Error loading the Colleagues List: {0}",

e.Error.Message);

}

}

Service de profil utilisateur : données de profil utilisateur La méthode Web GetUserColleagues ne renvoie pas de profils utilisateur. La méthode renvoie un objet

ContactData qui peut être retransmis à la méthode GetUserProfileByName du service de profil utilisateur

qui renvoie un objet Profil utilisateur complet, alors utilisable pour afficher un profil utilisateur complet.

La méthode suivante est utilisée pour renvoyer les détails du profil utilisateur de nos collègues.

Plus particulièrement, nous renvoyons les champs AboutMe, WorkPhone, MobilePhone et PictureURL.

La méthode GetUserProfileProperties prend un objet PersonViewModel pour la personne dont nous

souhaitons récupérer le profil. Dans cette méthode, nous construisons un inspecteur de message pour

résoudre un problème qui engendre l’échec de l’analyse correcte de la valeur de retour PropertyData.

Nous créons alors un objet BasicHttpMessageInspectorBinding qui prend l’inspecteur de message en tant

que paramètre, transmet la liaison et le point de terminaison au constructeur de l’objet

UserProfileServiceSoapClient. et inscrit le gestionnaire d’événements GetUserProfileByNameCompleted.

Pour ajouter les en-têtes de requête requis par UAG, un objet OperationContextScope ajoute les en-têtes

Authorization et UserAgent à la requête. Enfin, nous appelons la méthode GetUserProfileByNameAsync et

transmettons le nom du compte de l’utilisateur et l’objet PersonViewModel que nous voulons mettre à jour.

private void GetUserProfileProperties(PersonViewModel person)

{

//URL du service

string url = String.Format("{0}/_vti_bin/userprofileservice.asmx",

AppSettings.ServerUrl);

Page 29: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

29

//Créer l’inspecteur de message

SPAsmxMessageInspector messageInspector = new SPAsmxMessageInspector();

//Appliquer l’inspecteur de message à la liaison

BasicHttpMessageInspectorBinding binding = new

BasicHttpMessageInspectorBinding(messageInspector);

EndpointAddress endpoint = new EndpointAddress(url);

UserProfileService.UserProfileServiceSoapClient ups = new

UserProfileServiceSoapClient(binding, endpoint);

//Ajouter le gestionnaire d’événements terminé

ups.GetUserProfileByNameCompleted += new

EventHandler<GetUserProfileByNameCompletedEventArgs>

(ups_GetUserProfileByNameCompleted);

using (OperationContextScope scope = new

OperationContextScope(ups.InnerChannel))

{

//Créer la propriété du message de requête

HttpRequestMessageProperty request = new HttpRequestMessageProperty();

//Créer l’en-tête d’authentification et d’agent mobile

request.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " +

Convert.ToBase64String(Encoding.UTF8.GetBytes(AppSettings.UserName + ":" +

AppSettings.Password)) + System.Environment.NewLine;

request.Headers[System.Net.HttpRequestHeader.UserAgent] =

"Microsoft Office Mobile";

//Ajouter les en-têtes à la requête

OperationContext.Current.

OutgoingMessageProperties.Add(HttpRequestMessageProperty.Name, request);

Debug.WriteLine("Getting User Profile for: {0}", person.AccountName);

//Appeler la méthode

ups.GetUserProfileByNameAsync(person.AccountName, person);

}

}

Page 30: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

30

Lorsque l’objet GetUserProfileByNameCompleted est appelé, les valeurs de propriété retournées (le cas échéant) sont inspectées et affectées à la propriété appropriée sur l’objet PersonViewModel.

private void ups_GetUserProfileByNameCompleted(object sender,

GetUserProfileByNameCompletedEventArgs e)

{

if (e.Error == null)

{

Debug.WriteLine("Got the user profile for {0}",

((PersonViewModel)e.UserState).AccountName);

foreach (UserProfileService.PropertyData propertyData in e.Result)

{

switch (propertyData.Name)

{

case "AboutMe":

((PersonViewModel) e.UserState).AboutMe = propertyData.Values.Count >

0 ? (propertyData.Values[0].Value as string): String.Empty;

break;

case "WorkPhone":

((PersonViewModel)e.UserState).WorkPhone = propertyData.Values.Count >

0 ? (propertyData.Values[0].Value as string): String.Empty;

break;

case "CellPhone":

((PersonViewModel)e.UserState).MobilePhone = propertyData.Values.Count >

0 ? (propertyData.Values[0].Value as string): String.Empty;

break;

case "PictureURL":

((PersonViewModel)e.UserState).PictureUrl = propertyData.Values.Count >

0 ? (propertyData.Values[0].Value as string): String.Empty;

break;

}

}

Page 31: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

31

}

else

{

Debug.WriteLine(e.Error.Message);

}

}

Remarque : l’utilisation de l’inspecteur de message mentionné dans cet exemple est uniquement

recommandée dans un environnement dans lequel vous avez appliqué les dernières mises à jour de

Silverlight. Pour plus d’informations, voir Solution de contournement pour accéder à certains services ASMX

à partir de Silverlight 4 (http://go.microsoft.com/fwlink/?LinkID=216134 ) et GUID du service de profil

utilisateur SharePoint et Silverlight (http://go.microsoft.com/fwlink/?LinkId=216136)

Test

Test de l’application dans l’émulateur L’application de cet exemple est testée sur l’émulateur de développement Windows Phone 7. L’émulateur

utilise la connexion réseau de l’ordinateur de développement hôte. Si nécessaire, il est possible d’ajouter des

entrées de fichiers d’hôtes à l’ordinateur de développement afin que l’émulateur puisse résoudre les

adresses du serveur UAG de développement.

Test de l’application sur un appareil Le test de l’application sur un appareil Windows Phone physique requiert que le téléphone soit connecté à

une connexion Wi-Fi publique disponible qui fournit un service DNS et un routage vers le serveur UAG de test

de destination ou un serveur UAG de test exposé à Internet.

Considérations liées à Marketplace Après avoir développé votre application Windows Phone 7, il est important de prendre les mesures

appropriées afin de publier votre application de façon sécurisée sur Windows Phone Marketplace. Microsoft

a déjà mis en place plusieurs mécanismes pour empêcher le piratage logiciel des applications Windows

Phone 7. Vous pouvez en apprendre plus sur ces mesures dans le Livre blanc du modèle antipiratage de

Windows Phone Marketplace (http://go.microsoft.com/fwlink/?LinkId=216137).

À un haut niveau, le nombre minimal de mesures à prendre pour publier une application Windows Phone 7

sur Windows Phone Marketplace implique de créer un compte de développeur et de publier votre

application sur Marketplace. L’article Procédure pas à pas d’inscription d’un développeur App Hub

(http://go.microsoft.com/fwlink/?LinkId=216138) décrit la manière d’inscrire un compte de développeur.

Il est important de noter qu’un compte de développeur peut être lié à une personne ou une entreprise.

Selon vos besoins, vous pouvez vous inscrire pour créer un compte plus significatif pour vous. Les frais

d’inscription des deux types de compte sont les mêmes. L’article Procédure pas à pas de soumission d’une

Page 32: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

32

application Windows Phone 7 (http://go.microsoft.com/fwlink/?LinkId=216139) décrit la manière de

soumettre votre application à la vérification et à la publication. Si votre application remplit les Conditions de

certification d’une application Windows Phone 7 [PDF] (http://go.microsoft.com/?linkid=9730558), elle est

publiée sur Windows Phone Marketplace.

Au moment de la publication du présent livre blanc, il n’existe aucun « marketplace privé » pour les

entreprises souhaitant empêcher la distribution publique de leurs applications. Voir App Hub

(http://create.msdn.com) pour obtenir des mises à jour et des informations sur la possibilité pour les

entreprises de publier des applications de manière privée.

Bien que Microsoft ait mis en place de nombreuses protections, vous devez quand même prendre des

précautions supplémentaires pour protéger votre code au cas où une personne obtiendrait une copie du

fichier .xap représentant votre application Windows Phone 7. Avant de parcourir les étapes de publication de

votre application sur Windows Phone Marketplace, vous devez veiller à obfusquer vos applications pour

protéger votre propriété intellectuelle. Il existe déjà plusieurs outils différents disponibles pour obfusquer les

applications Windows Phone 7.

Même si la liste suivante n’est pas exhaustive, elle devrait constituer un bon point de départ pour explorer

les possibilités actuellement disponibles.

PreEmptive Solutions Dotfuscator Windows Phone Edition

(http://www.preemptive.com/windowsphone7.html)

RedGate SmartAssembly 6 EAP (http://www.red-gate.com/MessageBoard/viewforum.php?f=116)

DeepSea Obfuscator (http://www.deepseaobfuscator.com/)

Une obfuscation en bonne et due forme est un processus itératif qui prend du temps à tester et à vérifier.

Veillez à prévoir du temps dans votre plan de projet pour obfusquer vos applications Windows Phone 7,

les tester et vérifier que le niveau d’obfuscation répond à vos besoins.

Vous pouvez utiliser l’outil de déploiement d’applications Windows Phone 7 (figure 7) pour tester des

applications Windows Phone 7 obfusquées. Cet outil vous permet de déployer vos applications Windows

Phone 7 obfusquées sur un appareil Windows Phone 7 réel que vous avez inscrit à l’aide d’un compte de

développeur ou dans l’émulateur de Windows Phone 7.

Page 33: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

33

Figure 7 : outil de déploiement d’applications Windows Phone 7.

Après avoir déployé et testé une application Windows Phone 7 obfusquée, vous risquez de constater qu’à

des niveaux très élevés d’obfuscation (lorsque vous activez toutes les options possibles pour protéger votre

code), l’application ne s’exécute pas correctement sur un appareil Windows Phone 7 ou dans l’émulateur de

Windows Phone 7. D’un autre côté, vous pouvez constater que l’utilisation d’un niveau minimal des

paramètres d’obfuscation permet de garantir une exécution correcte de votre application, mais sans que le

niveau d’obfuscation puisse répondre à vos besoins.

Vous pouvez prendre les mesures suivantes pour déterminer le niveau d’obfuscation appliqué à votre

application par un outil d’obfuscation. Tout d’abord, localisez le fichier .xap représentant votre application

Windows Phone 7 et renommez l’extension du fichier .cab ou .zip. Ensuite, ouvrez le fichier d’archive et

extrayez son contenu. Ensuite, utilisez un outil tel que RedGate .NET Reflector pour ouvrir l’assembly qui

correspond à votre application. L’ouverture du nœud des ressources vous permet de voir tous les fichiers

XAML et de les enregistrer sur votre disque dur (figure 8).

Page 34: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

34

Figure 8 : enregistrement des fichiers XAML avec .NET Reflector.

Vous pouvez ensuite examiner les fichiers XAML pour voir le niveau d’obfuscation qui a été appliqué au code.

Vous risquez d’être surpris par le fait que les niveaux bas d’obfuscation ne modifie pas du tout le contenu

d’un fichier XAML et que les niveaux élevés se contentent de supprimer l’espace blanc. Cela encourage

vraiment l’utilisation du modèle MVVM (Model View View Model) pour séparer la logique de présentation et

le code des couches d’accès aux données.

Vous pouvez également examiner le code dans les assemblys sur lesquels compte votre application Windows

Phone 7. La figure 9 présente un assembly obfusqué.

Page 35: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

35

Figure 9 : obfuscation appliquée à un assembly d’application Windows Phone 7.

Un point important à ne pas oublier à propos de l’obfuscation est qu’aucun niveau d’obfuscation ne peut

empêcher un pirate informatique très déterminé de rétroconcevoir la plupart de votre code source.

Les techniques d’obfuscation sont conçues pour protéger la propriété intellectuelle en dressant une barrière

qui rend trop difficile la rétroconception du code et son vol.

Conclusion Il existe de nombreuses ressources à la disposition du développeur Windows Phone 7. Le point de départ est

App Hub sur MSDN, http://create.msdn.com. Les articles, les blogs et les forums fournissent de l’aide aux

développeurs dans divers scénarios de développement, qu’ils soient simples ou complexes. Les produits

SharePoint 2010 offrent un large éventail de fonctionnalités pour les entreprises qui souhaitent collaborer et

partager des connaissances, des savoir-faire et des informations. Les applications d’entreprise qui exploitent

les fonctionnalités SharePoint et de mobilité offrent un avantage considérable aux entreprises ainsi en

mesure de gérer, entretenir et déployer efficacement des solutions basées sur la plateforme .NET.

Page 36: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

36

Annexe – Installation et configuration d’UAG pour les produits SharePoint 2010 Cette section décrit comment configurer la mise en réseau et installer et configurer un serveur UAG afin de

publier un site SharePoint pour le développement de Windows Phone 7. Ces étapes conviennent à un

environnement de développement. Pour plus d’informations sur le déploiement dans un environnement de

production, voir le Guide des solutions de publication UAG (http://go.microsoft.com/fwlink/?LinkID=206256)

sur TechNet. Le serveur UAG exige au moins 4 Go de mémoire vive (RAM) pendant le processus

d’installation. Pour un environnement de démonstration, 2 Go suffisent et vous pouvez ignorer

l’avertissement en toute sécurité.

1. Créer un ordinateur virtuel SharePoint Server et un ordinateur virtuel UAG Cet exemple utilise l’ordinateur virtuel de démonstration et d’évaluation du travailleur de l’information 2010

(RTM) (http://go.microsoft.com/fwlink/?LinkID=189314) pour l’ordinateur virtuel SharePoint Server. Pour

créer l’ordinateur virtuel du serveur UAG, installez Windows Server 2008 R2 dans un nouvel ordinateur

virtuel, installez toutes les mises à jour à l’aide de Windows Update, puis effectuez les étapes ci-après.

Mise en réseau Le schéma suivante illustre la manière dont le serveur qui exécute SharePoint Server, le serveur UAG et

l’ordinateur de développement Windows Phone 7 sont connectés. La documentation qui suit décrit la

manière d’implémenter ce scénario.

Page 37: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

37

Windows 7 Development Machine Hyper-V Host Machine

UAG Server Virtual Machine

SharePoint Server Virtual Machine

Visual Studio 2010

.5 .180 .171

.180

.1.6

192.168.150.x – Internal Network | 192.168.1.x – External Network

2. Configurer les réseaux virtuels de l’ordinateur hôte Hyper-V Sur l’ordinateur hôte Hyper-V, créez deux réseaux virtuels comme suit. La configuration de deux réseaux

permet de simuler un environnement DMZ dans lequel le serveur UAG communique avec Internet sur une

première carte réseau et communique avec les ressources internes (en l’occurrence, le serveur qui exécute

SharePoint Server) sur une autre carte réseau.

Nom Type de connexion Description

Interne Interne uniquement Connexion entre le serveur UAG et le

serveur qui exécute SharePoint Server.

UAG

externe

Externe : liée à une carte réseau sur

l’ordinateur hôte Hyper-V.

Connexion entre l’ordinateur de

développement WP7 et le serveur UAG.

Remarque : les adresses IP peuvent différer légèrement dans votre environnement. Le principal est de faire

fonctionner le réseau interne sur un autre sous-réseau que le réseau externe.

Définissez les paramètres TCP/IP de la carte réseau interne sur l’ordinateur hôte Hyper-V comme suit.

Page 38: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

38

Définissez les paramètres TCP/IP de la carte réseau externe sur l’ordinateur hôte Hyper-V comme suit.

Page 39: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

39

3. Configurer les réseaux de l’ordinateur virtuel Hyper-V Sur l’ordinateur virtuel du serveur UAG, ajoutez une autre carte réseau et configurez cet ordinateur virtuel du

serveur UAG afin d’utiliser les réseaux virtuels interne et externe dans Hyper-V.

Sur l’ordinateur virtuel SharePoint Server, ajoutez une autre carte réseau et configurez cet ordinateur virtuel

SharePoint Server afin d’utiliser les réseaux virtuels interne et externe dans Hyper-V.

Définissez les paramètres TCP/IP de la carte réseau interne sur l’ordinateur virtuel du serveur UAG comme suit.

Page 40: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

40

Définissez les paramètres TCP/IP de la carte réseau externe sur l’ordinateur virtuel du serveur UAG comme suit.

Définissez les paramètres TCP/IP de la carte réseau interne sur l’ordinateur virtuel SharePoint Server comme suit.

Page 41: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

41

Définissez les paramètres TCP/IP de la carte réseau externe sur l’ordinateur virtuel SharePoint Server comme suit.

Page 42: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

42

4. Préparer l’ordinateur virtuel du serveur UAG à l’installation d’UAG Ouvrez une session sur l’ordinateur virtuel du serveur UAG. Renommez l’ordinateur UAG1, joignez-le au

domaine contoso.com, puis redémarrez-le. Remarque : Si vous n’utilisez pas l’ordinateur virtuel de

démonstration et d’évaluation du travailleur de l’information 2010 (2010 Information Worker Demonstration

and Evaluation Virtual Machine ) (RTM) (voir http://go.microsoft.com/fwlink/?LinkID=189314&clcid=0x40C),

joignez le serveur UAG au même domaine que celui du serveur qui exécute SharePoint Server. Vérifiez que

l’ordinateur virtuel de démonstration et d’évaluation du travailleur de l’information 2010 (RTM) est en cours

d’exécution.

Utilisez les informations d’identification suivantes pour joindre l’ordinateur virtuel du serveur UAG au

domaine contoso.

Nom d’utilisateur : contoso\administrator

Mot de passe : pass@word1

Page 43: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

43

Redémarrez et ouvrez une session à l’aide des informations d’identification contoso\administrator ou des

informations d’identification propres à votre environnement.

5. Générer un instantané de l’ordinateur virtuel du serveur UAG Arrêtez l’ordinateur virtuel du serveur UAG et créez un instantané dans la console de gestion Hyper-V.

6. Installer le serveur UAG Tout d’abord, montez le support d’installation UAG sur l’ordinateur virtuel du serveur UAG. Ensuite,

démarrez l’ordinateur virtuel du serveur UAG et ouvrez une session à l’aide des informations d’identification

contoso\administrator. Une fois la session ouverte, vérifiez que vous avez bien ouvert la session à l’aide des

informations d’identification contoso/administrator. Ouvrez une invite de commandes, tapez whoami,

puis appuyez sur Entrée pour vérifier les informations d’identification.

Ensuite, démarrez l’installation UAG depuis le support d’installation. Voir Installation du SP1 pour Forefront

UAG 2010 (http://go.microsoft.com/fwlink/?LinkId=216130) sur TechNet pour plus d’informations sur

l’installation. (Remarque : vous ne pouvez pas installer UAG pendant une session à distance ; vous devez

l’installer depuis la console.)

Page 44: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

44

Cliquez sur Install Forefront UAG. Dans un scénario de développement, vous pouvez exécuter l’ordinateur

virtuel du serveur UAG avec moins de 4 Go de mémoire vive (RAM). Si vous avez alloué moins de 4 Go de

RAM à l’ordinateur virtuel du serveur UAG, cliquez sur Continue.

Page 45: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

45

Dans la page de l’Assistant Welcome, cliquez sur Next >.

Page 46: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

46

Cliquez sur I accept the Licensing Terms for Microsoft Software, puis cliquez sur Next.

Page 47: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

47

Dans la page Select Installation Location, cliquez sur Next.

Page 48: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

48

À ce stade, l’installation commence. Le programme d’installation installe tous les rôles et fonctionnalités

dont dépend UAG et configure le serveur pour UAG.

Page 49: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

49

Dans la page Setup Wizard Completed, cliquez sur Finish.

7. Générer un instantané de l’ordinateur virtuel du serveur UAG Une fois que l’ordinateur virtuel du serveur UAG redémarre et termine l’installation d’UAG, arrêtez

l’ordinateur virtuel du serveur UAG et créez un instantané dans la console de gestion Hyper-V.

8. Initialiser la configuration et l’activation du serveur UAG Démarrez l’ordinateur virtuel du serveur UAG et ouvrez une session à l’aide des informations d’identification

contoso\administrator. Une fois la session ouverte, vérifiez que vous avez bien ouvert la session à l’aide des

informations d’identification contoso/administrator : ouvrez une invite de commandes, tapez whoami,

puis appuyez sur Entrée pour vérifier les informations d’identification.

Page 50: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

50

Pour démarrer l’Assistant Configuration d’UAG, cliquez sur Démarrer | Tous les programmes |Microsoft

Forefront UAG | Forefront UAG Management.

Cliquez sur Configure Network Settings.

Page 51: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

51

Cliquez sur Next.

Page 52: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

52

Choisissez les paramètres de la carte réseau comme indiqué dans la capture d’écran ci-dessus, puis cliquez

sur Next.

Page 53: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

53

Cliquez sur Next.

Page 54: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

54

Cliquez sur Finish.

Au cours de cette étape, vous définissez le serveur UAG en tant que configuration « Serveur unique ».

Page 55: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

55

Cliquez sur Define Server Topology.

Cliquez sur Next.

Page 56: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

56

Cliquez sur Single Server, puis sur Next.

Page 57: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

57

Cliquez sur Finish.

Cliquez sur Join Microsoft Update.

Page 58: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

58

Cliquez sur Next.

Page 59: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

59

Cliquez sur Use Microsoft Update when I check for updates (recommended), puis cliquez sur Next.

Page 60: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

60

Choisissez Yes ou No, puis cliquez sur Next.

Page 61: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

61

Cliquez sur Finish.

Page 62: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

62

Cliquez sur Close.

Cliquez sur Yes pour activer la configuration.

Page 63: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

63

Entrez un mot de passe, puis cliquez sur Next >.

Cliquez sur Activate.

Page 64: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

64

Cliquez sur Finish.

L’Assistant Activation est terminé ; en revanche, la configuration d’UAG n’est peut-être pas encore

complètement activée. Pour le vérifier, activez les messages d’information dans la fenêtre de message.

Dans le menu Messages, sélectionnez Filtrer les messages.

Activez la case à cocher Messages d’information.

Cliquez sur OK.

Patientez jusqu’à ce que la fenêtre de message affiche le message L’activation est terminée.

Page 65: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

65

9. Créer la jonction HTTP pour publier le site SharePoint Dans ce scénario, une jonction HTTP est utilisée à des fins de développement. L’utilisation d’une jonction

HTTP au lieu d’une jonction HTTPS accélère la configuration en éliminant les étapes liées à l’installation de

certificats de sécurité pour activer le protocole SSL (Secure Sockets Layer). Dans un environnement de

développement, il est également plus facile d’utiliser HTTP car cela vous évite d’avoir à recréer vos certificats

temporaires toutes les deux semaines. Dans un environnement de test et dans un environnement de

production, une jonction HTTPS est recommandée pour sécuriser les communications entre les appareils

mobiles et le serveur UAG. Voir Topologies de publication SharePoint

(http://go.microsoft.com/fwlink/?LinkId=216131) sur TechNet afin de découvrir les topologies les plus

utilisées pour déployer les serveurs qui exécutent les produits SharePoint 2010 via UAG.

Pour créer la jonction HTTP, cliquez avec le bouton droit sur HTTP Connections, puis cliquez sur New Trunk.

Cliquez sur Next.

Page 66: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

66

Au cours de l’étape 1 de l’Assistant Create Trunk Wizard, cliquez sur Portal Trunk, puis cliquez sur Next.

Page 67: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

67

Au cours de l’étape 2 de l’Assistant Create Trunk Wizard, cliquez sur ContosoMobile dans la zone de texte

Trunk name. Ce nom n’est pas une URL navigable ; il s’agit plutôt d’un nom convivial permettant d’identifier

la jonction HTTP.

Dans la zone de texte Public Host Name, entrez portal.contoso.com. Cette valeur expose un point de

terminaison à la jonction HTTP utilisé par UAG pour créer un seul environnement de portail qui publie toutes

les applications dans une seule page : par exemple, notre site SharePoint.

Sélectionnez l’adresse IP qui correspond à l’adresse IP du réseau externe de l’ordinateur virtuel du serveur UAG.

Cliquez sur Next.

Page 68: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

68

Au cours de l’étape 3 de l’Assistant Create Trunk Wizard, cliquez sur Add pour ouvrir la boîte de dialogue qui

vous permet d’ajouter le serveur d’authentification à la jonction.

Cliquez sur Add.

Dans la liste déroulante Server type, sélectionnez Active Directory.

Dans la zone de texte Server name, entrez demo2010a.contoso.com. Il s’agit du nom de domaine complet

(FQDN) du contrôleur de domaine qui s’exécute sur l’ordinateur virtuel SP2010-7a.

Page 69: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

69

Dans la section Connection settings, cliquez sur Define domain controllers.

Dans la section Connection settings, cliquez sur Define.

Dans la boîte de dialogue Domain Controllers, entrez l’adresse IP interne du contrôleur de domaine.

Sur l’ordinateur virtuel SP2010-7a, cette adresse IP est 192.168.150.1.

Cliquez sur OK.

Dans la section Search Settings, cliquez sur le bouton ... en regard de BaseDN.

Dans la boîte de dialogue Search Root, dans la liste déroulante Select Base DN, sélectionnez

CN=Users,DC=contoso,DC=com.

Cliquez sur OK.

Activez la case à cocher Include subfolders.

Affectez au paramètre Level of nested groups la valeur 0.

Dans la section Server access, dans la zone de texte User (domain\user), entrez contoso\administrator.

Dans la zone de texte password, entrez pass@word1.

Page 70: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

70

Cliquez sur OK.

Cliquez sur Yes.

Sélectionnez le serveur demo2010a.contoso.com, puis cliquez sur Select.

Page 71: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

71

Cliquez sur User provides credentials for each selected serve. (Dans un environnement de serveur unique

comme celui-ci, vous pourriez choisir User selects from a server list.)

Activez la case à cocher Use the same user name.

Cliquez sur Next.

Page 72: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

72

Cliquez sur Use Forefront UAG access policies.

À des fins de développement, les stratégies d’accès de Forefront UAG par défaut suffisent.

Dans un environnement de production, vous pouvez adapter ces stratégies à une configuration plus

spécifique à votre environnement.

Cliquez sur Next.

Page 73: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

73

À des fins de développement, les stratégies de point de terminaison de Forefront par défaut suffisent.

Dans un environnement de production, vous pouvez adapter ces stratégies à une configuration plus

spécifique à votre environnement.

Cliquez sur Next.

Page 74: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

74

La dernière page de l’Assistant Create Trunk Wizard affiche un résumé de la configuration de la jonction.

Cliquez sur Finish pour finaliser la configuration de la jonction.

Page 75: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

75

10. Créer l’application SharePoint Dans la section Applications de la console Forefront UAG Management, cliquez sur Ajouter.

Dans la page de l’Assistant Ajout d’application, cliquez sur Suivant.

Au cours de l’étape 2 de l’Assistant Ajout d’application, cliquez sur Web.

Dans la liste déroulante Web, sélectionnez Microsoft SharePoint Server 2010.

Page 76: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

76

Cliquez sur Suivant >.

Dans la zone de texte Nom de l’application, entrez Intranet Contoso.

Il s’agit d’un nom convivial pour l’application que vous publiez à l’aide du serveur UAG. Ce nom apparaît dans

la page d’accueil du portail UAG.

Page 77: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

77

Cliquez sur Suivant.

Page 78: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

78

Cliquez sur Suivant.

À des fins de développement, les stratégies de point de terminaison de Forefront par défaut suffisent.

Dans un environnement de production, vous pouvez adapter ces stratégies à une configuration plus

spécifique à votre environnement.

Cliquez sur Configure an application server.

Page 79: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

79

Cliquez sur Next.

Laissez le paramètre Address type défini sur IP/Host.

Dans la liste Addresses, entrez le nom d’hôte ou l’adresse IP interne du serveur qui exécute SharePoint

Server 2010, 192.168.150.1. En fonction de votre environnement, vous pouvez également choisir d’utiliser le

nom de domaine complet (FQDN) du serveur qui exécute SharePoint Server ou l’adresse IP utilisée pour le

matériel d’équilibrage de charge.

Dans les listes Chemins d’accès, laissez l’entrée / par défaut. Celle-ci indique que l’application SharePoint

publiée l’est au niveau de la racine.

Cliquez sur Port Http, puis entrez 80 dans la zone.

Comme mentionné précédemment, l’utilisation d’un port HTTP au lieu d’un port HTTPS simplifie l’installation

et la configuration du développement. Dans un environnement de production, un port HTTPS doit être utilisé

pour chiffrer les informations d’identification transmises entre les ordinateurs clients et le serveur UAG.

Dans la zone de texte Public host name, entrez spwp7intranet. Il s’agit de l’URL de mappage des accès de

substitution sur le serveur qui exécute SharePoint qui correspond à la collection de sites que vous publiez.

Page 80: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

80

Cette valeur correspond à l’URL que le serveur UAG utilise pour publier l’application sur les ordinateurs

clients. Lorsque vous accédez à la collection de sites intranet.contoso.com via les clients du serveur UAG,

utilisez l’URL http://spwp7intranet.contoso.com. Le serveur UAG achemine alors la requête à SharePoint

sous la forme http://spwp7intranet.contoso.com une fois que l’utilisateur est authentifié. Le mappage des

accès de substitution SharePoint (à configurer lors d’étapes ultérieures) permet de mapper la requête sur

http://intranet.contoso.com.

Cliquez sur Suivant.

Activez la case à cocher Utiliser SSO.

Cliquez sur Ajouter.

Dans la boîte de dialogue Authentication and Authorization Server, sélectionnez demo2010a.contoso.com.

Page 81: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

81

Cliquez sur Select.

Dans la section Select client authentication method, cliquez sur Both.

Activez la case à cocher Allow rich clients to bypass trunk authentication.

Activez la case à cocher Use Office Forms Based Authentication for Office client applications.

Cliquez sur Next.

Page 82: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

82

Cliquez sur Yes.

Dans la boîte de dialogue Portal Link, activez la case à cocher Open in a new window. Le lien du portail est

facultatif car l’application Windows Phone 7 accède directement aux API SharePoint, mais il constitue un bon

outil de dépannage.

Page 83: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

83

Cliquez sur Next.

Activez la case à cocher Authorize all users.

Dans un environnement de développement, l’octroi à tous les utilisateurs de l’accès à la collection de sites

SharePoint publiée offre le maximum de flexibilité à des fins de test. Dans un environnement de production,

octroyez uniquement l’accès aux utilisateurs et groupes spécifiques autorisés à accéder à la collection de

sites SharePoint.

Page 84: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

84

Cliquez sur Next.

Page 85: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

85

Cliquez sur Finish.

11. Configurer l’application SharePoint Dans la console Forefront UAG Management, dans la section Applications, sélectionnez Intranet Contoso,

puis cliquez sur Edit.

Page 86: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

86

Sous l’onglet Portal Link, activez les cases à cocher suivantes : Computer portal, Premium mobile portal et

Non-premium mobile portal.

Page 87: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

87

Cliquez sur OK.

12. Activer la configuration Dans la console Forefront UAG Management, dans la barre d’outils, cliquez sur le bouton Activate.

La boîte de dialogue Activate Configuration s’affiche.

Page 88: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

88

Cliquez sur Activate.

La nouvelle configuration est activée sur le serveur UAG.

Cliquez sur Finish.

Patientez jusqu’à ce que la fenêtre de message située au bas de la console d’administration de Microsoft

Forefront UAG affiche le message Activation completed successfully. Même si la boîte de dialogue Activation

Configuration a indiqué que la configuration s’est correctement activée, celle-ci ne l’est pas complètement

tant que le message n’apparaît pas dans la fenêtre de message.

Page 89: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

89

13. Configurer et vérifier les mappages des accès de substitution SharePoint SharePoint doit être configuré afin de répondre aux requêtes de http://spwp7intranet.contoso.com et

mapper ces requêtes sur http://intranet.contoso.com.

1. Dans l’Administration centrale de SharePoint 2010, accédez à la section Gestion des applications et choisissez

Gestion des applications Web.

2. Sélectionnez Intranet, puis choisissez Étendre (Étendre l’application Web) dans le ruban.

3. Dans la boîte de dialogue Étendre une application Web à un autre site Web IIS, entrez les paramètres

suivants :

Nom : SharePoint - spwp7intranet.contoso.com – 80

Port : 80

En-tête de l’hôte : spwp7intranet.contoso.com

Zone : Intranet

4. Cliquez sur OK.

5. Confirmez les paramètres en accédant à Gestion des applications | Applications Web | Configurer les

mappages d’accès de substitution.

6. Choisissez la Collection de mappages des accès de substitution de l’intranet. Vous devez alors voir la nouvelle

entrée pour http://spwp7intranet.com.

14. Ajouter des entrées de fichiers d’hôtes à l’environnement de développement Dans ce scénario, les entrées de fichiers d’hôtes sont utilisées pour résoudre le serveur UAG et le serveur qui

exécute SharePoint. Vous pourriez également utiliser des entrées DNS, mais les fichiers d’hôtes constituent

une solution de contournement acceptable dans un environnement de développement. Dans un

environnement de production, vous devez utiliser des entrées DNS pour la résolution de noms.

Sur l’ordinateur sur lequel vous exécutez l’émulateur de Windows Phone 7, ajoutez une entrée au fichier

d’hôtes afin de pointer vers le nom d’hôte public et l’adresse IP associée à l’application du portail intranet de

Contoso sur le serveur UAG. Le fichier d’hôtes se trouve dans c:\windows\system32\drivers\etc.

192.168.1.171 spwp7intranet.contoso.com

Vous pouvez éventuellement ajouter une entrée à la page d’accueil du portail UAG.

192.168.1.171 portal.contoso.com

Page 90: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

90

15. Tester la configuration Sur l’ordinateur sur lequel vous exécutez l’émulateur de Windows Phone 7, fermez tous les navigateurs Web

pour veiller à ce que l’entrée du fichier d’hôtes soit reconnue. Ensuite, ouvrez Internet Explorer et naviguez

jusqu’à http://spwp7intranet.contoso.com.

L’application du serveur UAG et le portail d’accès au réseau apparaissent.

Téléchargez et installez le contrôle ActiveX.

Cliquez sur Installer.

Page 91: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

91

Cliquez sur Oui.

Activez la case à cocher Trust this site, puis cliquez sur Trust.

Entrez les informations d’identification d’un utilisateur qui a accès au site SharePoint publié, puis cliquez sur

Log On.

Page 92: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

92

Le site SharePoint s’affiche dans le navigateur Web. À ce stade, le site SharePoint publié via UAG peut

désormais être accessible via un appareil mobile tel qu’un appareil Windows Phone 7.

Page 93: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

93

Vous pouvez éventuellement tester l’accès à la page du portail UAG en entrant l’URL du portail

http://portal.contoso.com dans un navigateur.

Page 94: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

94

UAG présente également un portail mobile premium aux clients tels que Windows Phone. Depuis le

navigateur de votre émulateur, entrez l’URL du portail http://portal.contoso.com. Vous êtes alors redirigé

vers la page de connexion :

Entrez les informations d’identification de Contoso (par exemple Contoso\tonip et pass@word1) et vous êtes

redirigé vers le portail mobile.

Page 95: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

95

Sélectionnez le lien Intranet Contoso et vous devez voir la page d’accueil de SharePoint.

16. Tester le flux RSS de l’échange de News Lorsque les produits SharePoint 2010 sont publiés via UAG, certaines des pages par défaut ne sont pas

correctement analysées. La page Activityfeed.aspx qui restitue l’échange de News consolidé est d’une

importance capitale pour ce document. Testez votre configuration en suivant les directives ci-dessous.

Page 96: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

96

Activityfeed.aspx Accédez à la page Mon échange de News, puis choisissez d’afficher le flux RSS.

L’erreur suivante s’affiche.

Résolution La règle par défaut de masquage du journal est appliquée à la page ActivityFeed.aspx. Pour modifier cette

règle afin d’empêcher qu’elle ne s’applique, effectuez les étapes suivantes :

Ouvrez le fichier de configuration AppWrap approprié dans un éditeur de texte. Les fichiers se trouvent dans

le répertoire %ProgramFiles%\Microsoft Forefront Unified Access

Gateway\von\Conf\WizardDefaults\AppWrapTemplates.

Sauvegardez et modifiez le fichier AppWrap approprié au protocole de votre portail :

HTTP_WhlFiltAppWrap_ForPortal pour HTTP et HTTPS_WhlFiltAppWrap_ForPortal pour HTTPS.

Page 97: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

97

Localisez la ligne :

<!-- for sharepoint 2010 conditional appwrap hide log off -->

<URL case_sensitive="false">.*\.aspx.*</URL>

Modifiez-la comme suit :

<!-- for sharepoint 2010 conditional appwrap hide log off changed to

exclude ActivityFeed.aspx -->

<URL case_sensitive="false">^.*(?<!(^|\\|/)(activityfeed))\.aspx.*</URL>

Enregistrez le fichier et activez la nouvelle configuration.

Revenez à la page Mon échange de News, puis cliquez sur le bouton RSS. La page doit être correctement

restituée et les URL correctement réécrites.

Page 98: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

98

Ressources

Forefront Unified Access Gateway sur TechNet http://go.microsoft.com/fwlink/?linkid=216132&clcid=0x40C

Closer to the Edge Blog Auteur : Jason Jones

Forefront UAG SP1 Endpoint Assessment Changes Impact Mobile Devices like iPads/iPhones (Les

modifications de l’évaluation des points de terminaison Forefront UAG SP1 ont un impact sur les appareils

mobiles tels que les iPads/iPhones) (http://go.microsoft.com/fwlink/?LinkId=216133)

Blog de l’équipe des services Web Silverlight Solution de contournement pour accéder à certains services ASMX à partir de Silverlight 4

(http://go.microsoft.com/fwlink/?LinkId=216134)

À propos des auteurs

Todd Baginski, MVP Todd est un consultant indépendant, cinq fois récompensé par le titre de MVP (Most Valuable

Professional) pour Microsoft SharePoint. Il utilise SharePoint, Silverlight, Office, Windows

Phone 7 et les technologies .NET pour créer des sites Web et des solutions personnalisées

destinés aux travailleurs de l’information. Todd est l’auteur et le présentateur du contenu de la

partie BCS (Business Connectivity Services) du programme SharePoint Microsoft Certified

Masters (MCM) et un intervenant régulier des conférences TechEd, SharePoint Connections et

Microsoft SharePoint. Todd apporte régulièrement sa contribution aux colonnes du magazine

SharePointPro Connections et récemment, il a également mis son expertise technique au service

de Scot Hillier et Brad Stevenson pour leur livre Professional Business Connectivity Services in

SharePoint 2010. Todd a également créé les supports de formation de Microsoft Business

Productivity Online Suite (BPOS) pour SharePoint Online (SPO) 2010 pendant les stades alpha et

bêta de BPOS 2010, et il a présenté les supports de formation BPOS/SPO lors d’une conférence

post-TechReady 11 destinées aux employés de Microsoft uniquement.

Todd est une personne très active qui aime passer du temps avec sa famille et s’adonner au ski

dès qu’il en a l’opportunité. Son adresse pour le contacter est [email protected].

Matthew McDermott, MVP Matthew McDermott, MVP pour Microsoft SharePoint Server, est l’un des membres fondateurs

d’Aptillon, Inc. et le principal consultant d’AbleBlue à Austin, Texas, États-Unis. AbleBlue se

spécialise dans le conseil en matière d’intégration, de stratégie et d’implémentation de

SharePoint. Matthew est un auteur qui se spécialise dans les technologies SharePoint, et plus

particulièrement dans la gestion de contenu Web, la collaboration, la recherche et les réseaux

sociaux. Il a mené à bien des implémentations de SharePoint pour des entreprises incluses dans

le classement Fortune 500 depuis 2002. Le blog de Matthew (www.ableblue.com/blog) traite de

Page 99: Création d’applications Windows Phone 7 à l’aide …download.microsoft.com/download/E/0/5/E05FCCAB-FBCF-4D12...Création d’applications Windows Phone 7 à l’aide des produits

99

sujets d’intérêt pour les développeurs, les professionnels de l’informatique et également les

utilisateurs finals. Son adresse pour le contacter est [email protected].

Pour occuper son temps libre, Matthew est maître-chien pour K9 Search • Austin, bénévole dans

une équipe de recherche K9 Search au service du FBI et des services de police d’Austin et de

San Antonio. Cuisinier et barman émérite, Matt passe autant de temps libre avec sa femme que

ses chiens le lui permettent.

Ben Ari Ben Ari est ingénieur en sécurité senior chez Microsoft spécialisé dans UAG. Il fournit de l’aide

pour ce produit aux clients Premier et Professional de Microsoft dans le monde entier. Ben est

également un journaliste et bloggeur très actif : il a récemment publié l’ouvrage intitulé

Microsoft Forefront UAG 2010 Administrator’s Handbook (ISBN 978-1849681629). Le blog de

Ben se trouve à l’adresse http://blogs.technet.com/b/ben.