Projeto Post-me - Dicas de arquitetura

Oi galera!

Estou desenvolvendo com o Rafael Felix e o Leo Dutra um projeto que nos estamos chamando de Post-me (Link do topico).

Estavamos discutindo sobre a arquitetura e chegamos nesse modelo:
Esse é apenas o modelo. Nem pensamos em implementação quando definimos isso, apenas imaginamos um modelo que seria legal.
E isso, talvez, foi um erro. Agora não temos a menos ideia de como implementar isso.

Queria saber se vocês, desenvolvedores e arquitetos super experientes, acham esse modelo valido e algumas dicas de frameworks que poderiam ser utilizados.

Estamos pretendendo utilizar o VRaptor inicialmente.

Grato a todos!

Como desenho está bem bonito, mas não quer dizer nada basicamente.

O que seria “Pre-processing” ?

Se sua regra de negócio vai ficar no Model, ele não vai estar acessível via Mobile e Desktop ?

Seu front-end(WebUI) não terá segurança?

Está bem estranho seu diagrama a meu ver.

Quer uma sugestão de arquitetura que pode te guiar? Dá uma olhada nesses 2 slideshows:


Talvez seja um tiro de canhão pra matar uma formiga, mas acredito que possa, no mínimo, te situar melhor.

Espero ter ajudado.

Abs

Acho que faltou explicar um pouco o modelo.

A idea é desenvolver uma interface comum para os serviços que podem ser realizados com uma Nota (entidade “principal” do sistema). Pensei nisso pois acredito que em um futuro poderei adicionar novos “plugins” ao workflow.

A camada indicada por “Event listener and pre-processing” seria responsavel por dizer a qual/quais serviços a nota deveria ser enviada, de acordo com configurações as do usuario.

A camada de Web UI + MVC seria o portal web. Ele tera segurança (login) e esse será gerenciado pela API do google e como isso bem bem “facil” e simples de implementar, não achei que seria tão relevante indica-lo.

Na camada REST, eu indico uma camada de segurança pois não será possivel utilizar o serviço de usuarios do google. Ele não nos disponibiliza uma interface para enviar, por exemplo, usuario e senha. Por isso devera ser desenvolvido uma camada diferenciada de segurança que se integre com o Google.

Vou ler agora os artigos que me enviou.

Grato

Por ser um assunto de extremo interesse poderiamos aproveitar o tópico pra discutir sobre arquitetura?
Ando tendo bastante dúvidas quanto a algumas coisas com Facades e principalmente a organização do model.

Mas respondendo ao autor do tópico: eu também não entendi muito bem algumas coisas.
Imagino que aquela “camada” “event-listener e pre-processing” seja uma espécie de Facade, mas não tem o nome muito bem escolhido. Mas onde está o Model exatamente? Não tem responsabilidades demais pra alguém que deveria apenas interfacear camadas?
E por que a WebUI não tem uma camada de segurança?
Além das validações de segurança particulares de web não seria interessante isso estar embutida na model?
Entendi esse “MVC” como o Framework mvc que vão usar, correto? No caso, como citou o VRaptor. Mas esse cara não deveria servir apenas pra montar sua view e controler?
Lembrando que pra cada view temos uma controler, uma vez que são intimamente ligadas.

Caraca, preciso estudar um monte de arquitetura =(
Mais dicas ai pessoal? Livros? Links? (quero livros mais =( )
Abraços!

Tchello,

A camada “event-listener e pre-processing” seria a verdadeira porta de entrada das logicas do sistema. Poderia dizer que é a facade do sistema. O proposito dela é receber a mensagem e envia-la aos serviços de acordo com as configurações do usuario que a enviou.

Por exemplo, podemos ter usuarios que tem Uma conta no twitter configurada, então, essa camada enviaria a mensagem para o serviço do twitter e o servicó de persistencia.
Se tiver um usuario com twitter e wave configurados, a camada enviará a mensagem para o serviço do wave, twitter e persistencia.

A minha camada MVC serve apenas para receber as mensagens de uma interface WEB, valida-las, formata-las, etc e por fim enviar a camada “Event-listener”. Ela possuiu sim uma camada de segurança implementada pelo Google.

Por fim, poderia dizer que o “Model” esta distribuido entre os serviços da aplicação.

Só para comentar… Essa é a minha visão. Não sei se é a mais apropriada. Não tenho NENHUMA experiencia com arquitetura.

Aceito sugestões de outras maneiras para organizar isso ai.

Grato

Então a sua camada MVC é na verdade o Controller da sua aplicação Web, com suas sub camadas e delegação de responsabilidades particulares e condizentes a esse controler.

Há mais detalhes do Model? Ou ainda não foi projetado?
É que ta um pouco vago.

Como desconfiei.
O nome não foi um pouco mau escolhido? Pense nisso.

Bom, preciso estudar mais pra opiniar sobre a arquitetura, posso estar falando muita bobeira aqui =Z

Abraços!

Movido para um forum mais adequado ao tema.

Eu não vejo por que a interface web tenha que acessar lugares diferentes das interfaces mobile e desktop, a menos que estes dois últimos façam acesso via SMS/WAP ou ligando por telefone para a tua central.

Há mesmo a necessidade de separar os clientes?

Olhando assim a arquitetura, acho que uma modificada, quem sabe unicar a camada de Segurança com a camada web, podemos habilitar conexões dos outros clientes via HTTP.

Bruno,

Como assim necessidade de separar os clientes?

Eu fiz essa separação da camada WEB com os outros tipos de cliente por causa da autenticação.

Para fazer a autentcação no Google App Engine, para a camada WEB, solicito ao google que gere para mim uma url que solicitara que o usuario realize o login do google.

No caso de uma aplicação cliente mobile/desktop, não tem como eu direcionar o usuario para uma pagina de autenticação enão vou ter que bolar uma maneira de fazer um logon diferenciado para esse tipo de cliente para que esse se integre com os dados do usuario quando o mesmo realizou o logon pela interface WEB. Ja atenho algumas ideas de como fazer isso.

Tchello,

Como eu ja disse, você pode entender como o meu modelo de negocio os serviços aplicados abaixo da Facade. O principal desses é o serviço de persistencia que simplesmente vai gravar as Notas no banco de dados do Google.
Não existem lógicas complexas para esse projeto. A complexibilidade esta na arquitetura.

Volto a mencionar… caso alguem possa me dizer uma maneira melhor de modelar/implementar isso, serei muito grato.

Valew.

[quote=Felagund]Olhando assim a arquitetura, acho que uma modificada, quem sabe unicar a camada de Segurança com a camada web, podemos habilitar conexões dos outros clientes via HTTP.

Bruno,

Como assim necessidade de separar os clientes?[/quote]

Digo que todos os clientes poderiam utilizar as mesmas requisições e respostas JSON/XML sobre HTTP sobre TCP/IP.

O cliente Web usaria frameworks JavaScript para gerar e receber isso, mobile e desktop as tecnologias deles.