1 ضمیمه
ساختار Solution در معماری تمیز
سلام خدمت دوستان
به تازگی دارم آموزش های مربوط به Union Architecture و Clean Architecture را میبینم و جدا از مساله کدهای پیاده سازی در هر بخش، موضوع تفکیک پروژه ها و پوشه ها در یک Solution برام ابهام داره. در یکی از آموزش ها تصویر زیر نمایش داده شده:
ضمیمه 154504
در تصویر بالا پروژه ها را به سه گروه تفکیک کرده Web App, Application Core و Infrustructure. حالا سوالاتی برام بوجود آمده که به ترتیب عنوان میکنم:
- در جایی خواندم نام یکی از پوشه ها Application تعریف میشه و ممکنه عبارت Core هم بجاش استفاده بشه. در تصویر بالا گویا این نام با هم استفاده شده. کدام مرسوم هستش؟
- آیا در نامگذاری فضای نام پروژه ها لازم هست که بعد از نام Solution نام پوشه بندی هم اضافه بشه؟ مثلا اگر پروژه ای با نام MyProject.Data داریم آیا لازم هست که بصورت MyProject.Application.Domain تعریف بشه؟
- اگر تفکیک پذیری را بدرستی انجام بدم ولی تمام پروژه های در پوشه قرار نداشته باشه اشکالی داره؟ مثلا تمام پروژه های تصویر بالا مستقیما در Solution باشند و پوشه بندی نشن.
- اگر به هر دلیلی یکی از پروژه ها در پوشه اشتباه قرار داده شده باشه، آیا اصول معماری تمیز نقض میشه؟ یا این مساله سلیقه ای هستش؟ البته منظور این نیست که کلا اساس را تغییر بدم.
- در یکی از آموزش ها میگفت که DTO باید در پروژه UI ایجاد بشه چون لایه سرویس اطلاعات را بر می گردونه و استفاده کننده هستش که تصمیم میگیره از اطلاعات به چه نحوی استفاده کنه. حالا اگر کلاس های DTO را بصورت پروژه جداگانه ایجاد کنم تا همه برنامه های UI از یک ساختار اطلاعاتی پیروی کنند اشکال داره؟ در این صورت هم لایه سرویس و UI می توانند از این کلاس استفاده کنند.
- آیا امکان استفاده از AutoMapper در لایه سرویس امکان پذیر است؟ اگر بله، پس باید لایه DTO رو جدا کنم و به هر دو پروژه Service و UI ریفرنس بدم.
- آیا معماری پیاز و معماری تمیز با هم متفاوت هستند یا هر دو یک مفهوم و هدف دارند؟
اگر دوستان در خصوص ساختار شکست Solution جهت معماری های چند لایه تجربه ای دارند ممنون میشم راهنمایی کنند.
2 ضمیمه
نقل قول: ساختار Solution در معماری تمیز
نمونه های زیر را در اینترنت پیدا کردم. اگرچه در نمونه های زیر پوشه بندی انجام نشده ولی هر بخش از برنامه در پروژه ای جداگانه پیاده سازی شده:
نمونه 1
ضمیمه 154505
ضمیمه 154533
نمونه 2
ضمیمه 154506ضمیمه 154534
2 ضمیمه
نقل قول: ساختار Solution در معماری تمیز
نمونه
ضمیمه 154535
نمونه
ضمیمه 154536
هدفم اینه که بدونم ایا ساختار جامع و یا استانداری برای حداکثر تفکیک پذیری پروژه ها وجود داره و یا اصلا نیازی نیست تا این اندازه درگیر تفکیک کردن پروژه ها باشیم.
تشکر