Introductio
Su Windows, OS/2 e altri sistemi operativi (con strumenti di sviluppo di terze parti), lo scambio dinamico di dati (DDE) consente la condivisione dei dati o la comunicazione tra il programma. Ad esempio, quando si modifica una tabella nel programma di database o quando l'elemento di dati nella scheda elettronica è, anche la tabella o l'elemento di dati deve apportare una modifica corrispondente nell'altro software che è possibile utilizzare. DDE è la comunicazione tra processi con la memoria condivisa come area di commutazione pubblica e fornisce a un'applicazione un protocollo o un set di comandi e un formato di messaggio. DDE utilizza il modello client/server, in cui l'applicazione elabora i dati sul client, mentre l'applicazione fornisce i dati sul server.
Principium opus
Il principio di funzionamento di DDE è:
Due programmi in esecuzione simultanei vengono scambiati in modalità DDE quando si scambiano i dati, una volta che il client e il server stabiliscono una relazione di connessione, il cliente riceverà una notifica immediatamente dopo che i dati nel server sono cambiati. Il canale di connessione dati stabilito dalla modalità DDE è bidirezionale, ovvero il cliente può non solo leggere i dati nel server, ma anche modificarli.
DDE e appunti supportano entrambi i formati di dati standard (come testo, matrice di punti, ecc.), ma supportano anche formati di dati personalizzati. Tuttavia, i loro meccanismi di trasferimento dei dati sono diversi e una chiara differenza è che l'operazione degli appunti viene quasi sempre utilizzata come risposta usa e getta all'operazione designata dall'utente, come la selezione dei comandi di incolla dal menu. Sebbene DDE possa essere avviato dall'utente, continua a giocare, generalmente non deve intervenire ulteriormente.
, Per esempio:
La parte A applica una memoria globale, quindi inserisce il puntatore di memoria PostMessage alla parte B, la parte B accede alla memoria globale in base al puntatore ricevuto. Esistono alcune funzioni API per eseguire questa operazione e controlli la funzione di DDE head in MSDN. Poiché è la tecnologia che è stata eliminata, anche MFC non l'ha impacchettato. È difficile garantire che appaia anche nelle future API di Windows.
Content
Il dialogo DDE è contemplato da tre identificatori.
1, il nome dell'applicazione: il nome delle due parti della finestra di dialogo DDE. Il nome dell'applicazione commerciale è indicato nella documentazione del prodotto. Il nome del programma "Configurazione King" del sistema operativo è "view"; Il nome dell'applicazione di Microsoft Excel è "Excel"; Il programma Visual Basic utilizza il nome dell'eseguibile.
2, argomento: Dominio discusso. Per il "Configuration King", il soggetto specificato come "tagname"; Il nome del tema di Excel è il nome del foglio di calcolo, ad esempio Sheetl, Sheet2, ...; Programma Visual Basic, l'argomento del programma Visual Basic è specificato dalla forma del valore della proprietà LINKTOPIC. .
3, articolo: questo è un oggetto dati specifico discusso. Nel dizionario dei dati di "Configurazione di King", gli ingegneri definiscono le variabili I/O definendo anche il nome del progetto. L'elemento in Excel è un'unità, come RLC2 (RLC2 rappresenta la prima riga, l'unità della seconda colonna). Per il programma Visual Basic, il progetto è una casella di testo specifica, il nome dell'etichetta o una finestra immagine.
Commutatio modum
(1) Connessione a freddo (COOLLINK): lo scambio di dati è una trasmissione di dati usa e getta, la stessa degli appunti. Quando i dati nel server cambiano, il cliente può leggere e scrivere i dati dal server in qualsiasi momento;
(2) WarmLink: quando i dati nel server cambiano, informerà il cliente immediatamente dopo che i dati sono stati modificati. Quando il cliente riceve una notifica, i dati vengono recuperati;
(3) Connessione a caldo: quando i dati nel server cambiano, avviserà immediatamente il cliente mentre i dati modificati vengono inviati direttamente al cliente.
Il client DDE richiede dati al programma del server DDE, deve prima conoscere il nome del server (ad esempio nome DDService), il nome del tema DDE (nome argomenti) e sapere quale nome del progetto richiede quale elemento di dati (nome elementi). Il nome DDService dovrebbe avere univocità, altrimenti è facile fare confusione. Di solito DDService è il nome del programma del server, ma non assoluto, viene impostato dal progettista del programma nel programma, non modificando il nome del programma. Anche il nome degli argomenti e il nome degli elementi vengono impostati da DDeService e il nome del servizio di tutti i server viene registrato nel sistema. Quando un cliente richiede dati a un server, il cliente deve segnalare il nome del servizio del server e il nome degli argomenti. Solo quando il nome del servizio, il nome degli Argomenti è coerente con i nomi impostati dal server, il sistema comunica al server la richiesta del client.
Quando il nome del servizio è coerente con il nome degli argomenti, il server determina immediatamente se il nome degli elementi è legale. Se il nome dell'elemento richiesto è l'elemento dei dati legali nel server, il server viene stabilito e il server notificherà il cliente in tempo dopo che i dati sono stati stabiliti. Un server può avere più nomi di argomenti e il numero di nomi di elementi non è limitato.
Lo scambio DDE può avvenire tra applicazioni di diversi computer in una singola o rete. Gli sviluppatori possono anche definire formati di dati DDE personalizzati e l'IPC per scopi speciali tra le applicazioni, che hanno requisiti di comunicazione più strettamente correlati. La maggior parte delle applicazioni basate su Windows supporta DDE. Tuttavia, DDE presenta uno svantaggio significativo che l'efficienza della comunicazione è bassa e quando il traffico è elevato, l'aggiornamento dei dati è lento e il DDE è più pratico quando i dati sono inferiori.
Scribere Program
Per praticità d'uso, Microsoft fornisce la libreria DDE Management (DDEML). DDEML è specializzato nel coordinamento della comunicazione DDE, fornendo alle applicazioni DDE stringhe di handle e servizi di scambio dati, eliminando i problemi causati dai protocolli Upper DDE.
Le applicazioni sviluppate utilizzando DDEML (Customer / Server) sono migliori delle applicazioni DDEML in termini di coerenza operativa o in termini di programmazione. Inoltre, le applicazioni DDEML semplificano lo sviluppo di applicazioni DDE perché DDEML (questa è una DLL) funziona nel lavoro dell'ufficio dell'ufficio. Dopo aver utilizzato DDEML, la maggior parte delle sessioni tra clienti e server non viene raggiunta direttamente, ma tramite DDEML, ovvero utilizzando la funzione Callback per elaborare le transazioni DDE e la messaggistica iniziale avviene direttamente.
Prima di chiamare altre funzioni DDEML, il client/server deve chiamare la funzione DDeinitialize() per ottenere l'identificatore dell'istanza, registrare la funzione DDECALLBACK e specificare il filtro delle transazioni per la funzione Callback. Per il server, dopo aver utilizzato DDeinitialize(), chiamare DDecreateStringHandle() per creare un handle del nome del servizio, del nome dell'argomento e del nome degli elementi, quindi registrare il server nel sistema operativo tramite DDENAMESERVICE(). Sulla base di questi handle, i clienti possono utilizzare il servizio DDE fornito.
Per eseguire un'attività DDE, molte funzioni DDEML richiedono l'accesso alle stringhe. Ad esempio: un cliente deve specificare il nome del servizio e il nome dell'argomento quando chiama la funzione DDEConnect () per richiedere una sessione con il server. È possibile ottenere un handle di stringa specifico chiamando la funzione DDecreateStringHandle(). Per esempio:
HSZHSZSERVNAME = DDECREATESTRINGHANDLE (iDinst, "mioserver", cp_winansi);
hszroszsystopic = ddecreateStringHandle (iDinst, szddesys_topic, cp_winansi);
applicatio Munus callback DDE multiplex ansas chordae accipit in rebus maxime DDE. Exempli gratia: Per XTYP_REQUEST processus transactionis, a DDE servo accipit duas chordas ansas: Topica identifier chorda nominat, aliud identificans Items chorda nominat. Potes characterem chordae longitudinis respondens chordae manubrio vocando munus DdeQueryString () et chorda replicat ad quiddam definitum applicatione. Exempli gratia:
dwordidinst;
dwordcb;
HSZHSZSERV;
pstrpszservname;
cb = DDEQUERYSTRING (iDinst, HSZSERV, LPSTR) NULL, 0, CP_WINANSI +1;
pszservname = (pstr) Localalloc (LPTR, (UINT) CB);
DdeQueryString (iDinst, HSZSERV, PSZSERVNAME, CB, CP_WINANSI;
Secundum Microsoft MSDN, nuntius existens DDE-fundatur applicatio cum applicationibus DDEML compatitur, id est, nuntii DDE applicationes DDEML applicationis dialogi et transactionum esse possunt. Cum utens DDEML, fasciculi capitis DDEML.h includere debes in tabella fontis, fasciculi usor32.lib coniunge, et rectam ratio lima viam DDEML.dll curare.