0

それで、この質問はたくさん尋ねられました、そして私は多くの異なった答えを見ました、しかし私のシナリオのために有限または絶対的なものは何もありません。

_

私がやりたいこと:

ユーザーのコミュニティを備えたWebサイトがあります。

Webサイトの管理セクションには、次の機能を実行するためのボタンがあります。

毎週のニュースレター[木曜日の午後4時]をすべてのユーザーにメールで送信します。

その日の情報をユーザーにメッセージする[毎日午後6時]、

フェイスブックコネクトを介してフェイスブックに投稿する[毎日午前8時と午後6時]、

などなど(新しい要件もまもなく登場しますが、同じ原則に従います)

_

これらの機能を自動的に実行するだけなので、スタッフがWebサイトにアクセスしてログインし、設定した時間に各ボタンをクリックする必要はありません。

つまり、事実上、上記の設定された時間に、サーバーにこれらのボタンを自動的にクリックさせることができます。

_

各関数を呼び出すタイマーを組み込んだサービスを構築したり、Windowsタスクスケジューラを使用したり、exe / comを構築したりするための提案を見てきましたが、これほど複雑ではないはずだと直感しました。

.net Webページで実際にタスクを実行し、いくつかのカスタムビルドクラスなどを使用するためのコードがすでに記述されています。

これらの関数を希望の時間に自動的に呼び出す方法がわかりません。

_

サーバー情報:Windows Web Server 2008 R2(64ビット)を実行している専用サーバー

開発環境:.NET4.0を使用したVisualStudio 2010 SP1

_

よろしくお願いします。

よろしくお願いいたします。

デル

4

4 に答える 4

5

コードを個別のexe/dllに分割し、Windowsタスクスケジューラおよびアプリケーションから呼び出すことができます。

実行しているオペレーティングシステムにスケジューラーが存在する場合、アプリケーション内でスケジューラーを再発明する意味はありません。特に、アプリケーションはサーバーではなくWebを実行するWebアプリケーションであるためです。

追加の利点は、アプリケーションをよりモジュール化してアップグレードしやすくしたことです。

于 2012-04-10T17:38:42.810 に答える
2

定義上、Webサーバーは要求に応答します。この基本的な設計は、アプリケーションプールが一定期間非アクティブになった後にシャットダウンされるなど、さまざまな形で現れます。このため、コードが実際に実行されることを保証することは困難であるため、Webサーバーのコンテキスト内で時間依存のコードを実行することはお勧めできません(他の悪影響をもたらす多くのフープを飛び越えずに) )。代わりに、外部の時間依存メカニズムは、これらの機能を実行するためにWebサーバーに要求を送信する必要があります。

「これほど複雑であってはならない」という理由で、Windowsスケジューラを使用したり外部exeを作成したりしたくないとおっしゃいました。しかし、スケジュールされたタスクにWebサービスを呼び出させることの複雑さはわかりません。

于 2012-04-10T17:40:10.130 に答える
0

コマンドライン HTTP 要求ユーティリティである cURL をダウンロードします。タスク スケジューラからこのユーティリティを使用して、関数の実行に必要な特定のクエリ文字列を使用して Web ページ / Web サービスを呼び出します。

http://curl.haxx.se/

これはあまり安全ではありません - 正しいクエリ文字列を知っている人なら誰でもこれらの関数を実行する可能性があります - しかし、一般的なアイデアは得られます。私の意見では、アセンブリを使用して機能を直接実行するコンソール アプリを作成する方がはるかに安全です。タスク スケジューラからコンソール アプリを呼び出します。

于 2012-04-10T18:16:46.063 に答える
0

まあ、私はWindowsタスクスケジューラを応援する他の回答に同意しますが、そのWebサイトはタスクのスケジューリングとは何の関係もありません(タスクランナー自体ではなく、入力パラメータのソースになる可能性があります)バックグラウンドで必要なプロセスをスケジュールして実行します。

于 2012-04-10T17:42:13.010 に答える