sgcIndy vs Indy — o que é diferente

O sgcIndy é uma distribuição mantida, com patches e modernizada da biblioteca Indy, não um fork ou substituto. Esta página lista exatamente o que o sgcIndy acrescenta ao trabalho original do Indy realizado pelo Indy Pit Crew (Remy Lebeau, Hadi Hariri e o Indy Working Group), e o que permanece igual.

Duas formas de usar o Indy

Um resumo de um parágrafo para cada opção, com link para a documentação ou repositório oficial. A comparação detalhada está na matriz abaixo.

Indy

Indy Pit Crew — Remy Lebeau, Hadi Hariri, o Indy Working Group · Dupla: Indy Modified BSD ou Indy MPL

A biblioteca Internet Direct original, com dupla licença (Modified BSD / MPL) e mantida pelo Indy Pit Crew no GitHub em IndySockets/Indy. Incluída em toda instalação recente do RAD Studio e cobre TCP/UDP/sockets brutos além de 120+ clientes e servidores de protocolos de alto nível (HTTP, FTP, SMTP, POP3, IMAP, NNTP, IRC e mais). A integração OpenSSL atual (IdSSLOpenSSL.pas / IdSSLOpenSSLHeaders.pas) tem como alvo a ABI do OpenSSL 1.0.x; o enum de versão TLS vai até TLSv1.2. SASL OAuth2 / XOAUTH2 é fornecido por IdSASLOAuth.pas.

Página oficial

Comparação lado a lado de recursos

Um check () significa que o projeto documenta suporte nativo em seu código-fonte atual. Um traço () significa que o projeto não o fornece nativamente. Um til (~) significa parcial / via add-on / não verificado — consulte a seção Fontes para o que foi verificado.

Criptografia, protocolos, plataformas, distribuição

18 linhas
Recurso Indy sgcIndy
Suporte a OpenSSL 1.0.x Bindings para a ABI legada do OpenSSL 1.0.x
Suporte a OpenSSL 1.1.x Bindings para a API OpenSSL 1.1.x (LTS atual até 2023)
Suporte a OpenSSL 3.0.x Bindings para a API baseada em provedores do OpenSSL 3.x
TLS 1.3 TLS 1.3 selecionável nas opções SSL
Componente cliente SSH (TIdSSHClient) Cliente SSH 2.0 (IdSSHClient.pas) com autenticação por chave e senha, canais exec / shell e encaminhamento de porta — não fornecido pelo Indy original
Componente cliente SFTP (TIdSFTPClient) Cliente SFTP v3 sobre SSH (IdSFTPClient.pas) para upload / download de arquivos / listagem de diretórios — o Indy original só inclui FTP / FTPS simples, não SFTP
XOAuth2 SMTP / IMAP / POP3 Mecanismo SASL RFC 7628 / Google XOAUTH2
IPv6 nativo Suporte nativo a sockets IPv6
Compatível com Delphi 7 Compila na toolchain original do Delphi 7
Compatível com RAD Studio 13 Compila no RAD Studio 13 Florence
Compatível com Lazarus / FPC Compila em Free Pascal / Lazarus
Compatível com C++ Builder Alvos C++ Builder VCL / FMX
Instalador automático para todas as versões Delphi / C++ Builder Instalador com um clique que detecta cada IDE instalada e registra pacotes runtime + design-time, caminhos de biblioteca e caminhos de busca BPL
Binários DCU compilados disponíveis Downloads de DCU / BPL pré-compilados
Código-fonte completo incluído Código-fonte Pascal disponível para o desenvolvedor
Gratuito para uso comercial A licença permite implantação sem royalties em aplicativos comerciais
Manutenção ativa (últimos 12 meses) Lançamento ou atividade marcada nos últimos 12 meses ~
Incluído na biblioteca eSeGeCe Distribuído junto com sgcWebSockets / sgcOpenAPI / sgcSign / sgcBiometrics no All-Access
Suporte nativo documentado Não fornecido nativamente ~ Parcial / via add-on / não verificado

Patches e modernizações sobre o Indy

O sgcIndy mantém o modelo de componentes e nomes de classes do Indy (sob o prefixo sgcId*), e adiciona bindings modernos do OpenSSL, TLS 1.3, binários empacotados e um cadência de lançamento compartilhada com o restante da biblioteca eSeGeCe.

Bindings para OpenSSL 1.1.x

Headers para a ABI do OpenSSL 1.1.x junto com a API legada 1.0.x, para que você possa vincular contra libssl-1_1 / libcrypto-1_1 sem precisar modificar as units SSL originais do Indy.

Bindings para OpenSSL 3.0.x

Headers para a arquitetura de provedores do OpenSSL 3.x, incluindo as rotinas de detecção de versão (OpenSSL_version_num, OpenSSL_version) que a biblioteca 3.x exporta.

TLS 1.3 nas opções SSL

O enum TIdSSLVersion é estendido com sslvTLSv1_3, e o contexto OpenSSL aplica SSL_OP_NO_TLSv1_3 / o limpa com base em sondagem em tempo de execução via IsOpenSSL_TLSv1_3_Available.

Empacotamento XOAuth2

