0

私は .Net 経由で mvc アプリケーションに取り組んでいます。その拡張部分には、Facebook、Twitter などのさまざまなソーシャル ネットワーキング プラットフォームに投稿する機能が含まれています。指定された間隔で、指定されたタイミングで。問題は、投稿部分が実際の Web サイトの状態とはまったく関係なくバックグラウンドで常に匿名で実行されている必要があるため、必要に応じて時間/間隔と投稿をチェックし続けることができることです。

現在、私のコントローラーには、主要部分が以下のコードのように見える再帰関数がありますが、mvc で発生したのと同じように、この関数はクライアント ブラウザーからの URL 呼び出しを介して開始され、呼び出し後、この関数が保持されるため、ブラウザーは待機状態になります。指定された無応答時間が経過した後、ブラウザーが要求をキャンセルするまで、再帰的に実行されます。

もちろん、この動作は理想的ではないため、次のことを行います。

  • この機能を独立させ、サーバーのバックグラウンドで継続的に実行し続けます。
  • WCF(Windows Communication Foundation)を使ってサービスなどを使って仕事をすれば解決するのではないかと誰かに言われましたか?私はまだ WCF を使用していませんが、問題を解決できれば試してみることができます。
  • これを達成できる他の方法はありますか?

コード:

    while (status == "1")
        {

            if (totalRows > 0)
            {

                for (int i = 1; i < totalRows; i++)
                {
                    myPostArray[i] = myPosts.Tables["myPosts"].Rows[i]["Postmsg"].ToString();
    //…
    //Post to the platform through respected API
    //…

                    System.Threading.Thread.Sleep(3000000000);
                }
                status = true;
            } else if (myPosts.Tables[0].Rows.Count == 0)
            {
                status = false;
            }
            TheRepeater();
4

1 に答える 1

2

これには、次のような別のサービスが必要です。

  • Webアプリケーションから「処理の開始」コマンドを受け入れます
  • 「確認済み、今すぐ処理を開始します」を返します。これにより、Webアプリとサービス間の通信が終了し、通信チャネルが解放され、制御がWebサーバーに戻ります(タイムアウトする代わりに)
  • サービスでバックグラウンド処理を実行しsleep、サイクルの最後に次の反復のために自動ウェイクアップする可能性があります
于 2012-08-04T10:54:59.500 に答える