Jump to content
msd

Chilkat Delphi DLL API - Experiences

Recommended Posts

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 by msd

Share this post


Link to post

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.

  • Thanks 1

Share this post


Link to post

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

  • Like 1
  • Thanks 2

Share this post


Link to post

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.

  • Thanks 1

Share this post


Link to post

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.

  • Like 1
  • Thanks 1

Share this post


Link to post

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

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

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 by Edwin Yip

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×