使 API 服务器和 WPF 应用程序使用相同的服务和状态实例是个好主意吗?

问题描述 投票:0回答:0

我有一个 WPF 应用程序和一个需要通过 LAN 进行通信的移动应用程序。为了解决这个问题,我创建了一个在 IIS 上运行的单独的 API 服务器。现在我想实现以下目标:

  1. 直接使用Kestrel(IIS太繁琐没必要)
  2. 使用 WPF 应用程序自动启动 API

所以我遇到了这个topic。简而言之,它描述了如何通过在单独的线程中手动运行主机来将 ASP.NET 服务器作为 WinForms 应用程序的一部分运行:

// In WPF project
Task.Run(StartWebServer);

// in API project
public static void StartWebServer() {
    Host.CreateDefaultBuilder().ConfigureWebHostDefaults(...)
}

但这让我开始思考——我能否不仅在 WPF 启动时启动这个 API,而且将它视为完全相同的应用程序,而不是单独的独立网络实体。我的意思是,本质上是将 API 配置为使用与 WPF 项目相同的服务实例,并最终得到一个应用程序,该应用程序使用多线程来修改应用程序状态

一个明显的优势是这些应用程序之间不需要网络通信。

我能想到的一个问题是 DI 容器——ASP.NET 需要它自己的实例来正确配置自己,但是所有的应用程序服务都将在 WPF 容器中注册。我可以通过向 ASP.NET 提供 WPF 容器实例并将该实例用于应用程序服务(那些修改应用程序状态的实例)来解决这个问题

这听起来是个好主意吗?

c# .net wpf asp.net-core
© www.soinside.com 2019 - 2024. All rights reserved.