Overview
SlickUpload provides scalable ASP.NET upload handling with a rich progress and status information display.
SlickUpload intercepts upload requests before ASP.NET can process them, enabling it to stream the files
directly to the filesystem or a database with little overhead. For user feedback, SlickUpload provides information
that can be displayed to the user in real time using AJAX techniques.
Why use SlickUpload?
SlickUpload provides many advantages over the ASP.NET built-in upload functionality:
- Scalable uploading by streaming directly to disk or database rather than loading the entire upload in memory as
ASP.NET 1.x does
- Rich progress feedback to the user that allows them to see status in real time
- Highly customizable architecture that lets you hook in at any point to add business rules or logic
- Built for high-availablity and scalability from the ground up
- Supports web farm and web garden architectures for uploads and associated progress information
Server Architecture
At the core of SlickUpload is its HttpUploadModule. This is a .NET HttpModule that hooks into the ASP.NET request
processing pipeline to handle the upload before ASP.NET does. This enables SlickUpload to solve the scalability and
performance issues introduced by ASP.NET's processing model, as well as providing a rich progess display to
users while an upload is in process. After the SlickUpload HttpModule is installed, the request processing flow is
as follows:
- The client initiates the upload request
- IIS receives the request and forwards it to ASP.NET
- ASP.NET receives the request
- Before ASP.NET processes the request, SlickUpload intercepts it
- SlickUpload streams the request to a data store. SlickUpload supports two built-in data stores:
- While SlickUpload is processing the request, the client can request and receive process updates
- SlickUpload completes processing the request
- ASP.NET continues processing the request as normal, except for the upload data which was removed
Client Architecture
SlickUpload has a very flexible client architecture. You can harness the SlickUpload built in controls
like UploadManager, or build your own fully customized page with
upload controls and a progress display using javascript.
|