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
功能说明
中间件系统
- 支持前置中间件(Before)
- 支持后置中间件(After)
- 支持中间件链式调用
- 支持请求拦截和终止
权限验证
- Token 认证机制
- 请求头验证
- 可配置的验证规则
- 统一的错误处理
客户端功能
- HTTP 请求封装
- 头部管理
- JSON 数据处理
- 响应处理
技术要点
- 中间件机制的实现
- HTTP 通信的封装
- 权限验证的统一处理
- 客户端-服务器交互
应用场景
- 需要权限验证的 Web API
- 分布式系统通信
- 微服务架构
- 业务系统集成
扩展建议
- 添加更多类型的中间件
- 实现请求限流
- 添加数据验证中间件
- 实现缓存中间件
- 添加日志中间件