Forma mais eficaz de transmitir Diferença entre arrays

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

Forma mais eficaz de transmitir Diferença entre arrays

Mensagempor pescadorDigital » Segunda Set 12, 2005 12:53

Estou a fazer um projecto e preciso de transmitir um array de inteiros através de SOAP (Web Services). Acontece que posso vir a precisar de transmitir array's enormes (mais de 100 posições) e precisava de conhecer uma forma reduzida de enviar esses array's através da rede. O servidor de Web Services envia um array para um cliente, este é processado, e o cliente envia-o de volta para o servidor, que actualiza então o seu array com o que o cliente lhe enviou.

Uma das ideias que tinha, mas é claramente ineficaz, era o seguinte:

Imaginem o array:
Código: Seleccionar todos
13;14;15;16;18;20

Depois de estar processado, o cliente chegava ficava este array, que precisava de ser transmitido:
Código: Seleccionar todos
15;20;21;12;18;20

Uma forma seria fazer a diferença, literalmente, posição a posição, entre os dois arrays (o 2º menos o 1º):
Código: Seleccionar todos
2;6;6;-4;0;0


Se bem que os array's são enviados como SOAP (que é XML, ou texto) na rede, ou seja, string's, e assim existe sempre alguma redução de informação (menos caracteres) em vez de estar a actualizar o array através das diferenças, não existirá uma forma mais eficaz de o fazer ?
Imagem
Avatar do Utilizador
pescadorDigital
Aprendiz
Aprendiz
 
Mensagens: 69
Registado: Terça Dez 28, 2004 22:23

Mensagempor dbbm » Terça Set 13, 2005 22:21

Não sei quais as limitações ou a frequencia que tens de trasmitir as arrays, mas arrays de 100 posições nem são assim tão grandes, considerando como ints é 400 bytes.

O facto de ser enviado como "texto" (arrays de 1 byte) so reduz a informação para números inferiores a 9999, pois a partir dai precisas de mais de 4 bytes de texto.

Quanto à redução de informação, não sei se estás a aproveitar o facto de cada byte representar na forma decimal 256 números, o que é muito util se os números forem menores que 256.

À parte disto, não me ocorre mais nada. Se a informação a transmitir for repetitiva, utiliza um algoritmo de compressão.
dbbm
Aprendiz
Aprendiz
 
Mensagens: 47
Registado: Quinta Mai 27, 2004 13:34

Mensagempor capricorn » Quarta Set 14, 2005 22:48

em principio penso que o soap trata da compressão dos dados, logo não te deves preocupar com isso. se mesmo assim te quiseres divertir, só consegues poupar se diminuires a dimensão do array
capricorn
Membro de Prata
Membro de Prata
 
Mensagens: 383
Registado: Sexta Ago 20, 2004 13:03
Localização: Porto


Voltar para Programação

Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 5 visitantes

cron