Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il programma Doctor (vedere \samples\rpc\doctor nel Platform Software Development Kit (SDK)) è un buon esempio di un'applicazione che dimostra i compromessi di progettazione alla base degli attributi di array e stringa. Il programma Doctor è una piccola versione di esempio di un programma più noto, Eliza, sviluppato dal ricercatore di intelligenza artificiale Joseph Weizenbaum al MIT negli anni '60. Il programma mima un terapeuta usando una semplice corrispondenza di modelli per rispondere all'input del linguaggio naturale.
Il programma Eliza ha registrato la sessione seguente.
| Utente | Eliza |
|---|---|
| Gli uomini sono tutti uguali. | In che modo? |
| Ci stanno sempre infastidendo con qualcosa o l'altra. | Si può pensare a un esempio specifico? |
| Beh, il mio ragazzo mi ha fatto venire qui. | Il tuo ragazzo ti ha fatto venire qui. |
| Dice che sono depresso molto del tempo. | Mi dispiace sentire che sei depresso. |
| È vero, sono infelice. | Pensi che venire qui vi aiuterà a non essere infelice? |
| Ho bisogno di aiuto; quello è senza dubbio certo. | Cosa significa per te se hai qualche aiuto? |
| Forse potrei imparare ad andare d'accordo con mia madre. | Dimmi di più sulla tua famiglia. |
| Mia madre mi prende cura di me. | Chi altro nella tua famiglia ti prende cura? |
| Mio padre. | Tuo padre. |
| Sei come mio padre in qualche modo. | Che somiglianza vedi? |
Il programma Doctor può essere suddiviso in applicazioni lato client e lato server. Il lato client chiede al paziente l'input e visualizza la risposta del medico. Il lato server elabora l'input del paziente e genera la risposta del medico. Questo è un esempio classico di un'applicazione client-server: il client è responsabile dell'interazione dell'utente mentre il server gestisce il carico di calcolo esteso. Non molti dati vengono passati e restituiti dalla funzione, ma, poiché i dati possono richiedere una quantità significativa di elaborazione, il server lo elabora.
Il programma Doctor usa una matrice di caratteri per l'input e restituisce un'altra matrice di caratteri come output. La tabella seguente elenca quattro modi per passare matrici di caratteri tra il client e il server e gli attributi e le funzioni necessari per implementare ogni approccio.
| Avvicinarsi | Attributi o funzioni |
|---|---|
| Matrici di caratteri conteggiati | [ dimensione_è], [ lunghezza_è], [ riferimento] |
| Stringhe gestite da Stub | [ stringa], [ ref], midl_user_allocate nel server |
| Stringhe gestite da Stub | [ stringa], [ univoco], midl_user_allocate nel client e nel server |
| Funzione che restituisce una stringa | [ univoci ] |
All'interno dei vincoli associati a queste combinazioni di attributi, esistono modi alternativi per inviare una matrice di caratteri dal client al server e restituire un'altra matrice di caratteri dal server al client.
Negli argomenti seguenti vengono illustrati i compromessi di progettazione tra le varie interfacce che possono gestire questi parametri.