Heute möchte ich kurz über ein Thema schreiben, welches mir immer wieder beim Entwurf von Anwendungsarchitekturen begegnet. In der heutigen Zeit sind für Industrieländer durchaus folgende Aussagen gültig:
Betrachtet man diese 2 Aspekte in Hinblick auf Anwendungsarchitektur, kann man folgende Schlussfolgerungen aus diesen Aussagen ziehen:
Damit muss die Architektur solcher verteilten Anwendungen so entworfen werden, dass es „occasionally connected“ Clients in der Anwendungsarchitektur betrieben werden können.
Die grösste Herausforderung bei der Gestaltung solcher Anwendungen ist es, die Arbeit und die Konsistenz von Daten für den Online/Offline Betrieb gleichermaßen zu gewährleisten. Wenn möglich, sollte die Clientanwendung so programmiert sein, dass ihre Bedienung Online/Offline gleichermassen funktioniert.
Beim Entwurf solcher Clients gibt es 2 Ansätze:
Beim datenzentrischen Ansatz wird die Konsistenz der Daten in der Geschäftsanwendung durch die Synchronisation von Daten sehr nah am echten Datenmodell betrieben. Die Datenstrukturen auf dem Client und dem Server müssen entsprechend gleich sein, um einen einfache Synchronisation zu gewährleisten. Effektiv kann man hier von einer Synchronisation zwischen einer Client Datenbank und einer Server Datenbank ausgehen; - eventuell sogar mit eingebauten Mechanismen der zugrunde liegenden Datenbank z.B. Microsoft SQL Server Replikation.
Beim serviceorientierten Ansatz wird die Konsistenz der Daten in der Geschäftsanwendung durch die Synchronisation von Aufrufen an die Anwendungsdienste geleistet. In diesem Anwendungsszenarion können auf dem Client sehr einfache Datenstrukturen abgelegt werden. Im Synchronisationsszenario nach einem Offlinefall müssen die ändernden Zugriffe auf die Businesslogik der Anwendungsdienste auf den Server ausgeführt werden.
In beiden Szenarien gibt es 2 Typen von Daten zu beachten:
Die Entscheidung, welchen Lösungsansatz verwende, hat direkten Einfluss auf die Architektur der Clientsoftware. Hier gilt es nachhaltig zu prüfen, welcher Ansatz der richtige ist. Wichtige Kriterien können hier sein:
In meinen nächsten Blogeinträgen werde ich für beide Ansätze Lösungen vorstellen.
GunnarD