Der jahrelange Wettbewerb zwischen verschiedenen Browsern hat zur Entwicklung vieler Tools geführt, die Entwicklern dabei helfen, Aufgaben zu erledigen, die zuvor schwierig zu erledigen waren. Jetzt können Sie mit nur einem kleinen Skript eine Anwendung erstellen, die Daten an ein Benutzersteuerelement bindet, sodass es über ein eingebettetes Proxy-Steuerelement mit dem Server kommuniziert.
Im Internet Explorer (IE) werden zu diesen Dingen XML-Dateninseln und XMLHTTP-Objekte verwendet, um Daten an Formularelemente zu binden, ohne zu anderen Seiten navigieren zu müssen und asynchrone Aufrufe. Ich werde diese beiden benutzerfreundlichen Funktionen verwenden, um eine einfache Chat-Anwendung zu erstellen, die aus einigen ASP-Seiten besteht, die als Benutzeroberfläche fungieren, JavaScript zum Implementieren von Clientfunktionen und T-SQL zum Vervollständigen der Geschäftslogik in SQL Server 2000.
Client und Server kommunizieren über XML. Nachdem der Webserver einen Nachrichtenblock empfangen hat, wird der Nachrichtenblock an eine zeitgestempelte MESSAGES-Tabelle in SQL Server angehängt. Basierend auf einem vordefinierten Zeitintervall fordert der Client aktualisierte Informationen vom Server an, einschließlich einer Liste von Nachrichten und einer Liste von Online-Benutzern, die seit der letzten Informationsanforderung vom Server an die Datenbank angehängt wurden.
Der Client sendet ein XMLHTTP-Objekt an den Server. Die Aktion ist entweder eine Aufforderung, die Nachrichten- und Benutzerliste zu aktualisieren oder eine neue Nachricht zu senden. Diese Aktionen werden in einer Tabelle namens ACTIONS gespeichert. Der Server antwortet auf die entsprechende Anfrage oder akzeptiert eine neue Nachricht und hängt sie an die Tabelle MESSAGES an.
Wenn der Server auf eine Nachrichtenanfrage antwortet, gibt er eine Liste aller neuen Nachrichten seit der letzten Anfrage zurück. Um die Kundenaktivität zu verfolgen, verwende ich eine ACTIVITY-Tabelle, die das Datum und die Uhrzeit der Kundenaktivität enthält. Die Identität des Kunden wird in der Tabelle HANDLES gespeichert, die einen intuitiven Namen hat.
Das Folgende ist das Skript zum Erstellen der Tabelle:
Alle Datenvorgänge werden über gespeicherte Prozeduren abgeschlossen. Die gesamte Datenschnittstelle erfolgt über ein generisches COM, das als Verbindung zwischen dem Webserver und SQL Server 2000 fungiert. Das COM-Objekt stellt eine Methode RunSPReturnStream bereit, die ich verwenden möchte. Der erste Parameter dieser Methode ist der Name der gespeicherten Prozedur und der zweite Parameter ist ein Array von Parameterarrays. Das Parameterarray ist ein einfaches Array im folgenden Format: (paraName, paramType, paramLength, paramValue). paramType ist eine der ADO-Parametertyp-Enumerationen. Eine ASP-Seite ist für das Annehmen von Aktionen und das Erstellen von Antworten verantwortlich. Ich nenne sie HandleAction.asp.
Die Chat-Seite enthält einen Bereich zum Anzeigen von Chat-Nachrichten; dieser Bereich ist eine TABELLE, die in einem DIV enthalten ist. Diese TABELLE ist an eine XML-Dateninsel von xmlMessages gebunden. Ein weiterer Bereich zeigt den aktuellen Benutzer an; dieser Bereich ist ebenfalls eine TABLE, die in einem DIV enthalten ist, das an eine xmlUsers-XML-Dateninsel gebunden ist. Es gibt auch einen TEXTBEREICH, in dem Benutzer Nachrichten eingeben können.