Pergunta

A maioria das restrições e truques com formulários do Windows são comuns à maioria dos programadores.Mas desde o .NET 3.0 também está disponível o WPF, o Windows Presentation Foundation.Diz-se que você pode tornar os "aplicativos sexy" mais fáceis com ele e com o .NET 3.5 SP1 obteve um bom aumento de velocidade na execução.

Mas, por outro lado, muitas coisas funcionam de maneira diferente com o WPF.Não direi que é mais difícil, mas é preciso aprender “tudo” do zero.

Minha pergunta:Vale a pena gastar esse tempo extra quando você precisa criar uma nova GUI e não há pressão de tempo para o projeto?

Foi útil?

Solução

O WPF permite que você faça coisas incríveis, e eu adoro isso...mas sempre me sinto obrigado a qualificar minhas recomendações sempre que os desenvolvedores me perguntam se acho que deveriam migrar para a nova tecnologia.

Seus desenvolvedores estão dispostos (de preferência, EAGER) a gastar o tempo necessário para aprender a usar o WPF de maneira eficaz?Eu nunca teria pensado em dizer isso sobre MFC, ou Windows Forms, ou mesmo DirectX não gerenciado, mas você provavelmente NÃO quer que uma equipe tente "pegar" o WPF ao longo de um desenvolvedor normal.ciclo para um produto de envio!

Pelo menos um ou dois de seus desenvolvedores têm alguma sensibilidade de design e os indivíduos com autoridade final de design têm uma compreensão decente dos problemas de desenvolvimento, para que você possa aproveitar os recursos do WPF para criar algo que seja realmente MELHOR, em vez de apenas mais "colorido" , apresentando animação gratuita?

Alguma porcentagem de sua base de clientes-alvo funciona com conjuntos de chips gráficos integrados que podem não suportar os recursos que você estava planejando - ou eles ainda estão executando o Windows 2000, o que os eliminaria completamente como clientes?Algumas pessoas também perguntariam se seus clientes realmente se importam com recursos visuais aprimorados, mas, tendo vivido debates internos da empresa "Nossos clientes empresariais não se importam com cores e imagens" no início dos anos 90, sei que soluções bem projetadas de seus concorrentes irá FAZER com que eles se importem, e a verdadeira questão é se as condições são adequadas, para permitir que você ofereça algo que fará com que eles se importem AGORA.

O projeto envolve desenvolvimento básico, pelo menos para a camada de apresentação, para evitar a complexidade adicional de tentar se conectar a andaimes legados incompatíveis (a interoperabilidade com Win Forms NÃO é perfeita)?

Seu gerente pode aceitar (ou deixar de perceber) uma QUEDA significativa na produtividade do desenvolvedor por quatro a seis meses?

Este último problema se deve ao que gosto de chamar de natureza "FizzBin" do WPF, com dez maneiras diferentes de implementar qualquer tarefa, e nenhuma razão aparente para preferir uma abordagem a outra, e pouca orientação disponível para ajudá-lo a fazer uma escolha.Não apenas as deficiências de qualquer escolha que você fizer ficarão claras apenas muito mais tarde no projeto, mas você terá praticamente a garantia de que cada desenvolvedor do seu projeto adotará uma abordagem diferente, resultando em uma grande dor de cabeça de manutenção.O mais frustrante de tudo são as inconsistências que constantemente atrapalham você enquanto você tenta aprender a estrutura.

Você pode encontrar informações mais detalhadas relacionadas ao WPF em uma entrada no meu blog:

http://missedmemo.com/blog/2008/09/13/WPFTheFizzBinAPI.aspx

Outras dicas

Depois de três meses tentando elaborar um linha de negócios (LOB) no WPF, cheguei ao ponto de considerar voltar ao Windows Forms para o meu projeto e, ao pesquisar a opinião de outras pessoas, me deparei com este tópico...

Sim, o WPF é uma tecnologia brilhante e tem benefícios que vão muito além de um mero colírio para os olhos...os recursos de modelagem e vinculação são ótimos exemplos.Todo o modelo de objeto oferece mais flexibilidade e possibilidades mais amplas.No entanto, isso não a torna a plataforma padrão para futuras aplicações LOB.

