Estou desenvolvendo um aplicativo com o modelo MVVM, mas cheguei a um ponto em que preciso escolher qual estrutura usar.
Entre as opções possíveis estão:
- MVVM Toolkit
- Fundação MVVM
- Estrutura de aplicativos WPF (WAF)
- Light MVVM
- Caliburn
- Cinch
- Prisma
- ReactiveUI
Na sua experiência, qual é o melhor?
wpf
mvvm
frameworks
Rangel
fonte
fonte
Respostas:
Realmente depende do que você está tentando alcançar e da quantidade de infraestrutura que você já deseja instalar, além da facilidade com a qual você pode encontrar amostras que o ajudam. Vou declarar interesse aqui, porque estive ativamente envolvido em pelo menos uma estrutura MVVM e tive contribuições para outras pessoas através do grupo WPF Disciples, por isso sou um pouco tendenciosa. Dizendo isso, aqui vai:
Microsofts MVVM Toolkit - isso ainda está nos estágios alfa. Quando foi lançado originalmente, foi necessário um pouco de discórdia entre os discípulos por causa do que não fez. Dizendo isso, a MS está procurando reforçar esse quadro, por isso é preciso observar - ainda não está pronto.
Fundação MVVM - ah versão do framework de Josh Smith. Josh é um dos pais da MVVM e tem sido um grande defensor e professor do padrão. Como resultado, muito do que você encontrará em outras estruturas tem as impressões digitais de Josh por toda parte. Essa estrutura visa fornecer os conceitos básicos do MVVM, e não abordar alguns dos problemas mais esotéricos. Originalmente, isso era destinado apenas ao WPF, mas pessoas como Laurent Bugnion e eu adicionamos funcionalidades / projetos que significam que isso também será uma estrutura compatível com o Silverlight.
WAF - nenhuma experiência com isso, então não posso comentar sobre isso.
MVVM Light - a opinião de Laurent Bugnion e atualizada para a versão 2. Essa é uma estrutura muito boa, mas, novamente, não se destina a cobrir todos os aspectos dos aplicativos MVVM. Dado o histórico de Laurent, ele possui um forte suporte ao Silverlight e Blendability.
Atualização Laurent acabou de me informar que as versões .NET 3.5 e .NET 4.0 são compatíveis com os recursos. Como ir Laurent.
Cinch - excelente estrutura MVVM WPF do Sacha Barber. Isso cobre mais terreno do que as estruturas de que falei acima. É uma excelente estrutura e tira proveito dos conceitos abordados no excelente projeto Onyx de Bill Kempf . O Onyx destina-se a complementar as estruturas MVVM e adiciona funcionalidade que normalmente é difícil para as pessoas fazerem no MVVM / WPF. Novamente, originalmente destinado a ser apenas WPF, o Onyx progrediu para incluir a compatibilidade com o SL - trabalho no qual estou particularmente orgulhoso de ter participado.
Prisma - Mais uma vez, nunca o usei, mas ouvi muitas coisas boas sobre isso.
Ocean - Karl Shifflett, gerente de programas da equipe Cider, lançou recentemente uma estrutura MVPM do WPF com todos os recursos. Novamente, essa é uma excelente estrutura e tem muito a recomendar.
A conclusão é que, faça o download das diferentes estruturas, dê uma olhada nelas e determine qual delas se encaixa mais intuitivamente com a maneira como você pensa e com seus requisitos. Se você acha que talvez queira oferecer suporte ao Silverlight a partir da mesma base de código, as estruturas somente do WPF devem ser descontadas.
fonte
Achei este artigo muito útil http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/ Para que eu o traga aqui para usuários futuros
Atualizo a seção Cinch e adiciono suporte ao silverlight a seus recursos
Me desculpe pela longa história
Características comuns:
Cinch
MVVM Light Toolkit
Auxiliares do MVVM
Fundação MVVM
Caliburn
Ônix
Cálcio
nRoute
Nito MVVM
oceano
Estrutura básica do MVVM
Boa Luz
fonte
Tento descrever as estruturas ausentes na grande resposta de Pete:
O MVVM Toolkit (Microsoft) é uma biblioteca muito leve com modelos de projeto do Visual Studio que deve oferecer suporte a iniciantes com esse padrão. Se a Microsoft receber um bom feedback para o Toolkit, poderá implementá-lo como um novo modelo de projeto do Visual Studio (talvez 2010).
O Prism (Microsoft p & p) é uma estrutura que fornece mais do que o suporte ao padrão MVVM. O principal objetivo deste projeto é ajudá-lo a criaraplicativos modulares WPF e / ou Silverlight. Quando você só precisa implementar o padrão MVVM ou é iniciante no .NET / WPF, não recomendarei este projeto. Veja também: Link .
O WPF Application Framework (WAF) é uma estrutura leve que ajuda você a criar aplicativos WPF com o MVVM. É apenas para WPF e, portanto, não suporta o Silverlight. É um pouco diferente do que a maioria das outras estruturas MVVM com a introdução dos Controladores . Eles são responsáveis pelo fluxo de trabalho do aplicativo e mediam entre vários ViewModels.
fonte
Meh. O Mvvm não exige realmente uma estrutura inteira para suportar o IMO. Se você entendeu o conceito, é bastante simples começar com uma classe básica de VM limpa que implemente o INotify e seguir em frente.
fonte
Veja também:
Caliburn & Onyx !
fonte
Misture o seu!
Eu usei EventAggregator do PRISM, com ViewModelBase da MVVM Foundation e assim por diante. Também ajustei o RelayCommand (DelegateCommand chamado em alguns lugares) para aceitar outros dados também e assim por diante.
Eu não recomendaria apenas uma estrutura em si.
fonte
minha aposta será em Caliburn e MVVMlight, parece que muitas dessas estruturas mvvm suportam o silverlight. Posso prever que haverá mais estruturas MVVM para escolher do que as estruturas IoC, porque é mais difícil configurar o limite do recurso para a estrutura mvvm. Eu acho que a melhor maneira de descobrir qual é o mais adequado ao seu projeto será listando / comparando seus recursos.
Verifique também o Mix10. Aprendo muito com a palestra: construindo sua estrutura mvvm.
fonte
Também framework Cocktail e DevForce da Ideablade
fonte
Estou usando o Prism e gosto. Uma das grandes coisas para mim foi que haveria outras pessoas por aí que poderiam me ajudar se necessário e bons exemplos. Depois de executar o básico, existem várias extensões necessárias para o seu aplicativo e fica muito mais fácil quando você trabalha com a mesma estrutura que outras.
fonte
No geral, estou 90% com meu aplicativo e tudo o que usei do MVVM Toolkit é a função de fábrica que cria um comando para mim, com uma função delegada a ser iniciada no Execute. Eu acho que poderia mudar para qualquer outra estrutura ou nenhuma estrutura em algumas horas.
fonte
Outro ponto a considerar é o MEFedMVVM . Eu o usei em alguns projetos e é leve, não intrusivo e suporta Silverlight e WPF. Também é capaz de suportar dados em tempo de design no Blend, para aqueles que usam esse produto.
fonte
Se você está procurando Extensibilidade (a capacidade de escrever suplementos) sobre uma estrutura de aplicativo WPF / MVVM, pode estar interessado no aviso de isenção do SoapBox Core : eu escrevi . É de código aberto, portanto, mesmo que você não o use, pode haver algumas boas idéias para você. Ele usa o MEF para Extensibilidade e IoC.
fonte
Há também nRoute
Uma estrutura de aplicativo realmente boa para WPF / Silverlight que suporta MVVM
fonte