Progettazione di un'architettura basata su plugin: che cosa si suppone fornisca un plug-in per un servizio di protocollo?

3

Sto iniziando un progetto di hobby e sono nel bel mezzo della progettazione della sua architettura. Mi piacerebbe rendere il mio programma basato su plugin (mai fatto nulla di simile prima), per renderlo estendibile. Ora sto cercando di capire in che modo tale architettura viene creata concettualmente.

Ora, questo articolo di wikipedia sui Plugin dice che l'applicazione host dovrebbe fornire un servizio di protocollo (tra le altre cose) per stabilire come i dati vengono scambiati con il plugin.

Non capisco davvero questo bocconcino, cosa significa? Che tipo di dati devono essere effettivamente scambiati?

EDIT: Per essere chiari, non sto cercando specifiche di implementazione, ma per una chiara spiegazione del meccanismo, che l'articolo di wikipedia presenta. Così com'è ora, non ho idea di quale sia lo scopo di un protocollo in un'applicazione basata su plugin.

Ho immaginato che il plugin potesse semplicemente recuperare dati rilevanti dall'esterno dell'applicazione e presentarlo all'utente, senza coinvolgere direttamente l'applicazione. Quale sarebbe lo scopo di stabilire un protocollo per lo scambio di dati?

È un'applicazione desktop, che sarà scritta principalmente in Java, quindi orientata agli oggetti. L'applicazione al suo interno fornisce principalmente un'interfaccia per i plug-in per registrarsi nell'applicazione e un plugin-manager, che interagisce con il plugin.

    
posta Miroslav Cetojevic 03.12.2011 - 22:13
fonte

1 risposta

1

A mio avviso, i plug-in condividono lo stesso spazio degli indirizzi (& processo) come l'applicazione ricevente e coinvolge il collegamento dinamico.

Nel linguaggio di Linux, penso che un plugin sia un oggetto condiviso caricato dinamicamente che è dlopen -ed dall'applicazione.

Quindi l'applicazione deve definire quali sono i simboli dlsym -ed previsti dall'applicazione nel plugin, e come interagiscono con (cioè come sono chiamati da) l'applicazione.

Un esempio concreto è dato dai plug-in di Gcc (sto lavorando su MELT , un linguaggio di dominio di alto livello per estendere GCC, implementato come un plugin [meta-]; come spiega il documento, definisce alcune serie di convenzioni che chiamereste "servizio di protocollo"

Aggiunto:

Quindi il protocollo del plugin è l'insieme di convenzioni (e API e nomi associati) che definiscono il modo in cui il plugin è installato, e quali funzioni (e nomi) del plugin sono attese, in quale ordine e condizioni sono invocati dall'applicazione, e quali dati dell'applicazione e API il plugin può accedere (e modificare).

    
risposta data 03.12.2011 - 23:28
fonte

Leggi altre domande sui tag