Lösen Sie echte Probleme mit Aglets, einer Art mobilem Agenten

Under the Hood in diesem Monat ist der zweite Teil einer zweiteiligen Artikelserie über Aglets, eine Innovation, die von IBM Japan entwickelt wurde. Letzten Monat habe ich das Innenleben von Aglets beschrieben. In diesem Monat werde ich diskutieren, wie mobile Agententechnologien wie Aglets in die Toolbox des Java-Entwicklers passen könnten.

Aglets: Eine Auffrischung

Ein Aglet ist ein Java-basierter autonomer Software-Agent. (Weitere Informationen finden Sie in der Erklärung der Agenten von Bret Sommers.) Wie hier verwendet, ist ein Software-Agent ein Programm, das sich selbst anhalten, sich an einen anderen Computer im Netzwerk senden und die Ausführung auf dem neuen Computer fortsetzen kann. Das Hauptmerkmal dieser Art von Software-Agent ist, dass sowohl sein Code als auch sein Status mobil sind.

Aglets sind autonom, denn sobald Sie sie starten, entscheiden sie, wohin sie gehen und was sie tun. Sie können Anfragen von externen Quellen empfangen, aber jedes einzelne Aglet entscheidet, ob externe Anfragen erfüllt werden sollen oder nicht. Außerdem können Aglets unabhängig von externen Anforderungen Aktionen ausführen, z. B. das Überqueren eines Netzwerks zu einem neuen Computer.

Im Herzen sind Aglets mobil

Menschen verwenden den Begriff "Software-Agent", um über mehr als nur mobile Agenten zu sprechen. Zwei weitere Bedeutungen des Begriffs sind intelligente Agenten und Vertreter . Intelligente Agenten sind bis zu einem gewissen Grad mit künstlicher Intelligenz ausgestattet. Sie mögen sowohl mobil als auch intelligent sein, aber sie müssen nicht mobil sein. Ein Vertreter ist eine Software, die Sie wie einen Anwalt oder einen Assistenten repräsentiert. Vertreter stehen in Ihrer Abwesenheit für Sie ein. Abhängig von Ihren Anweisungen können Vertreter in Ihrem Namen Entscheidungen treffen oder sogar Geschäfte abschließen. Repräsentative Mittel können mobil oder intelligent oder beides sein, aber sie nicht haben , um mobil zu sein.

Aglets können möglicherweise mit künstlicher Intelligenz ausgestattet sein oder als Repräsentanten dienen, müssen es aber auch nicht sein. Grundsätzlich handelt es sich um mobile Agenten: Java-Programme, die die Ausführung stoppen, über das Netzwerk (mit Code und Status im Takt) übertragen und die Ausführung auf einem anderen Host fortsetzen können.

Wenn Sie es erstellen, werden sie kommen: Verwenden von mobilen Agenten

Sobald eine Infrastruktur von Hosts für mobile Agenten eingerichtet ist, werden zweifellos mobile Agenten aufgebaut, um die Infrastruktur zu füllen. Aber was werden diese mobilen Agenten tun? Was rechtfertigt den Aufbau der Infrastruktur überhaupt?

Stellen Sie sich für einen Moment vor, dass in einem Netzwerk in Ihrer Nähe eine weit verbreitete Infrastruktur von Hosts für mobile Agenten eingerichtet wurde. Wie könnten Sie es verwenden?

Es gibt viele Anwendungen, für die mobile Agenten als gut geeignet gelten. Die meisten dieser Anwendungen umfassen die Suche nach Informationen im Namen eines Benutzers und möglicherweise die Durchführung einer Transaktion, wenn geeignete Informationen gefunden werden.

Hier ist eine Liste einiger der am häufigsten genannten Anwendungen für mobile Agenten:

Datenerfassung von vielen Orten

Einer der Hauptunterschiede zwischen mobilem Code wie Applets und mobilen Agenten ist die Reiseroute. Während mobiler Code normalerweise nur von Punkt A nach Punkt B wandert, haben mobile Agenten eine Reiseroute und können nacheinander zu vielen Standorten reisen. Eine natürliche Anwendung mobiler Agenten ist daher das Sammeln von Informationen, die auf vielen Computern verteilt sind, die an ein Netzwerk angeschlossen sind.

