Dynaaminen tiedonvaihto

Johdanto

Windowsissa, OS / 2:ssa ja muissa käyttöjärjestelmissä (kolmannen osapuolen kehitystyökaluilla) dynaaminen tiedonvaihto (DDE) mahdollistaa tietojen jakamisen tai viestinnän ohjelman välillä. Esimerkiksi kun muutat taulukkoa tietokantaohjelmassasi tai kun elektronisen välilehden tietokohde on, taulukkoon tai tietokohteeseen on tehtävä vastaava muutos myös toisessa mahdollisesti käytettävässä ohjelmistossa. DDE on prosessien välinen viestintä jaetun muistin kanssa julkisena kytkentäalueena ja tarjoaa sovellukselle protokollan tai komentosarjan ja viestimuodon. DDE käyttää asiakas/palvelin-mallia, jossa sovellus käsittelee asiakkaan tiedot, kun taas sovellus tarjoaa tietoja palvelimella.

Toimintaperiaate

DDE:n toimintaperiaate on:

Kaksi samanaikaisesti käynnissä olevaa ohjelmaa vaihdetaan DDE-tilassa dataa vaihdettaessa, kun asiakas ja palvelin muodostavat yhteyssuhteen, sitten asiakkaalle ilmoitetaan välittömästi palvelimen tietojen muuttumisesta. DDE-moodin muodostama datayhteyskanava on kaksisuuntainen, eli asiakas ei voi vain lukea palvelimella olevia tietoja, vaan myös muokata niitä.

DDE ja leikepöytä tukevat molempia vakiomuotoisia tietomuotoja (kuten tekstiä, pistematriisia jne.), mutta tukevat myös mukautettuja tietomuotoja. Niiden tiedonsiirtomekanismit ovat kuitenkin erilaiset, ja selvä ero on se, että leikepöydän toimintoa käytetään lähes aina kertakäyttöisenä vastauksena käyttäjän määräämään toimintoon, kuten liitäkomentojen valitsemiseen valikosta. Vaikka käyttäjä voi käynnistää DDE:n, se jatkaa toistoa, eikä sen yleensä tarvitse puuttua enempää.

, esimerkiksi:

Osapuoli A käyttää globaalia muistia ja asettaa sitten muistiosoittimen PostMessage osapuolelle B. Osapuolta B käytetään maailmanlaajuisen muistin käyttämiseksi vastaanotetun osoittimen mukaan. On olemassa muutamia API-toimintoja tätä varten, ja tarkistat DDE-pään toiminnon MSDN:stä. Koska se on tekniikka, joka on eliminoitu, edes MFC ei pakannut häntä. On vaikea varmistaa, että se näkyy myös tulevassa Windows API:ssa.

Sisältö

DDE-dialogia tarkastellaan kolmella tunnisteella.

1, sovelluksen nimi: DDE-valintaikkunan kahden osapuolen nimi. Kaupallisen sovelluksen nimi on ilmoitettu tuotedokumentaatiossa. Ohjelman nimi "Configuring King" käynnissä oleva järjestelmä on "view"; Microsoft Excelin sovelluksen nimi on "Excel"; Visual Basic -ohjelma käyttää suoritettavan tiedoston nimeä.

2, aihe: Keskustelualueesta. "Configuration King":n aiheena on "tunniste"; Excelin teeman nimi on laskentataulukon nimi, kuten Sheetl, Sheet2, ...; Visual Basic -ohjelma, Visual Basic -ohjelman aihe määritellään LINKTOPIC-ominaisuuden arvon muodossa. .

3, kohta: Tämä on tietty tietoobjekti, josta keskusteltiin. "Configuring King" -tietosanakirjassa insinöörit määrittelevät I / O-muuttujat ja määrittävät samalla projektin nimen. Excelin kohde on yksikkö, kuten RLC2 (RLC2 edustaa ensimmäistä riviä, toisen sarakkeen yksikköä). Visual Basic -ohjelmassa projekti on tietty tekstiruutu, tarran nimi tai kuvaruutu.

Vaihtomenetelmä

(1) Kylmäyhteys (COOLLINK): Tiedonsiirto on kertakäyttöistä tiedonsiirtoa, sama kuin leikepöytä. Kun palvelimen tiedot muuttuvat, asiakas voi milloin tahansa lukea ja kirjoittaa tietoja palvelimelta;

Dynamic data exchange

(2) WarmLink: Kun palvelimen tiedot muuttuvat, se ilmoittaa asiakkaalle välittömästi tietojen muuttumisen jälkeen. Kun asiakas saa ilmoituksen, tiedot haetaan;

(3) Hot connection: Kun palvelimen tiedot muuttuvat, se ilmoittaa asiakkaalle välittömästi, kun muuttuneet tiedot lähetetään suoraan asiakkaalle.

DDE-asiakas pyytää tietoja DDE-palvelinohjelmalle, sen on ensin tiedettävä palvelimen nimi (eli DDServicen nimi), DDE-teeman nimi (Topics name) ja tiedettävä, mikä projektin nimi mitäkin tietokohdetta pyytää (Items name). DDService-nimen tulee olla ainutlaatuista, muuten on helppo tehdä sekaannusta. Yleensä DDService on palvelimen ohjelman nimi, mutta ei absoluuttinen, sen asettaa ohjelman suunnittelija ohjelmassa, ei ohjelman nimeä muokkaamalla. DDeService asettaa myös aiheiden nimen ja kohteiden nimen, ja kaikkien palvelimien palvelunimet rekisteröidään järjestelmään. Kun asiakas pyytää tietoja palvelimelle, asiakkaan on ilmoitettava palvelimen palvelun nimi ja aiheiden nimi. Vain kun palvelun nimi, aiheiden nimi on yhdenmukainen palvelimen asettamien nimien kanssa, järjestelmä välittää asiakkaan pyynnön palvelimelle.

