DE602005005052T2 - Verfahren zur auswahl von plug-in-codemodulen in einer datenverarbeitungseinrichtung - Google Patents

Verfahren zur auswahl von plug-in-codemodulen in einer datenverarbeitungseinrichtung Download PDF

Info

Publication number
DE602005005052T2
DE602005005052T2 DE602005005052T DE602005005052T DE602005005052T2 DE 602005005052 T2 DE602005005052 T2 DE 602005005052T2 DE 602005005052 T DE602005005052 T DE 602005005052T DE 602005005052 T DE602005005052 T DE 602005005052T DE 602005005052 T2 DE602005005052 T2 DE 602005005052T2
Authority
DE
Germany
Prior art keywords
plug
modules
data processing
processing device
score
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE602005005052T
Other languages
English (en)
Other versions
DE602005005052D1 (de
Inventor
Karl Mcdowall
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nokia Oyj
Original Assignee
Symbian Software Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Symbian Software Ltd filed Critical Symbian Software Ltd
Publication of DE602005005052D1 publication Critical patent/DE602005005052D1/de
Application granted granted Critical
Publication of DE602005005052T2 publication Critical patent/DE602005005052T2/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf ein Verfahren zum Betreiben einer Datenverarbeitungseinrichtung und insbesondere auf ein Verfahren zum Betreiben einer solchen Einrichtung, um es der Einrichtung zu ermöglichen, zu entscheiden, welches aus der Anzahl von Plug-ins das am besten geeignete ist für die Eigenschaften, die durch eine anfordernde Anwendung auf der Einrichtung spezifiziert werden.
  • Der Ausdruck Datenverarbeitungseinrichtung, wie er hier verwendet wird, soll weitreichend ausgelegt werden, um jegliche Form einer Datenverarbeitungseinrichtung abzudecken, und beinhaltet Datenaufzeichnungseinrichtungen jeglicher Form, Computer jeglicher Art und Form, einschließlich tragbarer und Personal-Computer und Kommunikationseinrichtungen jeglicher Form, einschließlich Mobiltelefone, Smartphones, Kommunikatoren, die Kommunikationen, Bildaufnahmen und/oder eine Wiedergabe und eine Computer-Funktionalität innerhalb einer einzigen Einrichtung und anderen Formen von drahtlosen und verdrahteten Informationseinrichtungen kombiniert.
  • Ein Plug-in kann definiert werden als ein ersetzbares Objekt ausführbaren Codes, das spezielle Services für eine lose verbundene Anwendung bereitstellt, die das Plug-in während der Laufzeit laden oder verwerfen kann. Plug-ins werden im Allgemeinen als dynamische Link-Bibliotheken bzw. dynamic link libraries (DLLs) oder vergleichbare Arten von Modulen geladen, die innerhalb des gleichen Prozessraumes wie die Anwendung, die sie aufruft, ablaufen, obwohl sie auch als separate Prozesse erzeugt oder ablaufen können.
  • Plug-ins werden weithin in vielen Betriebssystemen und von vielen Anwendungen verwendet. Die wichtigsten Vorteile dieser Technologie sind:
    • • Anwendungen, die in der Lage sind, Plug-ins zu verwenden, sind inhärent erweiterbar, da Plug-in-Module hinzugefügt oder ersetzt werden können, wenn neue Eigenschaften erforderlich sind
    • • Betriebscode für Plug-ins wird durch Anwendungen nur auf Anforderung geladen, was es Programmen ermöglicht, geringere Anforderungen bezüglich des Speichers der Einrichtung zu haben und schneller gestartet zu werden.
  • Diese Technologie ist den meisten Nutzern von Datenverarbeitungseinrichtungen durch das weitverbreitete Einfügen von Plug-ins in Webbrowsern vertraut, wie zum Beispiel Microsoft Internet Explorer und Netscape, was Gegenstand des US-Patents 5 838 906 (allgemein als Eolas-Patent bekannt) war. Obwohl sie auch die Basis sind für die Verwendung von Java-Applikationen in Browsern, besteht die allgemeinste Manifestierung der Verwendung von Plug-ins darin, daß Browser-Anwendungen sich auf sie stützen, um bestimmte Arten von Inhalt zu verteilen. Die Verwendung von Plug-ins in Bezug auf Multimedia-Dateien ist besonders verbreitet.
  • Da Plug-ins definitionsgemäß inhärent unabhängig von den Anwendungen sind, die sie laden, ist es für alle Systeme, die eine Plug-in-Technologie verwenden, notwendig, Mechanismen bereitzustellen, durch die die Anwendungen von verfügbaren Plug-ins in Kenntnis gesetzt werden und auf das Verfahren zum Laden oder Aufrufen derselben hingewiesen werden.
  • Frühe Verfahren, wie zum Beispiel jene, die durch WindowsTM-Anwendungen verwendet wurden, die ausschließlich von der OLE-Technologie von Microsoft abhängen, erfordern fest programmierte Links zu den Namen und den Positionen der Plug-ins. Dies wird als unbefriedigend betrachtet, da es nur eine Plug-in-Ersetzung erlaubt und es erfordert, daß die Host-Anwendung aktualisiert wird, um das Hinzufügen von extra Plug-in-Komponenten zu erlauben.
  • Nachfolgende Verfahren speichern Namen und Positionen der Plug-ins in einem Register oder einer Plug-in-Datenbank; dies wird als besser angesehen als das Festprogammieren von Namen, da es sowohl flexibel als auch erweiterbar ist. Für eine maximale Flexibilität und um es zu ermöglichen, daß das gleiche Plug-in durch verschiedene Anwendungen verwendet werden kann, sind solche Register oder Datenbanken typischerweise eher systemweit als Anwendungs-spezifisch. Es ist darum verbreitet, einen oder mehrere Zwischenebenen bereitzustellen, zwischen Anwendung und deren Plug-ins, die gemeinsame Services bereitzustellen, einschließlich:
    • • Der Position von geeignet registrierten Plug-ins für Anwendungen
    • • Entscheiden, welches Plug-in unter den potentiellen Plug-in-Kandidaten aufgerufen werden soll
    • • Instanziieren des Plug-ins im Auftrag des Anwendung
  • Das Component-Object-Model (COM) von Microsoft ist ein gut bekanntes Verfahren zum Ausführen desselben, wobei das Betriebssystem eine Zwischenebene bereitstellt, die das Plug-in-Modul in dem Register lokalisiert, die Instanziierung bearbeitet und dann Aufrufe der Anwendung zu der Plug-in-Instanz umleitet. COM wurde entwickelt, so daß Software-Entwickler neue Zusatzanwendungen in existierende Anwendungen hineinstecken können, ohne ein Neubau der existierenden Anwendung zu erfordern. COM-Komponenten sollten darum als austauschbare Plug-ins konzipiert werden, falls die COM-Komponente eine lokale Im-Prozess-DLL oder ein Fern-Server-Ausführungselement ist.
  • WO 00/67114 im Namen von Sun Microsystems beschreibt „A System and Method for discovering and binding a program object", wobei eine Zwischenebene ein Register verwendet, um ein Plug-in zu entdecken und zu instanziieren, und eine Referenz zu der Instanz an die Anwendung zurückgibt, damit sie mit ihr direkt kommunizieren kann.
  • US 6 279 030 beschreibt eine Technik, in der mehrere Versionen einer Programm-Komponente verfügbar sind und eine spezielle Version auf Grundlage von gegenwärtigen Kennzeichen-Werten dynamisch ausgewählt und heruntergeladen werden kann.
  • Systemweite Verfahren wie diese werden oft mit weniger generischen Zwischenebenen kombiniert, wie zum Beispiel Anwendungs-spezifische Plug-in-Verwalter oder spezialisierte Server, die es erlauben, Plug-ins zu verwenden, um mehrere simultane Anwendungen zu betreuen.
  • Ein Bedenken im Bezug auf die gegenwärtige Technologie besteht darin, daß, wenn es eine Zahl von Plug-in-Kandidaten gibt, die Auswahl, welches Plug-in das am besten geeignete ist, ein in hohem Maße technischer Prozess sein kann, die potentiell komplexe Entscheidungs-Intelligenz oder -Algorithmen erfordert, um zu einer optimalen Auswahl zu kommen.
  • Jeglicher Zugang, der darauf basiert, daß die dazwischen liegenden Einheiten eine solche Entscheidung trifft, würde es erfordern, möglicherweise komplexe Zustands-Information aufrecht zu halten, und Teil spezialisierter Information zu sein. Davon abhängend, wie generisch die dazwischen liegenden Einheiten sind, kann dies infolge der Einbeziehung von Routinen für alle Arten von existierenden Plug-ins zu einem unnötig aufgeblähten Code führen. Architektonisch steht dies im Konflikt mit der Rolle der generischen Service-Ebenen, die sich darauf beschränken sollten, allgemeine Services wie das Auffinden und die Intanziierung von Plug-ins bereitzustellen. Somit werden sich wahrscheinlich alle Typen von dazwischen liegenden Einheiten als unzureichend erweisen, um neue Arten von Plug-ins zu behandeln, die möglicherweise in der Zeit noch nicht bekannt waren, in der die Zwischenebene geschrieben wurde.
  • Ein spezieller Fall, der diese Bedenken illustriert, ist die Implementierung von Standortbezogenen Services bzw. Location-Based-Services (LBS) auf einer drahtlosen Informationseinrichtung wie zum Beispiel ein Mobiltelefon. LBS beinhaltet Positions-basierte Information, Positions-sensitive Gebührenerfassung, Notfall-Services und Positionserfassung. Alle diese Kennzeichen hängen davon ab, daß das Mobiltelefon in der Lage ist mitzuteilen, wo es ist (Positionsbestimmung). Es gibt jedoch viele verschiedene Wege zum Erhalten von Positions-Information. Das am meisten verbreitete System verwendet das Global-Positioning-System (GPS). Es gibt auch alternative Technologien, die verwendet werden, viele von ihnen basieren auf einem Netzwerk, wie zum Beispiel Zellen-Triangulation. Es ist auch bekannt, daß das vorhandenen Verfahren zum Erhalten von Positions-Information in der Zukunft erweitert wird; zum Beispiel wird das Europäische Galileo-Projekt schließlich eine Alternative zu GPS bereitstellen.
  • Die Sachverständigen in der Technik werden erkennen, daß ein Plug-in-Design zum Implementieren von LBS, das es einer Anwendung erlaubt, irgendein Verfahren zum Erhalten von Positions-Information zu verwenden, äußerst dienlich wäre und signifikante Vorteile bereitstellen würde. Dies ist der Fall, da:
    • • alle oben erwähnten Positions-Techniken identische Informations-Typen bereitstellen
    • • sie alle geschrieben werden können, um der gleichen Programmierschnittstelle bzw. Application-Programming-Interface (API) zu entsprechen
    • • eine Anwendung, im Allgemeinen, nur eine von ihnen verwenden muss.
  • Die obigen Verfahren zum Erhalten von Positionen haben jedoch signifikant unterschiedliche Merkmale, wie zum Beispiel Genauigkeit, benötigte Leistung, Kosten für den Nutzer und die benötigte Zeit zum Erhalten einer Positionsfeststellung. Die Wahl, welche aufzurufen ist, ist daher komplex, wobei sie von einer Anzahl von Faktoren abhängt. Keine Zwischenebene zum Aufrufen von Plug-ins würde in der Lage sein, alle diese zu berücksichtigen. Im schlimmsten Fall würde eine Unfähigkeit, eine sinnvolle Entscheidung zu treffen, wie Positions-Information zu erhalten ist, darin resultieren, einen einfachen „Last-fit"-Mechanismus zu verwenden, wobei das zuletzt installierte, mit der entsprechenden API-konforme Anpassungs-Plug-in instanziiert wird.
  • Es ist daher ersichtlich, daß es zur Zeit keinen flexiblen und erweiterbaren Weg zum automatischen Bestimmen gibt, welches Plug-in in Situationen verwendet werden soll, in denen mehrere Plug-ins zur Verfügung stehen, wobei jedes von ihnen eine bestimmte Aufgabe durchführen kann, aber in einer hinreichend unterschiedlichen Art, um es vorteilhaft zu machen, ein bestimmtes Plug-in für einen bestimmten Fall auszusuchen.
  • Demnach ist es ein Gegenstand der vorliegenden Erfindung, ein verbessertes Verfahren zum Auswählen von Plug-ins in einer Datenverarbeitungseinrichtung bereitzustellen.
  • Entsprechend eines ersten Aspekts der vorliegenden Erfindung wird ein Verfahren bereitgestellt, das es ermöglicht, eine auf einer Datenverarbeitungseinrichtung laufende Software-Anwendung zu veranlassen, das am besten geeignete Code-Modul aus einem Satz von Code-Modulen auszuführen, wobei das Verfahren umfasst
    • a) Identifizieren von Merkmalen oder Eigenschaften, die das am besten geeignete Code-Modul besitzen sollte;
    • b) Weiterleiten der Merkmale oder Eigenschaften an jedes der möglichen funktionell kompatiblen Code-Module, entweder direkt oder über eine oder mehrere Zwischenebene;
    • c) Verwenden der Code-Module, eine deterministische Berechnung für jedes auszuführen, über wie gut sie mit den Merkmalen oder Eigenschaften übereinstimmen, und das Ergebnis als eine numerische Punktzahl zurückzugeben, entweder an die Software-Anwendung oder an eine Zwischenebene; und
    • d) Ausführen des Moduls mit der besten Punktzahl, entweder direkt durch die Software-Anwendung oder über eine durch eine Zwischenebene durchgeführte Instanziierung.
  • Entsprechend eines zweiten Aspekts der vorliegenden Erfindung wird eine Datenverarbeitungseinrichtung bereitgestellt, die eingerichtet ist, um in Übereinstimmung mit dem Verfahren des ersten Aspekts zu arbeiten.
  • Entsprechend eines dritten Aspekts der vorliegenden Erfindung wird ein Betriebssystem bereitgestellt, das eine Datenverarbeitungseinrichtung entsprechend des zweiten Aspekts veranlasst, in Übereinstimmung mit dem Verfahren des ersten Aspekts zu arbeiten.
  • Das Symbian-OSTM-Betriebssystem für Mobiltelefone, hergestellt durch Symbian Software Ltd. in London, hat, seit seiner ersten Ausgabe im Jahr 1997, ausgiebigen Gebrauch von Plug-ins gemacht. Während diese Plug-ins traditionell auf polymorphen DLL basieren, die durch den oben beschriebenen Typ einer Zwischenebene geladen werden, wird eine zunehmende Zahl vorgeschlagen als ausführbare Einheiten bzw. Executables zu implementieren, die in ihrem eigenen Prozessraum laufen.
  • Diese Erfindung kann auf beide Plug-in-Typen angewendet werden.
  • Während die hier beschriebene Erfindung beschreibt, wie das oben umrissene Problem im Zusammenhang mit LBS gelöst wird, wird es von den Sachkundigen in der Technik leicht anerkannt werden, daß die der Erfindung zu Grunde liegenden Prinzipien in gleichem Maße auf jegliche Situation anwendbar ist, in der eine Auswahl zwischen möglichen Plug-ins getroffen werden muss. Somit wird der Fall von LBS nur für einen darstellenden Zweck verwendet, und soll nicht ausgelegt werden als ein Beschränken des Bereiches oder der Anwendbarkeit der Erfindung in anderen Bereichen. In gleichem Maße wird das hier beschriebene Symbian-OSTM-Betriebssystem auch nur für einen darstellenden Zweck verwendet und soll ebenfalls nicht ausgelegt werden als ein Beschränken des des Bereiches oder der Anwendbarkeit der Erfindung auf andere Betriebssysteme, wie es für Personen, die mit dieser Technik vertraut sind, ersichtlich sein wird.
  • Das Location-Based-Services-Positierungs-Subsystem in dem Symbian-OSTM-Betriebssystem setzt eine Client/Server-Framework-Architektur ein, um es mehreren Clients (Anwendungen) zu erlauben, periodische Aktualisierungen der Einrichtungsposition von mehreren Positions-Technologien abzurufen.
  • Diese Architektur umfasst einen Singleton-Positions-Server, der Technologie-unabhängig ist, und auf den durch eine konsistente Programmierschnittstelle bzw. Application-Program-Interface (API) zugegriffen wird, die eine Technologie-unabhängige Abstraktionsebene bereitstellt, die für jegliche der früher beschriebenen Verfahren geeignet ist.
  • Der Server verwaltet den Zugriff auf Positions-Technolgie-spezifische Module. Diese Module werden als Plug-ins implementiert, die dem Betriebssystem dynamisch hinzugefügt oder von ihm entfernt werden können, und die durch den Positions-Server erfasst und verwendet werden, ohne daß der Client-Server es wissen muss.
  • Wenn ein Client sich mit dem Positions-Server verbindet, kann er ein Kriterien-Objekt anbieten, um gewünschte oder erforderliche Eigenschaften der zu verwendenden Positions-Technologie zu spezifizieren. Diese Kriterien-Objekte werden in der Abstraktions-API spezifiziert und erlauben es, Servicequalitäts- bzw. Quality of Service (QoS) Parameter, wie zum Beispiel horizontale Genauigkeit, vertikale Genauigkeit, Zeit bis zur ersten Behebung, zu spezifizieren. Andere Parameter von potentiellem Interesse für die Anwendung können auch spezifiziert werden, wie zum Beispiel Kosten und Leistungsverbrauch.
  • Mit der vorliegenden Erfindung iteriert der Positions-Server durch die verfügbaren Plug-ins, wobei er jedes einzelne nacheinander fragt, ob es besser mit den durch den Client spezifizierten Kriterien übereinstimmt, als das vorhergehende Plug-in. Der Positions-Server bemerkt selbst nicht, wie die Auflösung des „besser/schlechter" von Plug-in zu Plug-in ausgeführt wird.
  • Der mit dieser Anmeldung beschriebene Zugang basiert darauf, daß jedes Plug-in in der Lage ist, eine deterministische Berechnung einer Punktzahl auszuführen, die angibt, wie gut das Plug-in zu den spezifizierten QoS-Kriterien passt. Die Berechnung verwendet die gegenwärtigen Werte der Kennzeichen, wie zum Beispiel „Zeit bis zur nächsten Behebung", die jedem Plug-in bekannt sind. Die Berechnung ist deterministisch und jedes Plug-in folgt denselben Regeln, um zu gewährleisten, daß man immer zu einer fairen und korrekten Entscheidung kommt. Viele verschiedene Algorithmen oder Verfahren sind für die endgültige Auswahl möglich, wie zum Beispiel:
    • 1. Die Server-Komponente fragt jedes Plug-in ab und behält die Übersicht, welches Plug-in die höchste (d. h. die am besten geeignete) Punktzahl zurückgibt, und sobald alle Plug-ins abgefragt wurden, wählt sie das Plug-in mit der höchsten Punktzahl aus.
    • 2. Die Server-Komponente fragt jedes Plug-in der Reihe nach ab, wobei die bisher höchste Punktzahl an jedes Plug-in eingereicht wird. Wenn das Plug-in diese Punktzahl nicht „schlagen" kann, entfernt es sich selbst von der Berücksichtigung; wenn es die Punktzahl schlagen kann, informiert es dann den Server, daß es nun die höchste Punktzahl hat.
  • Das erste dieser Verfahren erfordert einiges begrenztes Entscheiden durch die Server-Komponente, das zweite ist eine wahre Übertragung der Entscheidung, so daß der Server überhaupt nicht involviert ist. Diese Erfindung ist jedoch nicht auf diese zwei Verfahren beschränkt und wird mit jeglichem Algorithmus arbeiten, den die Sachkundigen in der Technik entwickeln können.
  • Die Erfindung beruht auf Plug-ins, die sich korrekt verhalten, wenn deren Punktzahl berechnet wird (d. h. den veröffentlichten Regeln für die deterministische Berechnung folgend). Dies wird nicht als Mangel der involvierten Prinzipien betrachtet und führt kein extra Risiko ein, da eine Anwendung in allen Fällen darauf vertrauen muss, daß Plug-ins, die sie aufruft, sich gutartig verhalten. Wenn es aber entschieden wird, daß nicht allen Plug-ins blind vertraut werden soll, ist es immer noch möglich, das Verhalten jedes einzelnen zu einem geeigneten Punkt zu überprüfen, wie zum Beispiel, wenn das Plug-in installiert, getestet, verifiziert oder unterzeichnet wird. Alternativ können Anwendungen ein dynamisches Überprüfen des Verhalten eines Plug-ins während der Laufzeit durchführen, durch eine Überwachungseinheit oder einen anderen Mechanismus.
  • Es wird angesehen, daß die vorliegende Erfahrung die folgenden exemplarischen Vorteile bereitstellt:
    Sie ist anwendbar auf alle Architekturen, in denen mehrere, vergleichbare Services bereitstellende Plug-ins für Anwendungen zur Verfügung stehen.
  • Sie entfernt den Bedarf an potentieller Entscheidungs-Intelligenz in allen Zwischenebenen der Anwendungs- und Betriebssystem-Plug-in-Architekturen.
  • Sie lehrt wie die Verantwortung zum Optimieren der Auswahl von Plug-ins effektiv an die Plug-ins selbst übertragen werden kann.
  • Sie erzwingt ein gutes Design durch ein Umgehen einer Einführung von unnötigen Abhängigkeiten zwischen Zwischen-Einheiten bzw. intermediaries und Plug-in-Modulen, für die sie einen Service bereitstellen.
  • Diese Erfindung spezifiziert ein Verfahren und eine Einrichtung, die die Auflösung ermöglicht, welches aus einem Satz von zur Verfügung stehenden Plug-ins am besten geeignet ist gegenüber einem Satz von erwünschten Eigenschaften, die durch die anfordernde Anwendung spezifiziert werden.
  • Die Mitglieder des Satzes von Plug-ins werden jedes gefragt, eine deterministische Berechnung auszuführen, darüber, wie gut sie mit einem Satz von gewünschten Eigenschaften übereinstimmen, und geben dann das Ergebnis als eine numerische Punktzahl zurück.
  • Dies ermöglicht die Auswahl des am besten geeigneten Moduls, ohne einen Bedarf an einer expliziten Intervention durch eine Entscheidungs-Intelligenz in irgendeinem anderen Teil der die Einrichtung steuernden Software.
  • Obwohl die vorliegende Erfindung mit Bezug auf bestimmte Ausführungsformen beschrieben wurde, wird es geschätzt werden, daß Modifikationen erfolgen können, solang man innerhalb der vorliegenden Erfindung verbleibt, wie sie durch die angefügten Ansprüche definiert wird.

