我有一个ASP.NET WebApi自托管服务,它可以处理一个名为Transaction
的对象。此外,我有一个单独的WinForms应用程序,它作为我下载Transaction
的客户端。客户端可能是Android应用程序上的Web应用程序(服务不应该关心它)。
Transaction
有一个名为Status
的属性,该属性从提交后更改 - >进展 - >在操作过程中完成/错误。
目前,我的客户端的工作方式如下:
SubmitTransaction(Transaction t);
while(t.Status==inprogress)
{
Thread.Sleep(1000);
t= GetTransactionStatus();
}
如您所见,我必须每秒“PING”我的服务才能获得状态更新。我想知道,有什么方法可以“监听”我的服务并返回Status
,当它在没有循环和睡眠的情况下获得服务更新时?我正在使用.NET 3.5
请随时询问更多信息, 提前谢谢!
答案 0 :(得分:2)
您要找的是push notification
有很多库和实现。 .net中最着名的是SignalIR
在那里你可以找到一个如何在not-webcontext中使用它的例子:http://mscodingblog.blogspot.it/2012/12/testing-signalr-in-wpf-console-and.html
无论如何,它们的设置非常复杂,如果您认为只有少数客户要求该事务,而您不需要实时推送应用程序的其他方面,我认为检查更容易/更快当你正在做任何X秒的状态。