Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Doctor-programmet (se \samples\rpc\doctor in the Platform Software Development Kit (SDK)) är ett bra exempel på ett program som visar de designavvägningar som ingår i matris- och strängattribut. Doktorsprogrammet är en liten exempelversion av ett mer känt program, Eliza, utvecklat av forskaren för artificiell intelligens Joseph Weizenbaum vid MIT på 1960-talet. Programmet efterliknar en terapeut genom att använda enkel mönstermatchning för att svara på indata från naturligt språk.
Eliza-programmet spelade in följande session.
| Användare | Eliza |
|---|---|
| Män är alla likadana. | På vilket sätt? |
| De buggar oss alltid om något eller annat. | Kan du tänka dig ett specifikt exempel? |
| Min pojkvän fick mig att komma hit. | Din pojkvän fick dig att komma hit. |
| Han säger att jag är deprimerad en stor del av tiden. | Jag är ledsen att höra att du är deprimerad. |
| Det är sant, jag är olycklig. | Tror du att komma hit kommer att hjälpa dig att inte vara olycklig? |
| Jag behöver lite hjälp; så mycket verkar säkert. | Vad skulle det betyda för dig om du fick hjälp? |
| Jag kanske kan lära mig att komma överens med min mamma. | Berätta mer om din familj. |
| Min mamma tar hand om mig. | Vem mer i din familj tar hand om dig? |
| Min far. | Din far. |
| Du är som min far på sätt och vis. | Vilken likhet ser du? |
Doktorsprogrammet kan delas upp i program på klientsidan och på serversidan. Klientsidan uppmanar patienten att ange indata och visar läkarens svar. Serversidan bearbetar patientens indata och genererar läkarens svar. Det här är ett klassiskt exempel på ett klient-serverprogram: klienten ansvarar för användarinteraktion medan servern hanterar den omfattande beräkningsbelastningen. Inte mycket data skickas till och returneras av funktionen, men eftersom data kan kräva en betydande mängd bearbetning bearbetar servern dem.
Doctor-programmet använder en teckenmatris för indata och returnerar en annan teckenmatris som utdata. Tabellen nedan visar fyra sätt att skicka teckenmatriser mellan klienten och servern och de attribut och funktioner som behövs för att implementera varje metod.
| Ansats | Attribut eller funktioner |
|---|---|
| Räknade teckenmatriser | [ size_is], [ length_is], [ ref] |
| Stub-hanterade strängar | [ sträng], [ referens], midl_user_allocate på servern |
| Stub-hanterade strängar | [ sträng], [ unik], midl_user_allocate på klient och server |
| Funktion som returnerar en sträng | [ unika] |
Inom de begränsningar som är associerade med dessa kombinationer av attribut finns det alternativa sätt att skicka en teckenmatris från klient till server och att returnera en annan teckenmatris från server till klient.
Följande avsnitt visar designens kompromisser mellan de olika gränssnitten som kan hantera dessa parametrar.