Os “problemas” que o WPF resolve em termos de separar a GUI da lógica de negócios não são problemas que não possam ser resolvidos prontamente no Windows Forms simplesmente começando com a arquitetura e a mentalidade corretas.Até mesmo os recursos de ligação de caminho de objeto do WPF podem ser reproduzidos em Windows Forms com algumas classes auxiliares muito simples.Os recursos de modelo de dados do WPF são muito bons, mas, novamente, não são nada que você não possa simular no Windows Forms nas raras ocasiões em que você não sabe exatamente quais objetos representará em qualquer parte do a tela.

A vantagem do Windows Forms é em termos de maturidade.Você não pode lançar um gato morto no Google sem acessar algum blog onde alguém resolveu um problema do Windows Forms para você.O WPF, por outro lado, tem comparativamente menos recursos de aprendizagem disponíveis, menos controles personalizados disponíveis e não teve tantos problemas iniciais resolvidos.

No auge da tomada de decisão entre WPF e Windows Forms deve estar a maturidade do ambiente de desenvolvimento.Os editores do Windows Forms são inteligentes, responsivos e intuitivos.O feedback sobre os erros chega até você instantaneamente, as soluções geralmente são óbvias e o ciclo de compilação-> depuração-> edição no Windows Forms é muito rápido.

Os aplicativos WPF, por outro lado, têm suporte de tempo de design comparativamente patético, com a visão de design pronta para se acovardar no primeiro encontro de um erro, muitas vezes exigindo a construção do projeto após a correção, antes que o designer esteja disposto a agir. de novo.Arrastar e soltar componentes da caixa de ferramentas também pode não ser suportado, dada a vasta gama de circunstâncias sob as quais ele não funciona ou produz resultados completamente não intuitivos.Apesar da promessa do WpfToolkit, ainda não existe um DataGrid utilizável para WPF que produza qualquer tipo de desempenho razoável ou facilidade de tempo de design.

Depurar aplicativos WPF é um pouco como o velho Paradigma de depuração ASP.NET...bater F5 -> esperar -> iniciar -> erro -> parar -> corrigir -> acertar F5 -> esperar -> iniciar -> erro -> gemer -> parar -> consertar -> acertar F5....Todo o XAML que seu programa está executando está bloqueado e rastrear problemas específicos do XAML costuma ser entediante.

O resultado final, simplesmente, é que as ferramentas de desenvolvimento para Windows Forms farão com que você desenvolva front-ends em uma fração do tempo de um aplicativo WPF... especialmente se você estiver criando grades de detalhes mestres ou interfaces semelhantes a planilhas, que a maioria dos LOB possui.Com o Windows Forms, você começa com 90% do trabalho já feito para você.

Sou um grande fã da arquitetura WPF.Eu só queria que o conjunto de ferramentas de tempo de design não parecesse uma compilação de depuração pré-alfa.


Editar:Esta resposta foi publicada sobre o .NET 3.5 + Visual Studio 2008, mas o .NET 4.0 com Visual Studio 2010 vem com uma grade de dados WPF.Embora muitas melhorias tenham sido feitas na nova experiência de desenvolvimento do WPF, minha resposta aqui permanece inalterada e gostaria de acrescentar a seguinte sugestão:

Se você está com pressa para fazer RAD desenvolvimento, vá com o Windows Forms.Se você deseja produzir um aplicativo de linha de negócios multiusuário, bem arquitetado, de fácil manutenção, escalável, com recursos amigáveis ​​e multiusuário, considere ASP.NET MVC + HTML 5 + jQuery...Meus projetos com essas tecnologias resultaram em melhores resultados, mais rapidamente, para meus clientes.O MVC oferece todos os mesmos modelos que o WPF oferece, e o jQuery permite animações e interações complexas.Mais importante ainda, uma solução ASP.NET MVC + jQuery não exige que seus usuários finais tenham desktops modernos com hardware gráfico decente.

