Krystalware
SlickUpload logo

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:

SlickUpload Architecture Diagram
  1. The client initiates the upload request
  2. IIS receives the request and forwards it to ASP.NET
  3. ASP.NET receives the request
  4. Before ASP.NET processes the request, SlickUpload intercepts it
  5. SlickUpload streams the request to a data store. SlickUpload supports two built-in data stores:
    • File System
    • SQL Server
  6. While SlickUpload is processing the request, the client can request and receive process updates
  7. SlickUpload completes processing the request
  8. 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.