Years of competition between different browsers have resulted in the creation of many tools to help developers accomplish tasks that were previously difficult to do. Now, with just a little script, you can create an application that binds data to a user control so that it communicates with the server through an embedded proxy-type control.
In Internet Explorer (IE), these include XML data islands, which are used to bind data to form elements, and XMLHTTP objects, which are used to create connections to the server within the current page without navigating to other pages. Synchronous and asynchronous calls. I will use these two easy-to-use features to create a simple chat application, which consists of some ASP pages that act as UI, JavaScript to implement client functions, and T-SQL to complete business logic in SQL Server 2000 .
Client and server communicate using XML. After the Web server receives a message chunk, the message chunk is appended to a timestamped MESSAGES table in SQL Server. Based on a predefined time interval, the client will request updated information from the server, including a list of messages and a list of online users appended to the database since the last time it requested information from the server.
The client will send an <action/> to the server via an XMLHTTP object. The action is either a request to refresh the message and user list, or to send a new message. These actions are stored in a table called ACTIONS. The server will respond to the corresponding request or accept a new message and append it to the MESSAGES table.
When the server responds to a message request, it returns a list of all new messages since the last request. In order to track customer activity, I use an ACTIVITY table that contains the datetime of customer activity. The customer's identity is stored in the table HANDLES, which has an intuitive name.
The following is the script to create a table:
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]
All data operations will be completed through stored procedures. All data interfacing will be done through a generic COM that acts as a liaison between the Web server and SQL Server 2000. The COM object exposes a method RunSPReturnStream which I want to use. The first parameter of this method is the name of the stored procedure, and the second parameter is an array of parameter arrays. The parameter array is a simple array of the following format: (paraName, paramType, paramLength, paramValue). paramType is one of the ADO Parameter Type enumerations. An ASP page is responsible for accepting actions and creating responses, I'll call it HandleAction.asp.
The chat page will contain an area to display chat messages; this area is a TABLE contained in a DIV. This TABLE is bound to an xmlMessages XML data island. Another area displays the current user; this area is also a TABLE contained in a DIV, which is bound to an xmlUsers XML data island. There is also a TEXTAREA for users to enter messages.
-------------------------------------------------- ----------------------------------
The author of this article: Phillip Perkins is a contractor of Ajilon Consulting. His experience ranges from machine control and client/server to intranet applications.