Home     Products      Support      Corporate     Sign In 

ASP AllianceFileUp Enterprise

SoftArtisans FileUpEE V4:
The Best of the Best

By Justin Thomas
April 3, 2003

With file transfers becoming increasingly sensitive and critical it has become crucial to handle the movement of data with extreme precision.

With its unprecedented server-to-server technology, SoftArtisans FileUp Enterprise Edition (FileUpEE) is my knight in shining armor. This product is not for your day-to-day image uploads - although it could be used for such - it has been built to handle documents that need to be pushed to your file server and allow a user to securely upload gigabytes of data. But don't be quick to shy away, SoftArtisans also makes a standard version of FileUp to handle those everyday small uploads that are not as critical.

Uploading files from a browser has come along way since its inception, and in my opinion, still does need some work on the browser end. Thankfully there are companies, like SoftArtisans, that help us overcome the limitations in our browsers. In FileUpEE, SoftArtisans has, indeed, created an upload product that has surpassed, by far, any other upload components on the market today.

Installation

For this review, I put together a system that I thought would be very reasonable to most of our readers and admittedly a little too much for some.

A four Web server cluster was used in conjunction with a single file server. Each Web server was composed of dual 1.4 GHz P3 processors with one gigabyte of RAM running on Windows 2000 Advanced Server. The file server was composed of the same except the operating system was Windows 2000 Server.

The download and install were pretty standard...actually the process was simple and very straightforward. There is a nice and precise setup that comes with FileUpEE; all you need to do is specify whether you are installing it on the Web server or file server. (If installing in a clustered environment, FileUpEE has to be on each member in your farm.) You also have the option to set this up manually, which I didn't. The documentation explains very clearly how this is done.

I had no issues when installing this product - uneventful, I know, but this is good.

Easy to Use and Configure

Configuration is very straightforward and all of the set-up information can be found in the well-written documentation. The resume method requires an Access database on the Web server and the file server (SoftArtisans also provides a script to create the required database in SQL Server). You can easily supply the connection string in your code or create two .udl (Universal Data Link) files, one each on the Web server and one on the file server.

IUSR_MACHINENAME will, of course, need Read, Write and Modify permissions set on the temporary directory and any other directories you wish to upload to. If you have ever created an upload application you know that this is standard.

We briefly just talked about a temporary directory. When a file is uploaded to the server it is first cached into a temporary directory that is usually specified (by default) with the system environment variable TEMP. When a file is uploaded to your server this process is also true. With FileUpEE, you can change the location for your temporary uploads by setting the TempStorageLocation(server) to the directory you wish the files to be cached to. However, if you wish, you can also set UseMemory to true to skip this process and cache the files in memory rather than to your hard drive (this is fine for small files).

I would like to point out that for the highest possible security, a request could be streamed through the Web server so that the complete file contents are never on the Web server - neither on disk nor in memory. As a chunk is read from the client, it is written to the file server. However, there is a drawback to this approach because the Web server code cannot get any information about the request. The request is forwarded "as is" to the file server and all logic must be on the file server.

Getting Started

Having it installed and configured, I jumped right into the samples and started making myself useful. With FileUpEE, at this point, just looking like a pumped-up version of FileUp Standard Edition, I skipped right past the basics and jumped into the 3-tier uploads and the progress indicator. First thing I wanted to do was create a progress bar-showing the progress of an upload. In my opinion, this feature is just fantastic. After reading the documentation and browsing through their samples, I had a 3-tier (client > Web server > file server) upload with a progress bar, that watches both the client-to-Web server and the Web server-to-file server uploads, completed in under an hour. This is very impressive.

Uploading to a database was just as easy. With easy-to-set properties, sending my file to SQL Server has never been easier.

So, all-in-all, uploading was quick and easy - virtually automated. Not much extra work had to be done on the file server to handle a 3-tier upload -just a small, simple script to process the request coming in.

In addition to all the basic properties and methods any traditional file upload component can do, FileUpEE comes with a wealth of even more sophisticated routines that will tailor to your specific guidelines. Below are just a select few that stand out to me.

