Pergunta

encontrei um artigo sobre este assunto por um funcionário da Microsoft, mas alguém implementou uma estrutura mais robusta para isso?Existe uma estrutura leve para WinForms que possa ser facilmente portada?Eu gostaria de me atualizar rapidamente e evitar produzir uma estrutura/biblioteca própria para lidar com isso quando alguém mais inteligente já tiver feito isso.

Eu não olhei para o Fábrica de software móvel do grupo P&P, mas suspeito que seja meio pesado.Vale a pena dar uma olhada?

Editar:Não estou procurando informações sobre o projeto ASP.NET MVC.Estou perguntando sobre a implementação do framework compacto 'WinForms' e como implementar o MVC com isso.

Foi útil?

Solução

Pessoalmente, acho que a Mobile Software Factory não traz muita alegria para CF.Ainda usamos uma parte dele (EventBroker) no trabalho e gostaria até de remover essa parte, se possível (já que ela não suporta eventos genéricos e você precisa converter os argumentos em seus tipos fortes de EventArgs).Um projeto irmão no trabalho o usou como parte de sua interface do usuário, mas teve que retirá-lo devido a problemas de desempenho (outro grande projeto, embora também tenha problemas adicionais de desempenho).

O problema que encontro com a estrutura MVP que a biblioteca P&P oferece é que os Formulários e Controles PRÓPRIOS apresentadores em vez de Apresentadores/Controladores possuírem Formulários (que não leram "É apenas uma visualização":Programador pragmático?).Isso se encaixa perfeitamente com o mantra de desenvolvimento rápido de aplicativos "Form First" da MS, mas é uma droga quando você considera o quão caros os identificadores de janelas podem ser no CE (se você tiver muitos deles).Executamos um aplicativo CF muito grande no trabalho e implementamos nossa própria estrutura MVC.Não é difícil criar o seu próprio, apenas separe tudo em controladores, visualizações, objetos de negócios e serviços e tenha um UIController que controle as interações entre os controladores.

Na verdade, vamos um passo além e reutilizamos formulários/controles usando um padrão Controller->View->Layout.O controlador é o mesmo de sempre, a visualização é o objeto que personaliza um layout em uma visualização específica e o layout é o UserControl real.Em seguida, os trocamos dentro e fora de um único formulário.Isso reduz drasticamente a quantidade de controles do Windows que usamos.Isso + inicializar todos os formulários na inicialização significa que erradicamos a pausa perceptível que você obtém ao criar novos controles do Windows "sob demanda".

Obviamente, só vale a pena fazer esse tipo de coisa se você estiver lançando um aplicativo grande.Temos cerca de 20 tipos diferentes de View que usam no total cerca de 7 layouts diferentes.Isso prejudica nossa rotina de inicialização (conforme carregamos os formulários na inicialização) em cerca de 10 segundos, mas psicologicamente a maioria dos usuários está disposta a aceitar tal golpe na inicialização, em vez de pausas perceptíveis durante o tempo de execução.

O principal problema com a biblioteca P&P em meus livros é que ela é uma porta FF -> CF e devido a certas incompatibilidades e diferenças de desempenho entre as duas plataformas você perde muitas funcionalidades úteis.

Por falar nisso, esse é de longe o artigo mais abrangente que já li sobre MVC/MVP.Para aplicativos Windows (desktop ou CE), recomendo usar a versão Taligent Model-View-Presenter sem as interações, comandos e seleções (por exemplo, o controlador/apresentador executa todo o trabalho).

Outras dicas

Nenhum de vocês (davidg ou Kevin Pang) prestou atenção ao fato de que ele está interessado em WinForms, não Formulários da Web.Ele quer uma estrutura que empurre o padrão de design Model-View-Controller (davidg, MVC não é apenas o nome de uma estrutura ASP.NET) em um projeto WinForms usando o .NET Compact Framework.Ele fez sua pergunta muito bem.

Há também o Estrutura OpenNETCF IoC (que não creio que existisse quando esta pergunta foi feita), que é muito mais leve, mas semelhante em modelo de objeto à Fábrica de Software Móvel da P&P.

@DavidG e @KevenPang

O MVC não está limitado a uma tecnologia web; na verdade, o MVC smalltalk original era para aplicativos de desktop.

Funciona assim:

  • Visualizar = Formulário do Cliente
  • Controlador = finaliza eventos do cliente e empacota entre visualização e modelo
  • Modelo = Dados de Aplicação e Lógica de Negócios

No Smalltalk MVC puro, a View não se limita a ser um formulário, mas pode ser qualquer representação de Dados do Modelo... Por exemplo, se tivéssemos um Modelo que representasse uma planilha, poderíamos ter as seguintes visualizações:

  • Visualização de planilha
  • Visualização amigável para impressão
  • Visualização de ícones

etc, o Modelo seria o mesmo, mas a Visualização criaria um objeto de saída diferente em cada caso.

Dito isso, não sei se existe tal framework para o framework .NET Compact, só queria ressaltar que MVC não significa WebApp.

Dê uma olhada MVC móvel da mFly.Eu nunca usei isso, mas é apresentado como uma estrutura MVC razoável para o CF.

@davidg:"Por que você iria querer MVC no Compact Framework?"

Por que não?Não é reservado para desenvolvedores web, é um padrão.

Editar:Os cartazes acima estão corretos.Vi o MVC e imediatamente pensei em formulários web.Me desculpe.Sinta-se à vontade para desconsiderar isso.Deixarei minha mensagem original no caso de alguém que é interessado em formulários web MVC precisa dos links.:-)

Existem algumas estruturas MVC por aí, nenhuma das quais é muito "leve", mas o MVC é uma grande mudança em relação aos formulários da web, então isso é esperado:

  • ASP.NET MVC - Esta é a tentativa da Microsoft de criar uma estrutura MVC.Ele ainda está no modo de visualização, então use-o a seu critério, mas várias pessoas já o estão usando em seus aplicativos de produção.Você encontrará ampla documentação sobre isso com uma simples pesquisa no Google, pois está se tornando muito popular entre o público do .NET.
  • Monotrilho do Castelo - A estrutura MonoRail é uma estrutura MVC de código aberto que já existe há algum tempo e é usada em vários aplicativos de produção.Definitivamente, é mais sofisticado do que a estrutura ASP.NET MVC, mas considerando a quantidade de esforço que a Microsoft está investindo em sua oferta MVC, acho que mudará relativamente em breve.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top