通常,WPF应用程序是Web服务器上RESTful服务的使用者/客户端。我想扭转它-WPF应用程序应该能够公开Web API。这将由网络应用程序消耗。
流程:
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格式。我已经在OpenAPI为其准备了YAML(在http://editor.swagger.io/中)模式。将来,它可以用于更改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自动生成。
有一个post无法将ASP.NET Core 2.x集成到WPF应用程序中。不幸的是,ASP.NET Core 3.0和更高版本只能在.NET Core上运行。
我到处都有一些地方,但没有一个可行的概念。我的选择可能是:
如何在WPF端实施Web服务器/服务?也许有一个现有的第三方框架可以使我免于重新发明轮子?
PS。有一个类似的问题how to expose a restful service inside a WPF project,但已经过时了。
答案 0 :(得分:1)
这听起来像您的要求:
WPF应用程序应该能够公开Web API。这将由网络应用程序消耗。
但是,您反对唯一可能的解决方案:
使用WPF应用程序中的Web服务启动Web服务器。听起来不好。
我不确定您期望在不启动Web服务器的情况下公开Web API的其他方式吗?您要在UI App中启动自托管服务。
在ServiceStack中,您仅可以在WPF应用程序中启动self-hosted Service,该应用程序可以是自托管的.NET Framework HTTP侦听器,也可以是ASP.NET Core on .NET Framework应用程序。 Microsoft所说的两个选项都将得到无限期的支持,但是.NET Framework正在逐步被ASP.NET Core 3.0淘汰,只能在.NET Core和.NET Framework上运行,并停止在v4.x上以.NET 5 is just going to be the next version of .NET Core的形式进行开发。
但这并不应该改变您现在可以使用的解决方案,如果您需要在WPF .NET Framework应用程序中运行Web服务,则需要运行自托管的.NET Framework HTTP Server,该服务器可以成为自托管的HTTP侦听器或ASP.NET Core(在.NET FX上)应用。