Partager via


Créer un service de données OData à utiliser en tant que système externe BCS

Découvrez comment créer un service Internet dédié WCF qui utilise OData pour envoyer des notifications à SharePoint lorsque les données sous-jacentes changent. Ces notifications sont utilisées pour déclencher des événements qui sont attachés à des listes externes.

Cet article explique comment créer un ASP.NET Windows Communication Foundation (WCF) Service de données pour exposer la base de données exemple AdventureWorks 2012 LT. Cela vous permet de vous permet d'accéder aux données par le biais du Kit de développement Open Data protocol (OData). Lorsque l’accès est établi via OData, vous pouvez configurer un type de contenu externe Business Connectivity Services (BCS) qui permettra à SharePoint de consommer les données de la base de données externe. Pour améliorer encore davantage cette source OData, vous pouvez ajouter des contrats de service au service WCF qui activera BCS s'abonner à des notifications qui indiquent que les données externes a changé.

Conditions requises pour la création du service OData

Les éléments suivants sont requis pour créer le service OData dans cet article :

Pour plus d’informations sur la configuration de votre environnement de développement, voir Configurer un environnement de développement général pour SharePoint.

Concepts de base pour la création d'un service OData

Le tableau 1 répertorie des articles qui vous aideront à comprendre les concepts fondamentaux de la création d'un service de WCF à l'aide de OData et le contenu externe.

Tableau 1. Concepts de base pour la création d'un service OData

Ressource Description
À l'aide de sources OData avec Business Connectivity Services dans SharePoint
Fournit des informations pour vous aider à créer des types de contenu externes basés sur des sources OData et à utiliser ces données dans les composants SharePoint ou Office 2013.
Comment : créer un type de contenu externe d'une source OData en SharePoint
Découvrez comment utiliser Visual Studio 2012 pour découvrir une source OData publiée et créer un type de contenu externe réutilisable à utiliser dans BCS dans SharePoint.
Open Data Protocol
Fournit des informations sur le protocole d'échange de données, y compris les définitions de protocole, architecture d'informations et des exemples d'utilisation.
Vue d'ensemble des Services de données WCF
WCF Services de données permet la création et la consommation des services de données pour le site web ou d'un intranet à l'aide de OData. OData vous permet d'exposer vos données en tant que ressources adressables par URI.
Développement et déploiement des Services de données WCF
Fournit des informations sur le développement et déploiement WCF Data Services.

Étapes nécessaires pour créer le système externe

Les étapes suivantes devront être achevée

  • Installer la base de données exemple AdventureWorks 2012 LT

  • Créer un Service OData

  • Définir des autorisations de l'accès

  • Tester le service

  • Ajouter des fonctionnalités pour la fonctionnalité BCS supplémentaire

Installation de la base de données d'exemple

Un système externe est généralement une base de données et pour cette raison, cet exemple montre comment utiliser la base de données exemple AdventureWorks 2012 LT pour représenter une source de données confidentielles.

Les étapes suivantes seront

Comment créer l' WCF service OData

Création d'un service Windows Communication Foundation (WCF) qui est accessible par le biais du protocole OData est relativement simple. Visual Studio 2012 fournit plusieurs outils de découvrir automatiquement et de modélisation de données à partir de différentes sources de données. Ainsi, vous permet de créer des connexions et des interfaces à des données dans les bases de données SQL Server et d'autres types de magasins de données qui peuvent ensuite être manipulés par programme à l'aide d'un modèle objet complet.

Toutefois, pour que SharePoint permette à BCS de recevoir des notifications de systèmes distants lorsque les données sous-jacentes ont changé, vous devez modifier le service WCF pour répondre à ces modifications.

Pour créer un nouveau projet WCF

  1. Dans Visual Studio, dans le menu fichier, choisissez Nouveau, projet.

  2. Dans la boîte de dialogue Nouveau projet, sélectionnez le modèle Web, puis choisissez Application Web ASP.NET.

  3. Entrez AdventureWorksService pour le nom du projet et cliquez sur OK.

  4. Dans L'Explorateur de solutions, ouvrez le menu contextuel du projet ASP.NET que vous venez de créer et choisissez Propriétés.

  5. Sélectionnez l'onglet Web et définissez la valeur de la zone de texte port spécifique à8008.

Pour définir le modèle de données

  1. Dans L'Explorateur de solutions, ouvrez le menu contextuel du projet ASP.NET et choisissez Ajouter un nouvel élément.

  2. Dans la boîte de dialogue Ajouter un nouvel élément, sélectionnez le modèle de données, puis ADO.NET Entity Data Model.

  3. Le nom du modèle de données, tapez AdventureWorks.edmx.

  4. Dans l' Assistant Entity Data Model, sélectionnez Générer à partir de la base de données, puis cliquez sur suivant.

  5. Connectez le modèle de données à la base de données en effectuant l'une des opérations suivantes, puis cliquez sur suivant.

  • Si vous n'avez pas une connexion de base de données est déjà configurée, cliquez sur Nouvelle connexion et créer une nouvelle connexion.

  • Si vous disposez d'une connexion de base de données déjà configurée pour se connecter à la base de données Northwind, choisissez cette connexion dans la liste des connexions.

  • Dans la page finale de l'Assistant, activez les cases à cocher pour toutes les tables dans la base de données et désactivez les cases à cocher pour les vues et les procédures stockées.

  1. Cliquez sur Terminer pour fermer l'Assistant.

