Methoden zur Entwicklung von Webdiensten – Entwicklung mobiler Anwendungen, Webdienste, SOA-Architektur – Technologie
Zum Inhalt springen

Methodologien für die Entwicklung von Webdiensten – Entwicklung mobiler Anwendungen, Webdienste, SOA-Architektur

Anzeigen

Coulouris definierte verteilte Systeme als „Systeme, in denen in einem Computernetzwerk vorhandene Hardware- und/oder Softwarekomponenten durch den Austausch von Nachrichten kommunizieren und ihre Aktionen koordinieren“.

Dieses Konzept ist in den letzten Jahren aufgrund mehrerer Faktoren populär geworden. Der erste Faktor, der die Entwicklung verteilter Systeme förderte, war die Entstehung lokaler Hochgeschwindigkeitsnetze. Ein weiterer wichtiger Faktor war der technologische Fortschritt bei der Leistungsfähigkeit von Personalcomputern und der Entwicklung von Software zur Unterstützung verteilter Anwendungen. Verteilte Systeme sind mit dem Konzept des Webs und des Internets verbunden. Mit der Entwicklung des Webs und dem Aufkommen neuer Bereiche, Interaktionen, Bedürfnisse und Anwendungen entsteht das Konzept des Web 2.0. Dieser Begriff wurde 2004 von Tim O'Reilly geprägt, um eine zweite Generation in der Geschichte des Web zu bezeichnen, die auf Benutzergemeinschaften und einem speziellen Angebot an Diensten wie sozialen Netzwerken, Blogs, Wikis oder Folksonomies basiert, die die Zusammenarbeit und Schnelligkeit fördern Informationsaustausch zwischen Benutzern.

Die ersten Architekturen, die als serviceorientiert (SOA) gelten können, basierten auf CORBA (Common Object Request Broker Architecture), das als Abstraktionsschicht fungierte, um die verschiedenen Elemente der Architektur zu verbinden und Dienste zu erstellen. Weitere frühere Technologien waren DCOM (Distributed Component Object Model) oder RPC (Remote Procedure Protocol). Mit der Notwendigkeit, verteilte Systeme im Web effizient zu entwerfen und zu implementieren, ergeben sich mehrere Herausforderungen, von denen sich einige auf die Entwicklung selbst (Leistung, Benutzererfahrung usw.) konzentrieren und andere komplementäre Herausforderungen betreffen, die auf der Wiederverwendbarkeit und Kompatibilität von Diensten basieren. Aus diesen Anforderungen entstehen Webdienste, die standardisierte Mechanismen zur Verbindung verschiedener Benutzer mit Informationsservern bereitstellen.

SERVICEORIENTIERTE ARCHITEKTUREN

Laut SOA (Service Oriented Architecture) handelt es sich um Softwarearchitekturen, die den Einsatz von Diensten zur Unterstützung von Geschäftsanforderungen definieren und deren Ziel es ist, eine möglichst geringe Kopplung zwischen Softwareagenten zu erreichen. Ein Dienst ist eine Arbeitseinheit, die von einem Dienstanbieter ausgeführt wird, um ein von einem Dienstkonsumenten gewünschtes Endergebnis zu erzielen. Sowohl Dienstanbieter als auch Dienstkonsument sind Rollen, die von Software-Agenten und nicht von Software-Eigentümern gespielt werden. Im Allgemeinen ist eine serviceorientierte Architektur eine Softwarelösung, die es einem Unternehmen ermöglichen soll, verschiedene Prozesse zu organisieren und zu nutzen. Mit SOA sind Softwareanwendungen keine riesigen Funktions- und Prozessblöcke mehr. Stattdessen bestehen diese Anwendungen aus zusammengestellten modularen Diensten. Denken Sie daran, dass es sich bei einem Dienst um eine einfache Softwarefunktion handelt (z. B. das Stornieren einer CD). Es kann bei Bedarf von jedem System ausgeführt werden, unabhängig von Betriebssystem, Plattform, Programmiersprache oder geografischem Standort.

Das Revolutionäre an SOA ist nicht das Konzept selbst, das es schon lange gibt, sondern die Tatsache, dass es über das WWW (World Wide Web) implementiert werden kann. So wie Webseiten auf jeder Plattform geladen werden, funktionieren Webdienste unabhängig von der Plattform, auf der sie erstellt werden, auf ähnliche Weise
universelle Standards.

FotoDie Idee von SOA geht direkt auf die objektorientierte Programmierung zurück, die einen Zusammenhang zwischen Daten und ihrer Verarbeitung nahelegt. Daher definieren sie Dienste formal über Schnittstellen, die unabhängig von der zugrunde liegenden Plattform und Programmiersprache sind. Diese Schnittstellen verbergen die Besonderheiten ihrer Implementierung, was sie unabhängig von der macht Entwickler und Programmiersprache. Durch diese Architekturen ist es möglich, hoch skalierbare Systeme zu entwerfen und zu implementieren, die die Geschäftslogik widerspiegeln und gleichzeitig die Interaktion zwischen verschiedenen proprietären oder Drittsystemen erleichtern. Wir möchten, dass jemand anderes die Arbeit für uns erledigt, weil er Experte ist. Die Inanspruchnahme eines Dienstes ist in der Regel günstiger und effektiver, als es selbst zu tun. Daher verstehen die meisten von uns, dass wir nicht in allem Experten sein können. Die gleiche Regel kann auf die Erstellung von Softwaresystemen angewendet werden.

