Estou tentando obter uma visão geral das diferentes tecnologias, para usar ao construir GUIs no Windows World.
Para contextualizar, estou construindo um pequeno jogo multiplayer de plataforma 2D. (Apenas para fins de aprendizagem ..)
Meu professor diz que acha que WPF é o caminho certo a seguir, mas parece que ele só compara com o Windows Forms.
Meu entendimento é que aqui em 2015, o Windows Forms está totalmente morto?
Nessa outra questão de stackover, eles dizem que WinRT + XAML é para a construção da GUI Metro (coisa de blocos do Windows 8!), E parece que WPF é algo usado apenas para desktop no Windows 7/8 e está intimamente relacionado ao Silverlight.
- A área de trabalho é onde os aplicativos antigos vivem (vermelho. WFP).
- A nova classe de aplicativos, os aplicativos Metro, pode ser construída de várias maneiras, incluindo por VB.NET, C # ou C ++. Essas três opções de idioma podem usar XAML para construir a interface do usuário. A alternativa é usar JavaScript / HTML5 / CSS para o desenvolvimento da IU e do código do aplicativo.
Minha verdadeira pergunta é: Não existe UMA boa maneira de construir GUIs no Window World?
E se não, quais tecnologias devem ser usadas no Windows 7, no Windows 8 (Desktop e Metro), no Windows Phone (e no Windows 10!) E até mesmo no x-box ..
É a tecnologias diferentes que podem ser comparadas dessa forma?
Em que você acha que é a coisa certa para investir tempo?
fonte
Respostas:
Há muito aqui, mas aqui vai:
Quanto ao que gastar tempo, isso depende do que você está almejando :). Aprender WPF / UWP + XAML trará muitos benefícios se você quiser se manter "atualizado" no desenvolvimento de GUI do .NET, então é isso que eu escolheria. O WPF tem a maioria dos recursos, portanto, começando por aí, você só precisa encontrar soluções alternativas para o que está faltando no UWP (ou em qualquer outra tecnologia baseada em XAML).
Se você fizer isso, certifique-se de aprender o padrão MVVM (Model-View-View Model). Ele funciona muito bem com as tecnologias baseadas em XAML e permite que você compartilhe muita lógica entre seus aplicativos WPF e UWP. A mesma lógica também pode ser usada se você eventualmente desenvolver aplicativos Xamarin para iOS / Android, etc.
Observe que, para o verdadeiro desenvolvimento de jogos, você vai querer uma estrutura de jogo real (como Unity3D ou até mesmo XNA). Você pode fazer isso no WPF, e é uma escolha melhor do que o WinForms, mas nenhum deles é realmente feito para jogos.
fonte
RenderTransform
,Viewport3D
e assim por diante . Eles são acelerados por hardware.É um tópico bastante antigo, mas como descobri no google (sem interesse), talvez outra pessoa também possa entrar em contato aqui. Esta é uma pergunta que é feita repetidamente por novos programadores. Portanto, gostaria de responder algumas coisas também, agora que o Windows 10 foi lançado oficialmente.
Em primeiro lugar, não se deve mais começar com o Windows Forms. É a tecnologia mais madura por enquanto, mas não haverá mais nenhum desenvolvimento do Windows Forms, está apenas em fase de manutenção agora. WPF é desenvolvido ativamente (última leitura). Mas agora, os Aplicativos Universais do Windows (WinRT) não precisam mais ser usados em tela inteira e podem ser usados em modo de janela como outros aplicativos de desktop (WPF e WinForms). Isso aumenta muito sua usabilidade em computadores que não sejam tablets. Acredito que esse também será o futuro dos aplicativos de desktop. Embora os softwares WPF sejam os aplicativos de desktop tradicionais (sem nenhuma coisa de permissões, apenas UAC). De qualquer maneira, não importa se você aprenda desenvolvimento WPF ou WinRT (usando .Net), você acabará aprendendo os dois. Ambos são XAML + C # (ou alguma outra linguagem .Net). Eu estava aprendendo WPF quando o WinRT foi lançado com o Windows 8. Eu me senti em casa, apenas algumas pequenas mudanças às quais você se acostuma logo. Não tenho certeza sobre o cenário MVVM (vinculação de dados) no WinRT embora. Ainda estou aprendendo esse aspecto do WPF.
A janela 10 acaba de ser lançada. O Windows 8 / 8.1 não teve tanto sucesso quanto o Windows 7. Portanto, se você deseja criar um aplicativo que tenha um público mais amplo, deve usar o WPF por enquanto. Mas em um futuro próximo, o WinRT será o caminho a percorrer.
Para sua pergunta, "quais tecnologias devem ser usadas no
Windows 7, no Windows 8 (Desktop e Metro), no Windows Phone (e no Windows 10!) E até mesmo no x-box.", A única resposta é o Windows Universal Apps. Este é o motivo exato pelo qual esta estrutura foi desenvolvida. Uma tecnologia a ser usada para desenvolver aplicativos para todos os dispositivos. Desktop, Tablet, telefones (incluindo Android usando Xamarin junto com o Visual Studio 2015), Xbox e IoT (Internet das coisas).fonte
Vou tentar responder apenas uma de suas perguntas:
O Windows Forms está totalmente morto?
Não, a tecnologia de formulários do Windows não morreu. Dir-te-ei porquê. WPF e XAML são tecnologias muito abrangentes e complexas e você pode construir uma interface de usuário muito boa. Mas! Esta tecnologia requer conhecimento profundo. Para layouts básicos, você não precisa de tanto conhecimento, mas para alguns layouts avançados você deve ter conhecimento profundo e quando comecei com essa tecnologia passei muito tempo procurando algumas dicas no google. Portanto, quando preciso de alguns formulários simples para a entrada do usuário, estou sempre escolhendo a tecnologia do Windows Forms, que é muito simples e direta. Esta é também a razão pela qual esta tecnologia teve muito sucesso quando veio ao mundo. Quando você inicia o WPF, também precisa saber o que é o padrão de design MVVM e alguns programadores não experientes ficam confusos com isso.
fonte
Estamos em abril de 2016 e ainda não há uma resposta clara para isso. Estamos desenvolvendo um aplicativo de desktop de monitoramento de desempenho em tempo real muito moderno que deve renderizar vários gráficos e exibições, misturados com texto e vários outros gráficos. Nosso aplicativo é C #, WPF com .NET Framework 4.5.2, mas ainda estamos escrevendo alguns componentes usando WinForms e GDI + para obter um desempenho aceitável. Simplesmente não conseguimos isso com o WPF. Até desenvolvemos alguns monitores no aplicativo com DirectX, mas isso adiciona muita complexidade que apenas alguns membros da equipe podem suportar. A simplicidade e a velocidade que podemos obter hospedando um display WinForms no WPF e a velocidade do GDI + nos dão o que precisamos com o custo da estrutura View / ViewModel pura e temos que lidar com vários problemas de espaço aéreo. Nosso aplicativo é muito especializado e eu adoraria me livrar dos WinForms por completo, mas infelizmente isso ainda não é possível em nosso caso. Para obter um desempenho puro, você precisará usar DirectX ou WinForms.
fonte
Meus dois centavos ... se você quer verdadeiros aplicativos universais, ou seja, programas que podem ser executados em QUALQUER sistema operacional de desktop, incluindo Windows, WinForms ainda é o caminho a percorrer. Apenas certifique-se de manter a compatibilidade CLR e de implantar no Mac e Linux via Mono. Um grande benefício. O XAML pode ser legal, mas não será transferido para outros sistemas operacionais.
Pessoalmente, acho o modelo de negócios UWP em área restrita (areia movediça?) Assustador; ele contraria a abertura que o Windows representa desde o início.
fonte
Trabalho com tecnologias Microsoft há mais de 10 anos. A coisa mais importante que aprendi não é apenas ouvir o que a Microsoft está oferecendo. Quando a Microsoft está dizendo que este é o futuro, ela tem 50% de chance de dar errado. A Microsoft com certeza fará o melhor que puder para promover os produtos nos quais investiu, mas isso não significa que você deva seguir. Veja o que acontece com o WCF e o Silverlight.
Embora o WPF seja uma plataforma muito boa de se aprender, ele tem uma enorme curva de aprendizado. Eu não acho que nenhum desenvolvedor com menos de 5 anos de experiência em programação pode fazer WPF direito.
Seguindo o padrão MVVM, você descobrirá que fazer algo relativamente fácil no WinForm pode se tornar muito desafiador no WPF. Como colorir uma célula com base em alguma condição após uma atualização, ou role uma linha na visualização e realce-a.
Claro que você pode dizer que não precisa fazer MVVM. Basta colocar seu código no código e fazê-lo funcionar. Sim, isso vai funcionar, mas qual é o sentido de usar o WPF? Por que não usar o Win Form?
fonte
Este é um tópico antigo, mas importante com o progresso atual da estrutura .NET, recursos do c # e maior foco no c # como uma opção de desenvolvimento de jogos.
WPF quase nunca é escolhido como plataforma de jogo c # com toda a honestidade. Os problemas de espaço aéreo da WPF assustaram as pessoas muito rapidamente. Eu não acho que muitos (se houver) títulos principais ou motores de jogo de fluxo principal suportem WPF como uma plataforma de destino devido a isso. O WPF é uma ótima plataforma para lançadores de jogos!
WinForms, embora agora em modo de manutenção, ainda será uma escolha válida nos próximos anos. É testado pelo tempo e estável. Pelo que tenho visto, mesmo em 2017, WinForms ainda é a plataforma mais comum escolhida para o desenvolvimento de jogos baseados em c #.
Olhando os dados do Steam Hardware Survey, você pode ver que, no momento em que escrevia esta resposta (julho de 2017), o Windows 10 de 64 bits agora é a plataforma de jogos para PC dominante com 50% do mercado, seguido pelo Windows 7 de 64 bits com 32% e Windows 8.1 64 bits em quase 7%. A participação de mercado de todas as outras plataformas de sistema operacional é tão pequena que mal vale a pena considerar qualquer coisa além dessas três.
Sendo esse o estado atual dos jogos de PC, WinForms é o denominador mais comum para atingir as 3 principais plataformas de PC. Olhando para o futuro, a UWP será a melhor plataforma de destino para o desenvolvimento de jogos c #, já que o Windows 7 e 8 perdem participação de mercado significativa para o Windows 10, a menos que apareça uma nova plataforma que a substitua. Então isso é apenas pelos números.
Se escolher com base no melhor nível de compatibilidade por plataforma de sistema operacional em vez de oferecer suporte à participação máxima de mercado, as opções seriam mais como:
A maioria das outras respostas gira em torno do desenvolvimento de aplicativos Windows padrão, mas o desenvolvimento de jogos é um domínio muito diferente e diferentes fatores influenciarão suas escolhas, como o sistema operacional de destino e qual a sua escolha de API gráfica ou mecanismo de jogo realmente suporta melhor.
fonte
O WinRT está na área de trabalho há muito tempo, estou escrevendo o WinRT, que roda na minha área de trabalho. E no Windows 10, esses aplicativos suportarão locais não encaixados (em janelas, como você os conhece tradicionalmente).
Eu não recomendaria WinForms ou WPF para ninguém começando hoje. Eles devem aprender WinRT / XAML principalmente. E aprenda um pouco de Win32 / .net conforme necessário, dependendo do idioma de sua escolha.
"eles dizem que WinRT + XAML é para a construção de Metro GUI (coisa de blocos do Windows 8!)" - Isso é uma abstração tão excessiva que é inútil. WinRT é um runtime, como Win32, não é apenas para GUI, então o que "eles dizem" é um BS completo. XAML é uma camada de interface do usuário (muito parecida com XAML no WPF), mas dizer que seu Metro GUI também está errado, não existe mais Metro GUI. XAML é a camada de interface do usuário do Windows. E "coisa de ladrilhos do Windows 8!" é expressivo da visão de túnel de certas pessoas. Seria como se eu dissesse que o Win32 é uma coisa do menu Iniciar. Você pode ver como essa afirmação é ridícula.
fonte
Eu me deparei com essa questão há um ano. Eu cheguei à conclusão de que se XAML, WPF ou WinRT são o ambiente de desenvolvimento correto para começar.
Eu altamente recomendo usando .Net Framework para camada de dados (incluindo Web Services e camada RESTful (JSON)) e HTML5 / CSS3 puro e Javascript para sua camada de apresentação web.
No Windows 10, você pode integrar qualquer aplicativo da web como um aplicativo metro pronto para uso.
WinRT, XAML, WPF e outras coisas semelhantes funcionam apenas no Windows e têm muitas limitações.
Então, depois de um ano, ainda estou muito feliz com minha decisão de não usar WinRT ou XAML para meu novo projeto.
fonte