Pregunta

Yo trabajo en un proyecto en el que estamos considerando usar Orchard CMS .

Sin embargo, queremos utilizar servicios web como fuentes de datos para algunos de los elementos de contenido. Creo que tenemos que cambiar la implementación del repositorio con el fin de hacer esto posible, pero no estoy seguro de eso.

Así que mi pregunta es: Es mi suposición correcta, o es más compleja? Y cómo puede hacerse entonces?

Gracias!

Actualización: Veo que la interfaz IRepository de Orchard requiere proveedor de LINQ a implementarse. Eso es imposible en este escenario ya que los servicios web se ofrecen a través de SOAP.

Será mejor que va a describir aún más el escenario:

La página web que queremos construir tiene que utilizar los servicios de Internet para obtener información acerca de un miembros de la organización y unidades. Nos gustaría mostrar algunos miembros de unidad organizativa, por ejemplo, en el sitio web. También queremos crear nuestro propio contenido de tipo "eventos" que debe tener un M:. la relación N (asistentes) con el "miembro" (por el LR)

¿Fue útil?

Solución

No es necesario implementar un IRepository en caso de que no desea completamente dirigir la parte de almacenamiento a otro lugar. Actualmente estoy usando el servicio WCF en uno de mis proyectos basados ??en la huerta, por lo que su situación es similar.

Puede hacerlo de esta manera:

  1. Wrap proxy de su servicio web en una clase que implementa IDependency , por lo que sería capaz de inyectarlo en conductores / manipuladores / controladores etc. Para facilitar la prueba de la unidad y se burla debe crear una interfaz separada, por ejemplo. IMyWebServiceWrapper:. IDependency y ponerlo en práctica a continuación,
  2. Crear piezas y registros de contenidos adecuados. En el almacén de registros Sólo la información necesaria para localizar y obtener los datos de la planilla. En las partes de contenido de crear todas las propiedades necesarias - que serán cargados desde la WS
  3. .
  4. inyectar su clase desde el punto 1. a constructores de contenido manipuladores adecuados
  5. En el interior del controlador de contenido utilización constructor de algo como esto:

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

  • myPart es la parte en el lado de la huerta.
  • MyProperty es una propiedad de su parte que será cargado por el LR.
  • myService es su proxy WS envuelto, se pasa como parámetro constructor.
  • GetMyProperty es un método en el envoltorio que llamar WS y recupera los datos necesarios.

Por supuesto, se pueden utilizar otros eventos de controlador (como OnInitialized, OnCreated, OnPublished etc). Puede leer más sobre controladores de contenido aquí .

También recomiendo conseguir un dev puesta en marcha del módulo desde CodePlex para el desarrollo rápido.

Otros consejos

En realidad no lo hace necesidad para utilizar un repositorio o incluso un registro. Dependiendo de lo que está tratando de hacer, lo que provocó la lógica de ir a buscar a partir de un trabajo de controlador de fuerzas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top