Transfer Object
Transfer Object(Objecto de Transferência) é um padrão de pretende aumentar a granularidade de acesso e transferencia de dados entre camadas e/ou nodos.
Antigamente este padrão era chamado de Value Object, mas hoje em dia esse nome tem outro significado.
Um outro sinónimo para Transfer Object é Data Transfer Object mais conhecido como DTO.
O problema
Você está invocando um método que necessita um numero muito grande de parametros.
Uma situação pior é quando surge a necessidade de retornar uma grande quantidades de valores.
Poderiamos usar um array, mas essa não é uma solução eficaz já que normalmente os dados são de tipos diferentes.
Se o método for invocado remotamente o problema se agrava. Então não será apenas o fator relativo
a passar , ou receber, tantos parametros, mas o facto de que cada um será serializado individualmente.
A solução
A solução é muito simples e quase que empirica. Cria-se um objeto que agrupa os valores necessários.
O único “truque” é que esse objeto tem que implementar Serializable para que possa
ser utilizado remotamente.
Por exemplo em vez de
|
|
Código 1: |
criariamos um objeto pessoa e usariamos assim
|
|
Código 2: |
Implementação
A implementação, como vimos, é simples. Basta criar um objeto com os atributos necessários. Essa classe tem que ser Serializable se for usada remotamente.
O algoritmo de serialização pode ser alterado para criar otimizações. Por exemplo, se
tivermos que passar vários objetos de um mesmo tipo , poderiamos utilizar uma coleção.
Em particular podemos saber – conforme as regras do modelo – que essa coleção pode conter várias copias do
mesmo objeto. Ao serializar podemos gravar apenas uma copia e ao deserializar crias as outras com métodos de copia.
Um outro exemplo é utilizar uma serilização em formato Zip ou GZip se o objeto contêm muitos dados, particularmente se o objeto contêm muito texto.
Referências
[1] |
Sun Microsystems URL: |
Licença
Sérgio Taborda
Este trabalho é licenciado sob a
|
Parabens pelo pelo post!!!
Muito interessante porem gostaria de saber porque minimizar o trafico ?
Trafico de rede é uma operação de I/O. Toda a operação de I/O é sincrona. Ou seja, sempre que vc transfere byes vc o faz de forma que o seu sistema para completar esse trabalho. Mesmo com multiplas threads , a thread para enquanto o processo acontece. O seu sistema parado afeta a performance. Quanto mais eficiente o seu objeto é em termos de transferencia menos eles afeta a performance. Quanto mais “gordo” o seu objeto é m ais ele ocupa recursos de transferencia, e é isso que vc quer evitar. Em geral vc sempre deve minimizar operações de I/O para deixar seu sistema rápido.