Log file transfers to a database. Built-in logging provides great information on what users are uploading, as well as any errors that might have occurred that you were not notified about.

Adjustable Timeouts. Modems, with poor connection speed, are still widely used throughout the world. Therefore, the large uploads over these modems will eventually timeout. If FileUpEE's DynamicAdjustScriptTimeout property is set to True, the IIS ScriptTimeout value will increase automatically, as long as new data is coming in from the browser. A very nice touch!

Backwards Compatibility. If you currently use FileUp Standard Edition and do not wish to re-write your existing code, but would like to send your data over to a file server, setting FileUpCompat to True will let you re-use your code on your file server. However there is no support for this in ASP.NET and both FileUpEE and FileUp Standard Edition cannot run side-by-side on the same machine.

Validating data for corruption. When a file is transferred from one server to another it can get corrupted. You can set the UseChecksum and use the ValidateChecksums method to ensure data integrity, which is a critical need when uploading any form of data. For this, FileUpEE uses MD5 (Message Digest 5) hashing - think of this as a fingerprint. Each person has a unique set of fingerprints that can be used as identification. Files are, in a sense, the same way. MD5 hashing will extract this unique fingerprint and if the file has changed the checksum it will have also changed.

While there is still an abundance of optional configurations you can use, so far FileUpEE has exceeded my expectations. But we are not done yet.

Putting FileUpEE to the Test

I wanted to find out just how well FileUpEE could hold up to a serious beating so I cloned a real-world scenario.

My test was simple, but demanding. I wanted to push FileUpEE for 48 hours, uploading multiple files in different formats and all shapes and sizes. So I created a simple process that simulated opening a browser using different logins and uploading files out of a specified directory. These files ranged from simple 2-byte text files to large 100 mb zip files.

Each upload was different. Some 'users' would upload only one small Word document and others would upload multiple files in a broad range of formats. Each time it hit the file server a process would record each file(s) integrity to my SQL Server database by using ValidateChecksums found in FileUpEE.

How did it hold up? In a 48-hour time period approximately 1,072 files were uploaded. Server and memory performance were peaking at times, but not more than an average day of hitting the servers. The test had shown that only one file was corrupt, a zip file in fact. And with further examination I found out that this was not due to FileUpEE, but instead it was due to the Zip component that I was using to zip up the files before being sent out.

This test was a definite success. Let's look at peak uploads that had occurred within this test. Below you will find the different types of files and amount of files uploaded during the test.

File Type Total
All 1,072
Archives 349
Text 103
Image 440
Native Image 21
Executable 61
Office 98

Number of files uploaded at a given time: 57
So on average, 22 files were uploaded every hour for 48 hours.

Archives. An archive file can be different forms of compressed data. I used two types of archived files: RAR and ZIP files.

Text. In this test, "text" meant a standard .txt file and .rtf (Rich Text Format), along with html and xml.

Image. Gif, jpeg and png images were used in this test.

Native Image. A native image format like Adobe Photoshop's PSD, Adobe Illustrator, Macromedia Flash and Freehand files were also used.

Executable. No one wants to upload executable files, but in some cases you must. The types of files were script and .exe application code.

Office. Word (.doc), PowerPoint (.ppt), and Excel (.xls) files were uploaded.

Security

When examining this product I found no major security issues that I would be concerned about. In fact, if you like, you can set (for ASP.NET) an impersonation setting in your. config file, which will execute using the IUSR_MACHINENAME or the user you specify. I found this feature to be very exhilarating. Although I am one to worry a tad too much about my Web servers' security this little setting helps me cope with my worries.

Since your file server is "hidden" from the public, file transfers over to the file server are secure and, by default, are usually sent as an attachment to a SOAP (Simple Object Access Protocol) request envelope. This is very different than conventional methods of getting documents over to your file server, specifically FTP. FileUpEE, in my opinion, can and will be a direct replacement for FTP.

Why have we used FTP in the past? The answer is simple; a user can upload multiple files with the click of a button. Large files can be handled with ease and you can resume transfers that were lost. The list can go on. FileUpEE can do all of this and more. Imagine not having to setup accounts for users to login in with FTP, monitoring it, configuring permissions (which we all know can be very time consuming) not to mention the maintenance of it all.

