Aplicação multi-usuário

Estou fazendo um software em java, no qual ele faz a recomenda objetos de aprendizado(textos, midias, etc…) entre os usuários.
Como conectar todos os usuários entre si? Uma vez que para fazer a recomendação é necessário que o programa tenha acesso a todos os usuários.

Acho que Socket resolve, mas teríamos que levantar o cenário completo para decidir,

A principio tenho uma classe aluno

public class Aluno { //ATRIBUTOS DA CLASSE ALUNO private String nome; private List<Obaa> objetosdeAprendizado = new ArrayList<Obaa>(); //LISTA DE OBJETOS ESCOLHIDOS PELO ALUNO private List<AlunoSimilar> alunoSimilar = new ArrayList<AlunoSimilar>();//LISTA DE AMIGOS SIMILARES . . . }

O aluno pesquisa em um banco de dados(MySQL) os objetos de aprendizado e assim vai montando a sua lista de objetos. Outros alunos da turma fazem a mesma coisa.
Depois o sistema calcula quais alunos sao similares, baseado em objetos de aprendizado semelhante. E depois recomenda objetos que ele nao teria, mas seus semelhantse tem.

Logo o acesso ao banco de dados com objetos de aprendizado, o calculo de alunos similares e a recomendação de objetos de aprendizado dos similares ao aluno poderia tudo ser feito por socket ou teria que ter web service?

Caso precise de mais uma parte do codigo ou mais especificaçãodo problema so falar, desde já obrigado pela ajuda!! []s

Não não…vamos devagar:
-> Comunicação entre as aplicações -> Usa Socket
-> Comunicação das aplicações com um banco de dados -> Usa JDBC
Web Services não estro na historia…

[quote=FernandoFranzini]Não não…vamos devagar:
-> Comunicação entre as aplicações -> Usa Socket
-> Comunicação das aplicações com um banco de dados -> Usa JDBC
Web Services não estro na historia…[/quote]

Desculpe a ansiedade Fernando, é que estou com a mente a mil.
Uso o JDBC para acessar o banco de dados e nessa parte nao tive problemas em fazer a conezão e as consultas.
O que ainda nao fiz foi a comunicação entre as aplicações , que no caso como vc disse pode ser feita por Socket.
Se for feita por socket significa que será tudo remotamente, os alunos pediram um metodo ao servidor o qual lhe entregará uma resposta. No meu caso uma lista de alunos Similares e uma lista de objetos de aprendizado atualizada.
Essa conexão entre as aplicações por intervenção de um servidor é melhor por socket ?
Seria possível usar web service ou não?
[]s

Não necessariamente. Vc pode:

  • Ter um servidor central e fazer todas as aplicações centralizar nele…e usar broascast por exemplo. Veja o complicador disso…pq vc não precisa implementar tudo caso seje algo complexo d+ para escrever…vc ja pode usar então RMI, JMS ou EJB dependendo do cenario.
  • Caso não tenha isso, vc pode fazer cada aplicação ser um mini servidor PER-TO-PER mesmo. Ou seja, um manda para outro de forma simples.
    Mas como eu falei…sem requisitos detalhados não tem como eu te ajudar a projetar algo…

Possível sim…desde que as aplicações a ser integradas sejem web para tratar HTTP…desktop já não vai dar.
A filosofia dos web services é a “integração de soluções de plataformas diferentes” que não é seu cenário!!!(até aqui vc não disse nada sobre…) …usar web services só traria mais complicações tecnologicas…

Bom, eu centralizaria o acesso ao banco de dados e o processamento de alunos semelhantes em um servidor. Eu usaria por exemplo, EJB’s em um servidor JEE, acessando os EJB’s via RMI. Seria semelhanete a uma aplicação Web, muda apenas o protocolo da camada de aplicação e a interface.

é uma possibilidade…desde que o requisitos justifique o cenário…caso contrário…seria a velho ditado java…“matar formigas com um canhão”

Bom, IMHO, este requisito é suficiente para optar por centralizar o processamento das informações de usuário. Talvez um sevidor JEE de fato seja uma bazuca de fato, mas ainda assim eu utilizaria RMI para acessar o servidor, pois criar um protocolo de aplicação e gerenciar conexões é o tipo de tarefa que fica complicada rapidamente.

classe dos Objetos de aprendizado:

public class Obaa { //ATRIBUTOS DA CLASSE // CARACTERÍSTICAS DO OBJETO String nome; String Descricao; String palavraChave; //BUSCA PELO OBJETO String localizacao; int nota; //NOTA DADA AO OBJETO PELO ALUNO . . .

Classe dos Alunos Similares:

public class AlunoSimilar { //ATRIBUTOS DA CLASSE Aluno alunoSim; double corr; //GRAU DE SIMILARIDADE ENTRE OS DOIS ALUNOS

Eu pensei no seguinte:
O aluno pesquisa em um banco de dados os objetos de aprendizado e seleciona aqueles que o agradam.
De tempos em tempos é pedido ao servidor para que calcule os alunos similares baseado nas notas dos objetos em comun que o aluno tenha com aqueles alunos da turma.
Assim feita essa requisição o servidor retorna a lista de alunos similares do aluno atualizada como a lista de objetos objetos de aprendizado tb.
Acho que um socket como vcs falaram deve ser o suficiente. Até por que deve ser mais simples fazer uma conexão com o servidor do que implementar web service.
Desde ja , obrigado pela ajuda.[]s