我正在尝试做什么
开发一个C#WPF Windows应用程序,它可以使用运行带有MySQL的CentOS 6 Linux的中央Web服务器向其他WPF应用程序发送和接收数据。
WPF客户端必须能够向服务器发送消息,并且必须能够实时收听服务器以获取消息,并在消息发布后立即显示。
服务器端程序应该能够将其中一些消息解析为.NET数据对象,并且应该能够向所有客户端或仅特定客户端广播消息。
此外,如果服务器程序可以处理来自移动应用程序(Android应用程序到服务器 - 服务器到WPF客户端,反之亦然)以及WPF客户端的请求,那将是非常可取的,但不是必需的。
示例
服务器(德克萨斯州的服务器)
管理客户端(加利福尼亚州的用户)
客户端2 (佛罗里达州的用户)
客户3 (纽约用户)
我发了一个"你好"从我的计算机管理客户端广播到服务器。
服务器收到消息并广播"你好"所有倾听的客户。
客户2和客户3显示"你好"在他们的客户身上回应"嘿!"
服务器收到"嘿!"消息并发送给管理客户端。
我发了一条消息"打开芝麻"仅在客户端2的应用程序上执行RunOnMagicWord()方法,对客户端3不执行任何操作。
Client2运行RunOnMagicWord()并发送"完成!"方法执行后发送给服务器的消息。
服务器收到"完成!"消息并发送给管理客户端。
我所看到的
我更喜欢将所有内容保存在C#.NET中,包括服务器端程序,以便可以轻松地序列化客户端和服务器之间发送的数据。 SignalR似乎最接近我正在寻找的东西,但在我看来它只适用于IIS,而不适用于Apache / Linux。我没有选择切换到IIS,也觉得我可能会让整个事情过于复杂,所以......
我的问题
我是否正沿着正确的道路前往使用SignalR之类的东西?如果是这样,我如何让它在我的CentOS服务器上运行?或者,Linux / MySQL服务器是否有一种更简单的方式为.NET应用程序提供这种功能?
编辑:添加了我尝试过的其他内容,重新格式化了段落,添加了对此项目的其他限制以回应评论
答案 0 :(得分:4)
你提到的一切都可以奏效。但是,您应该使用的决定可以由业务需求和约束来决定:
对于这种聊天功能,Linux上的SignalR和mono .net app应该可以正常工作。此外,Signalr不是这里唯一的选择,你有.net的许多websockets实现,如https://github.com/StackExchange/NetGain