Claims (12)

  1. Verfahren zum Ermöglichen einer auf einer Datenverarbeitungseinrichtung ablaufenden Software-Anwendung, zu veranlassen, das am besten geeignete Code-Modul aus einem Satz von Code-Modulen auszuführen, wobei das Verfahren umfasst: Identifizieren von Merkmalen oder Eigenschaften, die das am besten geeignete Code-Modul besitzen sollte; Weiterleiten der Merkmale oder Eigenschaften an jedes der möglichen funktionell kompatiblen Code-Module, entweder direkt oder über eine oder mehrere Zwischenebenen; gekennzeichnet durch Nutzen der Code-Module, eine deterministische Berechnung für jedes auszuführen, über wie gut sie mit den Merkmalen oder Eigenschaften übereinstimmen, und das Ergebnis als eine numerische Punktzahl zurückzugeben, entweder an die Software-Anwendung oder an eine Zwischenebene; Ausführen des Moduls, das die beste Punktzahl hat, entweder direkt durch die Software-Anwendung oder über eine durch eine Zwischenebene durchgeführte Instanziierung.
  2. Verfahren nach Anspruch 1, gekennzeichnet dadurch, daß das am besten geeignete Code-Modul in dem gleichen Prozess wie die Software-Anwendung ausgeführt wird.
  3. Verfahren nach Anspruch 1, gekennzeichnet dadurch, daß das am besten geeignete Code-Module in dem gleichen Prozess wie eine Zwischenebene ausgeführt wird.
  4. Verfahren nach Anspruch 1, gekennzeichnet dadurch, daß das am besten geeignete Code-Modul in seinem eigenen Prozess ausgeführt wird.
  5. Verfahren nach irgendeinem der vorhergehenden Ansprüche, gekennzeichnet dadurch, daß die Zwischenebene einen Singleton-Server umfasst, wenn das Modul durch eine Zwischenebene ausgeführt wird.
  6. Verfahren nach irgendeinem der vorhergehenden Ansprüche, gekennzeichnet dadurch, daß die Code-Module aus Plug-ins bestehen, die an die Datenverarbeitungseinrichtung dynamisch hinzugeführt oder von ihr entfernt werden können, und/oder die durch die Zwischenebene dynamisch detektiert werden können, ohne daß die Software-Anwendung die Existenz oder Position der Module kennt.
  7. Verfahren nach irgendeinem der vorhergehenden Ansprüche, gekennzeichnet dadurch, daß die Merkmale oder Eigenschaften zumindest teilweise durch die Software-Anwendung oder durch eine andere Einheit in der Datenverarbeitungseinrichtung identifiziert werden, die das Ausführen von ein oder mehreren Code-Moduls und das Erfassen identifizierter Merkmale oder Eigenschaften in einem einzigen Objekt zum Weitergeben an die Zwischenebenen und an jedes der Code-Module anfordern.
  8. Verfahren nach irgendeinem der vorhergehenden Ansprüche, gekennzeichnet dadurch, daß das Code-Modul mit der besten Punktzahl identifiziert wird, entweder a) durch das Abfragen jedes Mitglieds des Satzes von unabhängigen funktional kompatiblen Code-Modulen und das Aufnehmen der Punktzahl für jedes; b) oder durch das Weitergeben der aktuell höchsten Punktzahl, beginnend mit einer erreichten Punktzahl von Null, an jedes Mitglied des Satzes von Code-Modulen und durch das Abfragen, ob die Punktzahl für jedes Mitglied besser ist als die aktuell höchste Punktzahl.
  9. Verfahren nach irgendeinem der vorhergehenden Ansprüche, gekennzeichnet dadurch, daß das Verhalten irgendeines Code-Moduls hinsichtlich eines Algorithmus, der genutzt wird, die Konformität der Module mit den Merkmalen oder Eigenschaften zu bestimmen, verifiziert wird, entweder wenn das Module auf der Datenverarbeitungseinrichtung installiert wird oder durch irgendeine zuverlässige Autorität vor der Installation.
  10. Verfahren nach irgendeinem der vorhergehenden Ansprüche, gekennzeichnet dadurch, daß die Code-Module genutzt werden, Positionierungs-Technologien oder Algorithmen zum Ermöglichen von Orts-basierenden Services zu implementieren.
  11. Datenverarbeitungseinrichtung, die eingerichtet ist, um in Übereinstimmung mit einem in irgendeinem der Ansprüche 1 bis 10 definierten Verfahren zu arbeiten.
  12. Computer-Produkt, das Instruktionen umfasst, eine Datenverarbeitungseinrichtung zu veranlassen, in Übereinstimmung mit einem in irgendeinem der Ansprüche 1 bis 10 definierten Verfahren zu arbeiten.
