如何在WPF和ASP.NET应用程序之间进行通信?

时间:2017-10-22 22:28:25

标签: c# asp.net wpf

我有一个WPF应用程序,我希望用户能够部署到Web服务器,以便他们可以通过Web浏览器查看更新。

我计划构建某种类型的ASP.NET解决方案,我希望它与正在运行的WPF应用程序通信,并从中获取实时数据,以便可以通过IIS向用户提供。

我的WPF应用程序可以实时将对象发送到ASP.NET应用程序吗?如果是这样的话?我应该关注哪种技术?

3 个答案:

答案 0 :(得分:1)

  

我的WPF应用程序可以实时将对象发送到ASP.NET应用程序吗?

  

我应该关注哪种技术?

您可以使用许多技术。由于您只使用.NET技术,我会选择Windows Communication Foundation。

看看here

此外,您还可以创建RESTful服务。在这种情况下,一个替代方案是WebApi

答案 1 :(得分:0)

是WCF(Windows Communication Foundation)是关键。但是有几种策略..

(1)一种解决方案是使用 RSS feeds 将数据导入ASP.NET应用程序:使用WCP客户端从WPF应用程序上传RSS feed内容。这应该连接到创建RSS提要的WCF服务。 Studio 2017中有一个名为"联合服务库"的RSS源服务器的WCF项目模板。您将需要ASP端的RSS客户端模块,并让客户订阅RSS源以报告新数据。

(2) 消息传递也是一个选项:我更喜欢WCF + WebSocket将数据实时传输到ASP客户端。

假设您有WPF应用程序用户生成的某种消息(例如序列化对象)。 WPF应用程序可以使用WCF客户端,连接到WCF服务,该服务将数据排队以发布WebSocket或多个Websockets。

您的网页连接到WebSocket,WebSocket将不断为其提供新数据。该接口可以在JavaScript中使用WebSocket在视图中实现以获取数据。

如果您想对控制器级别的数据执行更多操作,控制器可以打开WCF客户端直接查询更新(轮询)并使用Ajax实时更新html客户端,执行数据库更新等等。

(3)您可以考虑的替代设置是 Kafka消息传递。 WPF用户的所有输入都将在Kafka中持久保存并在故障转移群集中得到保护。客户端可以向Kafka轮询新消息。 WPF应用程序将在Kafka主题中推送新数据,ASP应用程序可以使用Ajax或其他拉动策略将新的Kafka内容添加到网页客户端。注意:我还没有在ASP.NET上下文中测试Confluent Kafka C#客户端。

答案 2 :(得分:0)

我建议使用webapi而不是WCF Windows Communication Foundation,因为webapi易于使用,您可以直接使用post, get请求向webpi控制器发出http请求。

因此您可以使WPF应用程序和Web应用程序使用相同的webapi。