création d’applications windows phone 7 à l’aide...
Post on 30-May-2020
2 Views
Preview:
TRANSCRIPT
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.
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.
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
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
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 ?
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.
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.
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.
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.
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.
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.
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.
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);
}
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é
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);
});
}
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()
{
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
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;
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);
}
);
}
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);
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, "*");
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();
}
}
);
}
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) =>
{
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()
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 :
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 +
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(() =>
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);
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);
}
}
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;
}
}
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
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.
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).
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é.
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.
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.
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.
38
Définissez les paramètres TCP/IP de la carte réseau externe sur l’ordinateur hôte Hyper-V comme suit.
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.
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.
41
Définissez les paramètres TCP/IP de la carte réseau externe sur l’ordinateur virtuel SharePoint Server comme suit.
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
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.)
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.
45
Dans la page de l’Assistant Welcome, cliquez sur Next >.
46
Cliquez sur I accept the Licensing Terms for Microsoft Software, puis cliquez sur Next.
47
Dans la page Select Installation Location, cliquez sur Next.
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.
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.
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.
51
Cliquez sur Next.
52
Choisissez les paramètres de la carte réseau comme indiqué dans la capture d’écran ci-dessus, puis cliquez
sur Next.
53
Cliquez sur Next.
54
Cliquez sur Finish.
Au cours de cette étape, vous définissez le serveur UAG en tant que configuration « Serveur unique ».
55
Cliquez sur Define Server Topology.
Cliquez sur Next.
56
Cliquez sur Single Server, puis sur Next.
57
Cliquez sur Finish.
Cliquez sur Join Microsoft Update.
58
Cliquez sur Next.
59
Cliquez sur Use Microsoft Update when I check for updates (recommended), puis cliquez sur Next.
60
Choisissez Yes ou No, puis cliquez sur Next.
61
Cliquez sur Finish.
62
Cliquez sur Close.
Cliquez sur Yes pour activer la configuration.
63
Entrez un mot de passe, puis cliquez sur Next >.
Cliquez sur Activate.
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.
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.
66
Au cours de l’étape 1 de l’Assistant Create Trunk Wizard, cliquez sur Portal Trunk, puis cliquez sur Next.
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.
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.
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.
70
Cliquez sur OK.
Cliquez sur Yes.
Sélectionnez le serveur demo2010a.contoso.com, puis cliquez sur Select.
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.
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.
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.
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.
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.
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.
77
Cliquez sur Suivant.
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.
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.
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.
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.
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.
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.
84
Cliquez sur Next.
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.
86
Sous l’onglet Portal Link, activez les cases à cocher suivantes : Computer portal, Premium mobile portal et
Non-premium mobile portal.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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 todd@toddbaginski.com.
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
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 matthew@ableblue.com.
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.
top related