Cet article fait partie d'une série d'articles en quatre parties sur la création d'un service Web prenant en charge les revendications et sa consommation à partir de SharePoint Business Connectivity Services (SharePoint BCS). Depuis peu que je travaille avec l'authentification basée sur les revendications, l'expérience que j'en fais est qu'il n'y a pas énormément d'étapes pour la faire fonctionner, mais si vous commettez la moindre erreur cela ne fonctionnera tout simplement pas et demandera un peu d'efforts afin de déterminer le problème. Mon approche dans les articles de cette série est de fournir certaines procédures avec des petites étapes, accompagnées d'instructions pour valider, tout au long du parcours, que ce que vous avez fait au fur et à mesure fonctionne correctement.

Langage/Outil/Technologie : SharePoint 2010, Business Connectivity Services, WCF, C#, Visual Studio 2010, WIF.

Commentez ce tutoriel : Commentez

- Titre : Création d'un service Web prenant en charge les revendications et sa consommation à partir de SharePoint BCS

- Auteurs : Eric White, Deepin Prayag

- Parution : 4 février 2013

- Mise à jour : 12 février 2013

- Licence : Copyright © 2013 Eric White. CDATA[Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC. Cette page est déposée à la SACD.

Sommaire

- Traduction

- Introduction

- Prise en main de la création d'un service Web WCF

- Pré-requis pour la création de l'exemple

- Installation de WCF et IIS

- Inscription du modèle de service

- Mise à jour des mappages de scripts

- Création d'un service Web

- Conclusion

- Remerciements

Traduction

Cet article est la traduction la plus fidèle possible de l'article original d'Eric White, Getting Started Building a WCF Web Service.

Introduction

Cet article est le premier d'une série d'articles en quatre parties qui montre comment créer un service Web prenant en charge les revendications et comment le consommer à partir de SharePoint Business Connectivity Services. Dans cette première partie de la série, nous allons prendre en main la création d'un service Web WCF.

Vous pouvez consulter les autres articles de la série ici.

Prise en main de la création d'un service Web WCF
(le présent article)

Montre comment créer un service Web très simple en utilisant WCF. Montre comment héberger ce service Web en utilisant IIS.

Détermination de l'identité de l'appelant au sein du service Web WCF

Améliore l'exemple développé dans l'article précédent de sorte que le service Web puisse rapporter sur l'identité de son appelant de manière rigoureuse.

Établissement de la confiance entre un service Web WCF et le Security Token Service de SharePoint 2010

Configure l'exemple développé dans l'article précédent de sorte qu'il utilise un certificat auto-signé pour prendre en charge une connexion sécurisée.

Consommation d'un service Web WCF prenant en charge les revendications en tant que type de contenu externe SharePoint 2010

Examine pas à pas la procédure pour la consommation d'un service Web prenant en charge les revendications en tant que type de contenu externe SharePoint 2010.

Prise en main de la création d'un service Web WCF

Depuis peu que je travaille avec l'authentification basée sur les revendications, l'expérience que j'en fais est qu'il n'y a pas énormément d'étapes pour la faire fonctionner, mais si vous commettez la moindre erreur cela ne fonctionnera tout simplement pas et demandera un peu d'efforts afin de déterminer le problème. Mon approche dans cet article et les prochains articles de la série est de fournir certaines procédures avec des petites étapes, accompagnées d'instructions pour valider, tout au long du parcours, que ce que vous avez fait au fur et à mesure fonctionne correctement. La première étape est donc de créer un service Web WCF, de l'héberger en utilisant IIS et de valider qu'il fonctionne.

Cet article montre comment créer un service Web très simple en utilisant Windows Communications Foundation (WCF). Il y une caractéristique particulière du service Web que je présente dans cet article, celle-ci étant : bien que le service Web soit très simple, il peut être consommé en tant que type de contenu externe à partir de Business Connectivity Services. En outre, la procédure présentée dans cet article montre comment héberger ce service Web en utilisant Internet Information Services (IIS).

Ce service Web ne contient que deux méthodes : une méthode de
recherche

(

«

finder »)
pour récupérer une collection d'éléments, et une méthode de
recherche spécifique

(« specific finder »)
pour récupérer un seul élément particulier. La « base de données » sous-jacentes à la collection n'est qu'une liste initialisée. Le « schéma » de cette petite « base de données » est très simple. Il s'agit d'une seule table (fichier plat) composée de deux champs : un champ de nombres entiers, CustomerID, et un champ de chaînes, CustomerName. CustomerID représente un identifiant unique.

return new List<Customer>()
{
new Customer
{
CustomerID = 1,
CustomerName = "Bob",
},
new Customer
{
CustomerID = 2,
CustomerName = "Bill",
},
new Customer
{
CustomerID = 3,
CustomerName = "Cheryl",
},
};

Après avoir créé et configuré ce service Web, vous pouvez utiliser SharePoint Designer 2010 pour créer un type de contenu externe à partir du service Web, puis afficher les données dans une liste SharePoint.

Comme vous le savez probablement, BCS dans SharePoint Server 2010 est accessible en lecture/écriture. Si vous fournissez des méthodes supplémentaires pour créer, mettre à jour et supprimer des éléments, vous pouvez maintenir intégralement les données dans une liste. Je suis intéressé à garder ce service Web absolument aussi simple que possible, il s'agit donc seulement d'une implémentation en lecture seule. Mon accent sera mis sur les questions de sécurité et d'identité. La façon dont la base de données est stockée, l'emplacement auquel elle est stockée ou les détails du schéma ne sont pas pertinents dans le cadre de cet article.

La procédure présentée ici concerne Windows Server 2008 R2 et Windows Server 2008. Vous pouvez créer ce service Web en utilisant soit Visual Studio 2010 soit Visual Studio 2008.

Vous pouvez créer, exécuter et tester le service Web présenté dans cet article sur n'importe quel ordinateur de développement qui exécute IIS. Toutefois, si vous souhaitez vous connecter à ce service Web en tant que type de contenu externe en utilisant BCS, alors créez cet exemple sur une machine de développement SharePoint 2010, de sorte à ce que le serveur SharePoint 2010 et l'exemple de service Web soient exécutés sur le même ordinateur. Vous pouvez placer ce service Web sur une autre machine et le consommer en tant que type de contenu externe, toutefois, dans cette situation, vous devez soit supprimer la sécurité soit créer un service Web prenant en charge les revendications.

Comme je l'ai indiqué, la procédure que je présente ici montre comment héberger le service Web sous IIS. C'est la façon que la plupart des responsables d'implémentation d'un tel service Web voudront l'héberger. Son hébergement en tant que service d'IIS procure de nombreux avantages tels que le recyclage du processus, la surveillance de l'intégrité du processus et l'activation basée sur les messages.

Pré-requis pour la création de l'exemple

Cette procédure concerne Windows Server 2008 ou Windows Server 2008 R2. Dans les deux cas, j'ai commencé sur une machine dont le système d'exploitation bénéficiait des correctifs les plus récents. Ensuite, j'ai installé les rôles et fonctionnalités nécessaires afin qu'Internet Information Services (IIS) soit installé et opérationnel. En outre, les procédures présentées dans cet article requièrent la version 3.5.1 du Framework .NET, ainsi que Visual Studio 2008 ou Visual Studio 2010.

Installation de WCF et IIS

Utilisez le Gestionnaire de serveur pour installer le Rôle Serveur Web (IIS) et la fonctionnalité .NET Framework 3.5.1.

Pour exécuter cet exemple, le seul Rôle qui est requis est Serveur Web (IIS).

Une fois que vous avez ajouté le rôle Serveur Web (IIS), l'Assistant Ajout de Rôles vous demandera de sélectionner des Services de Rôle. Sélectionnez Développement d'applications.

Pour installer le Framework .NET, ajoutez les Fonctionnalités du .NET Framework 3.5.1.

Lorsque vous êtes en train d'installer cette fonctionnalité sur Windows Server 2008 (pas sur R2), après avoir sélectionné les Fonctionnalités .NET Framework 3.0, sélectionnez Activation de WCF. Cette sélection est activée par défaut sur Windows Server 2008 R2.

WCF et IIS doivent être installés pour que les services WCF hébergés par IIS fonctionnent correctement. Les procédures pour installer WCF (dans le cadre du .NET Framework 3.0) et IIS varient selon le système d'exploitation que vous utilisez. Si vous installez sur un système d'exploitation autre que Windows Server 2008 ou Windows Server 2008 R2, vous devez obtenir le Package redistribuable de Microsoft .NET Framework 3.0 pour télécharger et installer .NET Framework 3.0. Voir « Installing IIS » pour davantage d'instructions à ce sujet.

Inscription du modèle de service

Pour exécuter cet exemple, vous devez inscrire cette version de WCF et mettre à jour les mappages de scripts à la racine de la méta-base IIS.

1. Démarrez une invite de commandes de Visual Studio. Exécutez-la en tant qu'.

Cliquez sur Démarrer > Tous les programmes > Visual Studio 2010 > Outils Visual Studio, faites un clic droit sur l'Invite de commandes de Visual Studio, puis sélectionnez Exécuter en tant qu'administrateur.

L'invite de commandes de Visual Studio se trouve à un emplacement similaire pour Visual Studio 2008.

2. Changez pour accéder au répertoire :

c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation en saisissant cd "c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation"

3. Dans l'invite de commandes, saisissez :

Cela n'avait pas lieu d'être une invite de commandes de Visual Studio, mais l'étape suivante requiert une invite de commandes de Visual Studio, j'en ai donc créé une à cette étape à des fins d'efficacité.

Mise à jour des mappages de scripts

Dans l'invite de commandes, saisissez :

aspnet_regiis.exe -i

Création d'un service Web

1. Créez un répertoire, , qui va contenir le service Web. Si vous utilisez un répertoire différent de celui-ci, vous allez devoir modifier ces procédures en fonction.

2. Démarrez Visual Studio 2010 (ou 2008).

3. Cliquez sur > > .

1. Pour la catégorie de modèles installés, sélectionnez .

2. Pour le modèle, sélectionnez .

3. Ciblez le .

4. Pour l'emplacement du projet, naviguez au répertoire que vous avez créé à l'étape 1.

5. Nommez le projet .

6. Ne créez pas de répertoire pour la solution.

Pensez à cibler .NET Framework 3.5. Par défaut, Visual Studio va cibler .NET Framework 4.0, et vous devez changer pour la version 3.5 pour que la procédure présentée ici fonctionne.

4. Dans le projet, renommez en. Visual Studio 2010 demandera si vous souhaiteriez également effectuer un renommage de toutes les références à l'élément de code IService1 dans ce projet ? Cliquez sur . En fait, nous allons remplacer tout le code dans tous les modules, donc qu'importe si vous cliquez sur ou sur .

5. Dans le projet, renommez en. Après avoir renommé ces éléments, l'Explorateur de solutions apparaîtra comme suit.

6. Remplacez par la ligne de balisage unique suivante. sur, puis sélectionnez . Copiez la ligne suivante, collez-le dans Visual Studio et enregistrez le projet.

<%@ ServiceHost Language="C#" Debug="true" Service="CustomersService.Customers" CodeBehind="Customers.svc.cs"%>

7. Remplacez par le code suivant.

using System;
using System.Collections.Generic;
using System.Linq;

namespace CustomersService
{
public class Customers : ICustomers
{
// Finder
public List<Customer> GetAllCustomers()
{
return new List<Customer>()
{
new Customer
{
CustomerID = 1,
CustomerName = "Bob",
},
new Customer
{
CustomerID = 2,
CustomerName = "Bill",
},
new Customer
{
CustomerID = 3,
CustomerName = "Cheryl",
},
};
}

// Specific finder
public Customer GetCustomerByID(int CustomerID)
{
return GetAllCustomers().FirstOrDefault(c => c.CustomerID == CustomerID);
}
}
}

8. Remplacez par le code suivant.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;

namespace CustomersService
{
[ServiceContract]
public interface ICustomers
{
[OperationContract] //finder
List<Customer> GetAllCustomers();

[OperationContract] //specificFinder
Customer GetCustomerByID(int CustomerID);
}

[DataContract]
public class Customer
{
[DataMember]
public int CustomerID { get; set; }

[DataMember]
public string CustomerName { get; set; }
}
}

9. Remplacez par le balisage suivant. Dans l'Explorateur de solutions, sur , puis sélectionnez . Copiez, collez et enregistrez les lignes suivantes.

Il s'agit du Web.config qui configure ce service Web particulier. Il est localisé à l'emplacement C:\MyWebService\CustomersService.

<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<services>
<service behaviorConfiguration="CustomersService.ServiceBehavior"
name="CustomersService.Customers">
<endpoint address="" binding="wsHttpBinding" contract="CustomersService.ICustomers">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="CustomersService.ServiceBehavior">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

10. Compilez l'application.

11. Ajoutez une application au site Web par défaut.

1. Démarrez le . Cliquez sur > > > .

2. Dans le , développez , faites un sur , puis sélectionnez .

3. Dans la boîte de dialogue , dans le champ , saisissez . Dans le champ , naviguez à . Cliquez sur deux fois.

12. Validez que le service Web est en cours d'exécution. Démarrez Internet Explorer et naviguez à . Si le service Web est en cours d'exécution, vous devrez voir ceci :

Une autre approche intéressante pour tester le service Web consiste à utiliser le client test WCF. Démarrez une invite de commandes de Visual Studio (ou utilisez celle qui est ouverte depuis le début de cette procédure). Tapez wcftestclient pour exécuter le client test WCF. Cliquez sur Fichier > Ajouter un service. Saisissez http://localhost/Customers/Customers.svc comme adresse du point de terminaison, puis cliquez sur OK.

Si le service a été ajouté avec succès, vous allez voir les méthodes que le service expose.

Double-cliquez sur GetAllCustomers. Cela ouvre une fenêtre qui vous permet de configurer et de d'appeler la requête. Cliquez sur Appeler pour voir la réponse du service Web.

Conclusion

Dans ce premier article de la série, nous avons vu comment créer un service Web, que nous avons compilé et que nous avons hébergé sous IIS. Dans l'article suivant, nous ajouterons quelques fonctionnalités de Windows Identity Foundation (WIF) que nous pouvons utiliser de manière à déterminer l'identité de l'appelant du service Web.

Remerciements

Je tiens ici à remercier Eric White de m'avoir autorisé à traduire son article.
Je remercie xyz pour sa relecture technique et ses propositions.
Je remercie également abc pour sa relecture orthographique et ses propositions.

Création d'un service Web prenant en charge les revendications et sa consommation à partir de SharePoint BCS

Partie 1 : Prise en main de la création d'un service Web WCF

Auteurs

| Eric White | Deepin Prayag |