我必须向远程程序发送查询并接收数据。然后将它们放入我的数据库中。 例如,这可以每隔60秒调用一次控制器的动作吗?
感谢。
PS。我认为必须在服务器端完成。不是JS解决方案。
更新
首先,我有MS SQL Server DB 第二,有远程程序监听特定的TCP端口并等待查询。我想每60秒发送一次查询并解析响应,然后将解析后的数据放入我的MS SQL Server DB中。
答案 0 :(得分:1)
使用Ajax,您可以创建一个计时器,每隔x秒将数据发送到控制器。 我的Web应用程序中的拼写检查器插件可以在您键入时进行拼写检查。
答案 1 :(得分:1)
我认为你最好使用在后台运行的独立服务(windows,wcf,msmq等)并“发送查询”并保存到你的数据库。
Web应用程序并非旨在用作基于时间的“永远存活”机制。 “定时”需要状态,HTTP是无状态协议。
不要试图将功能强加于非设计用于处理它的东西。
然后,我可能完全误解了你的问题。很可能。
令人困惑的陈述:
这可以调用控制器的动作
如果它是外部的,你怎么知道它是一个控制器?这是外部API吗?
有远程程序监听特定的TCP端口并等待查询
这听起来不像是一个Web应用程序/控制器。
答案 2 :(得分:1)
你可以在* nix基础系统上使用cron。或者您的程序可以每小时触发事件
0 * * * * lynx url-of-your-program-address.com/action/to/call
答案 3 :(得分:1)
你的问题令人困惑。但是,因为我们只是在这里猜测你在做什么,这里的解决方案可能会接近。
(P.S。我没有编译或测试过这个......因为我为什么要关心)
class ConsoleApplication
{
public static void Main()
{
Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler( DoAction );
myTimer.Interval = 1000;
myTimer.Start();
while ( Console.Read() != 'q' )
{
; // do nothing...
}
}
public static void DoAction( object source, ElapsedEventArgs e )
{
Console.WriteLine("Made request at {0}", DateTime.Now);
using (WebClient client = new WebClient())
{
using (Stream stream = client.OpenRead("http://whereever"))
using (StreamReader reader = new StreamReader(stream))
{
Console.WriteLine(reader.ReadToEnd());
}
}
}
}
答案 4 :(得分:1)
根据您的解决方案的灵活性,我会使用Quartz.Net来使用带有Timer的Windows服务解决方案。 您可以使用http://quartznet.sourceforge.net/
下面的链接找到更多详细信息