将异步数据从网页传递到我的窗体 C# .NET 应用程序

Posted

技术标签:

【中文标题】将异步数据从网页传递到我的窗体 C# .NET 应用程序【英文标题】:Passing asynchronous data from a web page to my window form C# .NET application 【发布时间】:2015-05-07 22:55:53 【问题描述】:

我想让一个网页能够与基于 C# .NET Windows 窗体应用程序的软件电话实现进行通信(异步)。理想情况下,任何电话号码附近的按钮都应将包括电话号码和一些附加数据的字符串发送到本地运行的软件电话。 Windows 窗体应接收该号码并使用它拨打电话。 呼叫的结束应传达回最初启动呼叫的网页。 作为 .NET 编程的初学者,哪种实现可以最简单、最轻松地满足这些要求?我专注于 ASP .NET,但它真的有帮助吗?非常感谢

【问题讨论】:

我认为您对软件架构应该如何工作有很大的困惑和误解。您无法从网页控制 Windows 客户端应用程序(任何技术),反之亦然。 ASP.NET 或 ASP.NET Web Api 将是您的奴隶,而电话或客户端应用程序将是您的主人。你认为网页是如何感知手机的? 感谢您的回答。抱歉,我只在高层次上解释了该机制应该如何工作。我当然不会假装从网页控制手机客户端应用程序。只是在寻找一种方法来使其成为可能,就像 Skype 在某些网页中所做的那样。单击后,拨打电话的软件电话应用程序将检索电话号码。手机必须知道网页上发生了什么。 看我的回答。试试 SignalR 我看到一个实现足以从页面调用 href="sip:" 格式的 href 以将号码转发到软电话客户端应用程序。我想知道如何实现这一点 您的应用需要在浏览器上注册一个协议处理程序,这取决于不同的浏览器。即 Mozilla developer.mozilla.org/en/docs/Web-based_protocol_handlers。即:msdn.microsoft.com/en-us/library/ie/… 【参考方案1】:

你应该看看SignalR。这是一个用于实时网络通信的库。

您可以在自己的进程中托管 SignalR 应用程序(自托管)或在您的 IIS Web 服务器中托管它。

您的网站和您的 .NET WinForm 应用程序都连接到它。您可以使用SignalR groups 将网站用户关联到 WinForms 客户端。

然后您可以从您的网站向 SignalR 发送消息并将其广播到某个组(您的 WinForm 应用程序所属的组)。

ASP.NET 网站上有很多教程。

http://www.asp.net/signalr/overview/getting-started

只要 SignalR/您的 ASP.NET 网站不是本地托管的,这也应该适用于 WinPhone 应用程序。

编辑: 只是一些额外的信息: SingalR 需要 Windows Server 2012 或更高版本才能启用 WebSocket 支持,否则它将不得不回退到替代机制(html 5 的服务器发送事件或“Forever Frame”/Ajax 长轮询

【讨论】:

【参考方案2】:

服务器端技术和客户端技术完全不相关,因为浏览器将处于中间位置。 一种可能性是在您单击电话号码时从网站返回具有自定义扩展名的文件。文件扩展名可以在本地操作系统中(通过安装程序)与客户端应用程序链接,因此它将通过您的软电话应用程序自动打开。

此文件可以包含任何数据结构,其中包含您要传输的所有信息。 (寻找“xml序列化”)

编辑: 此解决方案使您独立于操作系统中的 sip 协议处理程序 (set sip handler application in registry),并允许转发有关被呼叫人的更多信息,而不仅仅是号码。

【讨论】:

以上是关于将异步数据从网页传递到我的窗体 C# .NET 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 C# 代码中通过自定义 url 方案访问传递到我的应用程序的值?

如何将数据从 jquery 代码传递到我的项目后端

C# MVC .Net Core Form,强类型化的Form,无法使用(404错误)。

我无法将数据从 c# 服务器传递到 GCM 应用程序

急急急! c# winform开发模式窗体的一个问题

如何使用 promise 将数组从我的模块返回到我的 API?异步函数和承诺 - Node.js