Pergunta

Estou desenvolvendo um aplicativo com o modelo MVVM, mas já chegou a um ponto onde eu preciso escolher qual estrutura para uso.

Entre as opções possíveis são:

  • MVVM Toolkit
  • MVVM Foundation
  • WPF Application Framework (WAF)
  • Luz MVVM
  • Caliburn
  • Cinch
  • Prism

Em sua experiência, que é melhor?

Foi útil?

Solução

Ela realmente depende do que você está tentando alcançar, e quanto a infra-estrutura que você quer em lugar já, mais a facilidade com que você pode encontrar amostras que ajudá-lo. Vou declarar um interesse aqui, porque eu estive envolvido ativamente em pelo menos um quadro MVVM, e eu tive de entrada para os outros através do grupo WPF Disciples, por isso estou um pouco tendencioso. Dizendo isso, aqui vai:

MVVM Toolkit - isto é ainda muito nos estágios alfa. Quando foi originalmente lançado, demorou um pouco de agressões selvagens dos discípulos por causa do que ele não fez. Dizendo isso, MS está olhando para reforçar este quadro até então é um para assistir - não é apenas pronto ainda

.

MVVM Fundação - ah versão de Josh Smith do quadro. Josh é um dos papais de MVVM, e tem sido um grande defensor e professor do padrão. Como resultado, muito do que você vai encontrar em outros frameworks tem impressões digitais de Josh tudo sobre ele. Este quadro se destina a fornecer as noções básicas de MVVM, e não para resolver alguns dos problemas mais esotéricos. Originalmente este foi destinado apenas para WPF, mas pessoas como Laurent Bugnion e eu ter adicionado funcionalidade / projectos que significam este será um quadro compatível com Silverlight também.

WAF - nenhuma experiência dele, então eu não posso comentar sobre isso eu tenho medo.

MVVM Light - tomada de Laurent Bugnion sobre ele, e apenas atualizado para a versão 2. Este é um quadro muito bom, mas novamente ele não está destinado a cobrir todos os aspectos de aplicações MVVM. Dada fundo de Laurent, tem um apoio muito forte Silverlight e Blendability nele.

Atualização Laurent acaba de me informar que as versões .NET 3.5 e .NET 4.0 são recurso compatível. Wau para ir Laurent.

Cinch - excelente WPF de Sacha Barber único quadro MVVM. Isto cobre mais terreno do que os quadros que eu falei sobre acima. É uma excelente estrutura, e aproveita conceitos abordados em excelente Onyx projeto de Bill Kempf. Onyx visa complementar estruturas MVVM, e adiciona funcionalidade que é tipicamente sido difícil para as pessoas a fazer em MVVM / WPF. Mais uma vez, originalmente destinado a ser WPF somente, Onyx tem progredido para incluir compatibilidade SL -. Trabalhos Estou particularmente orgulhoso de ter sido envolvido em

Prism - Mais uma vez, eu nunca usei, mas eu ouvi um monte de coisas boas sobre ele.

Oceano - Karl Shifflett , Program Manager na equipe de cidra, lançou recentemente um quadro WPF MVVM inteiramente caracterizado. Mais uma vez, este é um excelente quadro e tem muito a recomendá-lo.

A linha inferior é, baixar os diferentes quadros dar uma olhada para eles e descobrir qual deles se encaixa mais intuitiva com a maneira de pensar e com os seus requisitos. Se você acha que você pode querer apoiar Silverlight a partir da mesma base de código, em seguida, os únicos WPF estruturas devem ser descontados.

Outras dicas

Eu encontrei este artigo muito útil http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/ Assim que eu trazê-lo aqui para os próximos usuários

Eu atualizar a seção Cinch e adicionar suporte Silverlight às suas características

Eu sinto muito pela longa história

Características comuns:

• classe ViewModelBase (para a implementação da interface INotifyPropertyChanged)

• RelayCommand como classe para comando de ligação UI para manipuladores de ViewModel

• Os testes de unidade vem com o quadro

Cinch

• Autor: Sacha Barber

• apoio Silverlight: não (Cinch versão 2 suporta Silverlight)

• Documentação: excelente, 6 artigos publicados sobre CodeProject

• Hospedagem: CodePlex

• Licença: Code Project Open License

• Características:

  1. comportamentos anexados

  2. validação usando IDataErrorInfo

  3. suporte para IEditableObject

  4. fraca criação de eventos e assinatura

  5. mediador de mensagens usando eventos fracos

  6. Suporte IOC / DI (usando Unity)

  7. serviços: registrador de eventos, caixa de mensagem, Open Save Dialog, pop-up

  8. rosqueamento ajudantes

  9. suporte para itens de menu

  10. closeable viewmodels

  11. gerador de código MVVM

