msd 5 Posted October 13, 2023 (edited) Hello friends, I found this library, named Chilkat Delphi DLL API (https://www.chilkatsoft.com/), and this library has a lot of classes and tools for SSH, SFTP, FTP2, HTTP, REST, socket/TLS, IMAP,... In demo mode, I try RS232, HTTP Server & Client, FTP Server & Client, TCP Sockets, Mail, Zip, Json, XML, Smartcard, Certificates, and Task (multythreading). I have a small distance from using DLL's in Delphi because of speed of development and I prefer full source code, but I have a few component sets that cover all of these functionalities, and I ask for advice from experts. Does anyone use this library set? Is there any performance comparison between DDL and native Delphi libraries? Is it thread-safe? Is it "smart" to replace a lot of components (maintained or not maintained anymore) with a library like the Chilkat Delphi DLL API? Thank you in advance to all of you for any advice and information... Edited October 13, 2023 by msd Share this post Link to post
aehimself 391 Posted October 13, 2023 I met that site a couple of times but it never managed to gain my trust for the exact reason you mentioned - a compiled DLL is an extremely unusual way to distribute your code and can do things in the background what you don’t want. “Don’t fix something which ain’t broke” applies here as well. Don’t purchase something and start to adapt all your code for it if they are working without issues. 1 Share this post Link to post
Fr0sT.Brutal 898 Posted October 13, 2023 Well, 3rd party DLLs are not scary - OpenSSL, DB clients, chromium, etc. Sometimes they distribute the product as DLL so that any language could use it, even brainfuck. However there are plenty of native Delphi network components, commercial or free. I wouldn't use DLL for this without a significant reason. And if I would it would likely be cURL 1 2 Share this post Link to post
MichaelT 6 Posted October 13, 2023 One of the major reasons to use components from Chilkat was SFTP and/or FTPS in contrary to Indy, a few years ago. Without a real good reasons, performance concerning floating point operations for example, I'm no big fan of deploying dynamic link libraries instead of static linking. What's missing Embarcadero has to provide and improvements too. Where does deploying this and that a different way lead? It does cause headaches even on a mid term in practice. Headaches go away with a Delphi only solution after while and then problems 'Wolpertinger' style deployments start. The whole story looks different if you want one homogenous component set serving different development technologies and/or programming languages. Even in this case homebrew, (bindings) provided by a community and/or out of the box come into play. Thinking of Java with the possibility to 'just plug-in' a different socket would be an alternative (early days of SSL). After a while what makes the difference today will be caught up by a certain kind of 'out of the box' way of doing things. 1 Share this post Link to post
Anders Melander 1705 Posted October 13, 2023 One of my current clients has been using ChilKat for FTP & SFTP for years and it seems to work fine. The first thing I did in order to work with it was write a set of wrapper classes that hide the ugly DLL API and abstract the FTP and SFTP differences away. I'd have preferred something with source code though, but AFAIK there's nothing for Delphi and the choice had already been made. 1 1 Share this post Link to post
pyscripter 612 Posted October 15, 2023 (edited) You may want to give pyscripter/Ssh-Pascal: Delphi ssh library wrapping libssh2 (github.com) a try. It is a wrapper around libssh2, includes scp, sftp, ssh support. Very fast. Edited October 15, 2023 by pyscripter 2 Share this post Link to post
pcoenen 1 Posted October 15, 2023 I have been using the DLL version from Chilkat for quite some years now. I learned a lot from their example website. The owner, Matt, is very helpful. Previously I was using different component sets which made it more difficult to mantain. Share this post Link to post
Fr0sT.Brutal 898 Posted October 16, 2023 Yeah, SFTP is PITA. Completely different protocol based on SSH so you must implement it from scratch. NodeJS has source-only implementations though (I mean, they do SSH level on the basis of built-in OpenSSL) so it's possible for Delphi as well but... nobody wants to do it. Especially considering Delphi can't embed OpenSSL (for free) so DLLs are in the game anyway and it's easier just to add libssh2. Share this post Link to post
Edwin Yip 154 Posted October 16, 2023 (edited) I asked a similar question on the Delphi facebook group some time ago, and the feedback were all positive. I think it only make sense to use the Chilkat DLL if you really can't find an alternative with source code. Edited October 16, 2023 by Edwin Yip Share this post Link to post
mazluta 0 Posted October 28, 2023 Hi, I use this DLL and it give good support and good documentation + examples Share this post Link to post