Forum Moderators: mack
1. It has a form, in which the user can select the file to be compressed on the local computer, and then click "Start Compress" button to upload the file to our server, and our server will try compress it. There are no limitations on the size of the file to be compressed.
2. During the compress process, there should be a progress bar indicating the progress of the whole compression process.
3. We have a Windows 32bit DLL and we want to use it to performs the actual compression in the background.
4. We don't want the server performance to be impacted greatly during the compression process.
5. After the compression is completed, a link is generated so that the customer can download the compressed file.
6. Currently we have a Linux web server hosting our website. And we need to integrate the compress form in the website.
Therefore, we are seeking for a good solution for our system:
1. Which script language should we use for such a system? Php, Asp, Jsp, Perl, or other languages?
2. Should we use two servers, one for foreground website hosting, and one for background compression?
3. It seems that we must use Windows server for the background compression, as we use a Windows 32bit DLL for the actual compression, is that true?
Thank all of you.
But you came here for technical advice.
The performance of SOME machine is going to be impacted "greatly" during the compression process. Most forms of compression are highly resource-intensive. Depending on the amount of user activity you expect, you may need a large "farm" of machines behind your web server to do the compression. You may also face substantial bandwidth fees, as any file somebody is likely to want to compress (unless for demo purposes, as speculated above) is going to be large.
I would urge you to benchmark the compression DLL and have a good understanding first of how much CPU time is going to be needed to compress typical files, and scale your hardware accordingly.
You won't necessarily need to use a Windows machine to do the actual compression. You can probably run the DLL under Wine on a Linux machine. (Either the web server itself or one or more "compression servers".) Wine is a set of Windows-compatible libraries and a binary-compatability layer that allows many Windows programs to be run under Linux.
For scripting, I'd use whatever you or your developer feel comfortable with for doing the web portion of the task. Since you want feedback during the process, that makes it a "Web 2.0" type of application, so look into languages that have good support for such. You'll almost certainly need some Javascript on the client side.
For back-end compression, it would make sense to develop a remote service that calls the DLL, and have the website make use of the remote service to complete requests. It doesn't sound like anything too fancy is needed here - perhaps nothing more than a socket connection with a simple proprietary protocol.