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.
In Internet Explorer (IE) gehören zu diesen Dingen XML-Dateninseln und xmlhttp-Objekte, die zum Binden von Daten an Formularelemente verwendet werden, und XMLHTTP-Objekte, die zum Navigieren zu anderen Seiten innerhalb der aktuellen Seite verwendet werden. Erstellen Sie synchrone und asynchrone Aufrufe an den Server. 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, das Clientfunktionen implementiert, und T-SQL, das die Geschäftslogik in SQL Server 2000 vervollständigt.
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 eine
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:
CREATE TABLE [dbo].[ACTIONS] ( [action_id] [int] IDENTITY (1, 1) NOT NULL , [action_name] [varchar] (50) NULL , [action_descr] [varchar] (255) NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[ACTIVITY] ( [handle_id] [int] NULL , [action_time] [datetime] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[HANDLES] ( [handle_id] [int] IDENTITY (1, 1) NOT NULL , [handle] [nvarchar] (63) NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[MESSAGES] ( [msg_id] [int] IDENTITY (1, 1) NOT NULL , [message] [nvarchar] (255) NULL , [action_id] [int] NULL , [action_time] [datetime] NOT NULL ) ON [PRIMARY]
Alle Datenoperationen werden durch 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.
Das Obige ist ein Überblick über die Entwicklung eines XML-Chat-Programms mit IE und SQL2k. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com).