Verwenden von Arrays, Zeichenfolgen und Zeigern

Das Doctor-Programm (siehe \samples\rpc\doctor im Platform Software Development Kit (SDK)) ist ein gutes Beispiel für eine Anwendung, die die Design-Kompromisse veranschaulicht, die mit Array- und Zeichenfolgenattributen verbunden sind. Das Doktorprogramm ist eine kleine Beispielversion eines bekannteren Programms, Eliza, das in den 1960er Jahren vom Forscher für künstliche Intelligenz Joseph Weizenbaum am MIT entwickelt wurde. Das Programm imitiert einen Therapeut, indem es einen einfachen Musterabgleich verwendet, um auf Eingaben natürlicher Sprache zu reagieren.

Das Eliza-Programm zeichnete die folgende Sitzung auf.

Benutzer Eliza
Männer sind alle gleich. In welcher Weise?
Sie käfern uns immer über etwas oder anderes. Können Sie sich ein bestimmtes Beispiel vorstellen?
Nun, mein Freund hat mich hierher kommen lassen. Ihr Freund hat Sie hierher kommen lassen.
Er sagt, ich bin oft deprimiert. Es tut mir leid zu hören, dass Sie deprimiert sind.
Es stimmt, ich bin unglücklich. Denken Sie, wenn Sie hierher kommen, können Sie nicht unglücklich sein?
Ich brauche Hilfe. so viel scheint sicher zu sein. Was würde es für Sie bedeuten, wenn Sie Hilfe bekommen?
Vielleicht könnte ich lernen, mit meiner Mutter auszukommen. Erzählen Sie mir mehr über Ihre Familie.
Meine Mutter kümmert sich um mich. Wer in Ihrer Familie kümmert sich um Sie?
Mein Vater. Ihr Vater.
Du bist in gewisser Weise wie mein Vater. Welche Ähnlichkeit sehen Sie?

 

Das Doctor-Programm kann in client- und serverseitige Anwendungen unterteilt werden. Die Clientseite fordert den Patienten zur Eingabe auf und zeigt die Antwort des Arztes an. Die Serverseite verarbeitet die Eingabe des Patienten und generiert die Antwort des Arztes. Dies ist ein klassisches Beispiel für eine Client-Server-Anwendung: Der Client ist für die Benutzerinteraktion verantwortlich, während der Server die umfangreiche Rechenlast übernimmt. Es werden nicht viele Daten an die Funktion übergeben und von dieser zurückgegeben, aber da die Daten eine erhebliche Menge an Verarbeitung erfordern können, verarbeitet der Server sie.

Das Doctor-Programm verwendet ein Zeichenarray für die Eingabe und gibt ein anderes Zeichenarray als Ausgabe zurück. In der folgenden Tabelle sind vier Möglichkeiten zum Übergeben von Zeichenarrays zwischen Client und Server sowie die Attribute und Funktionen aufgeführt, die zum Implementieren der einzelnen Ansätze erforderlich sind.

Vorgehensweise Attribute oder Funktionen
Gezählte Zeichenarrays [ size_is], [ length_is], [ ref]
Stub-verwaltete Zeichenfolgen [ Zeichenfolge], [ Ref], midl_user_allocate auf dem Server
Stub-verwaltete Zeichenfolgen [ Zeichenfolge], [ eindeutig], midl_user_allocate auf Client und Server
Funktion, die eine Zeichenfolge zurückgibt [ eindeutig]

 

Innerhalb der Einschränkungen, die diesen Kombinationen von Attributen zugeordnet sind, gibt es alternative Möglichkeiten, ein Zeichenarray vom Client an den Server zu senden und ein anderes Zeichenarray vom Server an den Client zurückzugeben.

Die folgenden Themen veranschaulichen die Design-Kompromisse zwischen den verschiedenen Schnittstellen, die diese Parameter verwalten können.