Estou usando o WPF há sete meses no que agora se tornou um sistema central para meu cliente e gostaria de compartilhar mais algumas idéias com você sobre a experiência de aprender e usar o WPF como uma plataforma de apresentação de linha de negócios.

Em geral, os comentários que fiz acima ainda são válidos...O suporte em tempo de design para WPF ainda não chegou.Se você estiver com muita pressa para lançar um aplicativo rich client, escolha o Windows Forms.Período.A Microsoft não tem pressa em descontinuar a plataforma GDI/Windows Forms, então você pode contar com um bom suporte por um bom tempo no futuro.

WPF não é fácil de dominar, mas não deve ser aí que você decide se deve ou não investir seu tempo e energia no aprendizado do WPF.Apesar da atual falta de maturidade, o WPF é construído em torno de alguns conceitos úteis e modernos.

No WPF, por exemplo, seu investimento em objetos de negócios bem escritos com lógica de validação sólida é um investimento sólido.Ao contrário do Windows Forms, a vinculação de dados do WPF está repleta de recursos que permitem que os controles da interface reajam a entradas inválidas do usuário sem escrever código GUI para detectar esses erros.Isto é valioso.

Os recursos de estilo e modelagem no WPF também provaram ser valiosos.Apesar do equívoco comum de que o único uso para estilo e modelagem é criar um visual atraente na tela, a verdade é que esses recursos simplificam significativamente a codificação de uma interface de usuário que fornece feedback rico - como botões que se desabilitam/habilitam com base em o estado da camada lógica de negócios subjacente ou dicas de ferramentas que encontram seu texto de forma inteligente com base no estado do objeto sob o cursor, etc.

Tudo isso resulta em recursos incrivelmente valiosos para "nada sofisticado" aplicativos de negócios, simplesmente porque facilitam manter a interface congruente com os dados subjacentes.

Resumindo:

  • Nos formulários do Windows, você projeta sua interface de usuário e, em seguida, grava o código para acionar essa interface do usuário, que geralmente inclui código para acionar seus objetos de dados.
  • No WPF você investe na camada de negócios que orienta seus objetos de dados e, em seguida, projeta uma interface que escuta aos seus objetos de dados.

É uma diferença aparentemente sutil, mas faz uma enorme diferença na sua capacidade de reutilizar código...o que levanta a questão:"A questão Windows Forms vs WPF é realmente uma decisão de investimento?"

(Este parece ter se tornado meu tópico favorito.)

Existem razões convincentes para usar o WPF

Absolutamente!WPF é absolutamente incrível!Será um grande benefício para praticamente qualquer projeto porque possui tantos recursos e habilidades que faltam ao Windows Forms.

Para aplicações empresariais, os maiores ganhos serão:

  • A fantástica vinculação de dados e modelos fazem a maior diferença.Depois que um modelo de dados decente estiver implementado, serão necessários apenas alguns cliques para criar um modelo de dados e usá-lo. Mistura de Expressão para configurar exatamente a aparência do seu objeto usando arrastar e soltar.E vincular-se a coisas como cor ou forma é trivial.
  • O layout da tela é incrivelmente flexível.Não apenas tudo no WPF pode se ajustar suavemente às mudanças de tamanho e forma do contêiner, mas os itens podem ser ampliados e girados de maneira trivial e até mesmo se estenderem para fora do quadro que os contém.
  • Objetos comuns podem ser apresentados da maneira que você quiser, podem facilmente ter apresentações diferentes em telas diferentes, podem compartilhar apresentações e adaptar sua apresentação às alterações nos valores dos dados.
  • Se você precisar imprimir, renderizar na impressora é trivial.Configurado corretamente, o WPF faz Relatórios de cristal ou Serviços de relatórios do SQL Server (SSRS) parecem um brinquedo de criança.
  • Sua interface de usuário terá uma aparência muito mais dinâmica, incluindo recursos interessantes, como botões que são animados quando você passa o mouse sobre eles.

