Discussão em Português [pt-br] #149
Replies: 45 comments 7 replies
-
Gostaria de ajudar no projeto! |
Beta Was this translation helpful? Give feedback.
-
Olá @maikmb, O que o projeto mais precisa no momento é de uma interface de usuário (React, Blazor, etc). Se tiver interesse nisso seria bem vindo. |
Beta Was this translation helpful? Give feedback.
-
Eu posso tentar ajudar com uma interface em ReactJs. Seria para realizar as
operações da API?
Em seg, 20 de jan de 2020 09:54, Ivan Paulovich <[email protected]>
escreveu:
… Olá @maikmb <https://github.com/maikmb>,
O que o projeto mais precisa no momento é de uma interface de usuário
(React, Blazor, etc). Se tiver interesse nisso seria bem vindo.
No mais, fazendo perguntas já está ajudando bastante.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<https://github.com/ivanpaulovich/clean-architecture-manga/issues/149?email_source=notifications&email_token=ABFQNIGLSXSULAROCFRHWNTQ6WNJVA5CNFSM4KJAKVZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJMQ6FQ#issuecomment-576261910>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABFQNICROQZBHA5KOUKF7ZLQ6WNJVANCNFSM4KJAKVZQ>
.
|
Beta Was this translation helpful? Give feedback.
-
Sim e seria muito bem vindo. Coloquei no azure uma versao da API: https://clean-architecture-manga.azurewebsites.net/swagger/index.html e acho que preciso corrigir a URL de autenticacao que deveria ser https://clean-architecture-manga.azurewebsites.net/login. |
Beta Was this translation helpful? Give feedback.
-
Combinado! Vou iniciar uma nova branch para incluirmos o projeto web. |
Beta Was this translation helpful? Give feedback.
-
Eu por enquanto fico gerando dúvidas na minha cabeça pra ver se gero uma na tua também hahaha.
|
Beta Was this translation helpful? Give feedback.
-
Olá @leandrofagundes,
public interface IRelatorioContas
{
Task<RelatorioContasModel> BuscarResumoContas(string nomeGerente, int UF);
} E no seu caso de uso, você injeta O importante é que o retorno do IRelatorioContas,BuscarResumoContas() vai ser usado pelo caso de uso pra gerar um |
Beta Was this translation helpful? Give feedback.
-
Hmm, não conhecia esse tipo de prática. Talvez eu não consiga assimilar uma Model que não representa nada de verdade no banco de dados. Eu to aqui pensando em como vai ser segmentado esse Model que tu citou. ps: O lazy loading do EF não é recomendado?? Pq tu não usa o Linq to Entities pra montar tuas consultas, preferindo o SQL crú? |
Beta Was this translation helpful? Give feedback.
-
O padrão CQRS tem varios sábores de implementacao, e um deles é a criacao de um Model para Leitura, e um Model para Escrita. No seu caso, eu imagino que o Model de Leitura sao as classes que representam as views do BD.
Isso depende. LazyLoading é quase mágica, não gosto quando magica se infiltra no Application+Domain. |
Beta Was this translation helpful? Give feedback.
-
E ai @ivanpaulovich como estão as coisas? Estou usando esta arquitetura como arquitetura de referência para um cliente, muito obrigado pelo projeto. Aproveito para acrescentar que no nosso desenho estamos utilizando uma estrutura de integração via gateways, estes estão sendo tratados como possíveis dependências de serviço, ou seja, o serviço agora quando precisa de uma integração externa injetamos o gateway que implementamos ainda na camada de infra. O que acha? Forte abraço. |
Beta Was this translation helpful? Give feedback.
-
Fala @rodrigoreis , fiquei curioso para entender o que essa abordagem resolve, porém não entendi muito bem como está a implementação. Poderia explicar melhor ou mostrar o desenho? Valeu! |
Beta Was this translation helpful? Give feedback.
-
Olá @rodrigoreis, tirando o frio de lascar está tudo ótimo por aqui :) Me corrija se eu entendi errado.
Sim sim, isso é bem semelhante ao que propomos no Manga. Poderia compartilhar mais detalhes? |
Beta Was this translation helpful? Give feedback.
-
Fala Ivan, tudo bem? Uma dúvida que surgiu aqui enquanto eu lia o código: os UseCases não são parte do domínio da aplicação e, portanto, deveriam estar no layer de domínio e não no de aplicação? |
Beta Was this translation helpful? Give feedback.
-
Hey @mviegas!
O Esse modelo serve pra mim. Algum exemplo que possa compartilhar? |
Beta Was this translation helpful? Give feedback.
-
Obrigado pela resposta! Uma abordagem que eu venho utilizando é a seguinte: Os meus UseCases estão na minha camada de domínio. Quando ocorre de um UseCase precisar acessar um outro BC, isso é feito através de um serviço de domínio. Pensando dessa forma, o BC de
De forma semelhante, o Core/SharedKernel do meu Nesse caso o Por fim, dessa forma, aconteceria o seguinte:
O que acha dessa abordagem?! |
Beta Was this translation helpful? Give feedback.
-
Opa @ivanpaulovich , eu tenho percebido que muitos awaits possuem o configureawait(false) no final. |
Beta Was this translation helpful? Give feedback.
-
Ola @leandrofagundes, Recomendo consultar o https://devblogs.microsoft.com/dotnet/configureawait-faq/ pois isso depende do tipo de aplicações que voce esta desenvolvendo, em geral temos: Ao usar Ao usar |
Beta Was this translation helpful? Give feedback.
-
Falando em UI, @ivanpaulovich, você acha possível ou que há algum benefício em aplicar os princípios de Clean-arch em código front-end? Conhece algum projeto interessante com Angular, por exemplo? E parabéns pelo projeto. Estou estudando-o nos últimos dias e tenho gostado bastante. |
Beta Was this translation helpful? Give feedback.
-
Hey @pauloafpjunior, eu acho que a produtividade no frontend é muito dependente de frameworks e que vale a pena usufruir desse beneficio. Não conheço uma referência em Angular. Obrigado e seja bem vindo :) |
Beta Was this translation helpful? Give feedback.
-
Eu que agradeço a reposta e parabéns pelo trabalho, @ivanpaulovich. Você tem algum livro publicado sobre o assunto? Acho que terias muito a contribuir... |
Beta Was this translation helpful? Give feedback.
-
Olá, o que difere os UseCases dos Application Services do DDD? |
Beta Was this translation helpful? Give feedback.
-
Ola @agpcardoso, essencialmente Application Services e Casos de Usos são pontos de entrada para a execução das regras de negócio. Fisicamente são a mesma coisa: interfaces + implementação. No ponto de vista de Clean Architecture, as regras de negocio são organizadas ao redor dos casos de uso. Essa característica implica:
|
Beta Was this translation helpful? Give feedback.
-
@ivanpaulovich Olá, parabéns pelo projeto. Verifiquei em outra issue o motivo de você não usar o MediatR (não ter dependências). |
Beta Was this translation helpful? Give feedback.
-
@marcrib nesse caso, creio que a melhor saída seja você injetar a depêndencia necessária. |
Beta Was this translation helpful? Give feedback.
-
Praticamente criando um adapter para o BUS ? |
Beta Was this translation helpful? Give feedback.
-
Hey @marcrib, assim como o @leandrofagundes ja explicou. O caso de uso pode delegar a o envio de notificações para a implementação da interface |
Beta Was this translation helpful? Give feedback.
-
@ivanpaulovich tem algumas coisas que ainda não entram nessa cabecinha gigante aqui 😢 Eu tenho uma entidade (Oferta) que só deve ter dados em uma tabela secundária (OfertaRegiao) quando ela de fato for lançada. Essa oferta fica disponível em uma lista de ofertas, e todos que querem adotar ela, executam o método Lançar na oferta, gerando um registro de OfertaRegiao. Esse registro tem o ID da oferta e os dados da região que ela vai cobrir (geolocation, etc). Agora falando da estrutura. Meu OfertaFactory tem um Criar para criar a oferta e um Lancar para lançar na região (recebe a oferta e uma entidade de região).
O que me incomoda é ter que manualmente chamar o model oferta para lançar, e depois chamar o factory para criar a região (chamando um lançar duas vezes). Desculpa se não ficou clara a explicação, mas parece que tem algum code smell ai no meio. |
Beta Was this translation helpful? Give feedback.
-
No blog do Uncle Bob e no livro o primeiro circulo interno diz respeito a Entidades com regras de negocio, estou até lendo o livro novamente mas não lembro de na primeira leitura ter visto nenhuma menção de que na camada mais interna deveria ser usado DDD, porém tenho visto algumas pessoas falando sobre o uso do DDD na camada interna e os use cases fazendo o workflow de todas as abstrações e chamadas a essas regras. Minha duvida é se o @ivanpaulovich e também o pessoal que está utilizando clean architecture a mais tempo em seus projetos, como estão organizando a camada mais interna que diz respeito as Entidades? 1- São entidades soltas com regras de negocio que dizem respeito somente a elas e quando se trata de regras de negocio que envolvam 2 ou mais entidades deixa para o Use Case ou Cria-se Domain Services qdo necessário? 2- Vcs agrupam as Entidades em Agregados respeitando as regras do DDD, onde todas as propriedades da entidade são "private set" e a criação de agregados se dá por factory ou construtor e a comunicação entre diferentes agregados se dá pelo AgregateRoot ou não se preocupam com isso? |
Beta Was this translation helpful? Give feedback.
-
Olá @ivanpaulovich Eu não costumo usar Repository, pois acredito que o EF já implementa o repository pattern. Mas tenho utilizando com outra abordagem Eu crio um Repository e crio métodos de extensão para implementar novas consultas ao invés de ficar herdando e criando. Estes métodos de extensão poderiam estar na camada de Application? Também pensei em usar uma Interface IDataContext e usar DbSet, mas aí eu teria que colocar como dependência no Application o EF |
Beta Was this translation helpful? Give feedback.
-
Olá @marcrib, Poderia compartilhar um código com a gente? Há uma implementação alternativa que considera as interfaces do EF abstrações que podem ser usadas por casos de uso. |
Beta Was this translation helpful? Give feedback.
-
Ainda que issues em inglês possam alcançar uma audiência maior e ter mais interaçoes, eu gostaria de encorajar os desenvolvedores em língua portuguesa a usarem este tópico para discussão.
Sejam bem vindos e vocês terão atencão especial.
Beta Was this translation helpful? Give feedback.
All reactions