Partager via


Création d’assemblys .NET Connectivity Assembly et de services Web

Dernière modification : mardi 6 juillet 2010

S’applique à : SharePoint Server 2010

Dans cet article
Meilleures pratiques en matière de conception
Étapes d’implémentation
Définition d’opérations stéréotypées dans votre service
Meilleures pratiques relatives à l’écriture d’assemblys .NET Connectivity Assembly et de services Web

Microsoft Business Connectivity Services (BCS) vous permet de transmettre les données externes de divers types de systèmes externes dans les applications Microsoft SharePoint 2010 et Microsoft Office 2010. Ces systèmes externes comprennent notamment les éléments suivants :

  • Bases de données

  • Services Web

Si votre système externe n’est pas directement pris en charge par Business Connectivity Services, vous pouvez l’exposer par l’intermédiaire de Business Connectivity Services en écrivant du code. Si les entités dans le système externe sont statiques, évoluent peu et sont associées à un jeu réduit de types connus, vous pouvez écrire des services Web ou des assemblys .NET Connectivity Assembly pour exposer les données de votre système externe au format le mieux adapté pour Business Connectivity Services. D’un autre côté, si les entités sont dynamiques, ont des types personnalisés et sont à grande échelle, envisagez de créer un connecteur personnalisé pour ce type de source de données. Cependant, vous devrez gérer la connexion, le transfert de données, le programme d’installation et les outils pour un connecteur personnalisé. Pour plus d’informations, voir Différences entre l’utilisation du .NET Assembly Connector et l’écriture d’un connecteur personnalisé.

La figure suivante représente un diagramme d’architecture de haut niveau de Microsoft Business Connectivity Services (BCS). Elle montre les différents connecteurs fournis par Business Connectivity Services et la place qu’occupent l’assembly .NET, le service Web et les connecteurs personnalisés dans l’architecture globale.

Architecture de haut niveau BCS

Cette rubrique décrit les meilleures pratiques pour l’écriture d’assemblys .NET Connectivity Assembly et de services Web. Lorsque vous disposez d’un service Web ou d’un .NET Connectivity Assembly, vous pouvez utiliser Microsoft SharePoint Designer 2010 pour vous y connecter et découvrir des types de contenu externe.

Le tableau suivant compare et met en contraste les deux approches.

Tableau 1. Approches en matière d’écriture d’assemblys .NET Connectivity Assembly ou de services Web

Service Web

.NET Connectivity Assembly

Technologie d’implémentation

Peut être n’importe quel service Web conforme SOAP 1.1 ou SOAP 1.2. Exemples : service Web ASP.NET, point de terminaison du service Web WCF

Microsoft .NET Framework 3.5

Hébergement

Business Connectivity Services n’héberge pas le service Web. Vous devez héberger le service.

L’hébergement n’est pas nécessaire pour un .NET Connectivity Assembly. Vous pouvez simplement déployer le .NET Connectivity Assembly dans le magasin de métadonnées BDC, et Business Connectivity Services s’occupe du reste.

Prise en charge d’outils

Vous pouvez utiliser un outil de développement tel que Microsoft Visual Studio pour écrire votre service Web. Aucun modèle de projet ou outil particulier n’est fourni pour créer des services Web pour Business Connectivity Services dans Visual Studio.

Vous pouvez utiliser un outil de développement tel que Microsoft Visual Studio pour écrire votre .NET Connectivity Assembly. Microsoft Visual Studio 2010 fournit un nouveau modèle de projet de base nommé Modèle de connectivité de données métiers qui est livré avec un jeu de concepteurs visuels et des capacités de gestion de code vous permettant de créer, de déboguer et de déployer facilement les assemblys .NET Connectivity Assembly et le modèle vers Business Connectivity Services.

Prise en charge de l’authentification

Pour les services Web, Business Connectivity Services prend en charge les mécanismes d’authentification suivants : Passthrough, RevertToSelf, WindowsCredentials, Credentials et DigestCredentials. Pour plus d’informations, voir Modes d'authentification disponibles.

Dans un .NET Connectivity Assembly, vous devez gérer la sécurité et l’authentification. Si vous voulez utiliser le Service Banque d’informations sécurisé, vous pouvez utiliser le modèle objet de banque d’informations sécurisé pour stocker et obtenir par programmation des informations d’identification. Vous pouvez également utiliser le filtre de nom d’utilisateur/mot de passe pour extraire le nom d’utilisateur et le mot de passe.

Types

Dans un .NET Connectivity Assembly, vous pouvez utiliser des types .NET qui ne sont pas disponibles dans les services Web, par exemple les types non sérialisés.

