Considerando o exemplo do rodrigo_corinthians, “prigunto”:
A classe pessoa seria um DTO ? Caso sim, é interessante manter ela assim nesse tipo de arquitetura ou não teria problemas ao implementar regras de negócio nela (penso que o tráfego de dados vai crescer de acordo com o tanto de regras implementadas na classe) ?
A classe pessoa poderia/deveria conter validações que influenciassem a GUI (algo como “ao gravar, verifica campos obrigatórios”) ? Se não, esse tipo de validação é implementado na própria GUI ou delegada a outra classe ?
Ao enviar uma requisição para o servidor solicitando uma lista de Pessoas dentro de determinada condição, a própria classe pessoa conteria um método para retornar essa lista (algo como Pessoal.getListByCond()) ou teriamos outra classe para retornar essa lista (apresentação em um JTable) ?
Considerando que a gui swing é o View e lá no servidor terei meus DAO’s ou Hibernate fazendo as vezes de Model quem seria o Controller ? O Servlet ? Se não, qual o papel do servlet nessa brincadeira ?
O exemplo serializa a classe Pessoa e a envia. Serializar é cômodo mas nem sempre é a melhor solução. Pode ser que na classe Pessoa existam campos ou métodos que não precisam passear até o servidor. Um dos modos de fazer isto seria passar para XML apenas os campos que devem ir ao servidor e lá tratá-los. A vantagem de usar XML é a facilidade de depurar as mensagens. Mas dependendo do caso, uma string CSV é bem mais ágil. A volta do servidor não tem nada a ver com JTable ou outra coisa qualquer particular da View. Aliás, nem precisa vir completa pois pode vir em pedaços do tamanho que se consegue lidar.
A validação é feita na GUI para evitar enviar coisas erradas a toa porém é repetida no servidor para evitar problemas de mensagens que possam chegar sem passar pela View.
Nada de regras de negócio por aqui. Só regras de validação da digitação e não obrigatoriamente dentro da classe Pessoa, principalmente se ela for enviada para o servidor serializada.
Quando me referi a volta do servidor e associei a um JTable, eu me referia a algo como: “Preciso consultar as pessoas cujos nomes começam com a letra A e exibir esse resultado em um JTable”.
Nesse caso eu utilizaria um CSV para identificar minha intenção e o servlet retornaria uma lista de pessoas. É nessa situação que eu fico na dúvida do que/como fazer.
[quote=khaoz]Quando me referi a volta do servidor e associei a um JTable, eu me referia a algo como: “Preciso consultar as pessoas cujos nomes começam com a letra A e exibir esse resultado em um JTable”.
Nesse caso eu utilizaria um CSV para identificar minha intenção e o servlet retornaria uma lista de pessoas. É nessa situação que eu fico na dúvida do que/como fazer.[/quote]
No servidor as coisas são assim:
“Preciso consultar as pessoas cujos nomes começam com a letra A e devolver a lista para o cliente mostrar”
No cliente as coisas ficam:
"Tenho uma lista para mostrar e vou escolher o modo que me convém.
Os problemas a resolver são:
Escolher o formato e o protocolo de tráfego das mensagens. XML? CSV? classes serializadas? classes serializadas em XML? JSON? Usa SSL? Usa ZIP?
Classes para formatar e abrir o formato das mensagens trocadas. Aqui reflection é uma boa porque torna mais fácil adotar uma solução que atenda a todos os casos, mesmo os que ainda não existem.