Question

Je travaille sur un projet où nous envisageons l'utilisation CMS Orchard .

Cependant, nous voulons utiliser les services Web comme sources de données pour certains des éléments de contenu. Je suppose que nous devons changer la mise en œuvre du référentiel afin de rendre cela possible, mais je ne suis pas sûr.

Alors ma question est: Ma conjecture correcte, ou est-il plus complexe? Et comment peut-il faire alors?

Merci!

Mise à jour: Je vois que l'interface IRepository Orchard exige fournisseur LINQ être mis en œuvre. C'est impossible dans ce scénario puisque les services Web sont offerts via SOAP.

Je vais mieux décrire davantage le scénario:

Le site que nous voulons construire doit utiliser les services Web pour obtenir des informations sur un membres de l'organisation et les unités. Nous aimerions afficher les membres d'une certaine unité d'organisation, par exemple, sur le site. Nous voulons aussi créer notre propre type de contenu « événement » qui devrait avoir un M:. Relation N (des participants) avec « Membre » (de WS)

Était-ce utile?

La solution

Vous n'avez pas à mettre en œuvre un IRepository dans le cas où vous ne voulez pas complètement diriger le stockage partiel à un autre endroit. J'utilise actuellement un service WCF dans un de mes projets basés sur Orchard, de sorte que votre scénario est similaire.

Vous pouvez le faire de cette façon:

  1. Enveloppez votre proxy de service Web dans une classe implémentant IDependency , de sorte que vous seriez en mesure d'injecter dans pilotes / handlers / contrôleurs etc. Pour la facilité des tests unitaires et vous moquant devrait créer une interface distincte, par exemple. IMyWebServiceWrapper:. IDependency et mettre en œuvre alors
  2. Créez des pièces et des enregistrements de contenu appropriés. Dans le magasin de disques uniquement les informations nécessaires pour localiser et récupérer les données de WS. Dans les parties de contenu créent de toutes les propriétés nécessaires - ils seront chargés à partir du WS
  3. .
  4. Injecter votre classe à partir du point 1. dans les constructeurs de gestionnaires de contenu appropriés
  5. Dans le constructeur gestionnaire de contenu utiliser quelque chose comme ceci:

OnLoaded<MyPart>((ctx, part) => { part.MyProperty = myService.GetMyProperty(part.SomeIdToLookup); });

  • MyPart est votre part sur le côté Orchard.
  • MyProperty est une propriété de votre part qui sera chargée à partir de WS.
  • myService est votre enveloppées proxy WS, passé comme paramètre constructeur.
  • GetMyProperty est un procédé dans lequel l'enveloppe appeler WS et récupère les données nécessaires.

Bien sûr, vous pouvez utiliser d'autres événements de gestionnaire (comme OnInitialized, OnCreated, OnPublished etc). Vous pouvez en savoir plus sur les gestionnaires de contenu .

Je vous recommande également d'obtenir un Module dev démarrage de Codeplex pour le développement rapide.

Autres conseils

En fait, vous ne faites pas besoin pour utiliser un référentiel ou même un record. Selon ce que vous essayez de faire, ce qui déclenche la logique d'un travail fetching de puissance de gestionnaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top