Meilleures pratiques en matière de conception

Qu’il s’agisse de créer un service Web ou un .NET Connectivity Assembly, vous devez, dans le code que vous écrivez, vous connecter au système externe, définir les types de contenu externe nécessaires dans le système externe et inclure le code requis pour effectuer chaque opération stéréotypée (instances de méthode) que vous voulez prendre en charge pour chaque type de contenu externe.

Étant donné que vous écrivez du code dans le service Web et le .NET Connectivity Assembly, de nombreuses options s’offrent à vous en rapport avec l’obtention et l’exploitation des données avant leur entrée dans Business Connectivity Services et SharePoint. Dans le code, vous pouvez effectuer des actions telles que l’agrégation des données de plusieurs sources, l’application de transformations et d’une logique métier, et le traitement de schémas de sécurité personnalisés.

Notes

Lorsque vous écrivez des services Web et des assemblys .NET Connectivity Assembly, vous devez réfléchir en termes de types de contenu externe et vous assurer que les méthodes Web dans le service Web et celles dans le .NET Connectivity Assembly correspondent aux opérations stéréotypées prises en charge par le BDC. Il s’agit aussi de vous assurer que Microsoft SharePoint Designer 2010 est en mesure de se connecter au service Web et au .NET Connectivity Assembly et, par conséquent, de fournir une approche de type « découvrir et utiliser » pour la création de types de contenu externe une fois le service créé et publié.

Par exemple, dans un service Web, vérifiez qu’une méthode Web existe pour chaque opération stéréotypée que vous voulez prendre en charge pour votre type de contenu externe et que sa signature correspond à la signature de méthode recommandée pour les opérations stéréotypées (voir la section suivante).

De même, dans un .NET Connectivity Assembly, assurez-vous que votre code .NET contient des méthodes pour chaque opération stéréotypée requise pour votre type de contenu externe. Business Connectivity Services appelle ces méthodes au moment de l’exécution lorsqu’un utilisateur effectue une action sur le type de contenu externe, comme la lecture ou la mise à jour d’un élément.

Étapes d’implémentation

En général, dans un .NET Connectivity Assembly, chaque type de contenu externe mappe à une classe et chaque opération stéréotypée est une méthode à l’intérieur de la classe. Dans un service Web, chaque opération stéréotypée est une méthode Web.

.NET Connectivity Assembly

  1. Dans un .NET Connectivity Assembly, pour chaque type de contenu externe, créez une classe et définissez les champs qu’elle doit contenir. Incluez toujours un identificateur pour le type de contenu externe. Il s’agit généralement de la clé primaire dans une table de base de données. BDC prend en charge jusqu’à 20 identificateurs composés de champ.

  2. Créez une autre classe et ajoutez-y des méthodes pour définir les opérations stéréotypées que vous voulez prendre en charge pour chaque type de contenu externe. Pour obtenir un exemple, voir Définition d’opérations stéréotypées dans votre service plus loin dans cette rubrique.

Service Web

  1. Le développement d’un service Web commence généralement par la définition de types complexes. Définissez la structure de chaque type de contenu externe. Là encore, veillez à toujours inclure un identificateur pour le type de contenu externe. En règle générale, il s’agit de la clé primaire dans une table de base de données. BDC prend en charge jusqu’à 20 identificateurs composés de champ.

  2. Définissez les méthodes Web pour chaque opération stéréotypée que vous voulez prendre en charge pour vos types de contenu externe. Pour obtenir un exemple, voir la section Définition d’opérations stéréotypées dans votre service.

Définition d’opérations stéréotypées dans votre service

Les opérations stéréotypées que vous implémentez dépendent de vos spécifications. Le tableau suivant répertorie les opérations stéréotypées que nous vous recommandons d’implémenter pour les spécifications les plus courantes.

Spécification

Opérations stéréotypées

Commentaires

Lire des éléments externes

Instances de méthode SpecificFinder et Finder. Celles-ci sont requises pour toutes les fonctionnalités client de Business Connectivity Services.

Considérez BulkSpecificFinder, IDEnumerator, BulkIDEnumerator, ChangedIDEnumerator et DeletedIDEnumerator pour une synchronisation optimisée de données aux ordinateurs clients. Ceci peut devenir critique dans les scénarios où vous devez mettre hors connexion un grand nombre d’utilisateurs ou de grands volumes de données.

Écriture différée sur des systèmes externes

Instances de méthode Creator, Updater et Deleter si les opérations Create, Update et Delete sont souhaitées sur le type de contenu externe.

