One world-Der Hybris Connector

<< Einführung in die Serie one world

Einleitung
In diesem Artikel soll aufgezeigt werden, wie ein custom Service durch die Vererbung einiger Basisklassen des SAF (Service Application Framework) in die SharePoint 2010 Serviceinfrastruktur integriert werden kann. Wie auch bereits in der Einleitung geschehen, wollen wir uns dabei am Beispeil des Hybris connector Service orientieren. Dieses Mal werden wir aber vermehrt auf die technische Umsetzung des Service eingehen und insbesondere aufzeigen, wie sich der Service mit dem SAF verbindet.

Der Aufbau des Service
Das Design eines custom SAF Service wird grundsätzlich durch die zu vererbenden Basisklassen des Frameworks bestimmt. Diese werden in den folgenden Darstellungen kurz besprochen. Die vererbten Klassen des SAF sind in den Abbildungen jeweils blau interlegt. Gelb hinterlegt sind die Klassen des connector Service.

2961-HybrisService.jpg

Die Klasse HybrisService steht für den Service selber und vererbt von SPIisWebService. Somit beinhaltet er eine Liste aller Service Applikationen und aller Service Application Proxies., die für diesen Service angelegt worden sind. Der Service selber kann sich in der Services-Liste der Farm ein- oder auch wieder austragen. Dazu kennt die Klasse einen Link für den ‚Create Service’ Dialog. Weiter können durch die Implementierung von IServiceAdministration neue Applikationen und Proxies anlegen.

2976-HybrisServiceInstance.jpg

Die Klasse HybrisServiceInstance steht für eine Instanz des Service, die auf einem bestimmten Server in der Farm läuft.

2979-HybrisServiceProxy.jpg

Die Klasse HybrisServiceProxy etabliert die Verbindung zwischen dem Service und den ServiceApplicationProxies.

2964-HybrisServiceApplication.jpg

Die Klasse HybrisServiceApplication ist die eigentliche Service Applikation. In unserem Beispiel wird die Konfiguration des Service durch diese Klasse gespeichert und gelesen. Dadurch erreichen wir, dass der HybrisConnector-Service mehrfach in einer Farm laufen kann und sich dabei die jeweiligen Konfiguration unterscheiden können. Diese Klasse implementiert auch IHybrisWCFService, unseren Service Kontrakt.

2970-HybrisServiceApplicationProxy.jpg

Die Klasse HybrisServiceApplicationProxy wird für den Zugriff auf HybrisServiceApplication verwendet. Diese Klasse wird benützt, um im client code auf den Service zuzugreifen.

2960-HybrisServicApplicationHost.jpg

Die Klasse HybrisServicApplicationHost wird für das hosting des Service im IIS verwendet

2967-HybrisServiceApplicationHostFactory.jpg

Die Klasse HybrisServiceApplicationHostFactory wird für das Erstellen der s Servicehost verwendet.

2973-HybrisServiceImplementation.jpg

Schliesslich wollen wir noch einen kurzen Einblick in die Logik unseres Service geben. Die von den REST Services ausgelieferten Datenstrukturen werden jeweils durch eine einfach gehaltene Datacontainer-Klasse abgebildet. Wir wollen hier an einem Beispiel aufzeigen, wir die Daten von Hybris geladen werden: Die Klasse Catalogs beinhaltet eine Liste von Katalogen. Wie alle Datencontainer implementiert sie das Interface IDataItem, dass die properties URL und ID erzwingt. Da es sich bei Catalogs um den Einstiegspunkt in die Hybris Catalog-Struktur handelt, muss an dieser Stelle die Url gesetzt werden. Sie wird aus der Konfiguration des Service entnommen. Die Logik des Hybris-Aufrufs und die Verarbeitung des Xml-Streams wird in der Klasse XmlDataElement implementiert. Diese verlangt die Angabe eines generischen Typs T (hier Catalogs). Dieser Typ entspricht dem zu ladenden Datacontainer. Die Hilfsklasse HtmlBase schliesslich übernimmt die Kommunikation mit den REST Services. Der response stream wird geparsed und in die DataContainer Klasse abgefüllt. Im Falle der Catalogs handelt es sich dabei um eine Liste von weiteren REST Urls, die für den Bezug der Detailinformationen zu den einzelnen Katalogen aufgerufen werden können. Dazu wird für jeden Katalog ein XmlDataElement vom Typ Catalog erstellt und die REST Urls der einzelnen Kataloge werden übernommen. Die Katalogdaten können nun geladen werden.

Schlussfolgerung
Durch den Hybris Connector Service können wir von SharePoint-Customcode aus sehr einfach auf Hybris lesend zugreifen. Wir erhalten Instanzen von .Net Klassen zurück und brauchen uns weder um den Aufruf von Hybris noch um das Parsen des ausgelieferten xml zu kümmern. Weiter kann der Service auch business Logik implementieren. So können zum Beispiel durch eine Service-Methode gleich die Daten eines ganzen Katalogs mit allen Kategorien und Produkten zusammengesucht werden. Natürlich würde eine solche Service Methode bald mit Performance-Problemen zu kämpfen haben, weil dazu eine Vielzahl Hybris REST calls nötig sind. Man kann sich aber auch gut vorstellen, dass der Hybris Connector Service eine cache-Struktur aufbaut, um eine ausreichend schnelle Ausleiferung der Daten zu gewährleisten.

Links

Step by Step SharePoint Service Applications
EInführung in Application Services von Daniel Larson. Sehr hilfreich!

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>