Tömbök, sztringek és mutatók használata
A Doctor program (lásd : \samples\rpc\doctor in the Platform Software Development Kit (SDK)) egy jó példa egy alkalmazásra, amely bemutatja a tömb- és sztringattribútumokkal kapcsolatos tervezési kompromisszumokat. A Doktor program egy kisebb mintaverziója egy ismertebb programnak, az Eliza-nak, amelyet Joseph Weizenbaum mesterségesintelligencia-kutató fejlesztett ki az MIT-nél az 1960-es években. A program egy terapeuta utánzásával, egyszerű mintaillesztés alkalmazásával reagál a természetes nyelvi bemenetre.
Az Eliza program a következő munkamenetet rögzítette.
Felhasználó | Eliza |
---|---|
A férfiak mind egyformák. | Milyen módon? |
Mindig piszkálnak minket valami vagy más miatt. | Gondolhat egy konkrét példára? |
Nos, a barátom miatt jöttem ide. | A barátod miatt jöttél ide. |
Azt mondja, az idő nagy részét depressziós vagyok. | Sajnálattal hallom, hogy depressziós vagy. |
Igaz, boldogtalan vagyok. | Gondolod, hogy az, ha idejössz, segít, hogy ne legyél boldogtalan? |
Segítségre van szükségem; ez nagyon biztosnak tűnik. | Mit jelentene önnek, ha segítségre lenne szüksége? |
Talán megtanulhatnék kijönni az anyámmal. | Meséljen többet a családjáról. |
Anyám gondoskodik rólam. | Ki gondoskodik még rólad a családodban? |
Az apám. | Az apád. |
Bizonyos szempontból olyan vagy, mint az apám. | Milyen hasonlóságot lát? |
A Doktor program ügyféloldali és kiszolgálóoldali alkalmazásokra osztható. Az ügyféloldal kéri a beteget a bemenetre, és megjeleníti az orvos válaszát. A kiszolgálóoldal feldolgozza a beteg bemenetét, és létrehozza az orvos válaszát. Ez egy klasszikus példa egy ügyfél-kiszolgáló alkalmazásra: az ügyfél felelős a felhasználói interakcióért, miközben a kiszolgáló kezeli a kiterjedt számítási terhelést. A függvény nem sok adatot ad át és ad vissza, de mivel az adatok jelentős mennyiségű feldolgozást igényelhetnek, a kiszolgáló feldolgozza azokat.
A Doktor program egy karaktertömböt használ bemenetként, és kimenetként egy másik karaktertömböt ad vissza. Az alábbi táblázat négyféleképpen adja át a karaktertömböket az ügyfél és a kiszolgáló között, valamint az egyes megközelítések implementálásához szükséges attribútumokat és függvényeket.
Megközelítés | Attribútumok vagy funkciók |
---|---|
Megszámolt karaktertömbök | [ méret], [ hossz], [ hivatkozás] |
Csonk által felügyelt karakterláncok | [ sztring], [ referencia], midl_user_allocate a kiszolgálón |
Stub által kezelt karakterláncok | [ string], [ egyedi], midl_user_allocate az ügyfél- és szerveroldalon |
Sztringet visszaadó függvény | [ egyedi] |
Az attribútumok ezen kombinációihoz társított korlátozásokon belül alternatív módszerekkel is elküldhet egy karaktertömböt az ügyfélről a kiszolgálóra, és egy másik karaktertömböt küldhet vissza a kiszolgálóról az ügyfélre.
Az alábbi témakörök bemutatják az ezen paraméterek kezelésére képes különböző interfészek közötti tervezési kompromisszumokat.