Para utilitários e jogos, outras vantagens vêm à tona:

  • Você pode adicionar facilmente formas, linhas e desenhos arbitrários ao seu aplicativo sem usar um editor externo.Cada componente deles pode ser vinculado a dados e animado ou controlado por código.No Windows Forms, você normalmente só precisa importar um bitmap e usá-lo como está, a menos que queira trabalhar muito.
  • As animações são legais!Os usuários ficarão realmente impressionados, desde que você não exagere.Eles também podem ajudar as pessoas a ver o que está acontecendo e reduzir a necessidade de esclarecimento.Por exemplo, ao arrastar um objeto você pode animar o alvo para mostrar o que acontecerá se você soltá-lo.
  • Cores, preenchimentos de gradiente, pincéis, fontes sofisticadas, rotação de quaisquer objetos, pincéis de ladrilho, etc.Tudo o que você quiser graficamente é seu, basta pedir.
  • Incrivelmente personalizável.Eu precisava desenhar trilhos de trem para uma aplicação, para poder lançar um trem sobre eles.Algumas horas depois, eu tinha trilhos de trem que poderia desenhar em qualquer lugar da tela usando Curvas de Bézier, e eles ingressariam e mudariam automaticamente.

O resultado final é que qualquer GUI de tamanho significativo que você possa construir no Windows Forms pode ser construída no WPF com um terço do esforço (ou menos) e ter uma aparência muito, muito melhor.

O WPF requer mais recursos (RAM em particular)

Você paga um preço comparado ao Windows Forms, mas é pequeno.

  • A RAM pode aumentar ou diminuir dependendo da sua implementação.O WPF armazena seus dados com mais eficiência, de modo que os objetos individuais são menores, mas tende a haver mais objetos no WPF do que no Windows Forms, portanto, isso se equilibra e qualquer um deles pode sair na frente.
  • A CPU aumentará em comparação com o Windows Forms.Na minha experiência, a atualização real dos objetos WPF na tela consome cerca de duas vezes mais CPU que a renderização normal do Windows Forms.Se o seu aplicativo passa a maior parte do tempo atualizando a tela, o WPF pode não ser para você.Mas nesse caso você provavelmente também não está usando o Windows Forms:A maioria dos jogos sérios são escritos diretamente para DirectX.
  • O uso do disco será um pouco menor para o WPF porque requer muito menos código do que o Windows Forms.Os dados serão do mesmo tamanho, é claro.

Mais uma observação sobre o uso da CPU:Animações e transformações (movimento, tradução, etc.) são realmente mais eficientes no WPF do que no Windows Forms devido ao seu modo de armazenamento retido.É a obtenção inicial dos objetos lá em cima que é mais lenta.

Sobrecarga de manutenção

WPF é um enorme conquiste o Windows Forms quando se trata de manutenção.Como tudo é feito com 1/5 do código de antes, há 1/5 do código para manter.Além disso, todo o material padronizado desapareceu para que você possa se concentrar no código que realmente faz o trabalho.

Benefícios do XAML

XAML é o núcleo do WPF.Embora o WPF possa ser usado sem XAML, o XAML o torna incrivelmente fácil de usar.O XAML tem a capacidade do HTML de especificar facilmente uma interface de usuário, mas suas tags integradas são muito mais poderosas e você pode definir facilmente as suas próprias.(Na verdade, é normal fazer isso).

Algumas vantagens específicas do XAML:

  • Toda a sua UI é definida em um arquivo de texto fácil de ler e manipular, tanto para usuários quanto para ferramentas
  • MarkupExtensions permitem que Bindings sejam especificados de forma clara e simples
  • Os conversores de tipo permitem que propriedades com tipos complexos sejam facilmente especificadas.Por exemplo, você pode dizer Brush="Green" ou especificar um pincel de gradiente radial com três pontos.
  • Você pode criar seus próprios elementos
  • Você pode aproveitar facilmente as poderosas "propriedades anexadas" do WPF

Outras informações

Sonhei com algo como WPF por muitos anos.Muitas pessoas implementaram partes dessa funcionalidade, mas colocar tudo em um só lugar e por esse preço (US$ 0) é incrível.

O WPF é uma grande mudança de paradigma em relação ao Windows Forms e levará algum tempo para se acostumar, mas o tempo gasto aprendendo-o será recompensado muitas vezes.

