使用 VB.NET + Kestrel 构建现代跨平台 WebAPI 应用(含Linux)

在很多人的印象中,VB.NET 主要用于传统的 Windows 窗体应用。但事实上,VB.NET 完全可以用来构建现代化的 Web 应用!本文将介绍如何使用 VB.NET 结合 Kestrel(.NET 的高性能 Web 服务器)来开发 Web 服务。

什么是 Kestrel?

Kestrel 是 ASP.NET Core 的默认跨平台 Web 服务器,它具有以下特点:

  • 高性能:基于异步 I/O 设计,处理高并发请求
  • 跨平台:可在 Windows、Linux、macOS 上运行
  • 轻量级:专门为 .NET 应用优化
  • 现代化:支持 HTTP/2、WebSocket 等最新协议

1. 项目配置

新建基于.net8的控制台程序后,修改项目文件(比如linuxTest.vbproj)把Microsoft.NET.Sdk改为Microsoft.NET.Sdk.Web保存即可启用VB.NET + Kestrel 进行web开发.

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>
</Project>

2. 最小启动代码

Module Program
    Sub Main()
        Dim app = WebApplication.Create()
        
        ' 基础路由
        app.MapGet("/", Function() "VB.NET WEBAPI Running")
        
        app.Run()
    End Sub
End Module

3. 智能路由

' 路径参数
app.MapGet("/users/{id}", Function(id As Integer) $"User {id}")

' 多级路径
app.MapGet("/posts/{id}/comments/{cid}", 
    Function(id As Integer, cid As Integer) $"Post {id}, Comment {cid}")

4. 参数获取

' 查询参数
app.MapGet("/search", Function(q As String, page As Integer) $"Search {q} Page {page}")

' 请求体参数
Public Class UserRequest
    Public Property Name As String
    Public Property Email As String
End Class

app.MapPost("/users", Function(req As UserRequest) $"Create {req.Name}")

5. 完整CRUD

Dim users As New List(Of User)

' 查
app.MapGet("/users", Function() Results.Ok(users))

' 增  
app.MapPost("/users", Function(req As UserRequest)
    users.Add(New User With {.Id = users.Count + 1, .Name = req.Name})
    Return Results.Ok("Added")
End Function)

' 改
app.MapPut("/users/{id}", Function(id As Integer, req As UserRequest)
    Dim user = users.FirstOrDefault(Function(u) u.Id = id)
    If user Is Nothing Then Return Results.NotFound()
    user.Name = req.Name
    Return Results.Ok("Updated")
End Function)

' 删
app.MapDelete("/users/{id}", Function(id As Integer)
    users.RemoveAll(Function(u) u.Id = id)
    Return Results.Ok("Deleted")
End Function)

最终代码

Module Program
    Sub Main()
        Dim app = WebApplication.Create()
        
        ' 路由配置
        app.MapGet("/", Function() "VB.NET API")
        app.MapGet("/users/{id}", Function(id As Integer) $"User {id}")
        app.MapPost("/users", Function(req As UserRequest) $"Create {req.Name}")
        
        app.Run("http://0.0.0.0:5000")
    End Sub
End Module

Public Class UserRequest
    Public Property Name As String
    Public Property Email As String
End Class

Public Class User
    Public Property Id As Integer
    Public Property Name As String
End Class

10行核心代码搞定Web API开发!

最后发布

既可以发布为独立程序,也可以发布到Linux上运行. 发布后的目录如下

Lilunx上运行的话记得也要安装运行时,可以用宝塔安装,然后将发布的文件夹里面的全部复制到网站项目目录下,新建net项目即可.如下图所示



微信扫描下方的二维码阅读本文

没有账号? 忘记密码?

社交账号快速登录