دسته بندی ها
00:36 1399/05/04

معماری Clean Architecture چیست؟ نحوه پیاده سازی این معماری چگونه است؟

مشخصات سوال کننده :
کاربر : hamdola     امتیاز کاربر : 121     رتبه کاربر : 12
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 15664
هوش مصنوعی

پاسخ هوش مصنوعی

معماری Clean Architecture یک الگو در طراحی نرم افزار است که بر جداسازی نگرانی ها تأکید دارد. هدف این معماری به حداقل رساندن وابستگی بین بخش های مختلف یک برنامه و تسهیل تست پذیری، نگهداری و تغییرات در پروژه است. این ساختمان به طوری طراحی شده است که کد اصلی، مستقل از چارچوب ها، پایگاه داده ها، و دیگر عواملی که ممکن است در پروژه تاثیر بگذارند، باشد.

معماری Clean Architecture معمولاً شامل لایه های زیر است:

  • لایه دامنه (Domain Layer): این لایه شامل مدل ها و منطق کسب و کار است.
  • لایه کاربردی (Application Layer): این لایه شامل سرویس هایی است که منطق کسب وکار را در اجرای خود به کار می برد.
  • لایه رابط کاربری (Interface Layer): این لایه شامل رابط کاربری و تعاملات است.
  • لایه زیرساخت (Infrastructure Layer): این لایه شامل پایگاه داده، APIو دیگر منابع خارجی است.

استفاده از این معماری به ویژه در پروژه های بزرگ و پیچیده که نیاز به مقیاس پذیری، نگهداری و تست پذیری دارند، پیشنهاد می شود. با استفاده از این معماری، تیم های توسعه می توانند تغییرات را به راحتی انجام دهند بدون اینکه بر دیگر بخش های سیستم تأثیر بگذارند.

در مورد پیاده سازی، مراحل کلیدی شامل:

  • شناسایی نیازهای کسب وکار و مدل سازی دامنه.
  • تعریف لایه های مختلف و تعیین ارتباطات بین آن ها.
  • استفاده از الگوهای طراحی مناسب برای پیاده سازی هر لایه.
  • تست دقیق هر بخش.

تفاوت پروژه های با معماری مشخص با پروژه هایی که هیچ گونه معماری ندارند در مقیاس پذیری، نگهداری و قابلیت تست پذیری است. در پروژه هایی که معماری مشخصی دارند، توسعه دهندگان می توانند با شفافیت بیشتری کار کنند و تغییرات را راحت تر اعمال کنند. همچنین، این پروژه ها به راحتی قابل توسعه و گسترش هستند.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 03:43 1399/05/14

معماری Clean Architecture چیست ؟

خب معماری تمیز یا به عبارتی کدنویسی تمیز یا همون Clean Architecture یا Clean Code به مجموعه ای از قواعد گفته میشه که بهتر هست حین توسعه سیستم رعایت بشه تا کدهایی خواناتر و ساختاری محکتر داشته باشید. اما شاید بخواید بدونید این قواعد چی هستن.

 

قواعد معماری Clean Architecture