O WPF ainda tem algumas verrugas mesmo cinco anos depois, mas seu poder irá surpreendê-lo totalmente quando você experimentá-lo.Se alguém tentar arrastá-lo de volta para o Windows Forms, você só vai chutar e gritar.

Pontas:- Obtenha uma cópia da mistura de expressão para o desenvolvimento - faça o xaml à mão ocasionalmente - não desista quando parecer estranho no começo

O WPF requer o Windows Vista ou o Windows XP SP2, o que não é um requisito oneroso, mas é relevante.Se você deseja rodar no Windows 2000 (o que algumas pessoas ainda fazem), o WPF não funcionará para você.

O WPF também é uma tecnologia mais recente e não tão comprovada quanto o Windows Forms, portanto você pode escolher o Windows Forms como uma opção menos arriscada, especialmente para aplicativos maiores.

Dito isto, sim, o WPF é o futuro.O Visual Studio 2010 está sendo reescrito em WPF, que provavelmente será o maior aplicativo WPF até o momento e também será um verdadeiro teste para a tecnologia.

Obviamente, aplicativos herdados do Windows Forms seriam outra situação em que essa seria a escolha correta.

Como já foi dito, há vantagens e desvantagens de qualquer maneira que você seguir aqui.As vantagens do WPF, como já foi dito, incluem:

  • A capacidade de criar UIs muito ricas relativamente facilmente.
  • Animação e efeitos especiais mais fáceis
  • Escalabilidade inerente (use a ferramenta de ampliação do Windows Vista em um aplicativo WPF e em um aplicativo Windows Forms:Observe que no aplicativo WPF, toda a arte vetorial é dimensionada lindamente)
  • (ALERTA DE OPINIÃO) Sinto que é "mais fácil" fazer sistemas orientados a documentos no WPF

No entanto, existem desvantagens no WPF, onde o Windows Forms se destaca:

  • O conjunto de controle in-box do WPF é muito mais limitado do que o do Windows Forms.
  • Há maior suporte no espaço de controle de terceiros para Windows Forms.(Isso está mudando, é claro, mas pense nisso:O Windows Forms existe desde 2001;WPF apenas alguns anos.Com a vantagem do tempo, o Windows Forms tem maior suporte na comunidade.)
  • A maioria dos desenvolvedores já conhece o Windows Forms;WPF fornece uma nova curva de aprendizado

Por fim, lembre-se de que você pode criar interfaces de usuário excelentes, atraentes e envolventes em qualquer uma das ferramentas, se fizer o trabalho (ou usar as ferramentas de terceiros certas).No final das contas, nenhum dos dois é necessariamente melhor em todas as circunstâncias.Use o que achar certo para o projeto.

O modelo de programação para WPF é mais aberto e flexível do que o Windows Forms, mas, como o ASP.NET MVC, requer um pouco mais de disciplina em termos de implementação correta dos padrões Model-View-ViewModel.

Meu primeiro LOB O aplicativo com WPF acabou sendo um fracasso total, porque era um consumidor de recursos que paralisou os laptops de baixo custo do meu usuário final ...e isso aconteceu porque acabei de entrar no WPF + LINQ para SQL e esperava um bom resultado...e é aqui que o WPF diverge tão fortemente do Windows Forms...No Windows Forms, você pode fazer esse tipo de coisa.O WPF consome muito mais recursos do que o Windows Forms e, se você não arquitetar seu aplicativo para ser enxuto, acabará com um gorila de 800 libras.

Não se intimide com o WPF...explore-o.Mas esteja ciente de que os pecados aceitáveis ​​da codificação do Windows Forms não produzirão bons resultados no WPF.São mecanismos fundamentalmente diferentes, que se prestam a padrões de codificação fundamentalmente diferentes.

Última palavra:Se você prosseguir com o WPF, familiarize-se com a virtualização de dados para uso com listas e grades.O que é um ListItem ou GridCell simples vinculado a dados acaba sendo um gráfico de objeto lógico + visual robusto no WPF e, se você não aprender como virtualizar, seu aplicativo não terá um bom desempenho em grandes conjuntos de dados.