DE602005005052T 2004-06-09 2005-06-08 Verfahren zur auswahl von plug-in-codemodulen in einer datenverarbeitungseinrichtung Active DE602005005052T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0413060 2004-06-09
GB0413060A GB2415066A (en) 2004-06-09 2004-06-09 Selecting most suitable plug-in
PCT/GB2005/002250 WO2005121955A1 (en) 2004-06-09 2005-06-08 A method for selecting plug-in code modules in a computing device

Publications (2)

Publication Number Publication Date
DE602005005052D1 DE602005005052D1 (de) 2008-04-10
DE602005005052T2 true DE602005005052T2 (de) 2009-03-12

Family

ID=32732331

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602005005052T Active DE602005005052T2 (de) 2004-06-09 2005-06-08 Verfahren zur auswahl von plug-in-codemodulen in einer datenverarbeitungseinrichtung

Country Status (9)

Country Link
US (1) US8225296B2 (de)
EP (1) EP1759286B1 (de)
JP (1) JP2008502067A (de)
CN (1) CN100561432C (de)
AT (1) ATE387661T1 (de)
DE (1) DE602005005052T2 (de)
ES (1) ES2301015T3 (de)
GB (1) GB2415066A (de)
WO (1) WO2005121955A1 (de)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060181540A1 (en) * 2005-02-12 2006-08-17 Patrick Loo Image editor with plug-in capability for editing images in a mobile communication device
US7706020B2 (en) * 2005-08-24 2010-04-27 Microsoft Corporation Extensible system for color management
EP2062155A4 (de) * 2006-09-12 2011-01-05 Wayport Inc Bereitstellung positionsbasierter dienste in einer verteilten umgebung ohne direkte steuerung über den zugangspunkt
EP2195745B1 (de) * 2007-09-06 2017-06-28 Microsoft Technology Licensing, LLC Sitzungs-makler-erweiterbarkeits-anwendungsprogrammschnittstelle
US9060245B2 (en) 2007-10-30 2015-06-16 Google Technology Holdings LLC Methods and apparatus for collecting and using information regarding location object-based actions
US8489576B2 (en) 2007-10-30 2013-07-16 Motorola Mobility Llc Methods and apparatus for using information regarding actions performed using traceable objects
US8250666B2 (en) * 2008-07-03 2012-08-21 Sap Ag Method and apparatus for improving security in an application level virtual machine environment
CN101645019A (zh) * 2008-08-04 2010-02-10 优诺威讯国际有限公司 虚拟操作系统创建方法
EP2239658A1 (de) * 2009-04-08 2010-10-13 Siemens Aktiengesellschaft Benutzergesteuerter Stromschalter
EP2270658A1 (de) * 2009-06-22 2011-01-05 Clayster Asia Ltd. Verfahren und Computersystem zur Einführung von Kundenvorrichtungen in einem Client-Server-Netzwerk
US20120036496A1 (en) * 2010-08-05 2012-02-09 Computer Associates Think, Inc. Plug-in based high availability application management framework (amf)
CN101937353B (zh) * 2010-09-20 2014-11-05 中兴通讯股份有限公司 一种插件部署和加载的方法及装置
JP5866908B2 (ja) * 2011-09-16 2016-02-24 コニカミノルタ株式会社 通信システム、通信装置およびプログラム
US8856740B2 (en) * 2012-07-31 2014-10-07 Hewlett-Packard Development Company, L.P. Implementing multiple versions of a plug-in concurrently
US10089254B2 (en) * 2016-06-20 2018-10-02 Telefonaktiebolaget Lm Ericsson (Publ) Methods and apparatus for dynamically selecting an instruction set
CN107894882B (zh) * 2017-11-21 2021-02-09 南京硅基智能科技有限公司 一种移动终端的语音输入方法
US11776699B2 (en) * 2019-07-12 2023-10-03 Agfa Healthcare Nv Systems and methods for integrating healthcare applications

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838906A (en) 1994-10-17 1998-11-17 The Regents Of The University Of California Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document
US6006279A (en) * 1997-01-21 1999-12-21 Canon Information Systems, Inc. Plug-in module host framework
US7355608B1 (en) * 1998-10-28 2008-04-08 International Business Machines Corporation Method for priority transmission and display of key areas of image data
US6279030B1 (en) 1998-11-12 2001-08-21 International Business Machines Corporation Dynamic JAVA™ class selection and download based on changeable attributes
US6513153B1 (en) * 1999-03-03 2003-01-28 Cisco Technology, Inc. Automatically integrating and executing application software modules
AU4809900A (en) 1999-05-03 2000-11-17 Sun Microsystems, Inc. System and method for discovering and binding a program object
US6742176B1 (en) * 1999-06-14 2004-05-25 Lycos, Inc. Secure flexible plugin software architecture
US6651084B1 (en) * 1999-11-29 2003-11-18 International Business Machines Corporation System and method for adding plug-ins to a web browser
US7747782B2 (en) * 2000-04-26 2010-06-29 Novarra, Inc. System and method for providing and displaying information content
US7299291B1 (en) * 2000-05-18 2007-11-20 Akamai Technologies, Inc. Client-side method for identifying an optimum server
US6834297B1 (en) * 2000-10-06 2004-12-21 Redline Networks, Inc. Web resource transfer acceleration system and method
AU2002235232B2 (en) * 2000-12-18 2006-01-12 Ack Ventures Holdings, Llc A system and method for delivering content to mobile devices
WO2002086709A2 (en) * 2001-04-23 2002-10-31 Artesia Technologies, Inc. Method and system for plug-in mapper
US7769895B1 (en) * 2001-08-17 2010-08-03 Corda Technologies, Inc. System and method for ensuring that a web browser displays the highest ranked image format possible for an image
US20030192041A1 (en) * 2002-04-03 2003-10-09 Mentze Duane E. software distribution system and method
US6941179B2 (en) * 2002-04-04 2005-09-06 Matsushita Electric Industrial Co., Ltd. Device control system, network constructed by the system, and program executed on device constructing the system
US7292531B1 (en) * 2002-12-31 2007-11-06 Packeteer, Inc. Methods, apparatuses and systems facilitating analysis of the performance of network traffic classification configurations
AU2005246320B2 (en) * 2004-05-14 2013-01-10 Mobilaps, Llc Method of providing a web page with inserted content