MVVM Luz Toolkit

• Autor: Laurent Bugnion

• Silverlight apoio: sim

• Documentação: muitos artigos disponíveis no blog + outros desenvolvedores de Laurent bem

• Hospedagem: CodePlex

• Licença: licença MIT

• Características:

  1. MSI instalador

  2. projeto VS e modelo de item

  3. VS trechos de código

  4. sistema Messenger para comunicação inter-viewmodel

  5. Manipulação de eventos como comandos

MVVM Helpers

• Autor: Mark Smith

• apoio Silverlight: nenhum

• Documentação: alguns artigos sobre o blog de Mark

• Hospedagem: site pessoal

• Licença: não definido

• Características:

  1. comportamentos anexados

  2. criação viewmodel usando extensão de marcação

  3. atributos com base validação

  4. IOC / DI usando abordagem ServiceProvider

  5. closeable viewmodel

  6. cursor de espera (usando nova WaitCursor () {// seu código aqui})

MVVM Foundation

• Autor: Josh Smith

• apoio Silverlight: nenhum

• Documentação: artigos sobre a implementação Messenger em Josh ou Marlon Grech blog

• Hospedagem: CodePlex

• Licença: MS-PL

• Características:

  1. sistema Messenger para comunicação inter-viewmodel

  2. PropertyChanged monitor de eventos

Caliburn

• Autor: Rob Eisenberg

• Silverlight apoio: sim

• Documentação: completa documentação on-line disponível

• Hospedagem: CodePlex http://www.codeplex.com/caliburn

• Licença: licença MIT

• Características:

  1. comandos são construídos em cima de Ações e, portanto, compartilham muitas das mesmas características, incluindo vários parâmetros de entrada, filtros e execução assíncrona automática

  2. apresentadores que alças UI questão do ciclo de vida como a manipulação de ativação, deactivation e desligamento semântica para vários componentes de interface do usuário

  3. aplicações Caliburn são totalmente testáveis ??

  4. várias utilidades, como um gerenciador de tarefas de fundo

  5. suporta vários padrão de UI (não MVVM apenas)

  6. recipiente injecção dependência

Onyx

• Autor: William e Kempf

• apoio Silverlight: nenhum

• Documentação: introdução básica disponível no CodePlex

• Hospedagem: CodePlex

• Licença: não especificado

• Características:

  1. padrão ServiceLocator

  2. criação ViewModel usando uma extensão de marcação personalizada

  3. serviços relacionados UI como IDisplayMessage

Calcium

• Autor: Daniel Vaughan

• apoio Silverlight: nenhum

• Documentação: 2 artigos muito detalhado sobre CodeProject (parte1 e parte2)

• Hospedagem: CodePlex

• Licença: usar, copiar, modificar e / ou distribuir e manter o copyright

• Características:

  1. Module Manager para ativar ou desativar de módulos em tempo de execução

  2. serviços de mensagens para interagir com o usuário do cliente ou servidor usando a mesma API

  3. Serviço de Comando para ICommands WPF associados com interfaces de conteúdo que só se tornam ativas quando uma visão ativa ou implementos ViewModel a interface

  4. Região Adaptadores para Barras de Ferramentas e Menus

  5. logging cliente-servidor pronto para trabalhar out-of-the-box

  6. Inclui módulos, como um navegador da Web, editor de texto, janela de saída, e muitos mais

  7. interface com abas com indicação arquivo sujo (reutilizáveis ??em todos os módulos)

nRoute

• Autor: Rishi

• Silverlight apoio: sim

• Documentação: muitos artigos disponíveis no blog do autor (ver casa projeto página CodePlex para os links)

• Hospedagem: CodePlex

• Licença: MS-PL

• Características:

  1. apoio Blend3 comportamentos e modelos gatilhos

  2. quadro localizador de recursos

  3. serviços de visualização: OpenFileDialog, ShowMessage ...

  4. atributos usos para mapear View e ViewModel juntos

Nito MVVM

• Autor: Samá

• apoio Silverlight: nenhum

• Documentação: nenhum

• Hospedagem: CodePlex

• Licença: não especificado

• Características:

  1. vários MVVM implementações amigáveis ??da interface ICommand

Ocean

• Autor: Karl Shifflet

• apoio Silverlight: nenhum

• Documentação: artigos disponíveis no blog de Karl

• Hospedagem: site pessoal

• Licença: não especificado

• Características:

  1. escrito em VB.Net

  2. atributo base de validação

  3. classes base viewmodel: relaycommand, closeableviewmodel ...

  4. camada de acesso de dados do servidor SQL

quadro MVVM básico

• Autor: Lester Lobo

• apoio Silverlight: nenhum

• Documentação: aplicação de exemplo disponível com a biblioteca

• Hospedagem: CodePlex

• Licença: MS-PL

• Características:

  1. delegação Comandos \ Atalhos de Teclado

  2. Mensagens entre

  3. da VM
  4. manipulação de eventos como comandos com comportamentos anexados

  5. Manuseamento de diálogos (e mais) como serviços

  6. VS trechos de código

Goodlight

• Autor: Peter O'Hanlon • Silverlight apoio: sim

• Documentação: aplicação de exemplo disponível com a biblioteca

• Hospedagem: CodePlex

• Licença: MS-PL

• Características:

  1. gestão “espaço de trabalho” (conjunto de documento que pode ser fechado)

  2. apoio de pele

  3. Mensagens entre

  4. da VM

Eu tento descrever os quadros perdidos em grande resposta de Pete:

MVVM Toolkit (Microsoft) é uma biblioteca muito leve, com modelos de projeto do Visual Studio que devem apoiar iniciantes com este padrão. Se Microsoft recebe um bom feedback para o seu Toolkit, então eles podem implementar isso como um novo modelo de projeto Visual Studio (talvez 2010).

Prism (Microsoft p & p) é uma estrutura que fornece mais do que o suporte para o padrão MVVM. O principal objectivo deste projecto é ajudar a construir modulares aplicações WPF e / ou Silverlight. Quando você só precisa implementar o padrão MVVM ou você é um novato em .NET / WPF Eu não recomendo este projeto. Veja também:. Fazer a ligação

WPF Application Framework (WAF) é uma estrutura leve, que ajuda você a criar WPF aplicativos com MVVM. É apenas para WPF e por isso não suporta Silverlight. Ele vai um pouco uma outra maneira que a maioria das outras estruturas MVVM com a introdução de Controladores . Eles são responsáveis ??pelo fluxo de trabalho do aplicativo e que mediar entre vários ViewModels.

Meh. Mvvm realmente não exigem um quadro inteiro para apoiar IMO. Se você entender o conceito, é bastante simples para começar com uma limpeza baseclass VM que implementa iNotify, e apenas de lá ir.

Também olhar em:

Caliburn & Onyx !

Misture seus próprios!

Eu costumava EventAggregator de PRISM, com ViewModelBase de MVVM fundação e assim por diante. Eu também beliscou o RelayCommand (DelegateCommand chamado em alguns lugares) para aceitar outros dados também, e assim por diante.

Eu não recomendaria apenas um quadro por si.

minha aposta será no Caliburn e MVVMlight, parece que não muitas dessas estruturas MVVM apoiar o Silverlight. Eu posso prever que haverá mais estruturas MVVM para escolher do que os quadros IoC, porque é mais difícil de configurar o limite recurso ao quadro mvvm. Eu acho que a melhor maneira de descobrir qual é o melhor se adequar ao seu projeto será listando / comparando as suas características.

Também confira MIX10. I aprender muito com a conversa: a construção de seu quadro mvvm

.

Além disso Cocktail e um quadro DevForce por IdeaBlade

Eu estou usando Prism e como ele. Uma das grandes coisas para mim foi que haveria outras pessoas lá fora que poderia me ajudar se necessário e bons exemplos. Depois de conseguir o básico em execução, há todo um conjunto de extensões que você precisa para a sua aplicação e é apenas muito mais fácil quando você está trabalhando com a mesma estrutura que os outros.

Tudo em tudo, eu sou 90% através do meu aplicativo e tudo que eu usei de MVVM Toolkit é a função de fábrica que constrói um comando para me dada uma função de delegado para lançamento em Executar. Eu acho que eu poderia mudar para qualquer outro quadro ou nenhuma estrutura em um par de horas.

Outro a considerar é MEFedMVVM . Eu usei-o em um par de projetos e é leve, não-intrusiva e suporta Silverlight e WPF. Ele também é capaz de suportar dados em tempo de design no Blend, para aqueles que usam esse produto.

Se você está procurando extensibilidade (a capacidade de escrever add-ins) em cima de uma estrutura de aplicativo WPF / MVVM, então você pode estar interessado em SoapBox Núcleo disclaimer: eu escrevi . É código aberto, por isso mesmo se você não usá-lo, pode haver algumas boas idéias em lá para você. Ele usa MEF tanto para extensibilidade e IoC.

Há também nRoute

A estrutura de aplicativo muito bom para WPF / Silverlight que suportes MVVM

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top