قبل از اینکه قواعد معماری تمیز رو بگم باید دقت کنید که این قواعد توسط برنامه نویسان مطرح و بزرگ دنیا پیشنهاد شده و ممکنه در کتابهای مختلف قواعد متفاوتی مطرح شده باشه. اما یکی از برنامه نویسانی که در زمینه معماری تمیز یا Clean Architecture کتابی نوشته و در این زمینه صحبت کرده آقای Bob Uncle (باب آنکل) هست. ایشون در کتابشون در مورد معماری تمیز قواعد زیر رو مطرح می کنن :

 

  • نام گذاری متغیرها به صورت با مفهوم و با مسما باشد. یعنی اگر میخواید متغیری رو تعریف کنید یک نام بی ربط انتخاب نکنید.
  • در کدهای خودتون کامنت گذاری کنید اما این کامنت گذاری های باید کوتاه باشد. چون کامنت گذاری طولانی یعنی کد ناخوانا می باشد.
  • در کدنویسی تا حد ممکن کارها را دسته بندی کنید و هر دسته را در یک تابع یا متد قرار دهید. به نحوی که برای انجام هر کاری به راحتی بتوان تابع مورد نظر را فراخوانی کرد.
  • سعی کنید کلاسهای شما فقط یک کار انجام دهند. این موضوع بسیار پراهمیت می باشد. با یک مثال ساده این قاعده را توضیح می دهم. فرض کنید می خواهید عملیات Insert و Update و Delete را برای یکی از جداول خود ایجاد کنید. بهتر است برای هر کدام از این عملیات یک کلاس مجزا تشکیل دهید و از ایجاد یک کلاس که همه این توابع در آن کلاس تعریف شود خودداری کنید.
  • کاهش وابستگی ها در پروژه. کاهش وابستگی ها به این معنی که سعی کنید کلاسهای شما تا حد ممکن وابستگی کمتری به سایر کلاس ها یا Interface های پروژه شما داشته باشند. این موضوع باعث می شود تست پذیری سیستم بهتر شود. در مورد کاهش وابستگی ها توضیه میشه در مورد کتابخانه Mediator در nuget و نحوه استفاده از آن تحقیق کنید.
  • استفاده از الگوی CQRS. یکی از الگوهایی که در پیاده سازی معماری تمیز بسیار کارآمد می باشد الگوی CQRS می باشد. به طور خلاصه در این الگو برای هر عملیات مثلا Insert در دیتابیس یک کلاس Handler وجود دارد و یک کلاس هم مدل Handler را تعریف می کند. این الگو در خالص سازی کلاس ها بسیار کارآمد می باشد.

موارد بالا مهمترین خواسته های Clean Architecture می باشند. 

 

معماری Clean Architecture

 

پروژه های مدرن از چه معماری استفاده می کنند ؟

در کتاب راهنمای معماری پروژه های مدرن برای پیاده سازی یک پروژه تمیز 5 لایه در نظر گرفته شده است.

  1. Domain
  2. Application
  3. Presentation
  4. Infrastructure
  5. Persistence

نکته مهم اینکه لایه در پروژه حتما به این معنی نیست که بایستی برای هر کدام از موارد بالا یک پروژه جداگانه تعریف کرد. اما در حالت ایده آل بهتر است هر کدام از موارد بالا در یک پروژه جداگانه تعریف شود و از بالا به پایین رفرنس دهی انجام شود.

توجه کنید در معماری تمیز نیازی به استفاده از لایه Service و Repository ها نیست. چون اصولا هر عملیاتی در کلاس مخصوص به خود انجام می شود و CommandModel خاص خود را دارد.

 

کاربرد لایه Domain در معماری Clean Architecture

این لایه درونی ترین لایه پروژه می باشد و در مرکز هسته نرم افزار قرار دارد. تعاریف دیتابیس و ساختار دیتابیس و جداول در این لایه قرار می گیرد.

 

کاربرد لایه Application در معماری Clean Architecture

در این لایه قواعد دیتابیس و پروژه، سرویس های مورد نیاز،اعتبارسنجی داده ها و عملیات ذخیره و بازیابی اطلاعات انجام می شود.

 

کاربرد لایه Presentation در معماری Clean Architecture

همان طور که از نام این لایه مشخص است در این لایه UI پروژه و دستورات اصلی برنامه قرار می گیرد. در واقع پروژه اصلی شما در این لایه قرار دارد.

 

کاربرد لایه Infrastructure در معماری Clean Architecture

هر چیزی که در سایر لایه ها جایگاهی ندارد در این لایه جایگذاری می شود. مثلا ایجاد سرویس های ارسال ایمیل یا پیامک، متغیرهای سراسری و ...

 

کاربرد لایه Persistence در معماری Clean Architecture

شاید پیاده سازی این لایه زیاد ضروری نیست چون کاربرد این لایه در لایه Application تعریف شده است. اما برخی از ساختاریهای دیتابیس و یا تغییرات دیتابیسی را می توان در این لایه قرار داد. (این لایه استفاده های خاص دارد)

 

البته همان طور که در بالاتر هم گفته شد در کتاب های مختلف ممکن است لایه بندی ها و یا قواعد متفاوتی ذکر شده باشد. شما می توانید فیلم زیر رو که در مورد انواع معماری های نرم افزاری خصوصا معماری DDD می باشد رو مشاهده کنید. این فیلم مربوط به دوره آموزشی اتوماسیون اداری تحت وب با Asp.net Core 3.1 می باشد.

 

 

 

ویرایش شده در سه شنبه 16 دی 1399 ساعت 01:17:00
به این پاسخ امتیاز بدهید    3
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود