Por que em algumas estruturas a camada lógica é chamada "Modelo", enquanto em algumas é chamada "Serviço". Eles são diferentes um do outro ou apenas diferentes por convenções de nomenclatura?
ATUALIZAÇÃO 1
A razão pela qual estou perguntando é que, no Zend Framework, um framework MVC clássico, todo mundo usa o conceito de Model. Agora estou aprendendo o AngularJS e parece que a palavra Modelo desapareceu e foi substituída pela palavra serviço.
O que notei é que um serviço é mais como um singleton que pode ser reutilizado repetidamente (exemplo: um cliente REST), enquanto um modelo está mais relacionado às manipulações de dados provenientes do controlador no padrão MVC.
Respostas:
Modelo: campos que pertencem ao objeto, métodos que ajudam a obter / definir dados do objeto (um acessador de nome completo que retorna nome + sobrenome)
Serviço: Métodos para executar operações com um ou mais modelos, consulte 'unidade de trabalho', transações, etc.
Employee :: create deve apenas pegar um conjunto de dados, executar a validação do modelo, se necessário, e retornar um objeto Employee.
EmployeeService :: HireEmployee pode criar o funcionário, enviar um email de boas-vindas, criar uma caixa de correio, torná-lo um sanduíche, etc ... pode retornar o conjunto de dados ou um código de resultado, etc.
Isso também pode afetar a validação:
Validação do modelo: o funcionário deve ter um ID, nome e sobrenome e data de nascimento
Validação de serviço: Os funcionários da posição de barman devem ter 21 anos ou mais e serem aprovados por um gerente.
fonte
De acordo com minha experiência, a camada Model no padrão de design do MVC refere-se a todos os componentes de software envolvidos na manipulação de dados (POJOs, DAO, até SQL, JDBC etc.).
Enquanto a camada de serviço é realmente uma adição ao MVC:
Sabemos que os componentes da camada Model são chamados dentro da camada Controller . Depois que o último é construído, você percebe que ele não parece conciso (bagunçado com código sujo); o Controlador pode não fornecer detalhes adicionais (por exemplo, formatação de parâmetros de solicitação antes de chamar um método DAO que os consumirá ...). Portanto, você pode incluir essa camada extra, a camada Serviço .
Eventualmente, você pode incluir seu código sujo dentro de métodos estáticos com um nome significativo, parâmetros e assim por diante, o que resultaria em uma camada sintética do Controlador.
Dê uma olhada neste link:
/programming/2762978/the-purpose-of-a-service-layer-and-asp-net-mvc-2
fonte
Estruturalmente, essas classes base são as mesmas, no entanto, são usadas para classificar preocupações diferentes das camadas Serviço e Modelo da implementação MVCS
Portanto, embora as classes base sejam iguais, as classes concretas criadas pela extensão dessas classes base têm dois propósitos totalmente diferentes.
fonte