Dois projetos MVC (API e Web), o ViewModel deve estar em uma biblioteca comum ou em cada projeto?

5

Estou criando uma solução .NET MVC que terá dois projetos da Web, um para API e para Web. Alguns modelos, como o cliente, serão os mesmos entre os dois projetos.

É melhor mantê-los em uma biblioteca da Web comum e referenciados nos dois projetos da Web ou mantê-los exclusivos para cada projeto?

    
por RJP 06.07.2016 / 06:58
fonte

1 resposta

4

É tentador eliminar impiedosamente a duplicação em nossos sistemas, e por boas razões, mas sempre devemos nos perguntar se isso é duplicação real ou aparente .

O que quero dizer é que às vezes temos código que parece idêntico, mas cada um terá seu próprio motivo para mudar, independentemente um do outro. Se você acha que o modelo de visualização do aplicativo sempre mudará em conjunto com o modelo de visualização da API, eles deverão compartilhar os mesmos modelos de visualização. No entanto, você provavelmente descobrirá que o modelo de visualização do seu aplicativo precisa de uma propriedade da qual a API não precise, devido à necessidade de algum elemento efêmero da interface do usuário (por exemplo, uma lista suspensa que contém dados de alguns recursos externos). sistema você estará "emprestando" em seu aplicativo).

Eu vejo o aplicativo e a API como dois front ends diferentes para os mesmos modelos de negócios. Eles devem absolutamente compartilhar os mesmos modelos de negócios (lógica / dtos), mas o compartilhamento de modelos de exibição é, na melhor das hipóteses, um IMO. Se as coisas forem idênticas agora, você poderá compartilhar o código e, em seguida, herdar de suas classes compartilhadas posteriormente, se passar por uma situação em que precise estender os modelos base. Talvez o melhor dos dois mundos.

    
por 06.07.2016 / 12:31
fonte