Годы конкуренции между различными браузерами привели к созданию множества инструментов, помогающих разработчикам выполнять задачи, которые раньше было сложно выполнить. Теперь с помощью всего лишь небольшого сценария вы можете создать приложение, которое привязывает данные к пользовательскому элементу управления, чтобы оно взаимодействовало с сервером через встроенный элемент управления типа прокси.
В Internet Explorer (IE) к ним относятся острова данных XML, которые используются для привязки данных к элементам формы, и объекты XMLHTTP, которые используются для создания подключений к серверу на текущей странице без перехода на другие страницы. Синхронные и асинхронные вызовы. . Я буду использовать эти две простые в использовании функции для создания простого приложения чата, состоящего из нескольких страниц ASP, которые действуют как пользовательский интерфейс, JavaScript для реализации клиентских функций и T-SQL для реализации бизнес-логики в SQL Server 2000.
Клиент и сервер взаимодействуют с помощью XML. После того как веб-сервер получает фрагмент сообщения, этот фрагмент сообщения добавляется в таблицу MESSAGES с отметкой времени в SQL Server. В зависимости от заранее определенного интервала времени клиент будет запрашивать обновленную информацию с сервера, включая список сообщений и список онлайн-пользователей, добавленных в базу данных с момента последнего запроса информации с сервера.
Клиент отправит <action/> на сервер через объект XMLHTTP. Действием является либо запрос на обновление сообщения и списка пользователей, либо на отправку нового сообщения. Эти действия хранятся в таблице ACTIONS. Сервер ответит на соответствующий запрос или примет новое сообщение и добавит его в таблицу MESSAGES.
Когда сервер отвечает на запрос сообщения, он возвращает список всех новых сообщений с момента последнего запроса. Чтобы отслеживать активность клиентов, я использую таблицу ACTIVITY, которая содержит дату и время активности клиента. Личность клиента хранится в таблице HANDLES, которая имеет интуитивно понятное имя.
Ниже приведен сценарий создания таблицы:
CREATE TABLE [dbo].[ACTIONS] (
[action_id] [int] IDENTITY (1, 1) NOT NULL,
[имя_действия] [varchar] (50) NULL ,
[action_descr] [varchar] (255) NULL
) НА [ОСНОВНОЙ]
СОЗДАТЬ
ТАБЛИЦУ [dbo].[ACTIVITY] (
[handle_id] [int] NULL ,
[время_действия] [дата-время] NULL
) НА [ОСНОВНОЙ]
ПОЙДИТЕ
СОЗДАТЬ ТАБЛИЦУ [dbo].[РУЧКИ] (
[handle_id] [int] IDENTITY (1, 1) NOT NULL,
[дескриптор] [nvarchar] (63) NULL
) НА [ОСНОВНОЙ]
СОЗДАЙТЕ
ТАБЛИЦУ [dbo].[MESSAGES] (
[msg_id] [int] ИДЕНТИЧНОСТЬ (1, 1) НЕ НУЛЬ,
[сообщение] [nvarchar] (255) NULL ,
[action_id] [int] NULL ,
[время_действия] [дата-время] НЕ НУЛЬ
) ON [PRIMARY]
Все операции с данными будут выполняться посредством хранимых процедур. Весь обмен данными будет осуществляться через общий COM, который действует как связующее звено между веб-сервером и SQL Server 2000. Объект COM предоставляет метод RunSPReturnStream, который я хочу использовать. Первый параметр этого метода — это имя хранимой процедуры, а второй параметр — массив массивов параметров. Массив параметров представляет собой простой массив следующего формата: (paraName, paramType, paramLength, paramValue). paramType — это одно из перечислений типов параметров ADO. Страница ASP отвечает за принятие действий и создание ответов, я назову ее HandleAction.asp.
Страница чата будет содержать область для отображения сообщений чата; эта область представляет собой ТАБЛИЦУ, содержащуюся в DIV. Эта ТАБЛИЦА привязана к острову данных XML xmlMessages. Другая область отображает текущего пользователя; эта область также представляет собой TABLE, содержащуюся в DIV, который привязан к острову XML-данных xmlUsers. Существует также TEXTAREA, позволяющая пользователям вводить сообщения.
-------------------------------------------------- ----------------------------------
Автор этой статьи: Филлип Перкинс — подрядчик компании Ajilon Consulting. Его опыт варьируется от управления оборудованием и клиент-серверных приложений до приложений внутренней сети.