Tentando aprender como usar serviços WCF em um aplicativo WPF, usando MVVM

5

Estamos trabalhando em uma grande reescrita de um aplicativo VB6 legado em um aplicativo WPF. Escrevi vários serviços WCF, que devem ser usados com o novo aplicativo WPF. Queremos usar o padrão de design MVVM para fazer isso, mas não temos experiência nisso. Assim, para aprender MVVM, assistimos a um vídeo no WindowsClient chamado Como faço para: criar um aplicativo WPF orientado a dados usando o padrão MVVM . Esta é uma ótima introdução, e nos referimos muito a ela, mas para a nossa situação ela não nos dá o suficiente. Por exemplo, não estamos certos de como usar conjuntos de dados retornados por meus serviços WCF em nosso novo aplicativo WPF usando as ideias que Todd Miranda introduziu no vídeo mencionado. Se fizermos o que achamos que devemos fazer, devemos projetar uma classe exatamente como a classe de dados retornada em meu serviço WCF. Mas estamos nos perguntando, por que isso, quando o serviço WCF já tem essa classe? E, no entanto, a classe no aplicativo WPF precisa pelo menos implementar a interface INotifyPropertyChanged. Então, não temos certeza do que fazer.

    
por Rod 07.10.2011 / 17:12
fonte

1 resposta

4

Os objetos de dados do WCF devem, idealmente, ser apenas objetos de transferência de dados leves. Eu apenas reutilizaria os objetos de dados do WCF se:

  • Meus modelos sempre serão objetos POCO simples. Nenhuma validação, nenhuma lógica de negócios, nenhuma notificação de alteração de propriedade, etc.
  • Eu não ligo para a classe inteira como visível e totalmente acessível a quem a usou (não é possível ter propriedades somente leitura em um modelo de dados do WCF)
  • Meu modo de exibição não se vincula diretamente ao modelo e, em vez disso, vincula-se às propriedades do ViewModel que expõem as propriedades do modelo. Esta é a abordagem "MVVM-purist", no entanto, se tiver mais problemas para implementar do que vale a pena, vincular sua View ao seu Modelo também é aceitável

Dito isso, nunca usei objetos de dados do WCF como meus modelos. Geralmente eu crio objetos Model separadamente e minha camada de acesso a dados do lado do cliente converte os objetos de dados do WCF em Models para meu aplicativo usar.

Eu costumo usar algo Automapper para isso, que irá automaticamente mapear dados de uma classe para outra, desde que os nomes e tipos sejam os mesmos.

    
por 17.11.2011 / 18:16
fonte

Tags