Para que posso usar a arquitetura HMVC?
Pergunta
A estrutura PHP que estou usando (Kohana) implementou recentemente a arquitetura HMVC. Eu li que é um MVC em camadas onde as solicitações são feitas umas sobre as outras. É um pouco como Ajax, apenas puramente do lado do servidor. Apliquei um pouco em alguns experimentos, mas não posso aplicá -lo a nenhum dos meus projetos (porque não consigo encontrar a necessidade). Você já usou o HMVC em um projeto antes? Como isso ajudou você?
Solução
É um pouco como Ajax, apenas puramente do lado do servidor.
Essa é uma boa analogia.
O HMVC é bom para adicionar widgets às páginas - bits modulares de conteúdo que você reutiliza em poucas páginas. Por exemplo, um widget de carrinho de compras. Você poderia fazer a mesma coisa de maneiras diferentes:
- Uma biblioteca. Estamos acostumados a mover código reutilizável de um controlador para uma biblioteca. Em seguida, no controlador, você pode carregar os resultados de uma chamada para essa biblioteca em uma variável de exibição.
- Uma vista. Você pode carregar uma visualização (parcial) de dentro da visualização principal. Essa visão parcial pode extrair conteúdo dos modelos. Chamar modelos de visualizações nem sempre é popular, mas não é necessariamente errado.
No entanto, o Kohana HMVC tem algumas vantagens:
- Consistência - As solicitações de HMVC são tratadas da mesma forma que as solicitações HTTP externas.
- As solicitações de potência - HMVC têm os mesmos recursos Kohana que as solicitações HTTP, incluindo rotas.
- Plugability - Quando chamado de uma visualização, uma solicitação HMVC não possui um acoplamento entre o controlador (que atribui os resultados da biblioteca a uma visualização) e um espaço reservado para visualizar. Você apenas toca em um arquivo em oposição a dois.
Estou começando a apreciar o caso do HMVC e a escalabilidade com solicitações HTTP, conforme vinculado pela Kiall. O mesmo poderia ser feito com Curl. No entanto, pode ser mais natural projetar com Kohana HMVC do que o Curl desde o início.
Outras dicas
Bem - Sam de Freyssinet (também conhecido como Samsoir), um dos desenvolvedores de Kohana, publicou recentemente um artigo que lida com essa pergunta.
http://techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/
Embora não seja o único uso para o HMVC - é um de seus usos mais populares. O artigo está preocupado principalmente com a escalabilidade (como em, número de solicitações por segundo), mas a escalabilidade do código (como em, quão fácil/difícil é o código a ser mantido) pode ser "resolvido" com as mesmas idéias ..
Espero que isto ajude :)
(Nota lateral - suas amostras de código são baseadas nas mudanças pessoais de Sam em Kohana - veja a nota no final do artigo)
Em um projeto simples, você pode nem encontrar um uso real para o padrão arquitetônico HMVC. E você nem deveria tentar. Aqui está o porquê:
O ponto principal na criação de uma arquitetura HMVC era tornar o MVC um pouco seco. Um dos principais benefícios do HMVC é a reutilização do código. Ele permite que você tenha fragmentos que se repetem em todo o seu aplicativo (às vezes no mesmo local, outras vezes - não).
Se você estiver escrevendo como pequeno aplicativo de teste, não haverá fragmentos repetíveis. Assim, não há necessidade de usar o potencial completo do HMVC. Você acabou de acabar com 1 nível de HMVC, que é o MVC padrão.
Aqui você pode ler a publicação original, que introduziu o HMVC. Em 2000.