Ein Beispiel für diese Art von Anwendung ist ein Netzwerksicherungstool, das regelmäßig jede Festplatte überprüfen muss, die an jeden an ein Netzwerk angeschlossenen Computer angeschlossen ist. Hier könnte ein mobiler Agent das Netzwerk durchstreifen und Informationen über den Sicherungsstatus jeder Festplatte sammeln. Es könnte dann zu seinem Ursprungsort zurückkehren und einen Bericht erstellen.

Suchen und Filtern

Angesichts der ständig wachsenden Menge an Informationen, die im Internet und in anderen Netzwerken verfügbar sind, läuft das Sammeln von Informationen aus einem Netzwerk häufig darauf hinaus, große Datenmengen nach einigen relevanten Informationen zu durchsuchen. Das Herausfiltern irrelevanter Informationen kann sehr zeitaufwändig und frustrierend sein. Im Auftrag eines Benutzers kann ein mobiler Agent viele Websites besuchen, die auf jeder Website verfügbaren Informationen durchsuchen und einen Index mit Links zu Informationen erstellen, die einem Suchkriterium entsprechen.

Das Suchen und Filtern weist ein Attribut auf, das vielen potenziellen Anwendungen mobiler Agenten gemeinsam ist: Kenntnis der Benutzerpräferenzen. Mobile Agenten müssen zwar nicht "repräsentativ" oder "intelligent" sein, sind es aber häufig. Hier erhält ein Agent Kenntnisse über Benutzerpräferenzen in Bezug auf ein Suchkriterium und eine Reiseroute und wird im Namen des Benutzers an das Netzwerk gesendet. Es durchsucht riesige Datenmengen nach Informationen, die für den Benutzer von besonderem Interesse sind. Irgendwann kehrt es zum Benutzer zurück, um seine Ergebnisse zu melden.

Überwachung

Manchmal werden Informationen nicht über den Speicherplatz verteilt (auf den Festplatten vieler verschiedener Computer, die an dasselbe Netzwerk angeschlossen sind), sondern über die Zeit. Es werden ständig neue Informationen produziert und im Netzwerk veröffentlicht. Agenten können gesendet werden, um zu warten, bis bestimmte Arten von Informationen verfügbar sind.

Zum Beispiel könnte ein Agent zu einem Börsenhost gehen, warten, bis eine bestimmte Aktie einen bestimmten Preis erreicht, und dann einen Teil davon im Namen seines Benutzers kaufen. Ein weiteres Beispiel ist das personalisierte Sammeln von Nachrichten. Ein Agent kann verschiedene Nachrichtenquellen auf bestimmte Arten von Informationen überwachen, die für seinen Benutzer von Interesse sind, und dann zurückmelden, wenn relevante Informationen verfügbar werden.

Diese Art von Anwendung unterstreicht die Asynchronität mobiler Agenten. Wenn Sie einen Agenten versenden, müssen Sie nicht warten, bis die Ergebnisse der Informationserfassung vorliegen. Sie können einen Agenten so programmieren, dass er so lange wartet, bis bestimmte Informationen verfügbar sind. Außerdem müssen Sie nicht mit dem Netzwerk verbunden bleiben, bis ein Agent zurückkehrt. Ein Agent kann warten, bis Sie sich wieder mit dem Netzwerk verbunden haben, bevor er Ihnen seinen Bericht sendet.

Gezielte Informationsverbreitung

Eine weitere mögliche Verwendung von mobilen Agenten ist die Verbreitung interaktiver Nachrichten oder Werbung an interessierte Parteien. Leider bedeutet dies, dass mobile Agenten wie E-Mail für Spam verwendet werden können - wahllose Verbreitung von Informationen, normalerweise Werbung. (Es wird wahrscheinlich einen Markt für Agenten geben, die den Spam aus eingehenden mobilen Agenten herausfiltern.)

Verhandeln

Neben der Suche in Datenbanken und Dateien können Agenten Informationen erhalten, indem sie mit anderen Agenten interagieren. Wenn Sie beispielsweise ein Meeting mit mehreren anderen Personen planen möchten, können Sie einen mobilen Agenten senden, um mit den repräsentativen Agenten aller Personen zu interagieren, die Sie zu Ihrem Meeting einladen möchten. Die Agenten konnten verhandeln und eine Besprechungszeit festlegen.

In diesem Fall enthält jeder Agent Informationen zum Zeitplan seines Benutzers. Um eine Besprechungszeit zu vereinbaren, tauschen die Agenten Informationen aus.

Tauschhandel

