不同瀏覽器之間多年的競爭導致產生了許多工具來幫助開發人員完成以前很難做到的任務。現在,只要一小段腳本,你就可以建立一個應用程式將資料綁定到使用者控件,這樣就可以透過一個內嵌的代理類型的控件與伺服器通訊。
在Internet Explorer(IE)中,這些東西包括 xml 資料島和 xmlhttp 對象,XML 資料島用於將資料綁定到表單元素,XMLHTTP 物件用於在當前頁面內不導航到其它頁面的情況下會建立對伺服器的同步和非同步呼叫。我將使用這兩個易用的功能來建立一個簡單的聊天應用程序,該應用程式由一些充當UI 的 asp 頁面,實現客戶功能的 javaScript,以及SQL Server 2000 中完成商業邏輯的T-SQL 所組成。
客戶和伺服器使用 XML 通訊。在 Web 伺服器接收到一個訊息區塊之後,訊息區塊會追加到 SQL Server 中的一個帶有時間戳記的 MESSAGES 表中。基於預先定義好的時間間隔,客戶會從伺服器請求更新信息,包括自上一次從伺服器請求信息到現在為止追加到資料庫中的消息列表和聯機用戶列表。
客戶將透過 XMLHTTP 物件傳送一個 7e799be3545522a0b5d454493d321d80 到伺服器。動作(action)要么是請求刷新訊息和用戶列表,要么是發送一個新訊息。這些動作保存在一個叫做 ACTIONS 的表中。伺服器將回應相應的請求或接受一個新訊息然後追加到 MESSAGES 表中。
當伺服器回應一個訊息的請求的時候,會傳回上次請求之後的所有新訊息的一個清單。為了追蹤客戶的活動,我使用一個 ACTIVITY 表包含客戶活動的日期時間(datetime),客戶的標誌保存在表 HANDLES 中,該表的名字很直觀。
下面是建表的腳本:
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]
所有的資料操作將透過預存程序完成。所有的資料介面將透過一個充當 Web 伺服器和 SQL Server 2000 的聯絡員的泛型 COM 完成。 COM 物件暴露一個我要使用的方法RunSPReturnStream。此方法的第一個參數為預存程序的名字,第二個參數是參數陣列的陣列。參數陣列是一個如下格式的簡單陣列:(paraName, paramType, paramLength, paramValue)。 paramType是 ADO Parameter Type 枚舉之一。一個 ASP 頁面負責接受動作和建立回應,我把它叫做HandleAction.asp。
聊天頁將包含一個區域顯示聊天訊息;這個區域是一個包含在 DIV 的 TABLE。這個 TABLE 被綁定到一個xmlMessages XML 資料島上。另外一個區域顯示目前的使用者;這個區域也是一個包含在 DIV 中的TABLE,它被綁定到一個xmlUsers XML資料島上。另外還有一個 TEXTAREA 供使用者輸入訊息。
以上就是概述IE和SQL2k開發一個XML聊天程式的內容,更多相關內容請關注PHP中文網(www.php.cn)!