FileUp Enterprise
Industrial-Grade Uploading/Downloading
for Web Services
by Joe Mitchko
August 1, 2003
When we think of all of the various complexities that can
surface when implementing Web services at the enterprise
level, we often think of integration issues, transactional
integrity, security, and so on. We wouldn't necessarily rank
file transfers as one of the more difficult technological
hurdles. Just stick that big old file somewhere in the SOAP
message payload area and you should be fine - unless that
file happens to be several hundred megabytes or more in size
or contains sensitive client financial information.
Given that the Internet is a fickle and unreliable network
backbone to begin with, the formula changes a bit, and we must
rely on a more industrial-strength solution to do it right.
FileUp from SoftArtisans can help you overcome these issues
and more when it comes to adding file transfer capabilities
for your Web service and Web application needs.
Features
FileUp comes in three versions; standard, professional, and
enterprise. The differences between the versions are documented
on the SoftArtisans Web site, but it is important to note
that SOAP-based file transfer requests are only available
with the Enterprise edition. Since we are interested in the
Web service features, we will cover the Enterprise Edition
here.
Before we dive into the Web service- specific stuff, one important
feature common to all versions is the ability of FileUp to
overcome certain ASP.NET IIS limitations regarding document-processing
size. I recently ran into this problem on a financial services
Web service integration project where IIS could not reliably
process SOAP requests greater than 64K in size under load,
and that's considered small compared to having SOAP response
messages include large documents such as PDF files.
This is where FileUpEE comes in by providing a special ISAPI
filter designed to throttle large files through the server.
FileUpEE also provides support for the development of SOAP-based
Web services and has methods available for uploading and downloading
content and managing the file store (copy, rename, delete,
etc.).
In addition to basic file upload and download functionality,
FileUpEE does a number of other things to help guarantee that
a file gets there in one piece and intact. For instance, FileUpEE
includes an MD5 hashing algorithm that verifies the integrity
of the file. FileUpEE also allows you to continue or resume
an upload that was interrupted by a network or system failure
- by persisting or archiving the file transfer status to a
database. If the process is interrupted, you can design scripts
to pick the transfer up where it left off and guide it to completion.
This is a very important feature, especially for large files.
FileUpEE also allows you to monitor the progress of an upload
in number of bytes transferred by using the Progress object
included in the object model library.
Functional Overview
FileUpEE is designed to allow users on a browser application
to upload or download files from their hard drives to a separate
file server on the network. This process involves several
mechanisms. First, getting the file from the browser to the
Web server requires a browser that can implement "RFC 1867",
the standard for form-based file uploads.
Microsoft Internet Explorer 4.0 (or later) and Netscape Navigator/Communicator
4.5 (or later, Windows only) are compatible with the required
standards.
The second half of the upload process involves physically
transferring the file contents to a file server situated behind
the firewall (see Figure 1). FileUpEE uses SOAP for this transfer,
hence it falls into the Web service space. But there is more
to this than meets the eye. The product flexibility is such
that you can initiate SOAP-based file transfers from Web server
to file server across the Internet without involving the browser.
FileUpEE provides a rich set of object and method calls that
allow you to customize the transfer process.

Figure 1: SoftArtisans FileUpEE Transfer Flow
Support for .NET
FileUpEE .NET assembly objects are available for Visual Basic
and C# uploading scripts and take up the SoftArtisans.Net
namespace.
In order to perform uploads with .NET, you'll need to do some
additional configuration settings in your environment, such
as setting NTFS permissions on temporary and destination directories.
The documentation does a great job of guiding you through any
configuration settings that you may need to make, so you shouldn't
have much of a problem.
Web Browser Support
FileUpEE comes bundled with full licenses for two client-side
controls, XFile and JFile, which help support browsers that
are not fully compliant with the RFC 1867 file transfer standard.
Client-side controls can also be used to increase upload
performance.
XFile provides both visual and nonvisual ActiveX controls
for use in Internet Explorer Web pages or Visual Basic applications,
and supports SSL file transfers, handling of multiple files,
and other advanced features). JFile provides similar advanced
client-side features but comes packaged as a Java™ applet that
is fully scriptable using JavaScript.
Installation
FileUpEE is supported only on the Microsoft platform and requires
either Windows 2000 or Windows XP Professional, along with
Microsoft Internet Information Server (IIS) version 5.x.
Installation is fairly straightforward for both Web server
and file server modes of installation. After installation,
be prepared to make some additional configuration changes
depending on the type of server-side scripting you are implementing.
For instance, you may need to set permission settings on
the various file directory spaces, so make sure you are logged
in as an administrator. In cases where you may need to repeat
the system configuration and registration steps in your environment
and don't feel like reinstalling, the documentation provides
step-by-step directions on setting up your server.
Documentation and Support
FileUp comes with a good deal of on-line help information that
includes a number of coding samples to get you started. The
documentation also supplies a programmer's reference guide
with the API calls explained in detail. Anyone with VB-Script
experience should be able to put together server-side scripts
for file transfer ,and support for .NET means that the FileUp
object model can be referenced and integrated into .NET Web
services for SOAP-based server-to-server file transfers.
The online help comes in both a Windows help file and browser-based
help hosted on your local IIS server.
I found that the browser-based version froze up from time
to time, making it impossible to use. I must note that it isn't
the first time I've seen Windows Explorer take forever to render
HTML content served up from IIS located on the same machine.
It's not like the HTTP protocol has far to travel.
Conclusion
What is not readily supported by FileUpEE is certificate-based
Web service delivery of files over the Internet using SOAP
with attachments. The current SOAP-based file transfers seem
intended only to get you from outside the firewall (more
so in the DMZ zone) to a file server inside the firewall.
You can use the .NET-based API libraries to do Web server-
to-file server delivery of files through a SOAP-based delivery
mechanism, but I wouldn't venture outside the enterprise
without the necessary security mechanisms in place. FileUpEE
does allow you to "decouple" your file servers from your
Web servers so that access to a secured file server is allowed
only through FileUpEE SOAP traffic over HTTP.
In all, FileUpEE provides a rich set of features that allow
you to integrate large-size file download and upload operations
in a number of different application scenarios, including Web
service- based applications. The fact that FileUpEE is not
strictly a Web service based product, is actually more beneficial
for real-life integration of file upload and download operations
originating from the browser.
Company Info
SoftArtisans
1330 Beacon Street
Suite 400
Brookline, MA 02446
Tel: 1-877-SOFTART
Web: www.softartisans.com
E-mail: info@softartisans.com
Download information
http://support.softartisans.com/eval.aspx
Licensing Information
Server License:
http://fileup.softartisans.com/fileup-132.aspx
Testing Environment
OS: Windows-XP
Hardware: 1GHZ Athlon, 1G RAM
About the Author
Joe Mitchko is senior technical specialist for CSC Consulting
in New York and is product review editor and a contributing
writer for Web Services Journal. Email
the author. |