4

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

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

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

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

我想知道是否有其他方法可以做到这一点。

感谢您的帮助。

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

4

3 回答 3

4

SingalR与适当架构的 Web 和 Windows 应用程序(例如 MVP、MVC 等)一起使用

SignalR 与窗口客户端 (WPF)

控制台应用程序和 SignalR

于 2013-10-05T02:03:55.307 回答
0

在 WinForm 应用程序中创建 WCF 服务,指定端点(并适当地保护端点),并从您的 ASP.NET 应用程序连接到所述端点,就像您连接到 WCF 服务一样。

于 2013-10-05T01:52:45.290 回答
0

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

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

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

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

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

于 2013-10-05T02:18:58.623 回答