sgcWebSockets 2026.10 发布了。这个版本贯穿着两条主线:sgcHTML 补齐了一个商业级 Web 应用需要的部分,让你不用再手写这些代码;密码学也在没有引入任何一个外部库的情况下迈向了后量子时代。
Web 应用:繁琐的部分,搞定了
会话、登录与 CSRF。新的 TsgcHTMLAuth 组件及其会话存储负责维护 cookie、响应登录和登出请求、关闭空闲会话,并对失败的登录进行限流。CSRF 令牌放在一个 meta 标签里,htmx 会自动把它加到每个请求上,服务器则会拒绝不携带它的 post 请求。
FAuth := TsgcHTMLAuth.Create(Self);
FAuth.SessionStore := TsgcHTMLSessionStore_Memory.Create(Self);
FAuth.CookieName := 'app_session';
FEngine.Auth := FAuth;
读起来就像路由的路由。路径参数、方法过滤器,以及对请求头、cookie 和请求体的访问:
with FRouter.Routes.Add do
begin
Path := '/customers/{id}/edit';
Methods := [hrmGet, hrmPost];
RequireLogin := True;
RequireRoles := 'admin,sales';
end;
可以测试的页面。DispatchDirect 可以在没有底层 socket 的情况下应答一个请求,一个新的单元会读取生成的 HTML,按 id、类、标签或属性查找元素,并把一个页面与保存的副本进行比较,这样标记中一次无意的改动会被测试发现,而不是被客户发现。
感觉像原生应用的导航。页面切换不需要完全重新加载,并会保留滚动位置和用户正在输入的内容,还带有加载进度条、连接断开时的提示框,以及请求失败时的消息。所有这些功能默认都是关闭的。
四个重点新功能
每一项都有单独的文章介绍,链接在文末,这里只说它是什么:
- MCP Apps。一个用页面而不是段落来应答的 MCP 工具,可以在 ChatGPT、Claude 或 VS Code 中渲染,由和其他 sgcHTML 页面相同的组件构建而成。
- AI 页面生成器。描述一个页面,或者给设计器一张截图,它就会用你已注册的组件把页面构建出来,作为一个你可以接受或放弃的候选方案。
- CRUD 组件。列表、搜索、分页、表单、删除,以及一个数据集的写入路径,可以基于 TDataSet,也可以基于你自己的 SQL,并配有 IDE 向导和命令行生成器。
- AI Data Pack。用自然语言向一个 grid、一个数据表或一个数据透视表提问,内置的基于规则的解析器在完全没有 API key 的情况下也能作答。
推送,两种方式
服务器发送事件(server sent events)现在可以取代 WebSocket 来传送更新,并能在断线期间重放错过的内容,而且它可以配合普通的 HTTP 服务器工作。Web Push 则可以触达一个已经关闭的浏览器。它们还带来了一个通知收件箱和一个偏好设置表,通知组件会决定某个用户走哪条通道。
AI:可以直接拿来用的答案
TsgcAIChat 现在可以通过新的 ChatJSON 方法,在 OpenAI、Anthropic、Gemini、DeepSeek、Ollama、Grok 和 Mistral 上请求遵循你提供的 schema 的 JSON;该方法会解析返回结果,当解析失败时会附上解析错误再问一次。聊天组件现在也能发送和接收图片了,而且 BaseUrl 现在对每个提供商都生效,而不再只对 Ollama 生效,这样它们中的任何一个都可以指向一个代理或本地网关。
密码学:用 Object Pascal 实现的后量子能力
ML-KEM(FIPS 203)、ML-DSA(FIPS 204)和 SLH-DSA(FIPS 205)、X-Wing 混合密钥封装、后量子 X.509 证书与证书颁发机构,以及用 ML-DSA 签名的 JWT。这一切都用 Object Pascal 写在 sgcCrypto 包里,不依赖任何外部库,并针对 NIST 的已知答案向量做了验证。
在此之上是一个原生 TLS 1.3 引擎,同样是纯 Pascal 实现:客户端或服务器无需 OpenSSL、也无需 SChannel 就能进行 TLS 通信,协商 RFC 10024 中的混合后量子分组,并支持 ALPN、S N I、客户端证书,以及可选地使用操作系统的信任存储。
经典算法也在同一轮改动中得到了加固:带盲化的常数时间 RSA、常数时间的椭圆曲线标量乘法与 Ed25519、无查找表的 AES 和 GHASH、导入的私钥会与其公钥部分做校验,以及拒绝非最小编码的 DER 签名。
值得一提的修复
- 使用 RSA 和 ECDSA 密钥进行 JWT 签名与验证时,以及在静态链接 OpenSSL 的 32 位应用中,存在的内存损坏问题。
- SChannel 处理程序在每次使用 PFX 文件建立连接时,都会在 Windows 密钥存储中留下一份私钥副本,并且在较新版本的 Windows 上不会发送客户端证书。
- 使用 Windows 存储中证书的并发 SChannel 连接握手失败。
- OAuth2 服务器会拒绝用 RSA 密钥签名的 DPoP 证明。
- CloudFront 签名 URL 的签名没有做 URL 安全编码。
.NET
.NET 库同步跟进:为 ASP.NET Core 提供 ClaimsPrincipal 桥接的身份验证与会话管理、路由器、测试辅助工具、SPA 导航、带原生端点的 SSE 传输、结构化输出、AI Data Pack、Web Push、MCP Apps,以及带适配器的 CRUD 组件,全部使用与 Delphi 相同的 API 名称。
升级
所有新增功能都是增量式的,并且默认关闭。加入新的单元、重新编译你的包,现有应用的行为将与之前完全一致。
完整版文章
- 在 ChatGPT 和 Claude 中运行你的 Delphi 应用
- 把一张截图变成一个 Delphi 网页
- 不依赖 OpenSSL DLL 的 Delphi TLS 1.3
- 五分钟构建一个 Delphi Web CRUD 页面
- 用简单英语向你的 Delphi 表格提问
- 从 Delphi 触达一个已经关闭的浏览器
观看视频
关于此功能的简短视频发布在eSeGeCe 频道上。
有问题、反馈,或需要迁移方面的帮助?欢迎联系我们 — 你会收到编写这些代码的人的回复。
