Skip to content

VBMAN 中间件与客户端通信示例

概述

这个示例展示了如何使用 VBMAN 框架构建带有中间件的 Web 服务器,以及如何实现客户端与服务器的通信。示例包含权限验证中间件等高级特性。

项目结构

MiddleWare/
  ├── server/                # 服务器端项目
  │   ├── Form1.frm         # 服务器主窗体
  │   ├── DataServer.vbp    # 服务器项目文件
  │   └── include/          # 服务器端类库
  │       ├── bWcs.cls      # 业务处理类
  │       ├── mAuth.cls     # 权限验证中间件
  │       ├── Config.bas    # 配置模块
  │       └── ToolsHttp.bas # HTTP工具模块
  └── client/               # 客户端项目
      ├── Client.frm        # 客户端主窗体
      ├── DataClient.vbp    # 客户端项目文件
      └── include/          # 客户端类库
          ├── cHttpClient.cls # HTTP客户端类
          ├── bTaskSend.cls  # 任务发送类
          ├── bTaskLog.cls   # 任务日志类
          └── cJson.cls      # JSON处理类

核心代码解析

1. 服务器端中间件配置(Form1.frm)

vb
'服务器初始化
Dim HttpServer As New VBMANLIB.cHttpServer

Private Sub Form_Load()
    With HttpServer
        '注册业务类
        .Router.Reg "Wcs", New bWcs
        
        '配置前置中间件用于权限检查
        .Router.Before.Add "/*", New mAuth
        
        '启动服务器
        .Start 800
    End With
End Sub

2. 权限验证中间件(mAuth.cls)

vb
Public Sub Execute(ctx As cHttpServerContext)
    '获取认证信息
    Dim token As String: token = ctx.Request.Headers("Authorization")
    
    '验证失败时终止请求
    If Not IsValidToken(token) Then
        ctx.Response.State401 "Unauthorized"
        ctx.Abort
    End If
End Sub

3. 客户端请求发送(Client.frm)

vb
Private Sub SendTask()
    With New cHttpClient
        '设置请求头
        .RequestHeaders.Add "Authorization", "Bearer " & token
        .RequestHeaders.Add "Content-Type", "application/json"
        
        '发送请求
        Dim response As String
        response = .Fetch(ReqPost, "http://localhost:800/wcs/task", jsonData)
        
        '处理响应
        Debug.Print .ReturnJson().Encode(, 2)
    End With
End Sub

功能说明

  1. 中间件系统

    • 支持前置中间件(Before)
    • 支持后置中间件(After)
    • 支持中间件链式调用
    • 支持请求拦截和终止
  2. 权限验证

    • Token 认证机制
    • 请求头验证
    • 可配置的验证规则
    • 统一的错误处理
  3. 客户端功能

    • HTTP 请求封装
    • 头部管理
    • JSON 数据处理
    • 响应处理

技术要点

  1. 中间件机制的实现
  2. HTTP 通信的封装
  3. 权限验证的统一处理
  4. 客户端-服务器交互

应用场景

  1. 需要权限验证的 Web API
  2. 分布式系统通信
  3. 微服务架构
  4. 业务系统集成

扩展建议

  1. 添加更多类型的中间件
  2. 实现请求限流
  3. 添加数据验证中间件
  4. 实现缓存中间件
  5. 添加日志中间件

基于 VB6组件 发布