Em um MVC, os modelos devem usar bibliotecas ou as bibliotecas devem usar modelos?

5

Quando eu construo uma API RESTful, eu uso um padrão MVC. E para tornar os controllers mais finos e reutilizáveis com código fora da API (por exemplo, em tarefas do Cron), coloquei muito do meu código em serviços (comumente conhecidos como bibliotecas).

Meus roteadores delegam para controladores que então delegam para serviços, que usam modelos.

Eu estou querendo saber: faz sentido para os serviços usar modelos? Então

router > controller > services > models

Ou os modelos devem usar serviços? Então

router > controller > models > services
    
por Chad Johnson 09.11.2014 / 21:18
fonte

2 respostas

5

No padrão MVC, o eberything que não faz parte do Controlador ou da Visualização é considerado parte do lado do Modelo da tríade. Isso significa que, do ponto de vista do MVC, sua pergunta é discutível, porque os dois services e models fazem parte do lado do modelo MVC da tríade.

Como a maioria dos frameworks MVC fornece serviços de acesso a dados como parte de seu componente Model, que você pode querer usar ao acessar seu código fora da API, faz mais sentido colocar sua camada services entre os controller e models .

    
por 10.11.2014 / 11:46
fonte
1

Ajuda a fazer uma distinção entre:

  • Assistentes - código de suporte que não conhece seu modelo, por exemplo formatação de data.
  • Serviços - código de suporte que está ciente do seu modelo, por ex. fatura cartão de crédito, atualiza cadastro de usuário, envia e-mail do usuário

Não sei ao certo qual desses você entende por "biblioteca". De qualquer forma, seguindo sua terminologia, sugiro esta cadeia:

router > controller > services > models

A camada de serviço é opcional: para operações simples, o controlador pode chamar o modelo diretamente. E qualquer coisa pode chamar um ajudante.

Para refinar um pouco mais sua terminologia, você pode modularise o modelo .

    
por 27.11.2014 / 22:42
fonte