Der elektronische Geschäftsverkehr ist eine weitere gute Lösung für die Mobile-Agent-Technologie. Ein mobiler Agent kann Ihre Einkäufe für Sie erledigen, einschließlich Bestellungen aufgeben und möglicherweise sogar bezahlen. Wenn Sie beispielsweise vom Silicon Valley zu einer Insel im Südpazifik fliegen möchten, kann ein Agent Datenbanken mit Flugplänen und Preisen für verschiedene Fluggesellschaften besuchen, den besten Preis und die beste Zeit finden, Reservierungen für Sie vornehmen und mit Ihrem Guthaben bezahlen Kartennummer.

E-Commerce kann auch zwischen Agenten stattfinden. Zum Beispiel könnte es einen Agent Host geben, der sich dem Kauf und Verkauf von Autos widmet. Wenn Sie ein Auto kaufen möchten, können Sie einem Agenten Kenntnisse über Ihre Vorlieben vermitteln, einschließlich einer Preisspanne und möglicherweise einer Verhandlungsstrategie. Sie würden Ihren Agenten an den dedizierten Host senden, wo er sich unter Agenten mischt und feilscht, die ein Auto verkaufen möchten.

Wenn eine mögliche Übereinstimmung gefunden wird, kann sich Ihr Agent bei Ihnen melden und Sie können sich persönlich kontaktieren, um die endgültigen Vorkehrungen zu treffen. Alternativ könnte Ihr Agent das Geschäft möglicherweise in Ihrem Namen abschließen. Wenn die Gelegenheit gut ist, hat Ihr Agent möglicherweise nur wenige Mikrosekunden Zeit, um zu handeln, bevor der Agent eines anderen das Auto kauft.

Parallelverarbeitung

Angesichts der Tatsache, dass mobile Agenten von Knoten zu Knoten wechseln und Subagenten erzeugen können, besteht eine mögliche Verwendung der mobilen Agententechnologie darin, einen Parallelverarbeitungsjob zu verwalten. Wenn eine Berechnung so viel CPU-Zeit erfordert, dass eine Aufteilung auf mehrere Prozessoren erforderlich ist, kann eine Infrastruktur von Hosts für mobile Agenten eine einfache Möglichkeit sein, die Prozesse dort herauszubringen.

Unterhaltung

Ein letztes Beispiel für eine mögliche Anwendung für mobile Agenten ist die Unterhaltung. In diesem Szenario repräsentieren Agenten Spieler. Die Agenten konkurrieren im Namen der Spieler miteinander. Jeder Spieler programmierte einen Agenten mit einer Strategie und schickte den Agenten dann an einen Spielehost. Wenn der Spielehost auf einem Computer in Las Vegas ausgeführt wird, könnten die Agenten möglicherweise um echtes Geld spielen.

Die Sicherheitsherausforderung

Obwohl es nicht an potenziellen Anwendungen für mobile Agenten mangelt, wirft die Technologie einige Bedenken auf - wahrscheinlich die größte ist die Sicherheit. Mit einer etablierten Infrastruktur von Hosts für mobile Agenten, die Agenten Zugriff auf lokale Ressourcen gewähren, könnten Virenschreiber und andere betrügerische Programmierer viel Spaß haben.

Obwohl die Sicherheit des Hosts ein Hauptanliegen ist, handelt es sich wahrscheinlich um ein lösbares Problem. Mit vorhandenen Sicherheitsmechanismen, wie sie beispielsweise von Java angeboten werden, sollte es möglich sein, ein akzeptables Sicherheitsniveau zu erreichen, um Hosts vor böswilligen Agenten zu schützen.

Eine andere Seite der Sicherheit mobiler Agenten, die möglicherweise nicht so einfach zu lösen ist, ist der Schutz von Agenten vor böswilligen Hosts. Wenn Sie Agenten versenden möchten, in deren Status Ihre Kreditkartennummern oder E-Cash eingebettet sind, müssen Sie sich um Taschendiebe kümmern. Da ein Host die Klassendateien und den Status für Ihre Aglets hochlädt, können diese (oder jeder, der während der Übertragung am Netzwerk schnüffelt) möglicherweise private Informationen lesen oder sogar den Code und den Status Ihres Aglets ändern.

Warum mobile Agenten?

Angenommen, die Sicherheitsprobleme im Zusammenhang mit mobilen Agenten können angemessen angegangen werden. Warum sollten Sie eine Lösung für mobile Agenten gegenüber herkömmlichen Client / Server-Modellen wählen? Warum sollten Sie mobile Agenten anstelle von mobilem Code wie Applets oder Servlets auswählen?

