Pergunta

Eu estou começando em um novo projeto MVC, onde existem algumas regras peculiares e um pouco de estranheza, e tem me intrigado. Especificamente, eu tenho acesso a um banco de dados contendo todos os meus dados, mas tem que ser tratado inteiramente através de um serviço web externo. Não me pergunte por que, eu não entendo as razões. Isso é apenas como é.

Assim, o CRUD serão tratadas através desta API. Estou pensando em criar uma camada de serviço que vai encerrar todas as chamadas, mas eu estou tendo problemas envolvendo minha cabeça em torno do modelo ... Para criar meus objetos de domínio com base em modelo (clientes, pedidos, etc. ..) devo:

  1. Criar todos eles manualmente
  2. Criar um banco de dados fictício e apontar um ORM para ele
  3. Ponto um ORM no banco de dados existente, mas ignoram o ORM persistência em vez da API.

Eu sinto que eu tenho toda a informação que precisa para construir isso, mas estou ter sido apanhado com a API. Qualquer ponteiros ou conselhos seria muito apreciada.

Foi útil?

Solução

Dependendo da escala do que você está fazendo a opção 3 é perigoso, você está assumindo o modelo de banco de dados é a mesma que a exposta pelo serviço externo. As opções 1 e 2 não são IMHO muito diferentes umas das outras - em ambos os casos você terá que decidir o que seus objetos, propriedades e comportamentos vão ser - ele só se resume a saber se você está mais confortável fazendo isso nas aulas ou tabelas de banco de dados.

O importante é ter certeza de que as chamadas de serviços externos estão escondidos atrás de algum tipo de wrapper. Pessoalmente eu em seguida, colocar um repositório em cima do que para lidar consultar os objetos de domínio de mensagens publicitárias serviço externo e de retorno.

Outras dicas

Em geral, ORMs não são conhecidos por sua capacidade de gerar limpas classes de modelo de domínio. ORMs são conhecidos por criar camadas de dados, que você não parecem necessidade neste caso.

Você provavelmente poderia usar uma ferramenta de geração de código como T4 ao código gerar uma primeira passagem em suas classes de modelo de domínio, com base em ambos o serviço web ou banco de dados, se isso lhe poupar tempo. Caso contrário, você provavelmente apenas criar manualmente os objetos de domínio. Mesmo se você código de gerar uma primeira passagem em seus objetos de domínio, é improvável que existe um 1-1 mapeamento limpa para o seu domínio objetos a partir de qualquer serviço de banco de dados ou web, então você provavelmente terá que gastar um tempo significativo manualmente editar o seu domínio do código gerado aulas de qualquer maneira.

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