Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Program Doctor (viz \samples\rpc\doctor v sadě SDK (Platform Software Development Kit)) je dobrým příkladem aplikace, která demonstruje kompromisy návrhu spojené s atributy pole a řetězce. Program Doctor je malá ukázková verze lépe známého programu Eliza, vyvinutá výzkumníkem umělé inteligence Joseph Weizenbaum v MIT v roce 1960. Program napodobuje terapeuta pomocí jednoduchého porovnávání vzorů k reakci na vstup přirozeného jazyka.
Program Eliza zaznamenal následující relaci.
| Uživatel | Eliza |
|---|---|
| Muži jsou všichni stejně. | Jakým způsobem? |
| Vždy nás něčím otravují. | Můžete si představit konkrétní příklad? |
| Můj přítel mě sem dostal. | Tvůj přítel tě sem dostal. |
| Říká, že jsem hodně času deprimovaný. | Je mi líto, že slyším, že jsi deprimovaný. |
| Je to pravda, jsem nešťastná. | Myslíš si, že ti návštěva tady pomůže nebýt nešťastný? |
| Potřebuji pomoc; to se zdá být velmi jisté. | Co by pro vás znamenalo, kdybyste získali pomoc? |
| Možná bych se mohl naučit vycházet se svou matkou. | Řekněte mi víc o vaší rodině. |
| Moje matka se o mě postará. | Kdo jiný ve vaší rodině se o tebe postará? |
| Můj otec. | Tvůj otec. |
| Jsi jako můj otec nějakým způsobem. | Jakou podobnost vidíš? |
Program Doctor lze rozdělit na klientské a serverové aplikace. Klientská strana vyzývá pacienta k zadání vstupu a zobrazuje odpověď lékaře. Serverová strana zpracuje vstup pacienta a vygeneruje odpověď lékaře. Toto je klasický příklad aplikace klientského serveru: klient zodpovídá za interakci uživatele, zatímco server zpracovává rozsáhlé výpočetní zatížení. Funkce nepředá a nevrátí mnoho dat, ale protože data mohou vyžadovat značné množství zpracování, server je zpracuje.
Program Doctor používá pro vstup znakovou matici a jako výstup vrátí další znakovou matici. Následující tabulka uvádí čtyři způsoby předávání znakových polí mezi klientem a serverem a atributy a funkce potřebné k implementaci jednotlivých přístupů.
| Přístup | Atributy nebo funkce |
|---|---|
| Počítané pole znaků | [ velikost_je], [ délka_je], [ odkaz] |
| Řetězce spravované stubem | [ řetězec], [ ref], midl_user_allocate na serveru |
| Řetězce spravované zástupnými procedurami | [ řetězcové], [ jedinečné], midl_user_allocate na klientovi a serveru |
| Funkce, která vrací řetězec | [ jedinečné] |
V rámci omezení spojených s těmito kombinacemi atributů existují alternativní způsoby odeslání jednoho znakového pole z klienta na server a vrácení jiného pole znaků ze serveru do klienta.
Následující témata ukazují kompromisy návrhu mezi různými rozhraními, která mohou tyto parametry spravovat.