所有文章 >
AI驱动 >
Windows 上快速部署.NET Core Web 项目
Windows 上快速部署.NET Core Web 项目
为什么在 Windows 上部署 .NET Core 项目
一、Windows 环境的集成优势
- 现有基础设施:在企业环境中,可能已经存在大量基于 Windows 的服务器和服务。如果你的.NET Core 项目需要与这些现有基础设施进行紧密集成,例如与 Active Directory 进行身份验证、使用 Windows 特定的文件共享或数据库连接,那么在 Windows 上部署可以更加方便地实现这些集成。
- 特定软件依赖:另外有些特定软件的依赖只有Windows版本,比如某些工业软件服务,很多只有Windows版本。
二、Kestrel 服务器的高性能
Kestrel 是.NET Core 自带的跨平台 Web 服务器,它具有以下高性能特性:
- 轻量级和高效:
- Kestrel 是一个轻量级的服务器,它的内存占用和启动时间都非常小。这使得它非常适合在资源受限的环境中运行,同时也能够快速启动和响应请求。
- 与传统的 Web 服务器相比,Kestrel 不需要大量的配置和依赖项,因此可以更快地部署和启动。
- 异步和非阻塞:
- Kestrel 采用异步和非阻塞的编程模型,能够有效地处理大量的并发请求。它可以在不阻塞线程的情况下处理多个请求,从而提高服务器的吞吐量和响应速度。
- 这种异步编程模型还可以减少服务器的资源消耗,因为它不需要为每个请求创建一个新的线程。
- 支持 HTTP/2:
- Kestrel 支持 HTTP/2 协议,这是一种新一代的 Web 协议,具有更高的性能和更好的安全性。HTTP/2 可以在单个连接上同时处理多个请求和响应,减少了延迟和网络开销。
- 启用 HTTP/2 可以提高网站的加载速度和用户体验,特别是对于需要加载大量资源的网站。
- 易于配置和扩展:
- Kestrel 可以通过配置文件进行轻松配置,并且可以与其他.NET Core 中间件和组件进行集成。这使得开发人员可以根据自己的需求定制服务器的行为,并添加额外的功能和安全性。
- 例如,可以使用中间件来实现日志记录、身份验证、授权和缓存等功能。
三、将.NET Core 项目作为 Windows 服务
命令行工具选择
- WinSW 和 NSSM 是两个常用的工具,它们可以帮助我们将.NET Core 项目作为 Windows 服务运行。
(一) WinSW 的优势
- 简单易用:
- WinSW 的配置相对简单,只需要一个 XML 配置文件即可完成服务的配置。对于不熟悉复杂工具的用户来说,WinSW 更容易上手。
- 配置文件的格式清晰明了,易于理解和修改。用户可以快速根据自己的需求进行配置,而不需要花费大量时间学习复杂的工具界面和参数。
- 轻量级:
- WinSW 本身是一个轻量级的工具,不会占用过多的系统资源。这对于资源有限的服务器环境来说非常重要,可以确保服务的稳定运行,同时不会对系统性能造成过大的影响。
- 开源免费:
- WinSW 是开源软件,用户可以免费使用。这对于个人开发者和小型团队来说是一个很大的优势,可以降低项目的成本。
(二) NSSM 的特点
- 功能丰富:
- NSSM 提供了更多的功能选项,例如可以设置服务的依赖关系、启动参数、环境变量等。对于需要更复杂配置的用户来说,NSSM 可能更适合。
- NSSM 还支持图形用户界面,用户可以通过直观的界面进行配置,而不需要手动编辑配置文件。
- 广泛的社区支持:
- NSSM 拥有广泛的社区支持,用户可以在网上找到大量的教程和解决方案。如果在使用过程中遇到问题,更容易获得帮助。
(三) 选择 WinSW 的原因
- 满足需求:
- 对于大多数将.NET Core 项目作为 Windows 服务的场景,WinSW 的简单易用和轻量级特性已经能够满足需求。如果没有特殊的复杂配置要求,WinSW 是一个更快速、高效的选择。
- 降低复杂性:
- 在一些情况下,过于复杂的工具可能会引入不必要的复杂性和风险。WinSW 的简洁性可以减少配置错误的可能性,提高服务的稳定性和可靠性。
- 成本考虑:
- 对于个人开发者和小型团队来说,开源免费的 WinSW 可以降低项目的成本。而对于大型企业或有特殊需求的用户,可以根据实际情况选择 NSSM 或其他更复杂的工具。
四、使用 WinSW 将.NET Core 项目作为 Windows 服务
1. 下载 WinSW
- 从 官方网站 下载最新版本的 WinSW。WinSW 提供了多种版本,包括 32 位和 64 位版本。选择适合你的系统和需求的版本进行下载。
2. 配置 WinSW
- 将下载的 WinSW 可执行文件重命名为与你的.NET Core 项目名称相关的名称,例如“MyAppService.exe”。
- 创建一个 XML 配置文件,文件名一定要和上一步的WinSW名称相同,用于配置 WinSW。以下是一个示例配置文件:
3. 安装和启动服务
- 将配置文件和 WinSW 可执行文件放在同一目录下。
- 打开以管理员启动命令提示符,并切换到包含配置文件和 WinSW 可执行文件的目录。
- 运行以下命令安装服务:
winsw.exe install
这将安装服务,并将其注册到 Windows 服务控制管理器中。
winsw.exe start
这将启动服务,并在后台运行你的.NET Core 项目。
4. 管理服务
- 可以使用 Windows 服务控制管理器来管理你的服务。打开“服务”窗口(可以在“控制面板”->“管理工具”->“服务”中找到),找到你的服务,并可以进行启动、停止、暂停、恢复等操作。
- 还可以使用命令提示符来管理服务。例如,运行以下命令停止服务:
winsw.exe stop
常用命令如下:
- install:安装服务
- uninstall:卸载服务
- start:启动服务
- stop:停止服务
- restart:重启服务
- status:检查服务状态
- refresh:刷新服务属性而不是重新安装
五、案例
1. 创建一个简单的最小API项目,编译。

2. 将 WinSW 拷贝到项目目录,并且新建一个xml文件,文件名必须与之相同,xml文件配置如下:
最终的目录文件列表如下:

3. 以管理员cmd运行 WinSW,此时在任务管理器中可以看到服务已经运行:

4. 在浏览器访问服务地址,出现如下页面

原文转载自:https://mp.weixin.qq.com/s/GUmFpcmS8gVge_kAelY9ng