Yes, we had them. And many other frustrations at first as well. I had all of the same thoughts and experiences that you have just expressed. Maybe even a little more exaggerated . However, the alternatives require run-time licenses for every machine that will run a license of your product. Atalasoft has run-time royalty free licenses. This prompted be to stick with them.
Their samples are actually very poor which initially made me think less of the product because I was afraid the product was written like the samples. But I think that the internal code is better than their samples....though I cannot say this with an certainty since they do not give you the source code...another problem I had with them.
I will say that they have been willing to work with me to work through the issues and we still have some work to do to get to the finish line, but all being said, this was fully managed .NET code and has royalty-free run-time. I spent less time working around the problems I ran into versus writing this myself. Also, I think that they will have the memory leaks resolved in the latest build (now available for download). After all of this, I still think they are the best option for the money to purchase. Using ImageXPress, Pegasus, or Accusoft will ultimately be a very expensive (and not totally comaptible) solution.
Now, in SQL, I was wondering which way to choose, and it's nice to know that stuffing them into the database will be faster. I guess that giving the option to choose would be the best way, as it is probably not a major problem to extract them from the tables if necessary to save them in a folder, with this serialization thing.
Thanks Keith and Ben.
As for storing images in SQL Server, we allow our users to store them both in SQL Server and on disk (because some users would go over the 4GB limit on SQL Server Express database size). The performance of reading the images in from SQL Server is far superior to that of storing them on disk. Pulling an image from a TDS stream is just faster than opening it from a file handle on a network share.
Hope this helps