2

私は昨夜ずっと、自分のWebサイトにドラッグするだけの無料のAspNetWebチャットコントロールを探していました。ユーザーのリスト、1対1のチャット、ユーザーを追い出す機能など、自分のニーズに一致するコントロールが見つからなかったため、検索は無駄でした。

結局、私はスクラッチから自分のコントロールを作成することにしました。それは私のマシンではうまく機能しますが、共有ホスティング環境では少し粗雑で実用的ではないかもしれないと心配しています。

基本的にこれは私がしたことです:

  1. チャットメッセージを保存するSQLデータベースを作成しました。
  2. ストアドプロシージャを記述し、古いメッセージをクリアするステートメントを含めました

次に、「原油」の部分:

  1. 更新パネルとタイマーコントロールをページにドラッグしました
  2. 更新パネル内のチャットメッセージテーブルにデータバインドされたリピーターをドラッグしました
  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);

    } 

それは私のマシンでうまく機能し、他の機能(ユーザーリスト、ユーザーのキックアウト..)を追加のテーブルを作成するだけで機能させることができます。

しかし、私が言ったように、それは私には少し粗雑に思えます。だから私は専門家の意見が必要です。これで実行する必要がありますか、それとも別のアプローチを試す必要がありますか?

4

1 に答える 1

1

なぜそれが粗雑だと思うのかわかりません-他のASP.NETチャットコントロールは、クライアント側のポーリングを使用してまったく同じ方法で開発されると思います。ただし、更新パネルを使用する代わりに、JQuery(または他のJavascriptフレームワーク)を使用してクライアント側のAJAX機能を作成することをお勧めします-ASP.NET更新パネルは実際にはレンダリングトリックを使用した標準のASP.NETポストバックであるため、画面を更新する必要はありません。

あなたが持っているもので走ることに関して、あなたがすでにあなたが持っているところまで行ったならば、私は続けます。チャットクライアントを将来的に別のものに置き換えることにした場合でも、チャットクライアントの要件に関する優れた学習演習になります。

于 2010-04-06T04:10:16.550 に答える