Há uma curva de aprendizado muito acentuada no WPF, e recomendo que você leia primeiro os livros óbvios (Adam Nathan, Vende/Griffiths, eChris Anderson) e blogs (Josh Smith, etc.).Apenas esteja preparado para isso e certifique-se de que seu projeto lhe dê tempo para aprender o WPF.

Além de aprender a tecnologia, passe algum tempo aprendendo os padrões usados ​​para construir aplicativos WPF. Visualização do modelo ViewModel (MVVM) parece ser aquele que ganhou grande aceitação.

Pessoalmente, acho que o WPF vale a pena, mas esteja avisado.Observe também que você efetivamente restringe seus usuários ao Windows XP SP2+ e ao Windows Vista.Tomamos essa decisão, mas você pode ter alguns requisitos diferentes.

Ambas as tecnologias têm seus prós e contras.Em um aplicativo grande com uma interface de usuário "clássica", eu usaria o Windows Forms.Em um aplicativo que requer uma interface de usuário rica (skinning, animações, alteração da interface do usuário), eu escolheria o WPF.Por favor, verifique o artigo WPF vs.Formulários do Windows comparando WPF e Windows Forms.

Além da flexibilidade no design da UI, existem algumas vantagens técnicas no WPF:

1.) O WPF não depende de objetos GDI. Bem, acho que usa 2 objetos GDI para a instância da janela em si, mas isso é praticamente nada.Estive envolvido até certo ponto em um grande aplicativo interno do Windows Forms.As pessoas em nosso escritório às vezes executam 3 ou 4 instâncias simultaneamente.O problema é que eles frequentemente atingem o limite de 10.000 objetos GDI inerente ao Windows 2000, XP e Vista.Quando isso acontece, todo o sistema operacional deixa de responder e você começará a ver artefatos visuais.A única maneira de esclarecer isso é fechar os aplicativos.

2.) WPF utiliza GPU. A capacidade do WPF de transferir parte do processamento da UI para a GPU é brilhante.Só espero que esse aspecto melhore com o tempo.Como ex-hobby de programação OpenGL, posso apreciar o poder que vem da GPU.Quero dizer, minha placa de vídeo de US$ 100 tem 112 núcleos rodando a 1,5 GHz cada (e isso não é o topo de linha de forma alguma).Esse tipo de poder de processamento paralelo pode envergonhar qualquer CPU quad-core.

No entanto, o WPF ainda é bastante novo.Não será executado no Windows 2000.E, de fato, um aplicativo WPF pode demorar para inicializar após uma nova reinicialização.Falo sobre tudo isso no meu blog:http://blog.bucketsoft.com/2009/05/wpf-is-like-fat-super-hero.html

Acho que vale a pena aprender WPF.Quando você estiver atualizado, o trabalho de design em seus formulários será muito mais fácil, IMHO.Eu não me preocuparia tanto com as coisas 'sexy'.A maior parte disso é apenas uma moda passageira.Você pode criar aplicativos 'normais' no estilo WinForms de maneira muito rápida e fácil no WPF.

Todo o conceito se presta a um design mais fácil, IMO.

Não concordo com algumas das respostas aqui.WPF é realmente adequado para linha de negócios (LOB).(O cliente LOB de design de sapo é o melhor exemplo).E além de todas as possibilidades de deixar sua UI atraente (o que não é necessário em aplicações de negócios), o WPF oferece muito mais para você.

Os recursos de vinculação de dados e modelos são simplesmente superiores aos Windows Forms.Ele também oferece uma maneira muito melhor de separar código e apresentação.Usamos o WPF com sucesso para aplicativos de 2 LOB em equipes com no máximo 2 a 3 desenvolvedores.

O maior problema que você enfrentará é provavelmente a curva de aprendizado acentuada do WPF (em comparação com o Windows Forms), que diminuirá a velocidade de desenvolvimento com desenvolvedores não acostumados com o WPF.