Si le système externe ne prend pas en charge l’écriture différée, marquez alors tous les champs du type de contenu externe en lecture seule. Si vous créez des solutions basées sur du code déclaratives ou avancées dans Outlook selon le type de contenu externe, marquez aussi le fichier Outlook en lecture seule.

Éléments externes associés

AssociationNavigator

Associator

Disassociator

BulkAssociationNavigator, BulkAssocatedIDEnumerator

Associator et Disassociator sont utilisés uniquement pour des associations sans clé étrangère. Pour plus d’informations, voir la classe Microsoft.BusinessData.MetadataModel.IAssoication.

Recherche

IDEnumerator et BulkIDEnumerator

AccessChecker

BinarySecurityDescriptorAccessor

Mise hors connexion vers le client

Les méthodes Finder et SpecificFinder doivent retourner le même jeu de champs ; sinon, les performances seront affectées. Si les méthodes Finder et SpecificFinder retournent des jeux de champs différents, les utilisateurs ne peuvent pas mettre à disposition des clients Microsoft Office 2010 le type de contenu externe hors connexion.

Si vous travaillez hors connexion et qu’une logique de filtrage complexe est utilisée, il est possible que vous n’obteniez pas les mêmes jeux de résultats qu’en ligne.

Données BLOB

StreamAccessor

Meilleures pratiques relatives à l’écriture d’assemblys .NET Connectivity Assembly et de services Web

Lors de l’écriture d’assemblys .NET Connectivity Assembly et de services Web, considérez les meilleures pratiques suivantes :

  • Incluez les identificateurs. Veillez à toujours inclure un identificateur pour chaque type de contenu externe. Il s’agit généralement de la clé primaire dans une table de base de données. BDC prend en charge jusqu’à 20 identificateurs composés de champ.

  • Gérez les valeurs null. En général, l’opération Read interroge le système externe, puis remplit le type à retourner. Assurez-vous de gérer correctement les valeurs null dans la méthode SpecificFinder. Il y a de fortes chances que quelques champs soient null dans le système externe (par l’exemple des passe-temps ou l’adresse). Il est essentiel de mettre en place une gestion appropriée des erreurs et des exceptions. Par conséquent, recherchez les chaînes null et vides dans votre code, puis corrigez-les dans le code. Par ailleurs, envisagez d’utiliser l’interprétation NormalizeString sur les descripteurs de type.

  • Faites correspondre les noms des paramètres. Les noms des paramètres doivent correspondre à ceux qui figurent dans le système externe. Si les majuscules des noms de paramètres ne sont pas identiques dans toutes les méthodes, SharePoint Designer 2010 les interprète alors comme des champs différents.

  • Gérez les exceptions. Assurez-vous de gérer correctement les exceptions. Anticipez les échecs des opérations et levez des exceptions.

    Si une méthode doit retourner un élément unique (par exemple, une recherche spécifique) et que l’élément demandé est introuvable, le code doit effectuer les actions suivantes :

    1. Retourner null. Il s’agit de la manière la plus simple et la plus compatible.

    2. Lever une exception ObjectNotFoundException. Cette exception n’est utile que si voulez journaliser un message spécifique. Évitez de lever cette exception pour des services Web.

    3. Lever une exception ObjectDeletedException. Cette exception ne doit être utilisée que lorsque l’objet doit être supprimé. Évitez de lever cette exception pour des services Web.

    4. Ne pas lever d’autres exceptions.

    5. Ne pas retourner des données inachevées ou fausses.

    Si une méthode est censée retourner plusieurs éléments (par exemple, une recherche) et qu’aucun élément n’a été trouvé, le code doit effectuer les actions suivantes :

    1. Retourner une collection/énumération vide des éléments (recommandé).

    2. Retourner null.

    3. Ne pas lever d’exceptions.

    Si une méthode n’a pas une valeur de retour (par exemple, mise à jour) et qu’il y a un problème avec la mise à jour, le code doit effectuer les actions suivantes :

    1. Lever une exception.

    2. Ne pas compter sur les valeurs ou les codes d’erreur de retour. BDC n’est pas actuellement en mesure d’interpréter ces valeurs.

Pour plus d’informations, voir Implémentation d’opérations stéréotypées dans vos méthodes.

Voir aussi

Tâches

Procédure : publier un .NET Connectivity Assembly dans le magasin de métadonnées BDC

Concepts

Procédure : Créer un assembly de connectivité .NET

Procédure : utiliser le Service Banque d’informations sécurisé dans .NET Connectivity Assembly

Autres ressources

Implémentation d’opérations stéréotypées dans vos méthodes