A LeanServer criou, para o IIS 7.0, uma extensão chamada ScaleUp, com o intuito de resolver problemas relacionados ao upload de arquivos que assolam a plaforma web da Microsoft. De acordo com seus criadores, o ScaleUp melhora a velocidade de upload, realiza upload de arquivos de qualquer tamanho, possibilita milhares de uploads por servidor, disponibiliza relatórios sobre o progresso e streaming.
O ASP e o ASP.NET possuem um grande número de problemas relacionados a upload de arquivos. No começo, um não conseguia extrair o arquivo de uma mensagem POST a não ser que fosse escrito um código customizado que convertesse o post recuperando os dados do arquivo.O ASP.NET introduziu o controle FileUpload o qual melhorou o processo de upload sincronizando o carregamento da mensagem POST na memória, parseando os dados para extrair o arquivo, e consequentemente salvando ele no disco. Essa solução possui vários problemas, o mais perigoso é que ocorre muita fragmentação do disco o que leva a exceptions como OutOfMemory pois o arquivo inteiro vai para a memória antes e depois ser salvo no disco. O ASP.NET 2.0 melhorou isso incluindo a opção de buffer do disco salvando qualquer arquivo maior que 80KB diretamente no disco. Mesmo assim, existiam algumas limitações
- O tamanho máximo dos arquivos era 2GB (ASP.NET) ou 4GB (IIS).
- Apenas uma thread por upload.
- Buffer de disco possuia sérios impactos negativos sobre a performance.
- Os uploads não ofereciam streaming e não havia relatórios sobre o progresso.
O ScaleUp promete resolver todos esses problemas. As funcionalidades do framework são:
- Uploads cerca da 20x mais rápidos.
- Sem limite de tamanho para upoload
- Milhares de uploads simultâneos por servidor
- Funcionalidades como relatório do progesso, streaming e filtragem.
- Monitoramento dos processos de upload entre servidores
Mike Volodarsky, atual CTO da LeanServer, explicou como o ScaleUp funciona:
O segredo atrás do ScaleUP é que ele usa a camada nativa de extensão do IIS 7.0 substituindo completamente a plataforma de upload por uma de alta performance. Isso elimina a limitação de tamanho dos uploads.
A engine é totalmente assíncrona para ler dados da internet, para converter multipart/form-data uploads, para fazer streaming, e guardar em disco. Internamente, nós utilizamos tecnologias avanças de performance do Windows, como o unbuffed de IO assíncrono, gerenciamento avançado de cache e muitas outras coisas que o IIS 7.0 nos oferecia, tudo para melhor o troughput do upload e reduzir o uso do disco no servidor.
Atualmente, o ScaleUp é utilizado pelo MySpace para gerenciar 25 milhões de uploads por dia, eles disseram que reduziram o número de servidores após instalar a extensão do IIS. O ScaleUp pode ser usado com aplicações ASP, ASP.NET e PHP, e pode ser inserido em uma aplicação existente sem a necessidade de fazer qualquer modificação.