No momento, estamos reescrevendo nosso aplicativo em WPF a partir do Windows Forms.Sim, há uma curva de aprendizado acentuada e é preciso “reaprender” algumas coisas, mas vale muito a pena.E combinado com o WCF, descobrimos que estamos escrevendo menos código, mais rápido e mais robusto do que nunca.

Fique com isso por um tempo, leia O livro de Adam Nathan, e confira a biblioteca cada vez maior de controles de terceiros, como os de Telerik e Componente Um.Um aspecto negativo, na minha opinião, é que a ferramenta de design, Mistura de Expressão, é muito estranho de usar.A versão mais recente ainda está em beta, mas simplesmente não parece adequada para aqueles que usam o Visual Studio há anos.Sim, é principalmente para designers, mas algumas coisas você simplesmente não pode fazer no Visual Studio.

Considere o WPF se o design da interface for importante para você, porque o WPF pode oferecer uma melhor experiência de UI.Mas o Windows Forms tem a seu lado os anos de evolução, por isso está comprovado que funciona e você pode encontrar muitos programadores experientes para essa plataforma.

Além disso, a portabilidade pode ser um problema. O WPF só funciona com o Windows XP SP2 e superior.

Além disso, o WPF tem uma curva de aprendizado acentuada, o que significa que não é fácil entregar um produto de qualidade sem ter experiência específica em WPF.

Bem, uma resposta é "quando você precisa oferecer suporte a 1.1 ou 2.0", já que o WPF faz parte do .NET 3.0.Existem limitações conhecidas do sistema operacional para o WPF e há um problema óbvio de habilidades:se você tem uma equipe de desenvolvedores que conhece winforms, então pode ser mais fácil produzir um código robusto com formas de vitória.No entanto, se você estiver escrevendo muito código de UI, provavelmente valerá a pena começar a usar o WPF em algum momento.

O WPF também tem muito em comum com o Silverlight, por isso tem benefícios transferíveis.

O WPF vem com muitas vantagens, como excelentes recursos de ligação de dados, separação de preocupações, separação de design e lógica etc ...

Como desenvolvedor, gosto da capacidade de definir minha interface do usuário usando o XAML, em vez de estar preso ao designer do Windows Forms e me sinto bem sabendo que posso contar com outro designer para fazer meu aplicativo parecer bom.