Pour créer le service de données

  1. Dans L'Explorateur de solutions, ouvrez le menu contextuel pour votre projet ASP.NET, puis choisissez Ajouter un nouvel élément.

  2. Dans la boîte de dialogue Ajouter un nouvel élément, choisissez le Service de données WCF.

  3. Le nom du service, tapez AdventureWorks.

    Visual Studio crée les fichiers de code et de balisage XML pour le nouveau service. Par défaut, la fenêtre de l’éditeur de code s’ouvre. Dans Explorateur de solutions, le service aura le nom AdventureWorks, avec l’extension .svc.cs ou .svc.vb.

  4. Remplacez le commentaire /* TODO: put your data source class name here */ dans la définition de la classe qui définit le service de données par le type qui est le conteneur d’entités du modèle de données, qui dans ce cas est AdventureWorksEntities. La définition de classe doit se présenter comme suit :

  
public class AdventureWorks : DataService<AdventureWorksEntities>

Par défaut, lorsqu'un service WCF est créé, il n'est pas accessible en raison de sa configuration de la sécurité. La prochaine étape vous permet de que spécifier qui peut y accéder et les droits dont ils disposent.

Pour activer l'accès aux ressources de service de données

  • Dans le code pour le service de données, remplacez le code de l'espace réservé dans la fonction InitializeService avec ce qui suit.
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);

Cela permet de clients autorisés à avoir lu et l'accès en écriture aux ressources pour les jeux d'entités spécifié.

Remarque

[!REMARQUE] Tout client qui peut accéder à l'application de ASP.NET peut également accéder les ressources qui sont exposés par le service de données. Dans un service de données de production, afin d'empêcher tout accès non autorisé à des ressources, vous devez également sécuriser l'application proprement dite. Pour plus d’informations, consultez Sécurisation des WCF Data Services.

Pour BCS recevoir des notifications, il doit être un mécanisme sur la source de données principale qui accepte une demande à être ajoutés et supprimés d'abonnements aux notifications.

La dernière étape de création du service consiste à ajouter des opérations de service pour les stéréotypes Subscribe et Unsubscribe qui sont définies dans le modèle BDC.

Pour ajouter des opérations de service pour s'abonner et annuler l'abonnement de stéréotypes

  • Dans la page AdventureWorks.cs, ajoutez la déclaration de variable de chaîne suivantes.
public string subscriptionStorePath = @"\\\\[SHARE_NAME]\\SubscriptionStore\\SubscriptionStore.xml";

Remarque

Ce fichier est un fichier XML qui est mis à jour avec les nouveaux abonnements. L’accès à ce fichier étant effectué par le processus serveur, vérifiez que vous avez accordé des droits suffisants pour cet accès au fichier. > Vous pouvez également créer une solution de base de données pour stocker les informations d’abonnement.

Puis ajoutez les deux méthodes WebGet suivantes pour gérer les abonnements.

[WebGet]
public string Subscribe(string deliveryUrl, string eventType)
{
    string subscriptionId = Guid.NewGuid().ToString();

    XmlDocument subscriptionStore = new XmlDocument();

    subscriptionStore.Load(subscriptionStorePath);

    // Add a new subscription element.
    XmlNode newSubNode = subscriptionStore.CreateElement("Subscription");

    // Add subscription ID element to the subscription element.
    XmlNode subscriptionIdStart = subscriptionStore.CreateElement("SubscriptionID");
    subscriptionIdStart.InnerText = subscriptionId;
    newSubNode.AppendChild(subscriptionIdStart);

    // Add delivery URL element to the subscription element.
    XmlNode deliveryAddressStart = subscriptionStore.CreateElement("DeliveryAddress");
    deliveryAddressStart.InnerText = deliveryUrl;
    newSubNode.AppendChild(deliveryAddressStart);

    // Add event type element to the subscription element.
    XmlNode eventTypeStart = subscriptionStore.CreateElement("EventType");
    eventTypeStart.InnerText = eventType;
    newSubNode.AppendChild(eventTypeStart);

    // Add the subscription element to the root element. 
    subscriptionStore.AppendChild(newSubNode);

    subscriptionStore.Save(subscriptionStorePath);

    return subscriptionId;
}

[WebGet]
public void Unsubscribe(string subscriptionId)
{
    XmlDocument subscriptionStore = new XmlDocument();
    subscriptionStore.Load(subscriptionStorePath);

    XmlNodeList subscriptions = subscriptionStore.DocumentElement.ChildNodes;
    foreach (XmlNode subscription in subscriptions)
    {
        XmlNodeList subscriptionList = subscription.ChildNodes;
        if (subscriptionList.Item(0).InnerText == subscriptionId)
        {
            subscriptionStore.DocumentElement.RemoveChild(subscription);
            break;
        }
    }

    subscriptionStore.Save(subscriptionStorePath);
}

Étapes suivantes

Notification SharePoint que les modifications ont été apportées, vous devez également créer un service qui interroge la source de données pour que les modifications, puis envoie des notifications à tous les abonnement aux notifications.

Voir aussi