Onde posso encontrar um bom exemplo de como implementar completamente o padrão MVC no Windows Forms?
Encontrei muitos tutoriais e exemplos de código em vários sites (por exemplo, The Code Project e .NetHeaven), mas muitos são mais representativos para o padrão do observador do que MVC. Como o aplicativo que desejo desenvolver é para um projeto escolar, estou relutante em usar estruturas como PureMVC ou MVC # .
Respostas:
Eu sou da opinião que os aplicativos são muito diferentes uns dos outros e nosso entendimento de como os aplicativos devem ser escritos ainda é muito limitado. Os aplicativos Windows Forms anteriores nos quais trabalhei eram muito diferentes uns dos outros. Algumas das diferenças de design que tenho visto são (incluindo a maioria das combinações):
Portanto, não acho que seja possível criar uma implementação de MVC (ou MVP) que sempre se encaixa bem.
Os melhores posts que vi realmente explicando MVC e por que um sistema MVC é construído da maneira que é, são a série "Build Your Own CAB" de Jeremy D Miller . Depois de trabalhar, você será capaz de entender muito melhor suas opções. O Guia de Smart Client da Microsoft (CAB / Microsoft Composite Application Block) também deve ser considerado. É um pouco complexo, mas pode funcionar bem para aplicativos que se encaixam bem.
Selecionando uma implementação MVC / MVP para um projeto Winforms fornece uma visão geral que vale a pena ler. Muitas pessoas gostam de PureMVC . Eu nunca usei, mas gostaria de examiná-lo na próxima vez que precisar de um framework MVC.
" Presenter First " é uma abordagem de desenvolvimento de software que combina as idéias do padrão de design Model View Presenter (MVP) e o desenvolvimento orientado a testes . Ele permite que você comece escrevendo testes no idioma do cliente. Por exemplo:
Não tenho experiência com o "Presenter First", mas vou tentar quando tiver oportunidade, pois parece muito promissor.
Outras questões do Stack Overflow que você pode querer ver estão aqui e aqui .
Se você está pensando em usar o WPF a qualquer momento, dê uma olhada no padrão Model-View ViewModel (MVVM) . Aqui está um vídeo muito bom que você deve dar uma olhada: Jason Dolinger em Model-View-ViewModel .
O padrão de design MVVM (Model View View Model) para Winforms oferece outra opção que pode facilitar a conversão para WPF, se necessário. Magical.Trevor é outro exemplo de MVVM para Windows Forms que também inclui ligação automática com base em nomes de propriedades.
Também pergunte a si mesmo por que está usando MVC.
Uma vez que seus objetivos são claros , fica mais fácil escolher uma implementação ou outra.
fonte
ATUALIZAÇÃO: além da minha resposta anterior abaixo, sugiro a leitura sobre a abordagem "Apresentador primeiro" (especialmente os artigos em PDF)
Eu recomendaria MVP (padrão PassiveView na verdade) em vez de MVC. Você realmente não precisa de nenhuma estrutura especial para isso, é apenas como você organiza seu código.
Uma abordagem (que geralmente uso) é dividir cada formulário de janela em três entidades:
Código de exemplo (um pseudocódigo simples, apenas para ilustração):
fonte
Você já olhou para PureMVC ? Descobri que ninguém pode concordar sobre como o MVC realmente se parece depois de começar a construir uma implementação específica.
Atualização: você pode construir seu próprio começando com algo mais simples, como MobileMVC . O código do Compact Framework deve compilar / executar OK no Windows. Como se trata de um trabalho escolar, sugiro que você realmente passe algum tempo aprendendo como o MVC realmente funciona.
fonte
Você pode querer dar uma olhada em Execução Diferencial .
Aqui está no SourceForge
IMO, é uma grande melhoria no MVC, embora ainda seja bastante incomum.
fonte
Um bom exemplo de implementação de MVC usando Windows Forms pode ser encontrado aqui . O código-fonte está incluído.
Ao ler, estudar e escrever o código para esta tarefa, você descobrirá que existem muitas divergências sobre como o MVC deve ser implementado. Este é um caso simples que reflete a separação de interesses, bem como um bom exemplo do 'encanamento' necessário para conectá-lo.
Quando você estiver fora da escola, provavelmente vai querer recorrer a uma estrutura como os outros pôsteres recomendaram.
fonte
O bloco Microsoft Composite Interface Application começou sua vida como uma implementação MVC (entre outros padrões que implementou). A versão de lançamento, no entanto, evoluiu para uma implementação MVP, que pode ser considerada um tipo de interpretação diferente do conceito MVC.
Se você deseja verificar o código de uma implementação de MVP muito completa (e de alguma forma complexa), pode encontrar o MS-CAB como um dos componentes do Microsoft Smart Client Software Factory. Ele vem com o código-fonte. Você pode encontrar aqui . Boa sorte!
fonte