firebird 0 Denunciar post Postado Abril 21, 2009 Fala galera, tudo bom? sou novo tanto neste fórum quanto no mundo .NET, e estou com uma dúvida que vem me tirando as noites de sono....rs Digamos que eu tenha o Servidor A e o Servidor B... O usuário, quando acessa meu sistema, acessa a partir do Servidor B...mas, alguns arquivos anexos encontram-se armazenados no Servidor A, que tem conteúdo atualizado diariamente. Quando o usuário precisa baixar um arquivo do Servidor A, este arquivo é salvo temporariamente no Servidor B e um link de download é disponibilizado ao cliente. entretanto, (agora vem a bucha..rs) alguns arquivos são extremamente grandes, oq torna a rotina de salvar os arquivos no Servidor B impraticável. e, (outra bucha...rs) os servidores não estão na mesma rede, eu só consigo acessar os arquivos do Servidor A via HTTP, e este endereço HTTP não pode ser informado ao cliente. Pergunta: - Há alguma forma de, a medida que os dados vão sendo baixados do Servidor A para o Servidor B, os mesmo já sejam repassados ao Cliente como forma de streaming, evitando assim que eu salve o arquivo em disco e economizando tempo do usuário sem fazê-lo esperar pelo tempo de download do servidor? gente... mesmo tendo perguntado aqui, não parei minhas buscas pelo google... constatei que oq eu preciso é uma função semelhante a Response.TransmitFile(FilePath), mas que, ao invés de receber um caminho absoluto para o arquivo, recebe um endereço virtual. Algo parecido com: Response.TransmitFile("http://www.ServidorA.com.br/anexos/prestacaoDeServicos.pdf"); //Exemplo Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Abril 21, 2009 Acredito que mesmo que encontre uma forma provavelmente o caminho será aberto para o cliente. Não sei se conseguirá mascarar este caminho. Acredito eu este seja o maior problema. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Oenning 0 Denunciar post Postado Abril 21, 2009 Se a única maneira do ServidorB encontrar o ServidorA é por HTTP? Acho que você nao vai conseguir usando HTTP, já pensou em colocar em um FTP? Compartilhar este post Link para o post Compartilhar em outros sites
firebird 0 Denunciar post Postado Abril 22, 2009 eu não tenho domínio sobre o Servidor A...por isso não posso montar um FTP. pensei em uma solução que não acho tao bacana, mas funcionaria. seria, ao invés de uma página em ASP.NET, um aplicativo Desktop em C# (minha linguagem preferida, mas poderia ser em VB.NET, etc...), assim, eu conseguiria fazer esse trajeto sem ter que armazenar o arquivo no servidorB, retirando do servidorA e armazenando direto na máquina do cliente. entretanto, se houvesse uma forma de fazer em ASP.NET, eu preferiria. eu sei que se, pelo servidorB, eu iniciar o download do arquivo que se encontra no servidorA, eu consigo formar um stream, oq eu não sei se é viável e se funcionaria, seria jogar o stream pro cliente a medida que os dados são baixados. Ou seja, eu inicio o download, monto um buffer, entro em um loop e a medida que os dados são baixados, os mesmo são jogados ao cliente. Dessa forma, teoricamente, eu tenho no máximo o tamanho do buffer armazenado em servidor. mas, não sei se essa solução é viável, ou se funcionaria. Compartilhar este post Link para o post Compartilhar em outros sites