O MVVM no WPF está desatualizado? [fechadas]

18

No momento, estou tentando entender o MVVM para WPF - não quero dizer o que pensa, mas sim as coisas reais de se fazer algo que está mais fora do comum do que o burro CRUD.

O que eu notei é que muitos dos frameworks e a maioria das postagens são de 'idades' atrás.

Isso é porque agora é velho e os blogueiros mudaram para o Next Big Thing, ou apenas porque disseram tudo o que há para dizer?

Em outras palavras, há algo que estou perdendo aqui?

Benjol
fonte
1
As estruturas MVVM para WPF continuaram sendo atualizadas. O novo tópico quente de programação reativa [google it!] Está disponível como MVVM via ReactiveUI . 3 dos 10 principais downloads de nuget do wpf são estruturas MVVM: Prism.WPF, MvvmCross, Caliburn.Micro. AFAIK, todos eles também oferecem suporte ao Xamarin.Forms e UWP, portanto serão relevantes nos próximos anos.
ToolmakerSteve 16/03

Respostas:

6

O MVVM não está desatualizado, mas foi exagerado no início. Eu nunca gostei e isso me manteve no WinForms por muito tempo; não vendo a floresta para as árvores, joguei o bebê fora com a água do banho. Agora, tenho o WPF e tenho a ideia de não querer misturar código com marcação, mas prefiro o estilo Android de colar a marcação em um só lugar e desreferenciá-la com conversões no meu código (o que você também pode fazer no WPF, mesmo embora nunca tenha ficado na moda fazê-lo por qualquer motivo).

Dessa forma, você obtém um controle mais refinado e não precisa se preocupar com todo o manuseio "alterado" em todos os lugares. Eu sinto que isso é realmente mais testável porque os testes nem sempre o capturam se você perder um evento "onchanged".

Você perde um pouco da integridade "declarativa", que parece ser uma tendência nos dias de hoje (por exemplo, se dois widgets são mapeados para o mesmo valor, no MVVM você pode fazer isso, enquanto que com o código imperativo é necessário definir os dois individualmente) . Mas mesmo com o MVVM, isso só funciona no caso servil. Se algum widget precisar exibir o log de outro widget, você precisará escrever outro manipulador e outro evento "onchanged" e, portanto, terá que esticar a definição de "declarativo" para dizer que sim.

Atualização de 2015

O WPF MVVM foi (r) evolutivo para a época. Como foi o WPF. Mas ambos tinham verrugas. O WPF simples tinha muita coisa embutida nela (além disso, ela era construída em XML) e era meio difícil de lidar. (Realmente, se o WPF tivesse adotado uma abordagem mais de "biblioteca" em vez de uma abordagem de "estrutura", poderia ter se transformado em algo realmente interessante e todo o universo tecnológico poderia ser totalmente diferente agora). A idéia do MVVM era ótima, mas tentar encaixar um MVVM no WPF era um pouco invasivo, pois 1) o C # não conseguia expressá-lo sem muito clichê e 2) as relíquias do WinForms, como pop-ups modais, ainda eram ideologicamente predominantes, mas não podiam ser facilmente representado no MVVM. Assim, tudo foi péssimo.

Dito isso, ainda é a única opção realista no Windows quando você precisa de transparência ou GPU para aplicativos LOB.

É claro que o React tornou a MVVM obsoleta. Fiquei decepcionado por o VS2015 não ter um contador nativo para isso. Por enquanto, ainda estamos presos ao uso do WPF bruto (o que é bom, mas parece antigo (realmente parece tão antigo quanto as formas de win agora) e não possui muitas funcionalidades integradas (parece um projeto interessante, mas abandonado) ou with-MVVM, que neste momento parece sobrecarga por nada, já que até uma boa MVVM (angular 1) foi exposta por suas deficiências.

Eu evitaria o WPF MVVM. É uma camada extra e ninguém mais se importa com isso.

Dax Fohl
fonte
3
Hmm ... eu sei que isso é parcialmente uma questão de religião, mas eu comecei com o MVVM no WPF usando o Cinch de volta .. Mmm. 2010? E eu gostei muito. Desde então, mudei para o Caliburn.Micro e Angular e ainda o amo - obviamente, existem muitas deficiências no MVVM como você disse (visivelmente nenhuma maneira não-hacky de fazer diálogos). O MVVM pode parecer bem detalhado, mas a legibilidade geral e a lacuna explícita de design / implementação da interface do usuário ainda fazem valer a pena para mim.
cwap
4
"É claro que a React tornou a MVVM obsoleta" - mas a maior parte da indústria usa Angular.
Den
Tudo até você decidir mover o aplicativo da área de trabalho para a Web e tudo o que você tem é uma tonelada de código por trás, tudo vinculado aos controles do WPF.
CAD bloke
1
Então, o React and Angular não é um ambiente JavaScript? O que isso tem a ver com o WPF? Ou eu estou esquecendo de alguma coisa.
Berin Loritsch 21/07
1
@BerinLoritsch - você não está perdendo alguma coisa. Esse parágrafo é irrelevante para estas perguntas e respostas; aparentemente Dax "mudou" do WPF para a programação da web. Maçãs e laranjas.
ToolmakerSteve 16/03
2

Tudo dito e feito, há um limite para o que você pode fazer com uma estrutura MVVM.

Eles estão "prontos", pois o WPF não foi adiante desde que a Microsoft o lançou. Se houvesse atualizações para a tecnologia, as bibliotecas também precisariam ser atualizadas. Isso não aconteceu.

Oded
fonte
Então é o WPF 'desatualizado'? No que diz respeito a sua primeira frase: é que na vida real interface do usuário e código são simplesmente demasiado interligadas para torná-lo uma proposta realista, ou poderia alguns ajustes em WPF tornaram o Santo Graal (ou quase?)
Benjol
3
@ Benjol - Parece que a Microsoft abandonou o WPF (ou pelo menos não está mais atualizando a tecnologia). Meu argumento sobre as estruturas MVVM é apenas que, para os propósitos pretendidos, há pouco para continuar e estendê-las em uma plataforma obsoleta. Não sei por que a Microsoft parou de atualizar o WPF, mas duvido que seja o que você sugere - é mais provável que o Windows 8 e RT tenham retirado os recursos do WPF.
Oded
18
Isso não é verdade. O WPF foi atualizado várias vezes, mais recentemente no .NET 4.5: msdn.microsoft.com/en-us/library/bb613588.aspx
17 de 26
3
Também é importante notar que a MS suporta suas tecnologias de desenvolvedor para sempre. O MFC, lançado em 1992, continua recebendo correções de erros em cada release / service pack do Visual Studio.
17 de 26
5
Eu chegaria ao ponto de afirmar que a falta de adições recentes ao WPF é uma indicação de sua maturidade. Além disso, como o @Oded já aborda, os aplicativos de desktop, embora ainda tenham valor, agora estão sendo substituídos por aplicativos móveis. Ainda assim, vale mencionar que muito do que o WPF iniciou (programação declarativa da interface do usuário, MVVM, DependencyProperties e Data Binding) agora vive nas tecnologias WinRT e Web (várias estruturas JS). Esses são os principais valores que avançaram significativamente no campo, e acredito que continuarão fazendo isso por um longo tempo.
Sebastian