ASP MVC和WinForm应用程序之间的通信

我正在寻找用户可以在ASP和Winform应用程序之间进行通信的方式。

我正在寻找像soluto.com这样的东西,我想让用户通过网站向其他计算机发送命令。 因此,假设用户注册了10台计算机,这些计算机已在mvc应用程序上注册。 用户可以选择所有10台计算机,并通过单击按钮发送“执行此任务”。

我想的是,Winform将创建一个httplisten服务器。 每次winform打开时,它都会向mvc发送一个“我在线”的post以及IP:端口。 服务器将在需要时向该ip:端口发送请求。

这种方法似乎非常不安全,有一个开放的端口,配置防火墙等,似乎是一种矫枉过正。

我想知道是否有任何其他方式来实现这一点。

感谢您的帮助。

PS在您宣称这是一个愚蠢的想法之前,Piriform也在做这样的事情。 看看Agomo.com

使用SingalR和正确构建的Web和Windows应用程序(例如MVP,MVC等)

SignalR与窗口客户端(WPF)

控制台应用程序和SignalR

在WinForm应用程序中创建WCF服务,指定端点(并适当地保护端点),并以与连接到WCF服务相同的方式从ASP.NET应用程序连接到所述端点。

为什么不让Winforms应用程序使用标准的HttpClient或WebRequest定期轮询服务(可能每5秒左右)并询问是否有任何需要执行的任务?

除非您需要实时,低延迟,高性能的通信,否则这是通过最小到零客户端设置或安全配置解决问题的最简单方法。

我这样做的方式是像数据持久层中的堆栈一样实现它。 因此,每个客户端都可以在表中添加任务排队时添加的行。 当客户端向MVC服务器发送HTTP GET请求时,它将返回该客户端的一系列任务,您可以让它立即从数据库中删除它们,或者等待客户端稍后发送HTTP命令以指示哪个它完成的任务。

您可以将任务表示为具有一些属性的简单数据对象,或者只是一个字符串或int,您可以以某种方式在客户端上查找以调用相应的代码。

为了获得合理的安全性,每个客户端只需要获得一个唯一的密钥,如GUID或等效密钥,以后它可以发送到服务器以validation其身份。 这也称为cookie,密钥或API密钥。