Pessoalmente, não me importo com versões mais antigas do Windows não são suportadas, mas um dos grandes problemas com o WPF é que não é (atualmente/sempre) suportado por mono (http://www.mono-project.com) portanto, os aplicativos WPF não serão executados no Mac OS ou Linux.(Embora os aplicativos Silverlight o façam).

Se você tem tempo e recursos para investir no aprendizado do WPF, faça isso!Mesmo se você estiver escrevendo aplicativos Silverlight para oferecer suporte a vários sistemas operacionais.

Se você precisar que aplicativos de desktop sejam executados em vários sistemas operacionais, use SWF.

Existem muitas diferenças.Adoramos o WPF por:

  1. O estilo declarativo de programação.
  2. Animações e transições de estado
  3. Expression Blend é uma ótima ferramenta
  4. Bom suporte de estilo.

No entanto, optamos pelo Windows Forms porque:

  1. O tempo extra necessário para um desenvolvedor aprender WPF quando ele já conhece os formulários do Windows.
  2. O WPF não será executado no Windows 2000 ou inferior.

A maior consideração ao decidir qual usar é considerar qual .NET Framework seu público-alvo instalou.Acho que mais pessoas têm versões inferiores do .NET Framework que oferecem suporte apenas ao Windows Forms, mas essa é apenas minha experiência pessoal.

A vantagem do WPF é que é muito mais fácil criar GUIs de boa aparência com controles e animações personalizados.O WPF também ajuda a separar ainda mais as camadas de apresentação e lógica.Se você tiver designers, isso permite que você distribua 95% desse trabalho para não codificadores e permite que os codificadores trabalhem na lógica.As desvantagens são os custos de software para o Expressions Blend e a falta de qualquer ferramenta de criação de perfil de código do Visual Studio funcionando bem, pois tendem a ficar presos nas chamadas de estruturas ao tentar renderizar XAML.Tenho certeza de que existem outros, mas esses foram os únicos que realmente vimos.

A principal consideração é se você deseja exigir que seus clientes instalem o .NET 3.0 ou ainda melhor o .NET 3.5 SP1.Você receberá algum feedback negativo

O WPF torna muito mais fácil entregar o trabalho de design de formulários a um designer real, e não a um desenvolvedor de roupas de grife.Se isso é algo que você gostaria de fazer, o WPF é a sua resposta.Se os botões clássicos do Windows forem adequados, então o Windows Forms é provavelmente a melhor opção.

(Várias respostas afirmam que você deve usar o WPF se o design da interface for "importante para você", mas isso é bastante vago.O design da interface é sempre "importante".)

Se você tiver uma licença MSDN, confira Ferramentas de expressão.Ele foi projetado explicitamente para WPF, exporta diretamente para o Visual Studio e pode ajudar a facilitar sua transição.

Se você se preocupa apenas em oferecer suporte ao Windows e não se importa com o tempo que leva para aprendê-lo, escolha o WPF.É rápido, flexível, fácil de remodelar e possui ótimas ferramentas para trabalhar.

Como bônus adicional, o Silverlight é baseado em WPF e começar com qualquer um permite que você obtenha o conhecimento para trabalhar com o outro.Se as coisas continuarem a ser baseadas na Web, ter conhecimento prévio (e uma biblioteca de código existente) para transferir facilmente para o navegador (ou Windows Live Mesh) pode ajudar a dar ao seu software uma vida extra.

Se você decidir usar o WPF, considerando os prós e os contras já explicados nas respostas acima, eu recomendo fortemente que você passe por isso Episódio dnrTV com Billy Hollis

Em Episódio 315 de DotNetRocks, Brian Noyes discute isso extensivamente.

Há um problema conhecido com a renderização de texto no WPF.Muitos usuários relatam que o uso intenso de anti-aliasing e combinação de pixels causa texto borrado.Isto é um grande obstáculo em algumas circunstâncias e, até onde eu sei, foi reconhecido pela Microsoft em algum nível.

Nos últimos 3 anos e meio tenho desenvolvido desenvolvimento de Windows Forms (em duas empresas).Ambos os aplicativos foram usados ​​extensivamente e acabaram apresentando problemas de GDI.Grandes aplicativos Windows Forms eventualmente ficarão sem recursos GDI - fazendo com que o usuário final precise reinicializar.

Scott está reclamando do Expression Blend e como isso não faz sentido para ele como desenvolvedor.Minha primeira reação ao Expression Blend foi assim.No entanto, agora vejo isso como uma ferramenta inestimável, mas realmente depende do tipo de desenvolvedor que você é.

Sou desenvolvedor de interface de usuário e tive que realizar o Integrador função, e acabei achando o Expression Blend inestimável para criar estilos e controlar modelos de maneira WYSIWYG.Quase sempre tenho o Expression Blend e o Visual Studio em execução no mesmo projeto ao mesmo tempo.

Eu também acho que brincar no Expression Blend e dar uma olhada no XAML que é cuspido é uma excelente maneira de aprender a API WPF ...assim como usar o designer no Windows Forms e verificar o código C# que ele exibe é útil para aprender como usar o que você está projetando lá.

Expression Blend é útil.Experimente, especialmente se você estiver trabalhando no visual do aplicativo.

Uma citação de uma postagem anterior de Mark:

  • No Windows Forms, você projeta sua interface de usuário e, em seguida, escreve o código para conduzir essa interface de usuário, que geralmente também inclui código para conduzir seus objetos de dados.
  • No WPF, você investe na camada de negócios que orienta seus objetos de dados e, em seguida, projeta uma interface que escuta seus objetos de dados.

Eu diria que isso é mais uma escolha de design, e não se você está ou não usando Windows Forms ou WPF.No entanto, posso compreender que certas tecnologias podem ser mais adequadas para uma abordagem específica.

Somente se você não tiver experiência em WPF e não quiser investir nisso :)

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