Newsgroup: it.comp.os.linux.development
Titolo: [?] comunicazione tra programmi e COM

Ciao,
ho la necessità di fare il porting di un paio di tool da win a linux.
Unica peculiarità di questi tool è il fatto che sono server ActiveX, e in
quanto oggetti COM utilizzabile anche da altri programmi.
La mia domanda è... in Linux COM esiste (credo di no...)? con che tecniche
si può replicare le funzioanlità offerte da COM in sw Linux?
grazie a tutti....
Davide

 si può replicare le funzioanlità offerte da COM in sw Linux?
Hai, purtroppo, l'imbarazzo della scelta.  CORBA, come da URL suddetta, e`
buono assai.  Allo stessa URL trovi anche link ad altre tecnologie (XML-RPC
non e` male).  Se ti piace GNOME puoi usare bonobo, vedi la URL
http://developer.gnome.org/arch/component/bonobo.html
 .  Se ti piace
KDE puoi usare KPart,
http://developer.kde.org/documentation/tutorials/kparts/index.html
 .  bonobo
si basa su Corba, come un tempo facevano i componenti KDE; KPart e`
invece una tecnologia strettamente in-process, basata su shared libraries,
per ragioni di prestazioni e per evitare la necessita` di un Interface 
Description Language (IDL).  Personalmente, anche se per altre cose
preferisco KDE, ritengo pero` bonobo preferibile a KPart, anche perche`
a me gli IDL _piacciono_ come concetto in generale.  Pero` non ho usato
"in produzione" ne` bonobo ne` KPart, quindi non posso dirlo per certo
(COM, ActiveX ecc in passato li ho usati eccome, ma non da un paio
d'anni visto che ormai lavoro poco su Windows).
Purtroppo non e` finita.  COM/ActiveX/DCOM sono "collante universale" per un
po' tutto su Windows; le controparti su Linux invece hanno market share 
molto frammentate.  Se vuoi che i tuoi componenti lavorino bene con Mozilla
(come molti ActiveX lavorano con Internet Explorer) devi usare XPCOM, vedi
http://www.mozilla.org/projects/xpcom/
 .  Se vuoi che i tuoi componenti 
lavorino bene con OpenOffice (come molti ActiveX lavorano con MS Office)
devi usare UNO, vedi 
http://udk.openoffice.org/python/python-bridge.html
(ci sono binding anche per C++, Java e StarBasic, ma il binding Python e`
quello che personalmente conosco).
Senza dubbio, ahime`, ci sono altre scelte ancora.  Purtroppo questa
frammentazione delle tecnologie per componenti, a fronte di qualche lato
positivo (possibili ottimizzazioni, ad es quelle di KPart), ha secondo me
soprattutto aspetti negativi (manca quel che gli economisti chiamano
'effetto rete' che rende una tecnologia tanto piu` utile quanto piu`
ampiamente adottata) -- non puoi scrivere componenti buoni per tutti
gli usi come puoi fare con COM su Windows.
Naturalmente puoi anche guardare .NET (Mono, su Linux) ma a quel
che sento da amici che hanno fatto pesante uso di bridging fra COM
e .NET non e` che questo bridging funzioni poi bene (e non so se ne
esiste alcuno da Mono ad altre tecnologie di componenti Linux -- ci
vorrebbe un po' di studio in merito).
Alex

 si può replicare le funzioanlità offerte da COM in sw Linux?
Sotto GNOME, si può usare Bonobo per l'incapsulamento di componenti
all'interno di applicazioni (e.g. Nautilus).
Sotto KDE non saprei. Sicuramente, però, non ci sono soluzioni
generalizzate per tutti i window manager/desktop environment di Linux.
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)       [ 
http://digilander.libero.it/ebassi/blog
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4