Comment consommer ses données Commerce Server pour Power Pivot via un service de données REST
.Net, Commerce Server, Développement, WCF 1 Comment »Suite à mes deux posts sur Commerce Server et Power Pivot (Créer des rapports simples et efficaces pour Commerce Server grâce à PowerPivot (aka Gemini) et Comprendre et analyser vos données Commerce Server grâce à Power Pivot), j’ai reçu quelques questions concernant la récupération des données provenant de Commerce Server.
En effet, il n’est pas rare (j’ose difficilement concevoir la chose autrement) que le(s) serveur(s) e-Commerce soi(en)t hébergé(s) sur un data center déconnecté de l’environnement de l’entreprise (du webmaster, du consultant,…), rendant donc impossible une connexion directe à la base de données.
Que faire donc pour récupérer les données et les exploiter?
- Réplication SQL Server entre l’environnement de production et votre environnement local
- Avantages:
- Nombreuses possibilités de synchronisations (temps réels ou différés)
- Technologie éprouvée et robuste
- Inconvénients:
- Nécessite d’avoir un SGBD (oui tous les consultants n’ont pas un SGBD
) - Exposer sa base de données, qui normalement doit être derrière la DMZ (même si vous filtrez les IPs ce n’est quand même pas génial en terme de sécurité ou passer par une LS)
- Nécessite d’avoir un SGBD (oui tous les consultants n’ont pas un SGBD
- Avantages:
- Exporter les données dans un format texte pour le réintégrer dans l’environnement de base de données local
- Avantages:
- Possibilité d’importer de nombreux types de fichiers textes formatés dans Excel
- Ouverture/Import des fichiers textes comme sous Excel
- Inconvénients:
- L’import de fichiers dans Excel n’est pas toujours simple à appréhender par un novice
- Gestion de plusieurs fichiers pouvant être complexes à maintenir et gérer
- Avantages:
- Utilisez la capacité de PowerPivot à consommer un flux de données type RSS (voir la MSDN à ce sujet)
- Avantages:
- La base de données n’est pas exposée sur l’extérieur
- Possibilité de sécurisée l’accès aux données
- Maîtrise du format car basé sur les standards
- Inconvénients:
- Technologie encore récente
- Nécessite d’utiliser un protocol https ou une LS pour garantir une bonne sécurisation du transfert de données.
- Avantages:
Ces 3 solutions ont chacune leurs avantages et inconvénients et le choix dépend fortement de votre architecture et vos besoins (ie pas de règles figées dans le marbre!). Pour ma part, j’ai décidé de vous présenter la dernière solution: à savoir un flux de données de type RSS.
Pour exposer vos données en asp.net, l’idéal est d’utiliser un service WCF qui se chargera de rendre vos données au format désiré (ici l’ATOM). Bien que l’exposition de vos données au travers d’un service WCF n’est pas nouvelle (il en existe de nombreuses façons pour le réaliser), l’exposer nativement en mode REST et au format ATOM (ou json) pour la représentation des données via une URI (autrement dit, l’utilisation du protocol OData) l’est beaucoup moins!
Pour réaliser cela, nous avons besoin d’avoir une application web dans lequel nous allons ajouter une item de type “ADO.Net Entity Data Model” connecté à votre base de données SQL Server.
Dans le cas où vos rapports se basent sur les commandes, vous devez choisir la base de données <site commerce server>_Transactions.
Ajoutez ensuite une item de type WCF Data Service
Dans le service créé, ajoutez à la méthode InitializeService le code suivant:
config.SetEntitySetAccessRule("DiscountsApplied", EntitySetRights.AllRead); config.SetEntitySetAccessRule("LineItems", EntitySetRights.AllRead); config.SetEntitySetAccessRule("OrderAddresses", EntitySetRights.AllRead); config.SetEntitySetAccessRule("OrderForms", EntitySetRights.AllRead); config.SetEntitySetAccessRule("PurchaseOrderPayments", EntitySetRights.AllRead); config.SetEntitySetAccessRule("PurchaseOrders", EntitySetRights.AllRead); config.SetEntitySetAccessRule("Shipments", EntitySetRights.AllRead); config.SetEntitySetAccessRule("ShippingDiscounts", EntitySetRights.AllRead);
Ceci vous permettant de donner un accès en lecture seule à vos entitées et donc par extension aux tables de la base de données.
Affichez votre service dans votre navigateur et vous obtenez automatiquement un flux XML Atom listant les différentes entités auxquelles vous avez accès.
Ajoutez par exemple LineItems à la fin de votre url (ex: http://localhost//CommerceServerOrdersDataService.svc/LineItems)
Votre navigateur affiche alors, une page similaire à n’importe quel flux RSS:
Pour afficher le flux XML à la place de l’interface RSS, allez dans les options internet > Contenus > Paramètres des flux RSS et décochez la case d’affichage RSS
Et voilà la partie développement est terminée ! Vous pouvez consommer votre flux dans Power Pivot dès à présent:
Je vous montrerez dans un prochain post comment inclure les flux dans la même stratégie de sécurité que les web services Commerce Server.
Retrouvez plus d’informations sur:












Recent Comments