Kun palvelun nimi on yhdenmukainen aiheiden nimen kanssa, palvelin määrittää välittömästi, onko nimikkeiden nimi laillinen. Jos pyydetty Nimikkeen nimi on laillinen tieto palvelimella, palvelin perustetaan ja palvelin ilmoittaa asiasta asiakkaalle hyvissä ajoin tietojen luomisen jälkeen. Palvelimella voi olla useita aiheiden nimiä, eikä kohteiden nimien määrää ole rajoitettu.

DDE-vaihto voi tapahtua eri tietokoneiden sovellusten välillä yhdessä tai verkossa. Kehittäjät voivat myös määrittää mukautettuja DDE-tietomuotoja ja erityisiä IPC-sovelluksia sovellusten välillä, joilla on lähemmin toisiinsa liittyvät viestintävaatimukset. Useimmat Windows-pohjaiset sovellukset tukevat DDE:tä. DDE:llä on kuitenkin merkittävä haitta, että tiedonsiirron tehokkuus on alhainen, ja kun liikennettä on paljon, tietojen päivitys on hidasta ja DDE on käytännöllisempi, kun dataa on vähemmän.

Kirjoitusohjelma

Käyttömukavuuden vuoksi Microsoft tarjoaa DDE-hallintakirjaston (DDEML). DDEML on erikoistunut koordinoimaan DDE-viestintää, tarjoamaan DDE-sovelluksille kahvamerkkijonoja ja tiedonvaihtopalveluita, eliminoimaan Ylempien DDE-protokollien aiheuttamia ongelmia.

DDEML:llä (Customer / Server) kehitetyt sovellukset ovat parempia kuin DDEML-sovellukset toiminnan johdonmukaisuuden tai ohjelmoinnin suhteen. Lisäksi DDEML-sovellukset helpottavat DDE-sovellusten kehittämistä, koska DDEML (tämä on DLL) toimii Office of Officen työssä. DDEML:n käytön jälkeen useimpiin asiakkaiden ja palvelimien välisiin istuntoihin ei päästä suoraan, vaan DDEML:n kautta eli takaisinsoittotoiminnolla DDE-tapahtumien käsittelyyn, ja varhainen viestintä tapahtuu suoraan.

Ennen kuin kutsut muita DDEML-toimintoja, asiakkaan/palvelimen on kutsuttava DDeinitialize ()-funktio saada ilmentymän tunniste, rekisteröidä DDECALLBACK-toiminto ja määritettävä tapahtumasuodatus takaisinsoittotoiminnolle. Kun olet käyttänyt DDeinitialize-komentoa (), kutsu palvelimelle DDecreateStringHandle () luodaksesi kahva palvelun nimelle, aiheiden nimelle ja kohteiden nimelle ja rekisteröi sitten palvelin käyttöjärjestelmään DDENAMESERVICE () -palvelun avulla. Näiden kahvojen perusteella asiakkaat voivat käyttää sen tarjoamaa DDE-palvelua.

DDE-tehtävän suorittamiseksi monet DDEML-toiminnot vaativat pääsyn merkkijonoihin. Esimerkiksi: asiakkaan on määritettävä palvelun nimi ja aiheiden nimi kutsuessaan DDEConnect () -toimintoa pyytääkseen istuntoa palvelimen kanssa. Voit saada tietyn merkkijonokahvan kutsumalla DDecreateStringHandle () -funktiota. Esimerkiksi:

HSZHSZSERVNAME = DDECREATESTRINGHANDLE (iDinst, "oma palvelin", cp_winansi);

hszroszsystopic = ddecreateStringHandle (iDinst, szddesys_topic, cp_winansi);

sovellus DDE-takaisinkutsutoiminto vastaanottaa useita merkkijonokahvoja useimmissa DDE-tapahtumissa. Esimerkki: XTYP_REQUEST-tapahtuman käsittelyn aikana DDE-palvelin vastaanottaa kaksi merkkijonokahvaa: tunnisteen Aiheet-nimimerkkijono, toisen tunnisteen kohteiden nimimerkkijono. Voit saada merkkijonon pituuden, joka vastaa merkkijonokahvaa, kutsumalla DdeQueryString () -funktiota ja replikoi merkkijonon sovelluksen määrittelemään puskuriin. Esimerkiksi:

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;

Microsoft MSDN:n mukaan olemassa oleva viesti-DDE-pohjainen sovellus on yhteensopiva DDEML-sovellusten kanssa, eli viestipohjaiset DDE-sovellukset voivat olla DDEML-sovellusten dialogia ja tapahtumia. Kun käytät DDEML:ää, sinun on sisällytettävä DDEML.h-otsikkotiedostot lähdetiedostoon, yhdistettävä user32.lib-tiedosto ja varmistettava DDEML.dll-tiedoston oikea järjestelmäpolku.

Related Articles
TOP