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

时间:2013-10-05 01:47:21

标签: c# asp.net-mvc winforms wcf http

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

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

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

这种方法似乎非常不安全,但是有一个开放端口,配置防火墙等等,似乎是一种过度杀伤。

我想知道是否有其他办法可以实现这一目标。

感谢您的帮助。

P.S。在你声称这是一个愚蠢的想法之前,Piriform也在做这样的事情。看看Agomo.com

3 个答案:

答案 0 :(得分:4)

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

SignalR with window client (WPF)

Console App & SignalR

答案 1 :(得分:0)

在WinForm应用程序中创建WCF服务,指定端点(并正确保护端点),并从连接到WCF服务的方式连接到ASP.NET应用程序中的所述端点。

答案 2 :(得分:0)

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

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

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

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

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