Os mecanismos SASL XOAuth2 / OAuth2 Bearer estão incluídos na distribuição encapsulada — as mesmas classes TIdSASLXOAuth2 e TIdSASLOAuth2Bearer que o Indy fornece, prontas para uso com os clientes SMTP / IMAP / POP3 incluídos.

Distribuição pré-compilada do Delphi 7 ao RAD Studio 13

Binários DCU e BPL empacotados para cada versão Delphi suportada, além do C++ Builder 2007 ao C++ Builder 13. A edição Community é o conjunto de binários; a edição All-Access inclui o código-fonte completo.

Melhorias no gerenciamento de conexões

Ajustes de keep-alive, timeout e gerenciamento de buffer sobre os componentes Indy TCP / UDP / HTTP / FTP / SMTP / POP3 / IMAP.

Mantido junto com o restante da biblioteca eSeGeCe

O sgcIndy compartilha sua cadência de atualizações com sgcWebSockets, sgcOpenAPI, sgcSign e sgcBiometrics. Uma única assinatura All-Access inclui o código-fonte de todos os cinco produtos.

Avaliação honesta de cada opção

Ambas as opções estão sobre a mesma base de código Indy. A escolha geralmente se resume a qual ABI do OpenSSL você usa, se o TLS 1.3 é necessário e se binários pré-compilados são importantes para o seu sistema de build.

Use Indy quando…

Escolha o Indy quando quiser a distribuição BSD / MPL original mantida pelo Indy Pit Crew (Remy Lebeau e o Indy Working Group), quando compilar diretamente contra o branch master do IndySockets/Indy, quando sua implantação OpenSSL for a linha 1.0.x que o Indy suporta por padrão, ou quando não precisar de TLS 1.3 nas opções SSL. O Indy vem com toda instalação recente do RAD Studio, então não acrescenta nada ao seu conjunto de dependências.

Use sgcIndy quando…

Escolha o sgcIndy quando quiser continuar usando o modelo de componentes Indy, mas precisar de bindings do OpenSSL 1.1.x ou 3.0.x, TLS 1.3 nas opções SSL ou binários DCU pré-compilados empacotados para cada versão Delphi / C++ Builder do Delphi 7 ao RAD Studio 13. A edição Community é gratuita; a edição com código-fonte está incluída na assinatura eSeGeCe All-Access junto com sgcWebSockets, sgcOpenAPI, sgcSign e sgcBiometrics.

Como cada opção é licenciada e distribuída

Ambas as opções permitem uso livre de royalties em aplicativos comerciais. A diferença está no canal de distribuição e no que é incluído junto.

Indy

Com dupla licença sob a Indy Modified BSD License ou a Indy MPL License, à escolha do desenvolvedor (conforme o README do projeto). O código-fonte Pascal completo está no GitHub em IndySockets/Indy; baixe uma versão marcada ou compile diretamente do master. Não há binários compilados na página do projeto — você compila a partir do código-fonte com a toolchain Delphi / C++ Builder / Lazarus.

sgcIndy

Duas edições. A edição Community é gratuita: binários DCU e BPL compilados para cada versão Delphi / C++ Builder suportada, implantação sem royalties em aplicativos comerciais, sem registro. A edição com código-fonte está incluída na assinatura eSeGeCe All-Access — código-fonte Pascal completo mais sgcWebSockets Enterprise, sgcOpenAPI, sgcSign e sgcBiometrics em um único pacote.

Cada célula da matriz acima remete a uma destas páginas de documentação oficial, repositórios ou arquivos-fonte. Todos os URLs foram verificados no momento da escrita.

FonteURL
sgcIndy — página do produtohttps://www.esegece.com/products/sgcindy/
sgcIndy — recursoshttps://www.esegece.com/products/sgcindy/features/
sgcIndy — comprar e ediçõeshttps://www.esegece.com/products/sgcindy/order/
sgcIndy — downloadhttps://www.esegece.com/products/sgcindy/download/
Preços do eSeGeCe All-Accesshttps://www.esegece.com/pricing/
Indy — página do projeto (indyproject.org)https://www.indyproject.org/
Indy — índice de documentaçãohttps://www.indyproject.org/documentation/
Indy — repositório GitHub (IndySockets/Indy)https://github.com/IndySockets/Indy
Indy — versões (último tag 10.6.3.14)https://github.com/IndySockets/Indy/releases
Indy — commits do branch masterhttps://github.com/IndySockets/Indy/commits/master
Indy — Lib/Protocols (listagem do código-fonte)https://github.com/IndySockets/Indy/tree/master/Lib/Protocols
Indy — IdSSLOpenSSLHeaders.pas (bindings OpenSSL 1.0.x)https://github.com/IndySockets/Indy/blob/master/Lib/Protocols/IdSSLOpenSSLHeaders.pas
Indy — IdSSLOpenSSL.pas (enum 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 (instruções de atualização, documentação)https://github.com/IndySockets/Indy/wiki
RFC 7628 — SASL Mechanisms for OAuthhttps://datatracker.ietf.org/doc/html/rfc7628
RFC 8446 — The TLS 1.3 Protocolhttps://datatracker.ietf.org/doc/html/rfc8446
OpenSSL — project websitehttps://www.openssl.org/

Experimente sgcIndy

Baixe a edição Community gratuita e adicione os binários compilados ao seu projeto existente baseado em Indy.