首页 > 解决方案 > SignalR for Desktop-Web 应用程序(C#、.NET/Azure、WinForms)

问题描述

我正在开发一个带有桌面 UI 的 Web 应用程序,它将在 Azure 服务器中使用多个 Azure 包(基于 Web 的应用程序的基础),并将 WinForms 作为各个客户端交互和控制流程的桌面用户界面的内容。

该应用程序的目的是允许用户相互发送文件和链接,并使用推送通知、云存储(和自定义 UI),使其成为一个即时过程。收到通知后,客户可以预览他们的文件/链接(网站),并可以下载/复制链接。

如果我要比较我的应用程序的功能,它会类似于Discord,它是浏览器上的 Web 应用程序,但也是一个可下载的变体。可下载的变体是我想要作为我的应用程序模型的:基于 Web 的,但桌面 UI。

原始术语中的过程是这样的:

  1. 客户端打开一个文件并使用用户目录将文件“发送”给另一个客户端。

  2. 这实际上是第一个客户端将文件发送到另一个客户端的 Blob 容器,身份由 AD B2C 持有,

  3. 接收文件后,多个函数获取文件详细信息(发件人客户端、接收时间、文件/网站类型),

  4. 并将其以可自定义的推送通知发送给接收它的客户端,客户端在桌面 UI 通知 UI 中获取它。)

  5. 然后,接收客户端可以在 Blob 存储允许的情况下从服务器预览/流式传输它,
    甚至可以下载/复制文件/链接。

我了解Azure AD B2C可用于注册用户,Azure Blob Storage存储“发送”文件,Azure Functions用于为每个注册的客户端处理和连续生成容器,并处理客户端之间发送的每个单独通知,但是,我正在休息我的即时通讯技术的 Fence 超过 2 个选项。

我一直在研究SignalR,由于它的瞬时行为,并且与 Azure 相关联,它是一个不错的选择。但是,缺少关于使用 SignalR 的基于 Web 的 WinForms 应用程序的文档(它似乎更侧重于网站,尽管人们已经表示他们已经使用它完成了控制台应用程序等),并且其他人一直在推荐WCF,因为它更老更坚固,并且据说默认情况下更多地使用 Windows 桌面应用程序。

我倾向于 SignalR,因为它不需要服务器基础设施维护,也不需要完成繁重的服务器功能。

那么可以做到吗,如果是这样,我会从哪里开始?

TL.DR/Summary:我正在 Azure Infrastructure 上创建一个基于 Web 的应用程序,我的客户将使用已安装的 WinForms 程序来控制内容流、“发送”内容等。这就像登录网站并接收实时通知,因此 SignalR 是否与客户端桌面应用程序相同,还是 WCF 更合适?

使用 Azure 运行的应用程序的原始图,包括 SignalR

标签: c#asp.netazurewinformssignalr

解决方案


推荐阅读