Могу ли я сойти с рук или это слишком грубо и непрактично? - PullRequest
2 голосов
/ 05 апреля 2010

Я провел всю прошлую ночь в поисках бесплатного элемента управления веб-чатом AspNet, который я мог бы просто перетащить на свой веб-сайт. Ну, поиск был тщетным, так как я не смог найти элемент управления, который соответствовал бы моим потребностям, т. Е. Список пользователей, чат 1 к 1, возможность выгнать пользователей.

В конце концов я решил создать свой собственный контроль с нуля. Хотя он хорошо работает на моей машине, я обеспокоен тем, что он может быть немного грубым и непрактичным в среде общего хостинга.

В основном это то, что я сделал:

  1. Создана база данных sql для хранения сообщений чата.
  2. Написал хранимые процедуры и включил инструкцию, которая очищает старые сообщения

Тогда «сырая» часть:

  1. Перетащил панель обновления и таймер на мою страницу
  2. Перетянул привязку данных Repeater в таблицу сообщений чата на панели обновлений
  3. Перетянул еще одну панель обновления и внутри нее поместил текстовое поле и кнопку
  4. Настроен таймер управления на каждые 5 секунд.

.. а потом я заставил все это работать так В событии с отметкой таймера я «обновил» отображаемые сообщения, вызвав Databind () на моем репитере, т.е.

 protected void Timer1_Tick(object sender, EventArgs e)
    {
       MyRepeater.DataBind();
    }

Тогда в моем событии нажатия кнопки отправки

 protected void btnSend_Click(object sender, EventArgs e)
    {

       MyDataLayer.InsertMessage(Message, Sender, CurrTime);

    } 

Ну, это хорошо работает на моей машине, и я получил другие функции (список пользователей, исключение пользователей ...), просто создав больше таблиц.

Но, как я уже сказал, мне это кажется немного грубым. поэтому мне нужно профессиональное мнение. Должен ли я работать с этим или попробовать другой подход?

1 Ответ

1 голос
/ 06 апреля 2010

Я не уверен, почему вы думаете, что это грубо - я ожидаю, что любой другой элемент управления чатом ASP.NET будет разрабатываться точно так же с использованием опроса на стороне клиента.Однако, в качестве альтернативы использованию панелей обновления, я бы порекомендовал написать функциональность AJAX на стороне клиента с использованием JQuery (или некоторой другой инфраструктуры Javascript) - панель обновления ASP.NET на самом деле является просто стандартной обратной передачей ASP.NET с использованием трюка рендеринга, поэтомуЭкран не нужно обновлять.

Что касается работы с тем, что у вас есть, то если бы вы продвинулись так далеко, как раньше, я бы продолжил.Это будет отличное упражнение для изучения требований к клиенту чата, даже если вы решите заменить его чем-то другим в будущем.

...