Schnittstellen sind sehr wichtig. Wenn sie nicht klar definiert sind oder nicht funktionieren, funktioniert das System nicht. Die Integration weiterer Schnittstellen ist aufwendig und erhöht zudem das Fehlerpotenzial in verteilten Anwendungen. Remote-Schnittstellen sind der langsamste Teil der meisten verteilten Anwendungen. Anstatt für jede Anwendung neue Schnittstellen zu erstellen, ist es daher sinnvoller, generische Schnittstellen für alle Anwendungen wiederzuverwenden.

Da uns also nur wenige generische Schnittstellen zur Verfügung stehen, müssen wir anwendungsspezifische Semantik in die Nachrichten einbinden. Wir können jede Art von Nachricht über unsere Schnittstellen senden, aber es gibt einige Regeln, die befolgt werden müssen, um zu sagen, dass eine Architektur serviceorientiert ist.

– Erstens müssen die Meldungen beschreibend und nicht belehrend sein, da der Dienstleister für die Lösung des Problems verantwortlich ist. Es wäre zum Beispiel so, als würden Sie in ein Restaurant gehen und dem Kellner sagen, was Sie trinken möchten und welche Vorlieben Sie haben, aber wir sollten dem Koch nicht Schritt für Schritt erklären, wie er Ihre Gerichte zubereitet.

‐ Zweitens können Dienstleister Ihre Anfrage nicht verstehen, wenn ihre Nachrichten nicht in einem Format, einer Struktur und einem Vokabular verfasst sind, die für alle Beteiligten verständlich sind. Daher ist die Einschränkung des Vokabulars und der Struktur von Nachrichten eine
notwendig für eine effektive Kommunikation. Je enger die Botschaft, desto leichter verständlich.

- Drittens ist die Möglichkeit von Verlängerungen von entscheidender Bedeutung. Die Welt verändert sich ständig, ebenso wie die Umgebung, in der Software lebt. Diese Änderungen erfordern entsprechende Änderungen in der Systemsoftware und den Verbrauchern von Diensten, Anbietern und den Nachrichten, die sie austauschen. Wenn Nachrichten nicht erweiterbar sind, sind Verbraucher und Anbieter an eine bestimmte Version des Dienstes gebunden. Einschränkung und Erweiterbarkeit hängen eng zusammen, man braucht beides, und die Erhöhung des einen bedeutet die Reduzierung des anderen. Das Ideal besteht darin, ein korrektes Gleichgewicht zu erreichen.

– Viertens muss eine SOA über einen Mechanismus verfügen, der es dem Verbraucher ermöglicht, einen Dienstanbieter im Kontext einer vom Verbraucher gewünschten Dienstleistung zu finden. Der Mechanismus sollte flexibel sein und kein zentralisiertes Register sein.

- Fünftens, zustandsloser Dienst: Jede Nachricht, die ein Verbraucher an einen Anbieter sendet, muss alle Informationen enthalten, die der Anbieter für die Verarbeitung benötigt. Diese Einschränkung macht einen Dienstanbieter skalierbarer, da der Anbieter keine Statusinformationen zwischen Anfragen speichern muss. Dies kann als „Massenproduktionsdienst“ bezeichnet werden, da jede Anfrage generisch bearbeitet werden kann. Diese Einschränkung sorgt auch für mehr Transparenz, da jede Überwachungssoftware eine Anfrage unabhängig prüfen und ihre Absicht extrahieren kann. Dies ermöglicht auch eine einfache Wiederherstellung nach Teilausfällen, da es keine Zwischenzustände gibt, was den Dienst zuverlässiger macht.

- Sechstens, idempotente Anfragen (die keine Änderungen vornehmen): Doppelte Anfragen, die von einem Software-Agenten empfangen werden, haben die gleiche Wirkung wie eine einzelne Anfrage. Diese Anforderung ermöglicht es Anbietern und Verbrauchern, die Gesamtzuverlässigkeit des zu erhöhen Service, indem die Anfrage einfach wiederholt wird, wenn ein Fehler aufgetreten ist.

Wir können also sagen, dass SOA kein Werkzeug ist, sondern eine Reihe von Standards zum Aufbau neuer Anwendungen, die dynamischer und weniger abhängig sind. SOA erleichtert den systematischen Zugriff auf Geschäftslogik und Informationen über mehrere Dienste hinweg und kann auch mehrere Remote-Dienste zu einem einzigen Dienst orchestrieren. die meisten Die Definitionen identifizieren die Verwendung von Web Services, die wir im nächsten Kapitel sehen werden, bei der Implementierung einer serviceorientierten Architektur. Es kann jedoch auch mit jeder anderen servicebasierten Technologie implementiert werden.