2012-06-25 4 views
4

В настоящее время я создаю веб-сайт (ASP.net C#), и мы смотрим на создание живой фиды (аналогично файлу facebook) для событий данных на нашем веб-сайте. Я хотел узнать ваши мысли о том, как лучше всего реализовать это, поскольку я не уверен, что мое понимание верное.прямая передача данных с использованием C# из базы данных доступа

У нас есть такие события, как: новая статья опубликована, пользователь выходит онлайн.

Пользователи будут входить в зону своих членов, а затем просматривать живой канал.

Мое настоящее мышление заключается в том, что у меня будет запрос каждые несколько секунд (из браузера пользователей), который ищет новые события со времени последней даты запроса. Если есть новые с датыX (последняя дата запроса), тогда покажите это.

Я бы сохранил последнюю дату запроса вместе с идентификатором пользователя, поэтому, когда они вернутся, я знаю, что последнее, что они видели.

Это лучший способ сделать это - или я должен смотреть на какие-то методы push? Мне нужно, чтобы он был совместим с браузером и поддерживал старые браузеры ... поэтому методы HTML 5, на которые я смотрел, на самом деле не являются опцией.

Спасибо за любой совет.

ответ

1

Возможно, вы захотите изучить SignlarR. Это библиотека .NET для создания интерактивных веб-приложений, таких как сценарий.

Другие варианты - это то, о чем вы упомянули в своем вопросе. Выполняйте вызов ajax каждые n секунд, чтобы проверить базу данных и обновить интерфейс. Но я думаю, что SignalR намного лучше, чем это, поскольку он не полагается на непрерывный подход!

+0

Спасибо - только что реализовала библиотека SignalR, и она работает красиво.Трудно идти, но, надеюсь, это будет лучшим способом :) спасибо. –

0

Я предлагаю вам ознакомиться с некоторыми freameworks обмена сообщениями, например NServiceBus или с открытым исходным кодом MassTransit. Они сидят поверх (MS Messaging Queue) MSMQ, чтобы сделать работу с ним более комфортной,

Вместо опроса базы данных каждые несколько секунд вы могли отправлять сообщение с подсветкой всем подписчикам, только если есть изменения, написанные в БД. Затем клиенты реагируют только на те изменения, которые им интересны. Также вы можете сделать транзакцию queus, чтобы вы не потеряли никаких сообщений, даже если клиенты находятся в автономном режиме/подписаны.

(под редакцией, чтобы сделать текст читаемым снова ...)

2

Вы можете использовать AJAX для этого. ASP.NET имеет такие элементы управления, как панель обновления, которая предоставит вам необходимую вам функциональность. Затем вы можете настроить панель обновления для перезагрузки контента на основе UserId и последней даты обновления данных.

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 

<div id="UserLiveFeed"> 

    <asp:UpdatePanel ID="upLiveFeed" runat="server"> 
     <ContentTemplate> 
      <asp:Label runat="server" Text="Last updated" id="lblLastUpated"> 
      <!-- Your content here --> 
      <asp:Timer runat="server" id="tmrLiveFeed" Interval="3000" OnTick="tmrLiveFeed_Tick"></asp:Timer> 
     </ContentTemplate> 
    </asp:UpdatePanel> 

</div> 

Затем обновите содержимое вашего фида (Подключение к базе данных и получить новые данные): (Я обновляю метку с текущим временем каждые 3 секунды)

protected void tmrLiveFeed_Tick(object sender, EventArgs e) 
{ 
    lblLastUpdated = DateTime.Now.ToString(); 
} 

Другой альтернативный было бы использовать SignalR, который является библиотекой для ASP.NET, которая обеспечивает функциональность в реальном времени.

+0

Это будет работать отлично, спасибо - но посмотрите на параметр SignalR, что означает меньшее количество подключений к базе данных. Обеспокоенный тем, что он убьет сервер с таким количеством подключений! –

Смежные вопросы