Qual é a maneira mais fácil de atualizar um grande C # winforms aplicativo para WPF
Pergunta
Eu trabalho em uma grande aplicação C # (aproximadamente 450.000 linhas de código), estamos constantemente a ter problemas com a pilha de desktop e vazamentos de identificador GDI. WPF resolve esses problemas, mas eu não sei qual é a melhor maneira de atualizar (eu espero que isso vai levar um longo tempo). A aplicação tem apenas algumas formas, mas estes podem conter muitos conjuntos diferentes de facilidade de controles que são determinados através de programação.
Este é um aplicativo interno da empresa para que os nossos ciclos de lançamento são muito curtos (normalmente três semanas ciclo de lançamento).
Existe algum caminho de atualização gradual ou temos de aproveitar o sucesso em um esforço maciço?
Solução
Você pode começar criando uma série WPF.
Em seguida, você pode usar o
Eu acho que ainda vai levar um esforço inicial para criar seus invólucros de controle e projetar uma série WPF para o aplicativo. Eu não tenho certeza que o tamanho da aplicação e ou a complexidade dos controles de usuário, então eu não tenho certeza de quanto esforço que seria para você. Relativamente falando, é significativamente menos esforço e muito mais rápido para que você obtenha aplicativo instalado e funcionando em WPF desta forma.
Eu não apenas fazer isso e esquecê-la embora, como você pode executar em problemas com controles sobrepostos uns aos outros (Windows Forms não joga bem com WPF, especialmente com transparências e outros recursos visuais)
Por favor, nos atualizar sobre o status do projeto, ou fornecer mais informações técnicas, se você gostaria orientação mais específica. Thanks:)
Outras dicas
Você usa um monte de controles de usuário para as peças? WPF pode hospedar controles de winform, assim que você poderia Piecewise trazer peças para a forma principal.
WPF permite janelas incorporar formas controles de usuário em um aplicativo WPF, o que pode ajudá-lo a fazer a transição em etapas menores.
Dê uma olhada na WindowsFormsHost classe na documentação do WPF.
Eu assumo que você não está apenas looing para um ElementHost para colocar o seu vasto aplicativo WinForms. Isso não é de qualquer maneira uma verdadeira portabilidade para WPF. Considere as respostas sobre este Tópico Quais são os obstáculos maiores para superar a migração do WinForms para WPF? , será muito útil.
Há um white paper muito interessante sobre a migração de um aplicativo 2.0 winform .NET para WPF, consulte evoluindo para um 3,5 aplicativo .NET
Paper abstract: Neste artigo, eu estou indo para delinear alguns dos processos de pensamento, decisões e questões que teve de enfrentar quando a evoluir um aplicativo do Microsoft .NET a partir 1.x / 2.x para 3.x. Vou olhar como nós ajudou nosso cliente a adotar a nova tecnologia, e ainda manteve um calendário de lançamento aceitável para o negócio.