سلام. لطفا اگر می دونید بفرمایید
برای اینکه بدونید معماری Domain Driven Design یا به اختصار DDD چیست در ابتدا بهتر هست که تعریفی از معماری نرم افزار داشته باشم.
هر پروژه ای که انجام می شود نیازمند ساختار خاصی می باشد. مثلا باید مشخص باشد بخش های مختلف نرم افزار چه ارتباطی با هم دارند و چگونه این ارتباطات تعریف شده است. مثلا باید مشخص باشید دیتابیس و کلاسهای داده چگونه با لایه های UI در ارتباط هستند. به طور کلی تعاریف ساختار نرم افزار یا پروژه را معماری نرم افزار می گویند.
به زبان ساده می توان گفت معماری نرم افزار مشخص کننده طرح کلی و اسکلت پروژه می باشد. همچنین معماری یک نرم افزار مشخص می کند برنامه نویسان از چه روشها و قواعدی در طول پیاده سازی نرم افزار باید پیروی کنند. به عبارتی توسط معماری یک شناخت کلی از نرم افزاری که قرار است پیاده سازی شود به دست می آوریم. به عنوان مثال جایگاه دیتابیس، ارتباطاتی که قرار است نرم افزار ما با سایر نرم افزارها داشته باشد، جایگاه کلاسها، جداول، اینترفیس ها، ارتباطات درونی نرم افزار و ... همگی مشخص می شود.
دلایل بسیار زیادی وجود دارد که ما باید برای یک نرم افزار از یک معماری خاص استفاده کنیم. برخی از این دلایل عبارتند از :
نکته بسیار مهمی که باید حتما قبل از شروع یک پروژه به آن توجه کرد این می باشد که حتما بایستی معماری مناسب برای پروژه را به صورت صحیح انتخاب کنید. برای انتخاب معماری به صورت صحیح به موارد زیر توجه کنید :
معماری های زیادی برای نرم افزارها تعریف شده است. برخی از این معماری ها که کاربرد بیشتری دارند عبارتند از :
خب تا اینجای کار فهمیدیم معماری نرم افزار چیست ؟ چگونه معماری مناسب برای یک نرم افزار را انتخاب کنیم ؟ انواع معماری نرم افزار کدام است ؟ حالا به موضوع اصلی بپردازیم و ببنیم معماری DDD چیست و کاربرد این معماری کجاست ؟
معماری DDD چیست ؟
معماری Domain Driven Design یک معماری بسیار مستحکم و قدرمند نرم افزاری می باشد که برای پروژه هایی با پیچیدگی های فراوان طراحی شده است. در این معماری پایین ترین لایه دیتابیس یا داده نمی باشد. بلکه پایین ترین لایه منطق های اصلی پروژه می باشد.
به عنوان مثال فرض کنید قرار است یک بازی شطرنج را پیاده سازی کنید. در این بازی هر مهره چندین حرکت می تواند انجام دهد و از قواعد خاصی نیز پیروی می شود. ترکیب حرکت مهره ها میلیون ها حرکت را به وجود می آورد. قطعا پیاده سازی میلیون ها حرکت تسط کد غیر ممکن است. بنابراین در اینجا بایستی هر مهره را به عنوان یک Value Object تعریف کرد و رفتار آن را مشخص کرد.
مثال دیگری که می توان برای استفاده از معماری DDD گفت پیاده سازی سیستم های پیش بینی آب و هوا می باشد. در این سیستم ها برای پیش بینی هوا هزاران عامل وجود دارد که هر عامل میتواند بر عامل یا عوامل دیگر تاثیر گذار باشد. بنابراین برای پیاده سازی چنین سیستم هایی معمولا از معماری DDD استفاده می شود.
نکته : معماری DDD بر رفتار شناسی سیستم تاکید دارد. در واقع می توان گفت پیاده سازی این معماری تا حد زیادی به نوع نگرش برنامه نویس به نرم افزار بستگی دارد. فرض کنید در یک سیستم سن کاربر دریافت می شود. برای نگهداری سن کاربر در دیتابیس معمولا یک فیلد از نوع int یا byte در نظر گرفته می شود. اما نکته اینجاست که اگر ما سن کاربر را از نوع int در تعریف کنیم در واقع بازه ای بین -32000 تا + 32000 را داریم (به صورت حدودی) و اگر سن کاربر را در دیتابیس از نوع byte تعریف کنیم در واقع سن می تواند بین 0 تا 255 باشد که در هر دو صورت رفتار سیستم غیر معقول می باشد چون ما هیچ گاه کاربری با سن 500 سال یا -36 سال نداریم. بنابراین می توان گفت شعور سیستم پایین می باشد. در معماری DDD با تعریف قواعدی سیستم باشعور رفتار می کند.
برخی از کاربردهای معماری DDD عبارتند از :
در این آموزش (اتوماسیون اداری تحت وب) معماری DDD به صورت محدود پیاده سازی شده است. همچنین فیلم زیر هم در مورد انواع معماری ها می باشد که توصیه می کنم ببینید.
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
54
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
93
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1347
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
116
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
394
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
561
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
54
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
93
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1347
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|