sgcIndy 与 Indy 对比 — 有何不同

sgcIndy 是 Indy 库经维护、修补和现代化后的发行版,并非分支或替代品。本页面列出了 sgcIndy 在 Indy Pit Crew(Remy Lebeau、Hadi Hariri 和 Indy 工作组)原始 Indy 工作基础上新增的内容,以及保持不变的部分。

两种使用 Indy 的方式

每个选项的一段简介,并附有官方文档或代码库的链接。详细对比见下方矩阵。

Indy

Indy Pit Crew — Remy Lebeau、Hadi Hariri、Indy 工作组 · 双重许可:Indy Modified BSD 或 Indy MPL

原版 Internet Direct 库,采用双重许可(Modified BSD / MPL),由 Indy Pit Crew 在 GitHub 的 IndySockets/Indy 上维护。随每个最新 RAD Studio 安装版本附带,涵盖 TCP/UDP/原始套接字以及 120 个以上的高级协议客户端和服务器(HTTP、FTP、SMTP、POP3、IMAP、NNTP、IRC 等)。当前的 OpenSSL 集成(IdSSLOpenSSL.pas / IdSSLOpenSSLHeaders.pas)面向 OpenSSL 1.0.x ABI;TLS 版本枚举止于 TLSv1.2。SASL OAuth2 / XOAUTH2 通过 IdSASLOAuth.pas 提供。

官方页面

功能并排对比

勾选()表示该项目在其当前源代码中记录了原生支持。横线()表示该项目未原生提供。波浪线(~)表示部分支持 / 通过附加组件 / 未经验证 — 请参阅"来源"部分了解核查内容。

加密、协议、平台、发行

18 行
功能 Indy sgcIndy
OpenSSL 1.0.x 支持 绑定面向旧版 OpenSSL 1.0.x ABI
OpenSSL 1.1.x 支持 OpenSSL 1.1.x API 的绑定(当前 LTS 至 2023 年)
OpenSSL 3.0.x 支持 基于提供程序的 OpenSSL 3.x API 绑定
TLS 1.3 可在 SSL 选项中选择 TLS 1.3
SSH 客户端组件(TIdSSHClient) SSH 2.0 客户端(IdSSHClient.pas),支持密钥和密码身份验证、exec / shell 通道和端口转发 — Indy 上游未提供
SFTP 客户端组件(TIdSFTPClient) 基于 SSH 的 SFTP v3 客户端(IdSFTPClient.pas),用于文件上传 / 下载 / 目录列表 — Indy 上游仅提供普通 FTP / FTPS,不含 SFTP
XOAuth2 SMTP / IMAP / POP3 RFC 7628 / Google XOAUTH2 SASL 机制
原生 IPv6 原生 IPv6 套接字支持
兼容 Delphi 7 可在原始 Delphi 7 工具链上编译
兼容 RAD Studio 13 可在 RAD Studio 13 Florence 上编译
兼容 Lazarus / FPC 可在 Free Pascal / Lazarus 下构建
兼容 C++ Builder C++ Builder VCL / FMX 目标
适用于所有 Delphi / C++ Builder 版本的自动安装程序 一键安装程序,可检测所有已安装的 IDE 并注册运行时和设计时包、库路径和 BPL 搜索路径
提供已编译的 DCU 二进制文件 预构建的 DCU / BPL 下载
包含完整源代码 开发者可获得 Pascal 源代码
可免费用于商业用途 许可证允许在商业应用中免版税部署
积极维护(近 12 个月) 过去 12 个月内有发布或标记活动 ~
与 eSeGeCe 库捆绑 在 All-Access 中与 sgcWebSockets / sgcOpenAPI / sgcSign / sgcBiometrics 一同提供
已记录的原生支持 未原生提供 ~ 部分支持 / 通过附加组件 / 未经验证

在 Indy 基础上的修补和现代化

sgcIndy 保留了 Indy 组件模型和类名(以 sgcId* 为前缀),并在此基础上叠加了现代 OpenSSL 绑定、TLS 1.3、打包二进制文件,以及与 eSeGeCe 库其余部分共享的发布节奏。

OpenSSL 1.1.x 绑定

在旧版 1.0.x API 的基础上提供 OpenSSL 1.1.x ABI 的头文件,让您无需修补原始 Indy SSL 单元即可链接 libssl-1_1 / libcrypto-1_1。

OpenSSL 3.0.x 绑定

OpenSSL 3.x 提供程序架构的头文件,包括 3.x 库导出的版本检测例程(OpenSSL_version_numOpenSSL_version)。

SSL 选项中的 TLS 1.3

TIdSSLVersion 枚举扩展了 sslvTLSv1_3,OpenSSL 上下文根据通过 IsOpenSSL_TLSv1_3_Available 进行的运行时探测,应用或清除 SSL_OP_NO_TLSv1_3

XOAuth2 打包

封装发行版中包含 XOAuth2 / OAuth2 Bearer SASL 机制 — 与 Indy 提供的 TIdSASLXOAuth2TIdSASLOAuth2Bearer 类相同,可直接与捆绑的 SMTP / IMAP / POP3 客户端配合使用。

