所有文章 > AI驱动 > Windows 上快速部署.NET Core Web 项目
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 服务

命令行工具选择

  • WinSWNSSM 是两个常用的工具,它们可以帮助我们将.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项目,编译。

  • 生成如下文件

image

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

最终的目录文件列表如下:

image

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

image

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

image

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

#你可能也喜欢这些API文章!