Pergunta

alguém pode ajudar, eu tenho 2 aplicações e eles são quase idênticas. eles têm uma camada completamente diferente apresentação (web) e a lógica de negócios e banco de dados são quase idênticas. Basicamente um app tem algumas coisas que o outro não.

então eu queria saber se eu posso fazer o seguinte sem quebrar nenhuma regra etc

Cada aplicativo tem sua própria camada de apresentação.
Cada aplicativo tem sua própria camada de serviço.
Cada aplicativo tem sua própria camada de acesso a dados.
Cada aplicativo ações outra camada de serviço.

Assim, a camada de serviço compartilhado ambos os aplicativos podem acessar como a lógica de negócios é idêntico, mas ambos têm uma outra camada de serviço que tem 5 ou 6 métodos de lá que são específicos para esse aplicativo real

A camada de acesso a dados - Não vejo qualquer maneira de partilhar este, pois há 2 db diferente é com estrutura de entidade, portanto, o seu tem a EDM lá por isso não é dinâmica -. E as tabelas diferem ligeiramente

Eu poderia usar COI sobre a camada de acesso a dados compartilhados Suponho

Será que alguém ajuda ou comentário tempo esta é uma boa prática .. O que eu não quero fazer é ter apenas uma camada de serviço separada quando um lote de que é compartilhada ..

Esta é uma boa ideia? Talvez eu tenha entendeu errado, há uma maneira melhor?

Foi útil?

Solução

Como Arjen de Blok disse, suas entidades empresariais devem usar um repositório, um repositório é um objeto com métodos para entidades de domínio consulta, atualização ou inserção.

A interface, que descreve seu repositório pertence a sua camada de domínio, mas a implementação pertence à camada de infra-estrutura (DAL).

Você pode compartilhar o domínio e bibliotecas de infra-estrutura entre os dois projetos. Se esses dois projetos devem recupera seus dados através de um serviço web compartilhada ou um banco de dados compartilhado, você só tem que escolher (ou seja, injetar) a aplicação correcta do seu repositório (seus objetos de domínio só sei sobre a interface do seu repositório, e não sobre o concreto digite)

Outras dicas

Se a lógica de negócios é quase idêntica, em seguida, você deve se concentrar para este primeiro. Se você quer fazer DDD, então você deve identificar seus entidades e serviços (de negócio) em primeiro lugar e colocá-las em uma única biblioteca.

Estas entidades e serviços de negócios deve conversar com sua camada de infra-estrutura (seu DAL). Se a camada de infra-estrutura é muito diferente nestas duas aplicações, em seguida, tentar trabalhar com interfaces. Então, enrole a camada intfrastructure com interfaces e só falar da camada de domínio para sua camada de infra-estrutura através destas interfaces.

Para vincular sua lógica de negócio para a implementação da sua infra-estrutura que você poderia usar IoC / DI.

Você poderia unificar o DAL com uma interface de repositório. Você poderia, então, implementar a interface entre projetos. Você provavelmente vai acabar com uma classe base EF Repository também. Você pode aplicar uma técnica semelhante para os serviços, a alavancagem de uma interface comum e depois especializar as implementações de serviço.

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