c# - 如何从 WPF 应用程序提供 RESTful Web 服务?
问题描述
通常,WPF 应用程序是 Web 服务器上 RESTful 服务的使用者/客户端。我想让它反转 - WPF 应用程序应该能够公开 Web API。这将由 Web 应用程序使用。
流量:
web app ---sends a command to--> WPF app
** WPF app makes a 'long running job' until its user decides to stop **
WPF app ---passes data back to--> web app
通信应采用 Json 格式。我在http://editor.swagger.io/为它准备了 OpenAPI(在YAML中)模式。将来它可用于对 WPF 应用程序的 Web API 进行更改。
它允许生成 ASP.NET Core 服务器 c# 代码存根。在 WPF 中运行 ASP.NET Core 服务器的要求是什么?它是否足够轻巧以供使用?
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
// somewhere in the WPF app: BuildWebHost(args).Run();
该代码由https://github.com/swagger-api/swagger-codegen自动生成。
有一篇文章未能将 ASP.NET Core 2.x 集成到 WPF 应用程序中。不幸的是,ASP.NET Core 3.0 及更高版本只能在 .NET Core 上运行。
我在这里和那里有一些东西,但不是一个可行的概念。我的选择可能是:
- 使用第 3 方框架或库。应该能够使用 OpenAPI/YAML 模式或 Swagger 生成的服务器存根代码等。
- ServiceStack 会是这里缺失的部分吗?
- 将 ASP.NET Core 集成到 WPF 中。甚至有可能吗?
- 使用 WPF 应用程序中的 Web 服务启动单独的 Web 服务器(不是自托管)。听起来很糟糕。
- 实现 WCF Web 服务和请求。
- ...
如何在 WPF 端实现 Web 服务器/服务?也许有一个现有的 3rd 方框架可以让我免于重新发明轮子?
PS。有一个类似的问题如何在 WPF 项目中公开一个宁静的服务,但它已经过时了。
解决方案
这听起来像你的要求:
WPF 应用程序应该能够公开 Web API。这将由 Web 应用程序使用。
但是,您反对唯一可以使其成为可能的解决方案:
从 WPF 应用程序启动具有 Web 服务的 Web 服务器。听起来很糟糕。
我不确定您还期望如何在不启动 Web 服务器的情况下公开 Web API?在 UI 应用程序中,您希望启动自托管服务。
自托管
在 ServiceStack 中,您可以在 WPF 应用程序中启动自托管服务,该服务可以是自托管的 .NET Framework HTTP 侦听器,也可以是.NET Framework 应用程序上的 ASP.NET Core。微软表示将无限期支持这两个选项,但 .NET Framework 正在逐步淘汰,ASP.NET Core 3.0 只能在 .NET Core 上运行,而 .NET Framework 在 v4.x 上停止开发,因为.NET 5 只是将成为 .NET Core 的下一个版本。
但这不应该改变您现在可以使用的解决方案,如果您需要在 WPF .NET Framework 应用程序中运行 Web 服务,您将需要运行一个自托管的 .NET Framework HTTP Server,它可以是自托管的- 托管的 HTTP 侦听器或 ASP.NET Core(在 .NET FX 上)应用程序。
推荐阅读
- matlab - 如何在 MATLAB 中动态绘制数据
- ajax - 如何在 componentDidUpdate 中加载 AJAX 并更新状态?
- javascript - 在浏览器上提供 npm 模块的 javascript 源的正确方法是什么?
- sql - 值大于值的 SQL COUNT 列
- excel - 在单个单元格中搜索多个单词并返回找到的所有单词
- responsive-design - 调整窗口元素大小时,段落后移动会占用更多空间
- sql - 以特殊方式按可空列分组
- random - C++:获取线性同余生成器的状态
- php - Cardinity 支付的 OpenCart 问题 openssl_encrypt():
- logistic-regression - Python 逻辑回归(数据科学新手)