transmissão de arquivos: socket ou webservice?

4 respostas
A

Amigos, imaginando o seguinte cenário simplificado:
Necessidade de se manter uma comunicação segura entre cliente e servidor.
Muitos clientes e apenas um servidor.
Envio de arquivos texto do cliente para o servidor.

Qual o melhor a utilizar? socketSSL ou webservice?

4 Respostas

W

Utilizo socket para isso, mas utilizo um protocolo para enviar o arquivo em blocos e ainda em paralelo porque do lado servidor defino uma quantidade parametrizável de threads para receber o arquivo caso não tenha recebido.

Tambem consigo parametrizar o tamanho dos blocos porque conforme a rede tenho que enviar blocos maiores, em outras, blocos menores.

Como recebo arquivo que não pode ser perdido, utilizo checksum para conferir se realmente o recebi completo antes de enviar um comando para o host apagar a origem.

Se você trabalha com muitos arquivos grandes, utiliza a Internet e quer desempenho, o método mais rápido de todos é o UDP + protocolo proprietário capaz de conferir ao final quais foram os blocos não recebidos para então pedir os blocos e concluir a transferência. Esta forma é a mais rápida de todas e se você quiser segurança, pode criptografar o arquivo. Se sua informação não for ultra-secreta, nem precisa fazer isso, somente autentique a conexão para saber se o host é realmente conhecido.

A segunda opção mais rápida é fazer um protocolo proprietário utilizando socket.

O webservice é semelhante ao socket, mas acredito que você terá um desempenho menor porque já envolverá camadas WS e isso aumenta o overhead.

A aplicação de TLS ou SSL é uma forma de autenticar o host e blindar o túnel por onde os dados trafegarão, acho que é excelente aplicar isso no seu projeto, mas eu nunca passei dos testes nesta questão, só fiz testes mesmo porque esbarrei num problema de pouco tempo de projeto e não pude seguir nesta linha para criar uma fábrica de chaves, pré-autenticação do host que ainda não tem chave, distribuição de chave até conseguir estabelecer de uma vez uma conexão TLS ou SSL com o host. Isso requer um projeto secundário, porque você precisa ter dois serversockets no ar, uma para autenticar o host sem SSL ou TLS e então gerar as chaves, o outro serversocket já usa TLS e SSL para aceitar conexão de host com sua chave.

wiliamps

aix

andredf:
Amigos, imaginando o seguinte cenário simplificado:
Necessidade de se manter uma comunicação segura entre cliente e servidor.
Muitos clientes e apenas um servidor.
Envio de arquivos texto do cliente para o servidor.

Qual o melhor a utilizar? socketSSL ou webservice?

webservice acredito que não se encaixe no contexto pois a comunicação é xml e xml é muito extenso, acho que o mais indicado é usar rest ai você pode utilizar um algoritimo de criptografia ou zipar o conteúdo submetido pode configurar os tipos mime que o cliente vai enviar, etc…, abraços.

A

Amigos, eu também penso que o melhor nesse caso também é o socket.
A dúvida surgiu por que um profissional da área de TI, em uma conversa rápida (coisa de poucos minutos), sem entrar em detalhes, disse que deveria ser webservice. Ainda não tive tempo de questioná-lo por que da necessidade de uso do webservice.
Fiz alguns testes com socketSSL e, em princípio (se não houver nenhuma surpresa mais à frente), no meu caso parece ser um caminho simples e seguro.
Abraços.

maior_abandonado

o mais facil é fazer um webserviceZINHO que retorne um array byte[], mas fica mais lento.

o mais performático é fazer com socket mesmo, compactando o conteúdo (acho que dependendo do tipo desse conteúdo nem vai fazer muita diferença, não compensa perder tempo compactando), e se precisar de segurança autenticando (recomendo deixar essas duas partes configuráveis).

Criado 3 de fevereiro de 2013
Ultima resposta 4 de fev. de 2013
Respostas 4
Participantes 4