需要开发一个Web服务器监控系统。可能有数百个网络服务器在不同的服务器上运行。这个系统需要监视每个web服务在给定的interva上并更新数据库中的状态。我需要开发一个web服务监控.net应用程序。什么是最好的设计方法
设计的当前选项。
选项1:创建的类Monitorig它有Method1动态调用Web服务的定期间隔说10分钟。并将状态(失败/成功)数据存储到数据库。
在for循环中,我每次都创建一个监视类的新实例,并创建一个新线程。
例子。
foreach(int i in idlist)
{
Monitoring monObj = new Monitoring();
Thread workerT = new Thread(monObj.MonitorWebService);
workerT.Start(i);
}
的MonitorWebService API中
存在用于循环 ,其不以给定间隔调用web服务给定的如1分钟或10分钟等。为了在我使用的EventWaitHandle常规inverval处理此一无穷大。 WaitOne(T1 * 1000,false)而不是Thread.Sleep()。这里T1可以是1分钟或1或5小时。
Oprion 2:
在for循环打开与新名称的新应用程序域,并打开一个新的线程为如下。
foreach(int i in idlist)
{
string appDNname = WSMonitor + i.ToString();
AppDomain WMSObj = AppDomain.CreateDomain(appDNname);
Type t= typeof(Monitoring);
Monitoring monWSObj = (Monitoring) WMSObj.CreateInstanceAndUnwrap(Assembly.GetExecuti ngAssembly().FullName, t.FullName);
Thread WorkerT = new Thread(monWSObj.MonitorWebService);
WorkerT.Start(i);
}
in option2我在卸载AppDomain的时间间隔超过10分钟。并且当它需要加载时。我认为选项2将在不需要时释放资源,并在需要时重新加载。
哪个是最好的/更好的方法?我们有更好的解决方案吗?快速帮助非常感谢。
+1作为计划任务运行;微软为我们提供了一段时间的基础架构,可以在给定的时间/间隔内运行任务,并在Vista/Windows 7中作为对事件发生的响应,这是疯狂的,而不是使用它。 – Rob 2010-08-06 14:10:29