2009-06-03 12 views
6

--edit--equivalenti Linux/Mac OS X per Windows Communication Foundation

Quale applicazione framework di sviluppo/modelli di componenti per Linux e Mac OS X sono analoghe a Windows Communication Foundation & COM, che forniscono meccanismi IPC di alto livello per manipolare/comunicare con le applicazioni software?

Con modello di comunicazione di alto livello Voglio dire RPC, di pubblicazione/sottoscrizione, ecc

sto scrivendo software per dispositivi di interazione che possono essere legati per la manipolazione di calcolo e dati all'interno di alcuni software. Per esempio, potrei avere un pannello di controllo con cursori fisici che sono legati a varie celle all'interno di un foglio di calcolo caricato in Excel, Calcolo o Numeri. Ho modi per rilevare gli eventi originati dal dispositivo, ma i sottosistemi di interazione (X11, Explorer, ecc.) Non sono estensibili per gestire nuovi tipi di eventi di interazione, quindi devo acquisire e trasportare i miei eventi da e verso il software a cui sono legati.

Anche la maggior parte delle applicazioni che vorrei controllare non possono essere modificate per rispondere a questi nuovi tipi di eventi. E la simulazione di sequenze di tasti di scelta rapida e scorciatoie non è abbastanza espressiva, anche se si avvantaggerebbe dei sottosistemi di interazione esistenti. Questo è il motivo per cui sono interessato ai framework di piattaforme specifiche, quindi posso sfruttare gli hook preesistenti per controllare il software in natura.

Poiché questo è per l'interazione dell'utente, è necessario disporre di latenze basse. Mi piacerebbe avere anche l'opzione di comunicazione aseless, asincrona.

Ho pensato a questa domanda e mi rendo conto che dovevo fare due domande. Uno riguarda l'IPC di alto livello e l'altro riguarda i modelli di componenti dell'oggetto che consentono di chiamare i metodi su un oggetto software.

interrogo --original

Cosa comunicazione/framework di componenti forniscono funzionalità più simile a Windows Foundation comunicazioni su Linux e Mac OS X?

Il mio gruppo di ricerca sta iniziando a sviluppare un tipo di framework di sviluppo applicazioni per applicazioni interattive che coinvolge nuovi tipi di dispositivi per manipolare/interagire con le applicazioni software. Vogliamo utilizzare un modello di adattatore per fornire astrazioni per l'applicazione/l'applicazione dispositivo/dispositivo o la comunicazione dispositivo/applicazione in modo che il software creato con questo framework sia portatile su 3 piattaforme principali del sistema operativo.

+2

Domande nel modulo "Che cosa è equivalente a XYZ sulla piattaforma MNO?" dovrebbe dire cosa XYZ fa che è importante per lui chiedere ... per timore che qualcuno abbia una profonda conoscenza di MNO.FooBar.Framework ma * non * XYZ non sia in grado di rispondere. Non che questo sia un cruccio, o qualcosa del genere, ma ARRGGGHHH !!!!! – dmckee

+0

Anche un link in uscita al programma in questione sarebbe utile. – dmckee

+0

Ah. Molto meglio. Grazie. Mi sorprendo a chiedermi se X fornisca il tipo di strato di comunicazione che stai richiedendo. – dmckee

risposta

5

Se le app di Linux sono abbastanza moderne, è possibile sfruttare D-Bus. È la progenie di DCop di KDE principalmente, e, in misura minore, Bonobo di GNOME, quindi se è più vecchio, potresti dare un'occhiata a una di queste cose. Ovviamente, questo presuppone che usi uno di questi toolkit.

Se è ancora più vecchio o utilizza un toolkit senza IPC di alto livello (ad esempio Motif (credo)), potresti dover ricorrere a pipe, socket, fifo e qualsiasi altra cosa che potrei aver dimenticato . Ciò presuppone, ovviamente, che l'app abbia qualche tipo di hook per quella roba.

+0

Vorrei poter accettare due risposte poiché le risposte sia di supercheetah che di stefanB si combinano per rispondere alla mia domanda. Penso che avrei dovuto porre questa domanda come due domande separate, una per Mac e un'altra per Linux. L'articolo di Wikipedia su D-Bus fornisce i migliori motivi per cui D-bus è quello che sto cercando su Linux. http://en.wikipedia.org/wiki/D-Bus#Architecture - OS <-> comunicazione applicazione - modello di comunicazione pub/sub - capacità di esporre funzionalità come servizio – corntoole

1

Il cugino più vicino sarebbe libsoap e librerie SOAP equivalenti nella lingua scelta.

+0

La cugina è un po 'troppo, SOAP è solo una piccola parte di WCF. Ma se quello che vuole veramente il corntoole è solo una comunicazione, il sapone potrebbe essere un buon modo. – OregonGhost

+0

La risposta SOAP mi lascia senza volere; forse come un formato di messaggio, ma sono più preoccupato dei meccanismi di comunicazione a bassa latenza, preferibilmente con la semantica di alto livello come un modello di pubblicazione/sottoscrizione. Inoltre sono interessato alla comunicazione che si aggancia bene allo stack di interazione del sistema operativo in modo da poter controllare/interagire con software che non posso modificare con una granularità più fine rispetto alla semplice simulazione di tasti di scelta rapida e scorciatoie da tastiera. Forse non sto facendo la domanda giusta. – corntoole

4

Ecco un elenco di guide relative alla messa in rete su Mac OS X Si estende su diversi livelli di rete dalle comunicazioni a bassa presa di livello http://developer.apple.com/documentation/Cocoa/Networking-date.html#doclist

Copre:

  • Nucleo Fondazione funzioni di networking di lavorare con prese BSD di basso livello.
  • Classi stream di cacao per leggere i dati da e scrivere i dati sui flussi.
  • framework Web Services sul lato client disponibili in Mac OS X.
  • Bonjour in Cocoa o Carbon applicazioni.
  • URL Sistema di caricamento per manipolare gli URL e il trasferimento contenuti URL
  • oggetti distribuiti Programmazione - la comunicazione tra oggetti Objective-C in diverse thread o processi diversi

Altrimenti Mac OS X è completamente Posix sistema Unix compatibile in modo da troverà un sistema IPC simile a quello trovato su Linux.

O forse si sta cercando Mac OS X System Services, sistema che consente a un'applicazione di accedere alla funzionalità di un'altra applicazione. L'applicazione pubblicizza i servizi che forniscono. Per maggiori dettagli leggi la documentazione Apple collegata.

+0

Come ho detto prima, vorrei poter accettare più di una risposta. Sul lato Mac, ci sono una moltitudine di meccanismi IPC. Per quanto riguarda i modelli di comunicazione di alto livello, esistono servizi di notifica: http://developer.apple.com/documentation/UserExperience/Conceptual/PreferencePanes/Concepts/Managing.html#//apple_ref/doc/uid/20000703-102786 Considerando il grado in cui varie app Mac sono scriptable tramite AppleScript, ci deve essere un modello applicativo ben definito che può essere trasformato in modo diretto. In entrambi i casi ho dei buoni contatti. – corntoole

+0

Sono andato avanti, ho votato questo perché ero stato taggato con la risposta. Sembra giusto. – supercheetah