2009-03-19 6 views
0

Wir haben einen Prozess, der mehrmals am Tag läuft (über einen Windows-Dienst) und jederzeit von einem Administrator-Benutzer (über eine Web-App) aufgerufen werden kann. Dieser Prozess ruft einen Datensatz von einem Partner über einen Webdienst ab. Anschließend führen wir diese Daten mit unserer lokalen Kopie in unserem eigenen Format zusammen. Einfach genug.Anpassung eines 3rd-Party-Webdienstes in Ihr Anwendungsdesign

Meine Frage ist, wie dies in unser Anwendungsdesign passt. Wir verfügen über eine relativ einfache Application Services-Ebene, die mit unserem Repository interagiert, um mit unseren Domänenobjekten umzugehen. Die Domäne ist Persistenz ignorant.

Wie sollte dieser Prozess in diese Architektur passen? Do wir,

  1. Setzen Sie die meisten Logik in den Anwendungsdienst? Rufen Sie einfach den 3rd-Party-Service an, holen Sie sich unsere lokalen Objekte aus dem Repository und führen Sie unsere Updates/Adds/etc durch und speichern Sie sie erneut im Repository. Behandeln Sie den Drittanbieter-Dienst einfach als ein anderes Repository.
  2. Lassen Sie den Anwendungsdienst unsere lokalen Daten erfassen (sorgen Sie sich nicht um das Datenvolumen), übergeben Sie diese an einen Domain-Level-Service, der den 3rd-Party-Service aufruft, Daten nach Bedarf zusammenführt und dann ein neues Dataset zurückgibt App-Service zum Einbinden in das Repository?
  3. Weitere Optionen ...

Antwort

0

Ich würde das Remote Service Gateway "Muster" ausprobieren.
Unten ist ein Link zu dem Konzept, alles aus der Perspektive von Ajax - kein Prozess. Als ich das Konzept jedoch 2006 auf der Dobbs Architektur- und Designwelt zum ersten Mal gesehen habe, war das Beispiel mehr wie in Ihrem Fall - ein Service, der von Zeit zu Zeit ruft.

http://blog.ontheheap.com/2008/06/06/ajax-and-the-service-gateway-pattern/

Das Beispiel in der Verbindung liefert die Grundlagen. In diesem Fall muss es keine Übersetzung machen. Das Gateway kann jedoch in verschiedene Teile aufgeteilt werden, so dass es eine Übersetzungsschicht oder eine Datenzusammenführungsschicht enthält.

Ich hatte Erfolg mit diesem Ansatz.