Eu li a entrada do blog de Matt Wynne que você vinculou, e eu posso ver de onde vem a confusão. Então, vamos apontar algumas diferenças entre o artigo dele e a sua situação.
-
Sua pergunta foi feita em 21 de agosto de 2013. O artigo de Matt foi publicado em 13 de junho de 2007 .
-
Você marcou sua pergunta com c # e < href="/ questions / tagged / winforms" class="post-tag" title="mostrar questões marcadas com 'winforms'"> winforms , embora eu ache que você quis dizer wpf ao invés de winForms. Matt afirma que seu foco e experiência foi com o ASP.NET.
Quero salientar que já estamos em um conselho datado eb) diferentes tecnologias de interface do usuário.
O ASP.NET e o (s) padrão (s) MV*
que ele suporta mudaram significativamente desde então. Da mesma forma, os usuários do Silverlight e do WPF, desde então, geraram muitas orientações ao usar o padrão MVVM
e a vinculação de dados.
E como ponto de referência, eu recomendaria ler os artigos de Martin Fowler sobre Visão passiva e Supervising Controller quais são os padrões que ele criou em seu original Padrão MVP .
Eu acho que a sua pergunta é mais interessante quando se olha para o ponto de vista mais amplo e perguntando "o que o MV*
me ajuda em um framework?" E o principal motivador dessa família de padrões é encapsular as áreas que provavelmente mudarão. Relacionado a esse encapsulamento está o princípio da responsabilidade única e certificando-se de que cada componente possui o que deveria.
Nós encapsulamos toda a lógica de exibição na camada View
para que possamos alterar mais facilmente nossa tecnologia de interface do usuário em um momento apropriado no futuro. Da mesma forma, com o Model
e o que você escolher usar com a camada intermediária.
Portanto, a resposta à sua pergunta é colocar a lógica de visualização apropriada dentro dessa camada para que sua tecnologia funcione. Se você estiver usando winForms, você acabará com muito code-behind para fazer o formulário funcionar. O WPF suporta vinculação de dados e reduz significativamente a quantidade de code-behind. A lógica que você coloca no View
deve desaparecer quando você altera as tecnologias da interface do usuário.
Da mesma forma, se você tiver regras de apresentação que não sejam impostas pela tecnologia da interface do usuário, você as colocará na sua camada intermediária à medida que precisarem persistir na próxima interface do usuário.
Não pretendo diminuir o fato de que existem diferenças entre os padrões MV*
, e essas diferenças existem por um bom motivo. Mas seu desenvolvimento foi impulsionado pelas necessidades de tecnologias específicas. Você está usando uma tecnologia potencialmente diferente, portanto, use o padrão MV*
apropriado para seu ambiente. As estruturas estão aí para facilitar futuras mudanças, não algemar seu desenvolvimento atual.