データベーステーブルを定期的にチェックしたかったので、Webサービスを作成するにはどうすればよいですか、またそれを構成するにはどうすればよいですか。
3 に答える
基本的に必要なのは、常に実行されているため、定期的に呼び出しを行うことができるものです。
それを行うにはいくつかの方法があります
(ASP.NETなので)Windowsサービスを作成し、サーバーでこのサービスをホストできます。サーバーは常に実行されているため、このWindowsサービスはWebサービスにリクエストを送信し、データベースを更新するか、必要なときにいつでも水を更新します
SQL ジョブを使用してそれを行うことができます。SSIS (Sql Server Integration Service) パッケージを介して、ジョブから Web サービスを呼び出すことができます。これらのパッケージは本質的に非常に堅牢であり、Web サービス要求を含め、実行したいほぼすべてのデータベース アクティビティを実行できます。
最後に、Quartz.Net などのサードパーティ ツールを使用できます。
参考文献:
- これは、Windows サービスを介して Web サービスを呼び出す方法です。
- これは、ssis パッケージを介して Web サービスを呼び出す方法です。
- これは、SSIS パッケージを SQL ジョブに統合する方法です
- これは、Windows サービスを作成する方法です。
- これは、SSIS パッケージを作成する方法です
- これは、ほとんどすべての回答/チュートリアルを取得する方法です
例:
これらすべての中で最も単純なのは、Windows サービスです。Windows サービスを作成してマシン (サーバー) でホストするのは非常に簡単です。指定されたリンクの 1 つ (特に最後のリンク) を使用してください。通常、Windows サービスでは、OnStart
イベントで何らかのアクティビティを行います。この中にタイマーを配置しOnStart
てTimerTick()
、Web サービスをリクエストできます。
このようなもの:
class Program : ServiceBase
{
System.Timers.Timer timer;
static void Main(string[] args)
{
ServiceBase.Run(new Program());
}
public Program()
{
this.ServiceName = "My Service";
}
protected override void OnStart(string[] args)
{
base.OnStart(args);
InitializeTimer();
}
protected override void OnStop()
{
base.OnStop();
//TODO: clean up any variables and stop any threads
}
protected void InitializeTimer()
{
try
{
if (timer == null)
{
timer = new System.Timers.Timer();
timer.Enabled = true;
timer.AutoReset = true;
timer.Interval = 60000 * 1;
timer.Enabled = true;
timer.Elapsed += timer_Elapsed;
}
}
catch (Exception ex)
{
Utility.WriteLog("Exception InitialiseTimer : " + ex.Message.ToString());
}
finally
{
}
}
protected void timer_Elapsed(object source, System.Timers.ElapsedEventArgs e)
{
TimerTick();
timer.Interval = 60000 * Convert.ToDouble(ConfigurationManager.AppSettings["TimerInerval"]);
}
private void TimerTick()
{
try
{
DownloadFromFTPandValidate objDownLoadandValidate = new DownloadFromFTPandValidate();
objDownLoadandValidate.ProcessMain();
}
catch (Exception ex)
{
Utility.WriteLog("Exception InitialiseTimer : " + ex.Message.ToString());
}
}
}
ここで、クラスDownloadFromFTPandValidate
はコードを db アクティビティにラップします。それはあなたにアイデアを与えるでしょう。
定期的なタスクにはジョブスケジューラが必要になります。私はあなたに良いものをお勧めします。このリンクをチェックしてください:http://quartznet.sourceforge.net/
データが変更されたらストアド プロシージャを実行するテーブルでトリガーを使用してから、xp_cmdshellを使用してストアド プロシージャからコマンドラインにアクセスし、バッチ ファイルなどを実行できるようにします。