Alles übergeordnet und umfassender als Rohre/Steckdosen?Was kommt Windows COM/DCOM in der Linux-Welt am nächsten?
Antwort
Ja, es gibt viele Dinge, aber es gibt keine als "Standard" wie COM/DCOM. Zumindest in Windows wird COM/DCOM von "Windowsish" -Stücken verwendet, und andere RPC-Mechanismen werden von nicht "Windowsish" -Aufträgen verwendet.
Linux hat so etwas nicht, stattdessen verwenden Dinge, die RPC-Protokolle auf höherer Ebene benötigen, normalerweise, was auch immer ihre Sprache bietet, oder eine bestimmte Bibliothek, die am besten zu den Anforderungen einer App passt. Beispiele hierfür wären RMI in Java, Pythons "Pyro" -Modul usw., die (einige) funktionelle Parität mit DCOM bereitstellen.
Corba ist ein bisschen Schwergewicht, aber einige Leute benutzen es anscheinend.
Viele Anwendungen rollen ihre eigenen RPC-Bibliotheken. Tun Sie das nicht, es sei denn, Sie müssen es, es ist böse.
Ist Sun RPC-ONC dasselbe wie COM/DCOM? –
[ONC RPC] (https://en.wikipedia.org/wiki/Open_Network_Computing_Remote_Procedure_Call) ist mehr auf Augenhöhe mit [DCE/RPC] (https://en.wikipedia.org/wiki/DCE/RPC) oder [MSRPC ] (https://en.wikipedia.org/wiki/Microsoft_RPC). Seine IDL ist viel einfacher und es hat weniger Funktionen. [Distributed COM] (https://en.wikipedia.org/wiki/Distributed_Component_Object_Model) basiert auf MSRPC für die Kommunikation, aber es behandelt viele komplexe Dinge über dieser Ebene, wie Proxy-Objekt-Caching, um 'AddRef' und' QueryInterface' zu vermeiden Rundreisen, Ping für Garbage Collection, COM-spezifische Speicherverwaltung, etc. – acelent
** Linux hat so etwas nicht **: Ich würde sagen * dbus * kommt ziemlich nah: Anwendungen können RPC-Methoden und Ereignisse offenlegen, können Sie Inspizieren Sie diese Methoden und rufen Sie sie dann remote ab. ** Viele Anwendungen rollen ihre eigenen RPC-Bibliotheken. Tun Sie das nicht, es sei denn, es ist böse. Ich sehe definitiv den Punkt. Auf der anderen Seite würde ich sagen, Dinge wie Emacs und Gimp haben ziemlich schöne RPC-Bibliotheken. Ich schätze, je komplizierter eine Anwendung ist, desto mehr verdient sie einen eigenen RPC-Mechanismus! –
Für Interprozesskommunikation ist D-Bus der Standardmechanismus auf höherer Ebene. Sowohl GTK als auch Qt haben Bindungen für D-Bus, die meisten Desktop-Umgebungen (oder zumindest GNOME und KDE) bieten verschiedene Dienste über D-Bus an, und viele Desktop-Anwendungen können über eine D-Bus-Schnittstelle gesteuert werden. Der Systembus ist auch nützlich zum Ermitteln verschiedener Informationen auf niedriger Ebene über das System unter Verwendung von Standard-Systemdiensten.
KDE4 (auf Qt4 gebaut) enthält auch eine Technologie namens KParts, die oft mit Windows COM verglichen werden.
"Für Interprozesskommunikation ist D-Bus der Standardmechanismus." Es ist? Sockets, shared memory, Message Queues und Semaphore würden ich sagen, wenn ich gefragt würde, was die standardmäßigen Interprozess-Kommunikationsmechanismen einer POSIX-Umgebung wären. – smcameron
D-Bus ist höher als die elementaren Mechanismen, die Sie auflisten, mehr vergleichbar mit COM/DCOM und weit verbreitet unter Linux (alle anderen werden von vielen anderen Versionen von Unix übernommen - D-Bus baut auf solchen niedrigeren Level-Mechanismen natürlich). –
Sie können Pgin IM-Controller schreiben, die anstelle eines Pigin-Plugins über D-Bus arbeiten. Führen Sie dbus-monitor --session aus und Sie können Pigdin sehen, wie er mit D-Bus alles in Ihre Gespräche steckt. –
Es gibt Mozillas XPCOM-Technologie, Cross Platform Component Object Model. Ähnlich wie COM oder DCOM konzeptionell.
Here ist eine Liste der relativ wenigen Programme, die
Verwendung des D-Bus machen tun können Sie Corba Check-out, es auch unter Linux und Windows.
Das Mono-Projekt fällt mir ein. Hauptsächlich weil die CLR/.NET die neue COM ist - schließlich wurde COM zunächst als sprachunabhängige, binärkompatible Objekte verkauft.
Ich denke, DCOM (das heißt COM mit einem längeren Draht) .NET Remoting wäre? Oder vielleicht einige Web-Services mit Objektserialisierung. Ich glaube, Mono unterstützt beides.
DCOM ist unter Linux verfügbar. Es ist nicht "der Linux-Weg, Dinge zu tun", aber hey, wenn Sie wollen "wie DCOM, aber Linux" dann verwenden Sie einfach DCOM unter Linux und haben getan ...
- D-Bus verwendet einen logischen "Bus", über die verbundenen Anwendungen kommunizieren
- Kommunikation über einen einfaches dauert Objektmodell, das Supp ortes sowohl RPC und Publish-Subscribe-Mechanismen
- D-Bus enthält einen Standard-Introspektionsmechanismus für die Laufzeitabfrage von Objektschnittstellen, Anwendungen an den Bus angeschlossen können Abfrage für die Verfügbarkeit von Objekten, Remote-Methoden für sie aufrufen und anfordern Benachrichtigung für die Signale, die sie
- vor aussenden: GNOME Bonobo, KDE DCOP, CORBA, Sun RPC ... heute scheinen die Menschen D-Bus
- Schnittstelle basierend comp zu bevorzugen ontemodell, wie COM und CORBA
- Alle UNO-Schnittstellen müssen von einer Schnittstelle abgeleitet sein, die acquire, release und eine queryInterface-Methode (vergleichbar mit COM)
- Die Lebensdauer von UNO-Objekten wird durch globale Referenz gesteuert Zählen. Die Komponenten kommunizieren nur über ihre Schnittstellen. o Jede Komponente lebt in einer Uno-Laufzeitumgebung (Uno Runtime Environment, URE), es gibt keinen Leistungsaufwand für Komponenten, die innerhalb derselben URE instanziiert werden, z. B. in C++ ein Aufruf von Komponente A an B ist nur ein virtueller Anruf
- UNO-Schnittstellen sind in IDL angegeben
- Ausnahmen werden für die Fehlerbehandlung verwendet.
- ähnlich wie Microsoft COM
- Schnittstellen in XPCOM in einem Dialekt von IDL definiert genannt XPIDL
- Nachteil ist, dass XPCOM eine Menge Code fügt für Objekte zwischen unterschiedlichen Nutzungs Rangier Kontexte, die zu Code Bloat in XPCOM-basierten Systemen führt
... eine weitere Alternative zu Cons ider könnte Java RMI sein als auch
Es lohnt sich auch Fragen im Zusammenhang zu sehen:
Is there an equivalent to COM on *nix systems ? If not, what was the *nix approach to re-usability?
Analog of COM programming in Linux/UNIX
- 1. jquery am nächsten() Wählen
- 2. Mod am nächsten Null
- 3. Split-Nummer in gleiche Teile oder was am nächsten ist
- 4. Wählen Sie das höchste Alter aus, in dem das Alter einer Zahl am nächsten kommt
- 5. Welche Methode kommt dem Surgical Team in The Mythical Man-Month am nächsten?
- 6. Problem mit Jquery am nächsten
- 7. MySQL am nächsten Wert auswählen
- 8. Doktrinabfragebuilder erhalten am nächsten datetime
- 9. Add Klasse, am nächsten div
- 10. Erste Wert am nächsten Eingang
- 11. Wie kann ich die Durchschnittszahl zählen, die 100 am nächsten kommt?
- 12. zwischen java.time.LocalTime (am nächsten Tag)
- 13. jQuery am nächsten(); funktioniert nicht
- 14. Anzeige nur am nächsten Listenelement
- 15. jquery am nächsten excluded self
- 16. Welche Java-HTML-Template-Technologie funktioniert auf eine Weise, die Ruby (erb/haml) am nächsten kommt?
- 17. "am nächsten()" funktioniert nicht in sonst Bedingung
- 18. Wie findet man einen Wert, der einem anderen Wert X am nächsten kommt, in einem großen sortierten Array effizient?
- 19. Regex, wählen Sie am nächsten Spiel
- 20. OWIN lehnt Authentifizierung Cookie am nächsten Tag
- 21. SQL-Abfrage Datensätze abzurufen am nächsten zeitzustempeln
- 22. Label x-Achse am nächsten zu tausend in ggplot
- 23. Konfigurieren Iterativ am nächsten Punkt PCL
- 24. SQL Beitreten am nächsten weniger als
- 25. Woher kommt _CrtDbgReportW in Windows Mobile?
- 26. Schnellste Möglichkeit zu finden, welche zwei Elemente einer Liste ein anderes Element in Python am nächsten kommt
- 27. Android Billing Nullzeiger Ausnahme am nächsten Tag
- 28. Punkte am nächsten zu einem geschätzten Weg
- 29. Teilen und Conquer am nächsten Paar Algorithmus
- 30. berechnen am nächsten Spiele von Array Wertekombinationen
Vielen Dank - das war so ziemlich mein Sinn, wo die Dinge stand. Ich akzeptierte die Antwort von @MarkR, da sie die Dinge gut zu verpacken schien. – fakeleft