--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
From: Michel BarbosaSent: Tuesday, July 03, 2012 5:56 PMSubject: Re: [dotnetarchitects] DDD - Duvidas sobre tipos eNums....
----- Original Message -----From: Daniel Moreira Yokoyama
Para postar envie uma mensagem para dotnetarchitects@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitects+unsubscribe@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetarchitects@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitects+unsubscribe@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetarchitects@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitects+unsubscribe@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetarchitects@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitects+unsubscribe@googlegroups.com
Algumas conclusões minhas sobre as opiniões já postadas:
- Pode-se usar o WCF fazendo o papel de FACADE tranquilamente;
- Boa ideia do Gerson Dias de anotar os ítens do ENUM com as descrições de cada item.
- Nota: apesar de o WCF ser usado como FACADE sugiro que as ANOTAÇÕES WCF(DataContract e DataMember, ServiceContract e OperationContract) sejam colocados diretamente sobre os tipos (DTOs/MODEL) e sobre as interfaces de contratos de serviço de aplicação também diretamente.
- O tão discutido de que não é nenhum problema da camada de apresentação depender da camada de domínio, realmente não há problema. Mas não é regra. Mas também não podemos confundir: -- A ENTIDADE de domínio é preparada para "manter" e "disponibilizar" (no/do repositório) as características e comportamentos de negócio, atendendo a regras deste. Mas a entidade de domínio geralmente não atenderá sozinha aos requisitos da forma de apresentação da informação, que poderá, essa apresentação, variar seu formato conforme a tela, o módulo do sistema, o dispositivo/recurso de saída (dispositivo móvel, browser, desktop,...). Entra então em cena os DTO como/e/ou/MODEL (do MVVM).
Minha sugestão é:
- Criar um projeto-assembly de CONTRATO donde ficariam todos os objetos de valores (ENUMs, STRUCTs, ...) do DOMÍNIO, portanto o projeto de domínio e o projeto Client irá conhecer esse projeto de contrato;
- Ainda nesse projeto estariam também os contratos (as interfaces) dos serviços da camada de aplicação (DDD) e seus TIPOS (DTO-MODEL) que seriam trafegados entre a camada dos usuários (UserInterface, Presentation, ...);
\Sob as camadas DDD:
\APRESENTAÇÃO
+ProjetoDoCadastroDeCliente
- CadastroDeClienteView
- CadastroDeClienteViewModel
- [Depende da IDadosDoClienteModel]
\APLICAÇÃO
+ProjetoDoContrato
- ICadastroDeClienteApp.cs
- Sexo.cs (enum)
- IDadosDoClienteModel.cs
- DadosDoClienteDTO ou DadosDoClienteModel
+ProjetoDeServicoDoCadastroDeCliente
\DOMÍNIO
\Entidades
- Cliente.cs
\INFRA
\Repositório
\etc...
--
Você recebeu esta mensagem porque faz parte do grupo .Net Architects hospedado no Google Groups.
Para postar envie uma mensagem para dotnetar...@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitec...@googlegroups.com
Para mais opções visite o grupo em http://groups.google.com/group/dotnetarchitects?hl=pt-br
Marcelo, não Sei de onde você tirou essas ideias (e pra ser sincero não estou interessado em saber) mas você ainda precisa saber do que se trata o ddd.
--
Também não entendi a questão de usar wcf com a justificativa de que vai distribuir para devices. Ora, distribua então para devices e deixe o site livre do wcf. Ou procure alternativas, como uma api rest usando nancy ou openrasta.
\Sob as camadas DDD:
\APRESENTAÇÃO
+ProjetoDoCadastroDeCliente
- CadastroDeClienteView
- CadastroDeClienteViewModel
- [Depende da IDadosDoClienteModel]
\APLICAÇÃO
+ProjetoDoContrato
- ICadastroDeClienteApp.cs
- IDadosDoClienteModel.cs
- DadosDoClienteDTO ou DadosDoClienteModel
- DatosDoClienteListDTO ou DadosDoClienteListModel
- SexoDTO.cs (enum)
+ProjetoDeServicoDoCadastroDeCliente
\DOMÍNIO
\Entidades
- Cliente.cs
- Sexo.cs (enum)
\INFRA
\Repositório
\etc...
--
Dear god, man.
Participe en la XVI Convención Científica de Ingeniería y Arquitectura del 26 al 30 de noviembre de 2012. La Habana, Cuba: http://ccia.cujae.edu.cu
Consulte la enciclopedia colaborativa cubana. http://www.ecured.cu
Cara, insisto que ainda há muito equívoco no seu entendimento sobre ddd.
a única diferença entre entidade e objecto de valor é que a primeira pode ter seu estado alterado mas continua sendo a mesma (não se identifica pelo estado e sim por uma identidade) e o segundo é definido pelo estado. Se o estado muda, ele deixou d ser quem era.
Não entendi o que você chama de expor o domínio, e qual seria o problema de fazer isso. Mas quando há distribuição você compartilha assemblies?
Como você expõeserviços que interagem com o domínio sem expor o domínio? Ou expor o domínio pra você é uma mera questão de compartilhar assemblies?
Tem muita coisa estranha...
--
On Monday, July 2, 2012 4:16:55 PM UTC-3, Rennes wrote:
Vamos lá,
Daniel,
não entendi de onde você conseguiu tirar essa conclusão com relação ao meu
entendimento sobre DDD;
Primeiro em momento algum eu citei sobre o conceito que define objeto de valor
e entidade. Eu sei que o que define a entidade, como você mesmo citou, são suas
características (olha que não estou falando técneis), comportamentos e sua
identidade (a entidade depende de um dado que representa sua identidade), ela
faz sentido para o negócio. Já o objeto de valor não (não faz sentido sozinho),
ele é o que é, sua identidade é a soma de todos os seus atributos.
Quanto a "expor o domínio":
- Expor o domínio é expor a inteligência/regra de
negócio, seja disponibilizando as classes de domínio serializadas para o Client
ou mesmo compartilhando seu assemblie. No caso nem sempre você quer expor essa
inteligência/regras. Um banco financeiro por exemplo não vai querer expor
acesso direto às classes de domínio, etc... Entendeu?
- Consumir o domínio é por meio de serviços DDD (Não
entenda esse serviço referido aqui como sendo os de WCF).
- Você tem, geralmente, 3 alternativas:
1) ou você expõe o domínio
distribuindo-compartilhando o assemblie de suas classes para a View (Client)
acessar diretamente;
2) ou você disponibiliza uma
"cópia" (você viu que está entre aspas?) serializando essas classes
(mas note que nesse caso tem alguns percalços) por meio de serviços WCF;
3) ou você distribui os
....dados/informação.... por meio de DTO/Model (model do MVVM por exemplo), por
meio de SERVIÇOS DE APLICAÇÃO (camada do DDD) -- Note que não falei SERVIÇO DE
COMUNICAÇÃO (WCF, que fica na camada de INFRA do DDD, usada também pela View
(camada do usuário) ),
RESSALVA:
- Se for usar o WCF (no qual eu recomendo pelo poder que
ele oferece na implementação da "computação distribuida"), então as
classes DTO/Model podem ser serializadas por ele para serem usadas no Client,
ou você pode disponibilizá-las em um assemblie separado (mesmo usando o WCF) ao
invés de serializá-las.
CONCLUSÃO:
- Consumir o domínio por meio de SERVIÇO DE APLICAÇÃO
(por meio ou não de serviços WCF) comunicando (trafegando) as informações em
DTO/Model, então o domínio NÃO (NÃO) estará exposto. -- Se assim for do desejo
dos STAKEHOLDERs.
- Foi isso que propus ao Rennes. Mas com um detalhe a mais, que ele separasse as classes de objetos de valor em outro assemblie e este então seria exposto (compartilhado ou serializado) para as User Interfaces. Poderia ainda essas classes ficarem juntas no mesmo assemblie que estariam sendo distribuídos os DTO-/Model.
Bem.. acho que não tem mais nada estranho! rs
Marcelo Vieira
Para postar envie uma mensagem para dotnetarchitects@googlegroups.com
Para sair do grupo envie uma mensagem para dotnetarchitects+unsubscribe@googlegroups.com