【发布时间】:2015-07-31 21:54:38
【问题描述】:
我有一个现有的基于 .NET Framework 4.5 的 Windows 服务应用程序,并且想要添加一个用于配置和诊断的用户界面。
在 Windows 窗体或 WPF 中,服务将通过 TCP 连接(.NET Remoting 或 WCF)将其数据发送到客户端,但这需要在客户端或服务器端进行额外配置,并且还需要服务和客户端在相同的兼容性级别上,这在最坏的情况下意味着多个服务的多个客户端。
我有一个想法,即使用新的 ASP.NET5 Web 应用程序将服务和用户界面融合到一个应用程序中。 当 Windows 服务启动时,首先我想启动 Web 服务器,然后启动服务的其余部分。因此,用户可以在不安装任何其他软件的情况下与服务进行交互。 Web 应用程序和 Windows 服务应该运行在同一个 AppDomain 中,这样我就可以更改用户界面中的对象,服务可以立即使用它。
到目前为止,我已经使用了新的控制台应用程序 (dnx451) 并通过 WebHostBuilder 托管并获得了一个工作页面,但我认为这不是我正在寻找的解决方案。我得到了项目输出和一个 cmd 文件来启动服务器。
所以我的第一个问题是:是否有适用于 .NET 4.5 的 WebHostBuilder 的等效实现,以在传统的 Visual Studio 项目中运行网站?
我的第二个想法是在 IIS 中完全运行该服务,因此我将拥有一个托管现有服务功能的网页。但我不知道 IIS 中的应用程序和作为 Windows 服务的应用程序之间有什么区别。 在这种情况下,ASP.NET 4.6 是什么?因为我认为我必须将现有的库转换为新的 ASP.NET5 类库(包)。
我能想到的最后一种可能性是将 Web 应用程序发布到 IIS 并作为 Windows 服务服务并通过 WCF NamedPipes 进行通信,就像我对 WPF 或 Windows 窗体应用程序所做的那样。
总而言之,是否有计划支持我的第一个想法,或者我必须选择其他一个?哪个选项可能是最好的?
【问题讨论】:
标签: c# .net asp.net-core