适用于 Delphi 7 至 RAD Studio 13 的预构建发行版

适用于所有受支持 Delphi 版本的打包 DCU 和 BPL 二进制文件,以及 C++ Builder 2007 至 C++ Builder 13。社区版为二进制文件集;All-Access 版包含完整源代码。

连接处理改进

在 Indy TCP / UDP / HTTP / FTP / SMTP / POP3 / IMAP 组件基础上进行的保活、超时和缓冲区管理调整。

与 eSeGeCe 库其余部分同步维护

sgcIndy 与 sgcWebSockets、sgcOpenAPI、sgcSign 和 sgcBiometrics 共享更新节奏。单个 All-Access 订阅包含所有五款产品的源代码。

各选项的适用场景

两个选项均基于相同的 Indy 代码库。选择通常取决于您所面向的 OpenSSL ABI、是否需要 TLS 1.3,以及预构建的二进制文件对您的构建系统是否重要。

何时使用 Indy…

当您希望使用由 Indy Pit Crew(Remy Lebeau 和 Indy 工作组)维护的原始 BSD / MPL 发行版,当您直接基于 IndySockets/Indy master 分支构建,当您的 OpenSSL 部署是 Indy 开箱即用所针对的 1.0.x 系列,或当您不需要 SSL 选项中的 TLS 1.3 时,请选择 Indy。Indy 随每个最新 RAD Studio 安装版本附带,因此不会增加任何依赖负担。

何时使用 sgcIndy…

当您希望继续使用 Indy 组件模型,但需要 OpenSSL 1.1.x 或 3.0.x 绑定、SSL 选项中的 TLS 1.3,或为 Delphi 7 至 RAD Studio 13 的所有 Delphi / C++ Builder 版本打包的预构建 DCU 二进制文件时,请选择 sgcIndy。社区版免费;源代码版包含在 eSeGeCe All-Access 订阅中,与 sgcWebSockets、sgcOpenAPI、sgcSign 和 sgcBiometrics 一同提供。

各选项的许可和分发方式

两个选项均允许在商业应用中免版税使用。区别在于分发渠道以及捆绑内容。

Indy

采用 Indy Modified BSD 许可证或 Indy MPL 许可证双重授权,由开发者选择(参见项目 README)。完整的 Pascal 源代码在 GitHub 的 IndySockets/Indy 上;可下载标记版本或直接从 master 构建。项目页面上没有已编译的二进制文件 — 您需要针对 Delphi / C++ Builder / Lazarus 工具链从源代码构建。

sgcIndy

两个版本。社区版免费:为所有受支持的 Delphi / C++ Builder 版本提供已编译的 DCU 和 BPL 二进制文件,可在商业应用中免版税部署,无需注册。源代码版包含在 eSeGeCe All-Access 订阅中 — 完整的 Pascal 源代码以及 sgcWebSockets Enterprise、sgcOpenAPI、sgcSign 和 sgcBiometrics 集于一包。

每项声明,均有链接

上方矩阵中的每个单元格均可追溯至以下官方文档页面、代码库或源文件之一。所有 URL 在撰写时均已通过 HEAD 检查。

来源URL
sgcIndy — 产品页面https://www.esegece.com/products/sgcindy/
sgcIndy — 功能https://www.esegece.com/products/sgcindy/features/
sgcIndy — 订购与版本https://www.esegece.com/products/sgcindy/order/
sgcIndy — 下载https://www.esegece.com/products/sgcindy/download/
eSeGeCe All-Access 定价https://www.esegece.com/pricing/
Indy — 项目主页(indyproject.org)https://www.indyproject.org/
Indy — 文档索引https://www.indyproject.org/documentation/
Indy — GitHub 代码库(IndySockets/Indy)https://github.com/IndySockets/Indy
Indy — 发布(最新标签 10.6.3.14)https://github.com/IndySockets/Indy/releases
Indy — master 分支提交https://github.com/IndySockets/Indy/commits/master
Indy — Lib/Protocols(源代码列表)https://github.com/IndySockets/Indy/tree/master/Lib/Protocols
Indy — IdSSLOpenSSLHeaders.pas(OpenSSL 1.0.x 绑定)https://github.com/IndySockets/Indy/blob/master/Lib/Protocols/IdSSLOpenSSLHeaders.pas
Indy — IdSSLOpenSSL.pas(TIdSSLVersion 枚举,sslvTLSv1_2)https://github.com/IndySockets/Indy/blob/master/Lib/Protocols/IdSSLOpenSSL.pas
Indy — IdSASLOAuth.pas(TIdSASLXOAuth2,RFC 7628)https://github.com/IndySockets/Indy/blob/master/Lib/Protocols/IdSASLOAuth.pas
Indy — wiki(升级说明、文档)https://github.com/IndySockets/Indy/wiki
RFC 7628 — 适用于 OAuth 的 SASL 机制https://datatracker.ietf.org/doc/html/rfc7628
RFC 8446 — TLS 1.3 协议https://datatracker.ietf.org/doc/html/rfc8446
OpenSSL — 项目网站https://www.openssl.org/

试用 sgcIndy

下载免费社区版,将已编译的二进制文件放入您现有的基于 Indy 的项目中。