devnotcom / devnot-mentor-back-end

Devnot Mentor projesinin Back-end ve Rest API kaynak kodlarını içermektedir.
MIT License
69 stars 21 forks source link

Proje mimarisinin değiştirilmesi #29

Closed mumincelal closed 3 years ago

mumincelal commented 3 years ago

Mevcut proje mimarisinde tüm yapılar Devnot.Mentor.Api projesi altında konumlandırılmış. Bunun özel bir sebebi var mıdır?

Bunun yerine proje mimarisini gerekli yapıları Class Library olarak ayırsak ve o şekilde devam etsek nasıl olur?

Benim tavsiyem şu şekilde:

Devnot.Mentor.Api
    Controllers
    Migrations
Devnot.Mentor.Repository
Devnot.Mentor.Service
Devnot.Mentor.Infrastructure
    Middlewares
    Filters
Devnot.Mentor.Dto
Devnot.Mentor.Entity

Üzerine düşünebiliriz.

umutluoglu commented 3 years ago

Projeyi 3 layer'a bölelim kararı almıştık geçen hafta, hatta Yusuf bir issue açacaktı ama açmamış sanırım. Projeye ilk geçen yıl başladık ve amacımız 3-4 haftada çok hızlı şekilde çıkmaktı. Basit bir api yazalım, herşeyi sade tutalım mantığıyla yaklaştık. Lakin yapı hem sade kalmadı, hem de öyle planladığımız gibi hızlı gitmedi.

Projeyi api-business-data şeklinde 3 kısma ayıralım diye konuşmuştuk. Eğer çok uzamayacaksa ve merge'de mevcut devam eden çalışmalarla çok conflict çıkarmayacaksa birimiz ayrı branch'te api-business-data şeklinde 3 layer'a bölebilir projeyi. Ama hızlı tamamlamak ve main'e merge etmek iyi olur.

Mümin Celal Pinar @.***>, 2 Tem 2021 Cum, 16:16 tarihinde şunu yazdı:

Mevcut proje mimarisinde tüm yapılar *Devnot.Mentor.Api*** projesi altında konumlandırılmış. Bunun özel bir sebebi var mıdır?

Bunun yerine proje mimarisini gerekli yapıları Class Library olarak ayırsak ve o şekilde devam etsek nasıl olur?

Benim tavsiyem şu şekilde:

Devnot.Mentor.Api

Controllers

Migrations

Devnot.Mentor.Repository

Devnot.Mentor.Service

Devnot.Mentor.Infrastructure

Middlewares

Filters

Devnot.Mentor.Dto

Devnot.Mentor.Entity

Üzerine düşünebiliriz.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/devnotcom/devnot-mentor-back-end/issues/29, or unsubscribe https://github.com/notifications/unsubscribe-auth/AITWF4WT6OZA7ZFK4F6EEADTVW33XANCNFSM47WWV6AQ .

mumincelal commented 3 years ago

Api-Business-Data layerlerı hangi yapıları barındıracak peki?

Dto ve entity'ler Data altında, Service, repository'ler, filters business altında, Controller ve Migration'lar Api altında mı olacak?

Burada tüm business logic service altında olacak. Repository ile Service yapısını ayırmak gerekmez mi?

Bu arada layer'ları tam olarak belirlediğimizde bu işi ben alabilirim.

umutluoglu commented 3 years ago

İşte bu sorular yüzünden tek layer'da yapalım her şeyi diye düşünmüştük. Detaylara girersek 10 layer'a da böleriz projeyi. Çok kompleks düşünmeyelim bence, api'da sadece controller ve middleware'ler kalsa, diğerleri de yazdığın gibi olsa yeterli olur bence.

Hatta şöyle söyleyeyim; çok iş çıkaracaksa böyle kalsın. Amacımız clean arch. uygulamak, mükemmel kod çıkarmak, örnek proje yapmak değil. Amacımız hızlı ve temiz bir şekilde bu projeyi hayata geçirmek.

Mümin Celal Pinar @.***>, 2 Tem 2021 Cum, 16:31 tarihinde şunu yazdı:

Api-Business-Data layerlerı hangi yapıları barındıracak peki?

Dto ve entity'ler Data altında, Service, repository'ler, filters business altında, Controller ve Migration'lar Api altında mı olacak?

Burada tüm business logic service altında olacak. Repository ile Service yapısını ayırmak gerekmez mi?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/devnotcom/devnot-mentor-back-end/issues/29#issuecomment-873001085, or unsubscribe https://github.com/notifications/unsubscribe-auth/AITWF4TPMKEH724W3SE7CEDTVW5T5ANCNFSM47WWV6AQ .

mumincelal commented 3 years ago

Ben yeni mimariyi haftasonu deneyeyim. Eğer görünenden daha uzun sürecekse şuan askıya alırız. Çok fazla zaman almazsa yeni mimariye geçer ardından da onun üzerinde gideriz diye düşünüyorum.

oguzkurtcuoglu commented 3 years ago

Selamlar, bence mvp çıkana kadar en azından mimariye dokunmayalım. Sonrasında DDD ve CQS gibi yaklaşımlar uygulayarak daha da iyi hale getiririz ama önceliğimiz sistemin çalışması olmalı hızlıca derim..