Was ist der Sinn mobiler Agenten in einer Welt, in der Sie verteilte Verarbeitungsmodelle, einschließlich mobilen Codes, bewiesen haben?

Eine Perspektive wird von Harrison, Chess und Kershenbaum in ihrem IBM-Forschungsbericht mit dem Titel "Mobile Agents: Sind sie eine gute Idee?" (Siehe Ressourcen unten.) Hier ist ein kurzes Zitat aus ihrem Artikel:

Während keiner der individuellen Vorteile von mobilen Agenten ... überwältigend stark ist, glauben wir, dass die Gesamtvorteile von mobilen Agenten überwältigend stark sind, weil:

ein. Sie können einen umfassenden, offenen und allgemeinen Rahmen für die Entwicklung und Personalisierung von Netzwerkdiensten bieten.

b. Während Alternativen zu mobilen Agenten für jeden der einzelnen Vorteile erweitert werden können, gibt es keine einzige Alternative zu allen Funktionen, die von einem mobilen Agenten-Framework unterstützt werden.

Mit anderen Worten, der Punkt mobiler Agenten ist möglicherweise keine einzelne potenzielle Anwendung, von der jede alternativ unter Verwendung eines traditionelleren verteilten Verarbeitungsschemas implementiert werden könnte. Der Punkt könnte vielmehr sein, dass mobile Agenten so viele potenzielle Anwendungen haben. Sie bieten Ihnen eine einzige, flexible Möglichkeit, die Vorteile der traditionellen Modelle für verteilte Verarbeitung, Client / Server und mobilen Code zu implementieren und zu nutzen.

Eine höhere Abstraktionsebene

Eine andere Perspektive kommt von Danny Lange, dem Erfinder des Aglets, der Folgendes über Aglets zu sagen hatte:

Als ich das Aglet erfand, suchte ich nach einer höheren Abstraktion für Network Computing. Für mich war das Aglet eine Antwort auf einige 15 Jahre alte Fragen, die ich hatte: Was kommt nach objektorientierter Programmierung? Was ist der nächste Paradigmenwechsel?

Das Aglet ist meine Schlüsselabstraktion für "Network Computing"; Nicht das Applet, nicht das Servlet, nicht RPC, sondern das Aglet. Das Aglet erlaubt mir, in Bezug auf den "Netzwerkcomputer" zu denken; Nicht die NC, sondern alle NCs, PCs, Workstations und Mainframes in einem Raum. Es ist mir egal, wo das Aglet läuft, und es interessiert das Aglet auch nicht. Wie wir über das Aglet sagen: "Einmal erstellen, überall hingehen".

Mobile Agenten bieten daher eine Möglichkeit, über die Lösung von Softwareproblemen in einer Netzwerkumgebung nachzudenken, die natürlicher zur realen Welt passt. In der realen Welt bewegen sich Menschen und Objekte von Ort zu Ort. Wenn Sie etwas erledigen möchten, telefonieren Sie manchmal, manchmal schicken Sie einen Assistenten auf die Baustelle und manchmal gehen Sie einfach selbst.

Abschließende Gedanken: Objektorientierung und mobile Agenten

Die objektorientierte Programmierung stellte eine höhere Abstraktionsebene dar als die prozedurale Programmierung. Frühe Befürworter der objektorientierten Programmierung versprachen, dass diese höhere Abstraktionsebene Programmierer produktiver machen, Code leichter verstehen und warten und bessere Entwicklungswerkzeuge ermöglichen würde. Obwohl die Meinungen darüber, inwieweit diese Versprechen erfüllt wurden, unterschiedlich sein können, hat die Softwareentwickler-Community den objektorientierten Ansatz größtenteils angenommen.

Mobile Agenten können einfach einen weiteren Schritt in der Entwicklung des objektorientierten Paradigmas darstellen. Aglets sind Java-Objekte, die sich autonom von Host zu Host bewegen können. Wie ein traditionelles Objekt hat ein Aglet Zustand, Verhalten und Identität. Im Gegensatz zu einem herkömmlichen Objekt hat ein Aglet jedoch auch einen Standort .

Nächsten Monat

Nächsten Monat wird der letzte Artikel in meiner langen Reihe sein, der Java-Bytecodes behandelt. Es werden die verschiedenen Möglichkeiten erläutert, wie die virtuelle Java-Maschine Methoden aufruft.