Pergunta

Recentemente percebi que eu estou criando minhas aplicações n-tier usando o Modelo Anemic, que muitos argumentam não é a maneira correta de fazer as coisas OO (e que na verdade é um anti padrão).

Então, eu estou agora a tentar aplicar o Domain-Driven Design vez.

Eu estou acostumado a usar o objectdatasource aos controles de vinculação, como a exibição de grade, para os meus objetos de negócios. Estou confuso a respeito de como eu iria usar o objectdatasource com o modelo de domínio. faz o objectdatasource exigem um modelo anémico?

Eu estava considerando remover todas ObjectDataSources, eu encontrá-lo para ser um fardo, por vezes, de qualquer maneira (especialmente quando se trata de depuração de código e manipulação de exceção), mas eu gostaria de saber o que a maneira 'correta' de fazer as coisas é .

Foi útil?

Solução

Eu acho que a ligação de dados em rochas gerais, embora eu não tenho muita experiência com ASP.NET. Dá-lhe uma série de benefícios, por isso não descartá-lo também easiliy.

A chave é para separar preocupações. Como você processar dados não tem nada a ver com o modelo de domínio em si, portanto, um projeto melhor é ter uma camada de apresentação Logic especializada que mapeia o modelo de domínio para Views.

Isto significa que você pode manter seu modelo de domínio tão tecnologicamente neutra que você seria capaz de expô-lo em uma série de maneiras imprevistas. Imagine que, no futuro, você será solicitado a implementar um serviço WCF, ou um trabalho em lotes, ou um cliente rico WPF / SL com base no Modelo de Domínio. Deve ser capaz de lidar com tais exigências imprevistas sem arrastar ao longo de uma série de peculiaridades ligadas a qualquer tecnologia de interface do usuário em particular (como ASP.NET).

Quando você tem ViewModels ou Apresentação Modelos para cada um dos seus pontos de vista, você pode usar databanding contra esses modelos. Eu não sei como isso funciona bem em ASP.NET, mas funciona como um encanto, tanto ASP.NET MVC e WPF, eo apoio para que está sendo construído em Silverlight 4 ...

Outras dicas

Pessoalmente, eu não estou muito preocupado com a exclusão de persistência quando julgar anemia de um objeto. O comportamento de negócios de um objeto deve ser ortogonais ou não é persistente e como ele persiste.

Comportamento deve ser sobre a funcionalidade que ajuda a resolver o problema de raiz. Eu concentrar nisso quando projetar objetos que são mais os objetos de valor de transferência e não se preocupam com operações CRUD.

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