FileUpEE also supports SSL (HTTPS) data encryption.

Fact or Fiction?

Can FileUpEE really handle over 100 gigabytes of data? Well...I don't know for sure, but I would not doubt for one second that it couldn't.

Backing up local machines can be a pain-staking process some of us would not like to do. With FileUpEE, I could write an application that lets users on our intranet send very large presentation documents, documentation, image libraries and more to our file server without any intervention. I could also create a spider to go around and zip up their important documents and upload them onto the servers.

Lots of Goodies

While FileUpEE has, at this point, been another excellent product by SoftArtisans, I am going to add a little more frosting to the cake. Included in FileUpEE are XFile and JFile, two SoftArtisans client-side products you can use to add rich-client uploading to your application.

XFile is an ActiveX control that enables us to add enhanced uploading features not available from traditional server-side coding methods. This control has a number of features such as:

Drag-and-Drop. While you can just as easily select multiple files to upload, you can also drag files over from Windows Explorer on to the control to upload.

Progress Indicator. Comes with a real-time progress indicator that shows upload speed, overall upload status and single file upload status.

Unicode Compliant. Support is available for non-English file names. This is a very nice feature when your company needs to upload files from multiple locations in different countries where the language is not always English.

XFile also comes with two more "bonus" tools: SoftArtisans FileManager and SoftArtisans Archive.

When using XFile, I did notice that the "estimated" time was indeed off. I realize it is estimated, but I think it could be improved. Considering the fact when I used the XFile sample I was on the local network and was transferring about 3300kb a second it said a 15mb file would take 8 minutes and 37 seconds when it actually took only about 4 seconds. The time sounds about right if I were on a standard DSL or cable connection over the Internet, but I was on a direct line.

JFile is another client-side control, but instead of being an ActiveX Control, it is a Java Applet. Any Java-enabled browser can use JFile. While it supports most of the same features as XFile, JFile does not support drag-and-drop. It is fully scriptable through client-side JavaScript.

While this review is not intended to focus on these two products, I recommend you visit http://fileup.softartisans.com and check out all the neat features their products have to offer. As you can see, FileUpEE has more than enough to handle virtually any part of your file transfer needs within your application.

Downloading

FileUpEE does support 2 and 3-tier file downloads. The 2-tier download is very basic, and although it is good to have, it is not anything I can see being used. However, the 3-tier (file server - Web server - client) download is great, lacking only the feature of downloading multiple files, which would be a great addition in future versions.

The Servers Used

5 Dell PowerEdge 1650 1U's
Dual 1.4 GHz P3 Processors
One Gigabyte of RAM

Windows 2000 (Advanced) Server

Conclusion

Overall, each product bundled with the purchase of FileUpEE was very easy to understand and I was able to start integrating them into new applications right away. If you have already used SoftArtisans FileUp Standard Edition or any other upload component, then you will find FileUpEE to be very straightforward and you too can start using it with minimal effort.

Documentation of the product is very clean and easy to understand. I had no problems getting any of the samples to run and I thought the samples did an excellent job demonstrating the product's capabilities without overwhelming me with complexity or, better yet, insulting my intelligence like documentation can do some times. The documentation is very good, with either HTML documentation or .chm (Compiled Help Manual) reference to FileUpEE and its other components like the XFile and JFile. Once you purchase FileUpEE you will get an email with a user name and password that you can use to login to SoftArtisans Web site and download the product. The download size is only 17.1mb. This, in my opinion, is not bad at all. For an extra $20 (US) or $30 (Outside the US) you can have it shipped to you on a disk. For pricing and licensing options you will need to contact the sales department at SoftArtisans.

So to wrap up in a nutshell, SoftArtisans FileUpEE is the best-of-the-best when it comes to file uploading.

About the Author

Justin Thomas is an Applications Developer for ZAAZ, Inc. residing in Seattle, Washington. He has over eight years of experience in a vast array of programming languages and technologies. You can email Justin at justint@zaaz.com.



Copyright 2006 © SoftArtisans, Inc. All Rights Reserved.

Site Map     |     Privacy Policy     |     Contact Us