我有一个 WPF 应用程序和一个需要通过 LAN 进行通信的移动应用程序。为了解决这个问题,我创建了一个在 IIS 上运行的单独的 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 容器实例并将该实例用于应用程序服务(那些修改应用程序状态的实例)来解决这个问题
这听起来是个好主意吗?