
总体设计概述
- 架构原则:
- 模块化与抽象:代码提供了一个抽象的HTTP/HTTPS服务器框架,基于mORMot的核心模块(如mormot.net.sock、mormot.core.base)。它将服务器分为通用抽象层(THttpServerGeneric)、基于套接字的实现(THttpServerSocket)、Windows特有的http.sys实现(THttpApiServer)和WebSocket扩展(THttpApiWebSocketServer)。UDP服务器作为独立抽象(TUdpServerThread)。
- 路由机制:使用高效的Radix Tree(TUriTree/TUriTreeNode)实现URI路由(TUriRouter),支持RESTful方法、重写和参数提取。路由是线程安全的,支持无分配查找。
- 性能优化:线程池(TSynThreadPool)、异步处理(WebSocket使用IOCP)、缓存(THttpPeerCache使用文件系统和UDP广播)、压缩和TLS支持。统计和日志集成(THttpAnalyzer)。
- 跨平台与平台特定:核心是跨平台的,但THttpApiServer和WebSocket依赖Windows API(http.sys/WebSocket API)。TLS使用SChannel或OpenSSL。
- 安全性:支持TLS、IP封禁(hsoBan40xIP)、WebSocket协议验证。
- 扩展性:回调(如TOnHttpServerRequest、WebSocket事件)和选项(THttpServerOptions)允许自定义。路由支持RTTI自动注册方法。
- 依赖:依赖mormot.net.sock(套接字)、mormot.lib.sspi/gssapi(安全)、mormot.crypt.secure(加密)。可选依赖WinInet/OpenSSL。
- 模块划分:
- UDP服务器抽象。
- URI路由(Radix Tree)。
- HTTP请求/响应上下文。
- 通用HTTP服务器基类。
- 套接字-based服务器。
- P2P缓存。
- http.sys-based服务器。
- WebSocket支持(Windows-only)。
- 适用场景:高性能HTTP/REST服务器、WebSocket应用、P2P文件缓存。强调低开销、线程安全,适合Web服务或实时通信。
关键类型和枚举
- TUriRouterMethod/TUriRouterMethods:HTTP方法枚举(如urmGet, urmPost),支持RESTful操作。
- TUriTreeNodeData:路由节点数据,包含重写URI、参数位置、回调(TOnHttpServerRequest)和不透明指针。
- TConnectionAsyncHandle:异步连接ID,用于延迟响应。
- THttpServerOptions:服务器选项集(如hsoEnableTls, hsoBan40xIP, hsoEnablePipelining)。
- THtt