Also Published As

Publication number Publication date
CN1969257A (zh) 2007-05-23
WO2005121955A1 (en) 2005-12-22
CN100561432C (zh) 2009-11-18
ES2301015T3 (es) 2008-06-16
EP1759286B1 (de) 2008-02-27
EP1759286A1 (de) 2007-03-07
US8225296B2 (en) 2012-07-17
GB2415066A (en) 2005-12-14
JP2008502067A (ja) 2008-01-24
DE602005005052D1 (de) 2008-04-10
GB0413060D0 (en) 2004-07-14
ATE387661T1 (de) 2008-03-15
US20070234321A1 (en) 2007-10-04

Similar Documents

Publication Publication Date Title
DE602005005052T2 (de) Verfahren zur auswahl von plug-in-codemodulen in einer datenverarbeitungseinrichtung
DE602004006947T2 (de) Plattformunabhängige Erzeugung einer einmaligen Kennung
DE602005004214T2 (de) Kommunikationssystem and Verfahren zur Aktualisierung von Software in einem Endbenutzergerät
DE69632987T2 (de) Verfahren und Vorrichtung zum Mehrfachprotokollbetrieb in einem Benutzer-/Anbietersystem
DE69726379T2 (de) Ferninstallation von Software auf einem Rechnergerät
DE60035745T2 (de) Verfahren zum bei Bedarf Laden und Ausführen einer Netzwerkanwendung
DE102007016054B4 (de) System und Verfahren für eine automatisierte Betriebssysteminstallation
US7490154B2 (en) Method, system, and storage medium for providing context-based dynamic policy assignment in a distributed processing environment
DE60317654T2 (de) Verfahren und vorrichtung zur veränderung eines kernmodules, um es auf mehreren kernversionen lauffähig zu machen
DE112011102073T5 (de) Dienstimplementierung von einem Dienstverzeichnis
JP5325268B2 (ja) アクセスするクライアントのサーバー側プロトコル構成
US7418708B2 (en) JMS integration into an application server
DE112013003289T5 (de) Gerät, System und Verfahren für client-geregelte Sitzungspersistenz zwischen ein oder mehreren Clients und Servern eines Rechenzentrums
WO2007070295A1 (en) Metadata driven deployment of applications
DE102012210420A1 (de) Verfahren für ein systemeigenes Programm für das Übernehmen desselben Transaktionskontextes, wenn durch das in einer separaten Umgebung laufende primäre Programm aufgerufen
DE112008004056T5 (de) Dateitypzuordnung bei einer Fernrechensitzung
DE102007046001A1 (de) System und Verfahren zum dynamischen Laden von Protokolladaptern
DE112017005015T5 (de) Verarbeiten von gleichgeordneten Aufrufen (SIBLING CALLS)
DE10312630A1 (de) Vorrichtung für und Verfahren von einem nahtlosen, drahtlosen Multimedia-Download-Weg zu vernetzten Partneranwendungen
DE69733918T2 (de) Verfahren und Vorrichtung zum Betrieb eines Benutzerkomputers ohne Anbietersoftware
DE112018001386T5 (de) Informationsverwaltungssystem, fahrzeuginterne vorrichtung, server und routingtabellenänderungsverfahren
US20100313207A1 (en) Service provider management device, service provider management program, and service provider management method
DE602004012199T2 (de) Verfahren und Vorrichtrung zur dynamischen Java-Push-Steuerung
DE10024347B4 (de) Sicherheitsservice-Schicht
Siddiqui et al. Gridarm: Askalon’s grid resource management system

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: NOKIA CORPORATION, ESPOO, FI

8328 Change in the person/name/address of the agent

Representative=s name: COHAUSZ & FLORACK PATENT- UND RECHTSANWAELTE PARTN