4

現在、Webサイト(ASP.net c#)を構築しており、Webサイトのデータイベントのライブフィード(Facebookのものと同様)を作成することを検討しています。私の理解が正しいかどうかわからないので、これを実装するための最善の方法についてのあなたの考えを知りたいと思いました。

新しい記事の公開、ユーザーのオンライン化などのイベントがあります。

ユーザーはメンバーエリアにログインし、ライブフィードが表示されます。

私の現在の考えでは、(ユーザーのブラウザーから)数秒ごとにクエリを実行して、最後のリクエスト日以降の新しいイベントを探します。dateX(最終リクエスト日)以降に新しいものがある場合は、それを表示します。

最後のリクエストの日付をuserIDと一緒に保存するので、彼らが戻ってきたときに、彼らが最後に見たものが何であるかがわかります。

これはそれを行うための最良の方法ですか?それとも、ある種のプッシュ方法を検討する必要がありますか?クロスブラウザに対応し、古いブラウザをサポートする必要があります...したがって、私が見たHTML5メソッドは実際にはオプションではありません。

アドバイスありがとうございます。

4

3 に答える 3

2

これに使用できますAJAX。ASP.NETには、必要な機能を提供する更新パネルなどのコントロールがあります。次に、ユーザーIDとデータを最後に更新した日付に基づいてコンテンツを再読み込みするように更新パネルを設定できます。

    <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();
}

もう1つの方法は、リアルタイム機能を提供するASP.NETのライブラリであるSignalRを使用することです。

于 2012-06-25T11:49:00.787 に答える
1

SignlarRを調べたいと思うかもしれません。これは、シナリオのようなインタラクティブなWebアプリケーションを構築するための.NETライブラリです。

別のオプションは、あなたがあなたの質問で述べたことです。n秒ごとにajax呼び出しを行い、データベースをチェックしてUIを更新します。しかし、SignalRは連続ヒットアプローチに依存しないため、それよりもはるかに優れていると思います。

于 2012-06-25T11:54:42.373 に答える
0

NServiceBusやオープンソースのMassTransitなどのメッセージングバスのフレームワークをご覧になることをお勧めします。これらは(Microsoftメッセージングキュー)MSMQの上に配置され、より快適に作業できるようになります。

数秒ごとにデータベースをポーリングする代わりに、DBに変更が書き込まれている場合にのみ、サブスクライブされているすべてのクライアントに軽量メッセージを送信できます。その後、クライアントは関心のある変更にのみ反応します。また、クライアントがオフライン/サインオフされている場合でもメッセージが失われないように、キューをトランザクション処理にすることができます。

(テキストを再び読みやすくするために編集されました...)

于 2012-06-25T11:45:32.077 に答える