SlideShare a Scribd company logo
1 of 25
Download to read offline
‫توسعه‬ ‫معماریهای‬ ‫و‬ ‫چهارچوبها‬ ‫بررسی‬
‫سازمانی‬ ‫منابع‬ ‫مدیریت‬ ‫سیستم‬
Enterprise Resource Planning
Implementation
Architectures and Frameworks
‫گردآوری‬ ‫و‬ ‫تالیف‬
‫منیع‬ ‫میکائیلی‬ ‫هادی‬
‫آذر‬ ‫استوار‬ ‫وحید‬
‫بهار‬
1401
‫مقدمه‬
‫در‬
‫تکنول‬ ‫پیدایش‬ ‫اخیر‬ ‫سالهای‬
‫معما‬ ‫و‬ ‫وژیهای‬
‫را‬ ‫متعددی‬ ‫مسیرهای‬ ‫فراوان‬ ‫ریهای‬
‫توسعه‬ ‫رو‬ ‫پیش‬
‫داده‬ ‫قرار‬ ‫دهندگان‬
.‫اند‬
‫اینکه‬ ‫با‬
‫این‬
‫ت‬
‫نوع‬
‫برنامه‬ ‫دست‬
‫برنامه‬ ‫بهتر‬ ‫توسعه‬ ‫برای‬ ‫را‬ ‫نویسان‬
‫می‬ ‫باز‬ ‫ها‬
‫معماری‬ ‫یک‬ ‫انتخاب‬ ‫چالش‬ ‫اما‬ ،‫گذارد‬
‫را‬ ‫کارآمد‬ ‫و‬ ‫صحیح‬ ‫رویکرد‬ ‫یا‬
.‫دارد‬ ‫همراه‬ ‫به‬
‫و‬ ‫چهارچوبها‬ ‫این‬ ‫از‬ ‫بسیاری‬ ‫فاقد‬ ‫موجود‬ ‫شده‬ ‫طراحی‬ ‫سیستمهای‬ ‫از‬ ‫بسیاری‬ ‫طرفی‬ ‫از‬
‫می‬ ‫معماریها‬
‫این‬ ‫حال‬ .‫باشد‬
‫می‬ ‫مطرح‬ ‫سوال‬
‫تغییر‬ ‫هدف‬ ‫با‬ ‫یا‬ ‫شده‬ ‫گرفته‬ ‫جدید‬ ‫جامع‬ ‫سیستم‬ ‫یک‬ ‫توسعه‬ ‫به‬ ‫تصمیم‬ ‫اگر‬ ‫که‬ ‫گردد‬
‫ارتقا‬ ‫و‬
،
‫قصد‬
‫سیستم‬ ‫مهاجرت‬
‫به‬
‫تکنولوژی‬
‫را‬ ‫دیگری‬
‫وجود‬
‫دار‬
‫د‬
‫ب‬ ‫بهره‬ ‫رویکرد‬ ‫و‬ ‫روش‬ ‫کدام‬ ‫از‬
‫ر‬
‫د‬
.
‫سیستم‬ ‫یک‬ ‫مهاجرت‬ ‫یا‬ ‫و‬ ‫توسعه‬ ‫هدف‬ ‫با‬ ‫جاری‬ ‫مقاله‬ ‫در‬
‫جامع‬
ERP
‫پرداخته‬ ‫ابزارهایی‬ ‫و‬ ‫روشها‬ ،‫چهارچوبها‬ ،‫معماریها‬ ‫بررسی‬ ‫به‬
‫اس‬ ‫شده‬
‫شرایط‬ ‫بتواند‬ ‫که‬ ‫ت‬
‫ی‬
‫بتوان‬ ‫تا‬ ‫سازد‬ ‫فراهم‬ ‫را‬
‫معماری‬ ‫توسعه‬ ‫موضوعات‬ ‫از‬ ‫یک‬ ‫هر‬ ‫در‬
،
‫گ‬ ‫پیشرو‬ ‫را‬ ‫مناسبی‬ ‫رویکرد‬
‫رفت‬
‫که‬
‫امکان‬ ‫آمده‬ ‫بدست‬ ‫سیستم‬
‫بهره‬
،‫برداری‬
‫مجموعه‬ ‫یک‬ ‫برای‬ ‫طوالنی‬ ‫مدت‬ ‫در‬ ‫نگهداری‬ ‫و‬ ‫توسعه‬
.‫آورد‬ ‫فراهم‬ ‫را‬ ‫صنعتی‬ ‫یا‬ ‫سازمانی‬
‫معم‬
‫جامع‬ ‫سیستم‬ ‫یک‬ ‫توسعه‬ ‫برای‬ ‫نیاز‬ ‫مورد‬ ‫ساختارهای‬ ‫و‬ ‫اریها‬
ERP
‫دسته‬ ‫موضوعی‬ ‫گروه‬ ‫هشت‬ ‫در‬ ‫را‬
‫بندی‬
‫بیان‬ ‫و‬ ‫کرده‬
.‫ایم‬ ‫پرداخته‬ ‫موضوعات‬ ‫از‬ ‫یک‬ ‫هر‬ ‫در‬ ‫شده‬ ‫مطرح‬ ‫رویکردهای‬
‫عالوه‬ ‫مناسب‬ ‫ابزار‬ ‫و‬ ‫معماری‬ ‫انتخاب‬ ‫که‬ ‫است‬ ‫ذکر‬ ‫به‬ ‫الزم‬
‫تاثیر‬
‫ویژگیها‬
‫سیستم‬ ‫خصوصیات‬ ‫و‬
‫به‬ ‫انتخاب‬ ‫امر‬ ‫در‬
‫محیط‬ ‫شرایط‬
‫و‬ ‫توسعه‬
،‫تواناییها‬
‫اعضا‬ ‫دانش‬ ‫میزان‬ ‫و‬ ‫قابلیتها‬
‫ی‬
.‫دارد‬ ‫مستقیم‬ ‫بستگی‬ ‫نیز‬ ‫تیم‬
: ‫اول‬ ‫بخش‬
‫افزار‬ ‫نرم‬ ‫بندی‬ ‫الیه‬
(
Software Layering
)
‫مدیریت‬ ‫و‬ ‫کاهش‬ ‫هدف‬ ‫با‬ ‫افزار‬ ‫نرم‬ ‫بندی‬ ‫الیه‬
‫پیچیدگی‬
‫بزرگ‬ ‫افزارهای‬ ‫نرم‬
‫درحال‬
‫فرایند‬ ‫در‬ ‫معماری‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫خود‬ ‫توسعه‬
‫می‬ ‫شناخته‬ ‫افزار‬ ‫نرم‬ ‫توسعه‬
‫قابلیت‬ ‫و‬ ‫توسعه‬ ‫رویکردهای‬ ‫شفافیت‬ ،‫توسعه‬ ‫تیم‬ ‫اعضاء‬ ‫میان‬ ‫وظایف‬ ‫تقسیم‬ ‫موجب‬ ‫معماری‬ ‫این‬ .‫شود‬
.‫شد‬ ‫خواهد‬ ‫پروژه‬ ‫در‬ ‫راحت‬ ‫و‬ ‫سریع‬ ‫پشتیبانی‬ ‫و‬ ‫نگهداری‬
‫افزار‬ ‫نرم‬ ‫چندالیه‬ ‫معماری‬ ‫یک‬
‫ی‬
‫الیه‬ ‫شامل‬
‫متفا‬ ‫های‬
‫الیه‬ ‫هر‬ ‫و‬ ‫است‬ ‫وتی‬
‫سرویس‬ ‫به‬ ‫مربوط‬
‫یا‬ ‫ها‬
‫می‬ ‫مشخصی‬ ‫وظایف‬
.‫شود‬
‫که‬ ‫آنجایی‬ ‫از‬
‫کار‬ ‫از‬ ‫تر‬ ‫ساده‬ ‫الیه‬ ‫هر‬ ‫در‬ ‫تغییر‬ ‫مجزاست‬ ‫دیگر‬ ‫های‬ ‫الیه‬ ‫از‬ ‫الیه‬ ‫هر‬
‫معماری‬ ‫کل‬ ‫با‬
‫که‬ ‫است‬ ‫شده‬ ‫ارائه‬ ‫مختلف‬ ‫های‬ ‫الیه‬ ‫به‬ ‫افزار‬ ‫نرم‬ ‫بندی‬ ‫تقسیم‬ ‫هدف‬ ‫با‬ ‫مختلفی‬ ‫معماریهای‬ ‫روشهای‬ .‫بود‬ ‫خواهد‬
‫مشهورترین‬
‫آنها‬
‫معماری‬
‫سه‬
( ‫الیه‬
Three-Layer Architecture
( ‫پیازی‬ ‫معماری‬ ‫و‬ )
Onion Architecture
‫می‬ )
.‫باشند‬
1
.
‫الیه‬ ‫سه‬ ‫معماری‬
(
Three-Layer Architecture
)
Three Layer Architecture
‫با‬ ‫معماری‬ ‫این‬ ‫مقاالت‬ ‫بیشتر‬ ‫در‬ ‫که‬ ‫است‬ ‫توضیح‬ ‫به‬ ‫الزم‬ ‫ابتدا‬ ‫در‬
( ‫ردیفه‬ ‫سه‬ ‫معماری‬
Three-Tier
‫می‬ ‫گرفته‬ ‫اشتباه‬ )
‫آن‬ ‫در‬ ‫که‬ ‫شود‬
‫بخش‬ ‫سه‬ ‫به‬ ‫را‬ ‫افزاری‬ ‫نرم‬ ‫سیستم‬
،
( ‫داده‬ ‫ردیف‬
Data Tier
‫ردیف‬ ،)
‫برنامه‬
(Application Tier)
( ‫نمایش‬ ‫ردیف‬ ‫و‬
User-Interface
Tier
‫الیه‬ ‫سه‬ ‫معماری‬ ‫از‬ ‫درست‬ ‫تعریفی‬ ‫ارائه‬ ‫به‬ ‫ابتدا‬ ‫در‬ ‫به‬ ‫لذا‬ .‫است‬ ‫شده‬ ‫بندی‬ ‫تقسیم‬ )
‫می‬ ‫پرداخته‬
.‫شود‬
‫معماری‬
‫سه‬
-
‫واقع‬ ‫در‬ ‫الیه‬
‫برنامه‬ ‫ردیف‬ ‫برای‬ ‫بندی‬ ‫الیه‬ ‫و‬ ‫بندی‬ ‫تقسیم‬ ‫یک‬
(Application Tier)
‫می‬ ‫ردیفه‬ ‫سه‬ ‫معماری‬ ‫در‬
‫شامل‬ ‫که‬ ‫باشد‬
1
-
‫الیه‬
‫دسترسی‬ ‫های‬
( ‫داده‬ ‫به‬
Data-Access Layer
)
،
2
-
( ‫تجاری‬ ‫قوانین‬ ‫الیه‬
Business Rule Layer
‫و‬ )
3
-
( ‫ارائه‬ ‫الیه‬
Presentation Layer
‫می‬ )
.‫باشد‬

‫داده‬ ‫به‬ ‫دسترسی‬ ‫الیه‬
(
Data-Access Layer
)
‫الیه‬ ‫این‬
‫داده‬ ‫تغییرات‬ ‫اعمال‬ ‫و‬ ‫های‬ ‫داده‬ ‫سازی‬ ‫فراهم‬ ‫وظیفه‬
‫می‬ ‫که‬ ‫دارد‬ ‫عهده‬ ‫بر‬ ‫را‬ ‫داده‬ ‫پایگاه‬ ‫برروی‬ ‫ای‬
‫پیاده‬ ‫برای‬ ‫توان‬
‫رویکردهای‬ ‫از‬ ‫یکی‬ ‫از‬ ‫یا‬ ‫داده‬ ‫به‬ ‫دسترسی‬ ‫ساده‬ ‫روشهای‬ ‫از‬ ‫یکی‬ ‫از‬ ‫آن‬ ‫سازی‬
ORM
‫عملیات‬ ‫الیه‬ ‫این‬ .‫کرد‬ ‫استفاده‬
‫می‬ ‫فراهم‬ ‫آن‬ ‫برای‬ ‫را‬ ‫درخواستی‬ ‫نتایج‬ ‫و‬ ‫انجام‬ ‫داده‬ ‫پایگاه‬ ‫برروی‬ ‫را‬ ‫تجاری‬ ‫قوانین‬ ‫الیه‬ ‫توسط‬ ‫درخواستی‬
.‫آورد‬
‫توجه‬ ‫باید‬
‫که‬ ‫داشت‬
‫گونه‬ ‫هر‬
‫با‬ ‫ارتباط‬
‫داده‬ ‫ردیف‬ ‫اصطالح‬ ‫به‬ ‫یا‬ ‫داده‬ ‫پایگاه‬
(
Data Tier
‫می‬ ‫صورت‬ ‫الیه‬ ‫این‬ ‫طریق‬ ‫از‬ )
.‫پذیرد‬

‫الیه‬
‫قوا‬
‫تجاری‬ ‫نین‬
(
Business-Rule Layer
)
‫قوانین‬ ‫الیه‬
‫منطق‬ ‫یا‬
‫واقع‬ ‫در‬ ‫که‬ ‫تجاری‬
‫میا‬ ‫الیه‬
‫می‬ ‫معماری‬ ‫این‬ ‫نی‬
،‫باشد‬
‫ارتباط‬ ‫وظیفه‬ ‫و‬ ‫بوده‬ ‫برنامه‬ ‫اصلی‬ ‫منطق‬ ‫حاوی‬
‫الیه‬ ‫بین‬
‫ارائه‬
‫الیه‬ ‫و‬
‫به‬ ‫دسترسی‬
‫درخواست‬ ‫کلیه‬ ‫واقع‬ ‫در‬ .‫دارد‬ ‫عهده‬ ‫بر‬ ‫را‬ ‫داده‬
‫کاربر‬ ‫تعامل‬ ‫اثر‬ ‫در‬ ‫که‬ ‫هایی‬
‫الیه‬ ‫یا‬ ‫برنامه‬ ‫با‬
‫ارائه‬
‫شده‬ ‫ایجاد‬
‫پردازش‬ ‫تمام‬ ‫و‬ ‫شده‬ ‫منتقل‬ ‫الیه‬ ‫این‬ ‫به‬ ‫است‬
‫شده‬ ‫انجام‬ ‫الیه‬ ‫این‬ ‫در‬ ‫برنامه‬ ‫اصلی‬ ‫منطق‬ ‫اساس‬ ‫بر‬ ‫الزم‬ ‫های‬
‫الیه‬ ‫به‬ ً‫ا‬‫مجدد‬ ‫پردازش‬ ‫این‬ ‫نتیجه‬ ‫و‬
‫ارائه‬
‫منتقل‬
‫ب‬ ‫نمایش‬ ‫ردیف‬ ‫کمک‬ ‫به‬ ‫نتایج‬ ‫و‬
‫درمی‬ ‫نمایش‬ ‫به‬ ‫کاربر‬ ‫رای‬
‫گاهی‬ .‫آید‬
‫گونه‬ ‫به‬ ‫کاربر‬ ‫درخواست‬ ‫اوقات‬
‫الیه‬ ‫که‬ ‫است‬ ‫ای‬
‫قوانین‬
‫الیه‬ ‫با‬ ‫که‬ ‫دارد‬ ‫نیاز‬ ‫آن‬ ‫انجام‬ ‫برای‬ ‫تجاری‬
‫به‬ ‫دسترسی‬
‫یعنی‬ ‫داده‬
Tree Tier Architecture
‫باشد‬ ‫داشته‬ ‫ارتباط‬ ‫خود‬ ‫زیرین‬ ‫الیه‬
.
‫کاربران‬ ‫درخواست‬ ‫روی‬ ‫بر‬ ‫برنامه‬ ‫اصلی‬ ‫منطق‬ ‫اعمال‬ ‫برنامه‬ ‫منطق‬ ‫الیه‬ ‫اصلی‬ ‫وظیفه‬
‫ال‬ ‫بین‬ ‫ارتباط‬ ‫برقراری‬ ‫نیز‬ ‫و‬
‫یه‬
‫ارائه‬
‫الیه‬ ‫و‬
‫به‬ ‫دسترسی‬
‫می‬ ‫داده‬
‫باشد‬
.

‫ارائه‬ ‫الیه‬
(
Presentation Layer
)
‫الیه‬ ‫این‬
( ‫کاربر‬ ‫گرافیکی‬ ‫رابط‬ ‫طریق‬ ‫از‬ ‫کاربر‬ ‫با‬ ‫مستقیم‬ ‫تعامل‬ ‫و‬ ‫اطالعات‬ ‫نمایش‬ ‫وظیفه‬ ‫نادرست‬ ‫باور‬ ‫برخالف‬
GUI
)
‫را‬
‫فقط‬ ‫و‬ ‫ندارد‬
‫داده‬ ‫ساختار‬ ‫با‬ ‫را‬ ‫برنامه‬ ‫منطق‬ ‫الیه‬ ‫از‬ ‫شده‬ ‫حاصل‬ ‫نتایج‬
‫نمایش‬ ‫ردیف‬ ‫اختیار‬ ‫در‬ ‫مناسب‬ ‫ای‬
(User-Interface)
‫می‬ ‫قرار‬
‫می‬ ‫قرار‬ ‫منطق‬ ‫قوانین‬ ‫الیه‬ ‫اختیار‬ ‫در‬ ‫اعتبارسنجی‬ ‫از‬ ‫پس‬ ‫را‬ ‫نمایش‬ ‫ردیف‬ ‫از‬ ‫دریافتی‬ ‫مقادیر‬ ‫طرفی‬ ‫از‬ .‫دهد‬
.‫دهد‬
‫می‬ ‫ارائه‬ ‫الیه‬ ‫نقش‬ ‫شدن‬ ‫روشنتر‬ ‫برای‬
‫نقش‬ ‫از‬ ‫توان‬
Api
‫و‬
Dto
‫نقش‬ ‫یا‬ ‫و‬ ‫گرا‬ ‫سرویس‬ ‫معماری‬ ‫در‬
Controller
‫و‬
ViewModel
‫زیرساخت‬ ‫در‬
mvc
‫نرم‬ ‫یک‬ ‫طراحی‬ ‫برای‬
.‫برد‬ ‫نام‬ ‫ارائه‬ ‫الیه‬ ‫از‬ ‫مثالهایی‬ ‫عنوان‬ ‫به‬ ‫وب‬ ‫تحت‬ ‫افزار‬
‫ویژگیهای‬
‫الیه‬ ‫سه‬ ‫معماری‬
:
‫بندی‬ ‫تقسیم‬ ‫با‬ ‫الیه‬ ‫سه‬ ‫معماری‬
‫مفهومی‬
‫سازی‬ ‫ای‬ ‫پیمانه‬ ‫و‬
‫می‬ ‫رخ‬ ‫افزار‬ ‫نرم‬ ‫توسعه‬ ‫فرایند‬ ‫در‬ ‫که‬ ‫آنچه‬ ‫از‬
‫دهد‬
‫پیاده‬ ‫و‬ ‫تجاری‬ ‫قوانین‬ ‫تحلیل‬ ‫برای‬ ‫روشنی‬ ‫و‬ ‫شفاف‬ ‫نگاه‬
‫فراهم‬ ‫باال‬ ‫پشتیبانی‬ ‫قابلیت‬ ‫با‬ ‫افزاری‬ ‫نرم‬ ‫ارائه‬ ‫و‬ ‫سازی‬
‫می‬
‫الیه‬ ‫طراحی‬ ‫لیکن‬ .‫آورد‬
‫طبقه‬ ‫صورت‬ ‫به‬ ‫ها‬
‫پیاده‬ ‫روند‬ ‫در‬ ‫تغییر‬ ‫که‬ ‫شود‬ ‫می‬ ‫باعث‬ ‫همدیگر‬ ‫برروی‬ ‫هایی‬
-
‫الیه‬ ‫از‬ ‫یک‬ ‫هر‬ ‫سازی‬
‫الیه‬ ‫سایر‬ ‫برروی‬ ‫تغییرات‬ ‫انتشار‬ ‫موجب‬ ‫ها‬
‫از‬ ‫هریک‬ ‫از‬ ‫سازی‬ ‫پیاده‬ ‫استقالل‬ ‫و‬ ‫گردد‬ ‫ها‬
‫الیه‬
.‫شود‬ ‫گرفته‬ ‫ها‬
‫توسعه‬ ‫مفاهیم‬ ‫جداسازی‬ ‫عالرغم‬ ‫واقع‬ ‫در‬
،
( ‫کامل‬ ‫اتصال‬ ‫معماری‬ ‫یک‬ ‫ارائه‬ ‫با‬
Tightly
coupled
،)
‫پیاده‬ ‫نحوه‬ ‫وابستگی‬ ‫دغدغه‬
‫اصل‬ ‫با‬ ‫مغایر‬ ‫کامال‬ ‫امر‬ ‫این‬ ‫که‬ ‫است‬ ‫نشده‬ ‫رفع‬ ‫همدیگر‬ ‫به‬ ‫آنها‬ ‫سازی‬
( ‫ها‬ ‫دغدغه‬ ‫جداسازی‬
Separation of Concerns
)
‫می‬
‫باشد‬
2
.
‫معماری‬
‫پیازی‬
(
Onion Architecture
)
‫پیازی‬ ‫معماری‬
‫نحوه‬ ‫بر‬ ‫دیگری‬ ‫رویکرد‬
‫الیه‬
‫برنامه‬ ‫ردیف‬ ‫بندی‬
(
Application Tier
)
‫ردیفه‬ ‫سه‬ ‫ساختار‬ ‫در‬
(
Three Tier
)
‫این‬ .‫دارد‬
‫معماری‬
‫می‬ ‫ارائه‬ ‫را‬ ‫روشی‬
‫دهد‬
‫تست‬ ،‫نگهداری‬ ‫قابلیت‬ ‫که‬
‫توسعه‬ ‫و‬ ‫پذیری‬
‫می‬ ‫فراهم‬ ‫آسانی‬ ‫به‬ ‫را‬ ‫افزارها‬ ‫نرم‬ ‫پذیری‬
‫سازد‬
‫معماری‬ .
‫پیازی‬
‫تاکید‬
‫عملیات‬ ،‫منطق‬ ‫جدایی‬ ‫و‬ ‫ها‬ ‫وابستگی‬ ‫روی‬ ‫زیادی‬
‫سرویس‬ ،‫ها‬
‫رابط‬ ‫و‬ ‫ها‬
-
‫کاربری‬
‫را‬
‫دارد‬
‫و‬
‫الیه‬
‫بندی‬
‫حول‬
‫م‬
‫حور‬
‫سیستم‬ ‫هسته‬ ‫الیه‬
‫واقع‬ ‫در‬ ‫که‬
‫دامنه‬
(
Domain
)
‫می‬ ‫سیستم‬ ‫طراحی‬
‫دامنه‬ .‫است‬ ‫متمرکز‬ ‫باشد‬
‫یک‬
‫می‬ ‫مشخص‬ ‫را‬ ‫آن‬ ‫ماهیت‬ ‫حقیقت‬ ‫در‬ ‫که‬ ‫سیستم‬
‫الزمه‬ ‫و‬ ‫تالقی‬ ‫نقطه‬ ‫کند‬
‫الیه‬ ‫سایر‬ ‫و‬ ‫باشد‬ ‫می‬ ‫پیازی‬ ‫معماری‬ ‫اصلی‬
‫ها‬
‫مرکزیت‬ ‫با‬ ‫و‬ ‫دامنه‬ ‫منبای‬ ‫بر‬
‫آ‬
‫می‬ ‫شکل‬ ‫ن‬
.‫گیرند‬
‫معماری‬ ‫خالف‬ ‫بر‬ ‫معماری‬ ‫این‬ ‫در‬
‫سه‬
‫وابستگی‬ ‫الیه‬
‫د‬ ‫الیه‬ ‫به‬
‫اده‬
‫بر‬ ‫تمرکز‬ ‫و‬ ‫ندارد‬ ‫وجود‬
‫نرم‬ ‫دامنه‬
‫افزار‬
.‫باشد‬ ‫می‬
‫پی‬
‫سازی‬ ‫اده‬
‫معماری‬
‫پیازی‬
‫مف‬ ‫به‬ ‫شدت‬ ‫به‬
‫ا‬
‫ه‬
‫ی‬
‫م‬
‫معکوس‬
‫سازی‬
( ‫کنترلها‬
Inversion Of Controls
)
( ‫وابستگیها‬ ‫تزریق‬ ‫و‬
Dependency
Injection
)
‫دارد‬ ‫تکیه‬
.
‫مرکز‬ ‫الیه‬ ‫بجز‬ ‫پیازی‬ ‫معماری‬ ‫شده‬ ‫ارائه‬ ‫مقاالت‬ ‫از‬ ‫بسیاری‬ ‫در‬
‫ی‬
( ‫دامنه‬
Domain Layer
)
‫الیه‬ ‫شامل‬
‫سرویس‬
( ‫برنامه‬
Application Service Layer
،)
‫الیه‬
( ‫ارائه‬
Presentation Layer
)
،
‫الیه‬
( ‫زیرساخت‬
Infrastructure Layer
‫و‬ )
‫الیه‬
( ‫تست‬
Test Layer
.‫باشد‬ ‫می‬ ‫نیز‬ )

‫د‬ ‫الیه‬
‫امنه‬
(
Domain Layer
)
Onion Architecture
‫مشخص‬ ‫الیه‬ ‫این‬ ‫در‬ ‫بایستی‬ ‫واقع‬ ‫در‬ .‫باشد‬ ‫می‬ ‫سیستم‬ ‫طراحی‬ ‫شروع‬ ‫نقطه‬ ‫دارد‬ ‫قرار‬ ‫معماری‬ ‫این‬ ‫مرکز‬ ‫در‬ ‫که‬ ‫دامنه‬ ‫الیه‬
‫چه‬ ‫سیستم‬ ‫گردد‬
‫رفتارهایی‬
‫می‬ ‫دنبال‬ ‫را‬
‫کند‬
‫که‬ ‫تا‬
‫آنها‬ ‫عملیات‬ ‫مدل‬
‫صورت‬ ‫به‬
‫واسط‬
(
Interface
)
‫و‬
‫داده‬ ‫ساختار‬
‫های‬
( ‫داده‬ ‫انتقال‬ ‫اشیاء‬ ‫صورت‬ ‫به‬ ‫دامنه‬ ‫نیاز‬ ‫مورد‬
Dto
)
‫پیاده‬ ‫نوع‬ ‫هیچ‬ ‫الیه‬ ‫این‬ ‫در‬ ‫است‬ ‫الزامی‬ .‫گردد‬ ‫مشخص‬
‫عملیاتها‬ ‫از‬ ‫سازی‬
‫نمی‬ ‫صورت‬
‫الیه‬ ‫در‬ ‫قراردادها‬ ‫این‬ ‫سازی‬ ‫پیاده‬ .‫گیرد‬
.‫بود‬ ‫خواهد‬ ‫دیگر‬ ‫های‬

‫الیه‬
‫برنامه‬ ‫سرویس‬
(
Application Service Layer
)
‫الیه‬
‫الیه‬ ‫عنوان‬ ‫به‬ ‫آن‬ ‫از‬ ‫که‬ ‫برنامه‬ ‫سرویس‬
‫تجاری‬ ‫منطق‬ ‫یا‬ ‫قوانین‬
(
Business-Rule Layer
)
‫می‬ ‫یاد‬ ‫نیز‬
‫شود‬
‫الیه‬
‫ای‬
‫پیاده‬ ‫برای‬
‫اعمال‬ ‫و‬ ‫سازی‬
‫تجاری‬ ‫منطق‬ ‫یا‬ ‫قوانین‬
‫هاست‬ ‫آن‬ ‫سازی‬ ‫پیاده‬ ‫و‬ ‫سیستم‬
‫الیه‬ ‫میان‬ ‫واسطی‬ ‫الیه‬ ‫این‬ .
‫های‬
‫می‬ ‫فراهم‬ ‫را‬ ‫دامنه‬ ‫و‬ ‫ارائه‬ ،‫زیرساخت‬
.‫آورد‬

( ‫زیرساخت‬ ‫الیه‬
Infrastructure Layer
)
‫الیه‬
‫زیرساخت‬
( ‫مخرن‬ ‫الیه‬ ‫عنوان‬ ‫به‬ ‫آن‬ ‫از‬ ‫که‬
Repository Later
‫می‬ ‫یاد‬ ‫نیز‬ )
.‫شود‬
‫پیاده‬ ‫بخش‬ ‫ساخت‬ ‫زیر‬ ‫الیه‬
‫سازی‬
‫داده‬ ‫زیرساختهای‬
‫می‬ ‫پروژه‬ ‫دامنه‬ ‫از‬ ‫خارج‬ ‫که‬ ‫است‬ ‫سرویسهایی‬ ‫یا‬ ‫داده‬ ‫با‬ ‫ارتباطات‬ ‫و‬ ‫ایی‬
‫باشند‬
‫زیر‬ ‫الیه‬ ‫کامل‬ ‫استقالل‬ .
‫پیاده‬ ‫در‬ ‫ساخت‬
‫می‬ ‫فراهم‬ ‫را‬ ‫شرایطی‬ ‫سازی‬
‫ت‬ ‫انتشار‬ ‫از‬ ‫مانع‬ ‫آن‬ ‫در‬ ‫تغییر‬ ‫گونه‬ ‫هر‬ ‫که‬ ‫آورد‬
‫الیه‬ ‫سایر‬ ‫به‬ ‫غییرات‬
.‫گردد‬ ‫ها‬

‫ارائه‬ ‫الیه‬
(
Presentation Layer
)
‫پوست‬ ‫الیه‬ ‫عنوان‬ ‫به‬ ‫میتوان‬ ‫را‬ ‫ارائه‬ ‫الیه‬
‫ه‬
‫گرفت‬ ‫نظر‬ ‫در‬ ‫پیاز‬
‫الیه‬ ‫این‬
‫الیه‬ ‫سه‬ ‫معماری‬ ‫در‬ ‫خود‬ ‫نام‬ ‫هم‬ ‫الیه‬ ‫مشابه‬ ‫نیز‬
‫وظیفه‬
‫نمایش‬
‫برای‬
‫کاربر‬
‫و‬ ‫ندارد‬ ‫را‬
‫فقط‬
‫شکل‬ ،‫اعتبارسنجی‬
‫با‬ ‫معماری‬ ‫داده‬ ‫انتقال‬ ‫و‬ ‫دهی‬
‫نمایش‬ ‫ردیف‬
(User-Interface)
‫را‬
‫می‬ ‫فراهم‬
.‫آورد‬

‫الیه‬
( ‫تست‬
Test Layer
)
‫می‬ ‫طراحی‬ ‫برنامه‬ ‫سرویس‬ ‫الیه‬ ‫و‬ ‫دامنه‬ ‫الیه‬ ‫برروی‬ ‫که‬ ‫است‬ ‫دیگری‬ ‫مستقل‬ ‫الیه‬ ‫نیز‬ ‫تست‬ ‫الیه‬
‫از‬ ‫نیاز‬ ‫صورت‬ ‫در‬ ‫و‬ ‫گردد‬
‫پیاده‬ ‫یا‬ ‫و‬ ‫شده‬ ‫ارائه‬ ‫زیرساخت‬ ‫الیه‬ ‫طریق‬
‫سازی‬
‫های‬
(‫جعلی‬
Fake
‫منطق‬ ‫زیرساخت‬ ‫برای‬ )
‫رویه‬ ‫و‬ ‫تجاری‬
‫را‬ ‫سیستم‬ ‫های‬
‫می‬ ‫تست‬ ‫و‬ ‫ارزیابی‬
.‫کند‬
‫ویژگیهای‬
‫معماری‬
‫پیازی‬
:
‫معماری‬
‫محافظت‬ ‫زیرساختی‬ ‫تغییرات‬ ‫برابر‬ ‫در‬ ‫را‬ ‫سیستم‬ ‫اساس‬ ،‫سیستم‬ ‫دامنه‬ ‫برروی‬ ‫تاکید‬ ‫با‬ ‫پیازی‬
‫می‬
.‫کند‬
‫تا‬ ‫است‬ ‫ساختاری‬ ‫به‬ ‫نیازمندی‬ ،‫ای‬ ‫معماری‬ ‫چنین‬ ‫ایجاد‬ ‫برای‬ ‫دلیل‬ ‫مهمترین‬
‫نگهداری‬ ‫قابلیت‬
‫مدت‬ ‫دراز‬ ‫در‬ ‫ها‬ ‫برنامه‬
‫را‬
‫فراهم‬
‫نماید‬
.
‫این‬
‫ر‬ ‫کامل‬ ‫صورت‬ ‫به‬ ‫معماری‬
‫عایت‬
‫اصل‬
‫ها‬ ‫دغدغه‬ ‫جداسازی‬
(
Separation of Concerns
)
‫ر‬
‫در‬ ‫ا‬
‫سیستم‬ ‫سرتاسر‬
‫می‬ ‫فراهم‬
‫آورد‬
.
‫با‬ ‫رابطه‬ ‫در‬ ‫اهمیت‬ ‫حائز‬ ‫نکته‬
‫پیازی‬ ‫معماری‬
‫نیست‬ ‫مناسب‬ ‫اصال‬ ‫سبک‬ ‫و‬ ‫ساده‬ ‫های‬ ‫پروژه‬ ‫برای‬ ‫معماری‬ ‫این‬ ‫که‬ ‫است‬ ‫این‬
‫برای‬ ‫بلکه‬
‫باشد‬ ‫می‬ ‫مناسب‬ ‫پیچیده‬ ‫رفتارهای‬ ‫با‬ ‫بزرگ‬ ‫های‬ ‫برنامه‬
.
‫م‬
‫پیاز‬ ‫عماری‬
‫های‬ ‫معماری‬ ‫بهترین‬ ‫از‬ ‫یکی‬
‫سازی‬ ‫پیاده‬ ‫برای‬ ‫موجود‬
‫سیستم‬ ‫یک‬
‫تست‬ ‫قابل‬
(
Testable
)
( ‫اطمینان‬ ‫قابل‬ ‫و‬
Dependable
‫است‬ )
.
‫جمع‬
‫بندی‬
‫منظور‬ ‫به‬
‫پیاده‬
‫جامع‬ ‫سیستم‬ ‫یک‬ ‫سازی‬
ERP
‫فر‬ ‫که‬
‫از‬ ‫است‬ ‫بهتر‬ ‫است‬ ‫شده‬ ‫مشخص‬ ‫آن‬ ‫در‬ ‫کاری‬ ‫ایندهای‬
‫معماری‬
‫پیازی‬
‫بهره‬
‫توجه‬ ‫با‬ ‫زیرا‬ ‫شود‬ ‫گرفته‬
‫به‬
‫سیستم‬ ‫یک‬ ‫حیات‬ ‫مدت‬
ERP
‫است‬ ‫کم‬ ‫عملیاتها‬ ‫دامنه‬ ‫در‬ ‫تغییر‬ ‫احتمال‬
‫پیاده‬ ‫در‬ ‫تغییر‬ ‫به‬ ‫نیاز‬ ‫و‬ ‫تکنولوژی‬ ‫زیرساختهای‬ ‫تغییر‬ ‫در‬ ‫سرعت‬ ‫با‬ ‫درحالیکه‬
‫استفاده‬ ‫رویکردی‬ ‫از‬ ‫است‬ ‫بهتر‬ ‫آنها‬ ‫سازی‬
‫پروژه‬ ‫در‬ ‫موضوع‬ ‫این‬ .‫باشند‬ ‫داشته‬ ‫را‬ ‫بخشها‬ ‫سایر‬ ‫بر‬ ‫کمتری‬ ‫تاثیر‬ ‫تغییرات‬ ‫تا‬ ‫گردد‬
‫تکنولوژی‬ ‫تغییر‬ ‫یا‬ ‫مهاجرت‬ ‫های‬
‫جداسازی‬ ‫در‬ ‫احتمام‬ ‫دلیل‬ ‫به‬
«
‫زیرساخت‬ ‫های‬ ‫دغدغه‬
‫داده‬ ‫پایگاه‬
»
‫از‬
«
‫نرم‬ ‫توسعه‬ ‫تکنولوژی‬ ‫تغییرات‬ ‫دغدغه‬
‫افزار‬
»
،
.‫داشت‬ ‫خواهد‬ ‫مهمتری‬ ‫نقش‬
‫پیاده‬ ‫چگونه‬
‫کنیم‬ ‫سازی‬
‫طرا‬ ‫برای‬ ‫مفهومی‬ ‫چارچوب‬ ‫یک‬ ‫پیازی‬ ‫معماری‬
‫حی‬
‫می‬ ‫سیستم‬
‫پیاده‬ ‫برای‬ ‫لذا‬ ‫باشد‬
‫آن‬ ‫سازی‬
‫مف‬ ‫با‬ ‫حداقل‬ ‫بایستی‬
‫ا‬
‫ه‬
‫ی‬
‫م‬
‫تکنولوژی‬
1
-
‫وابستگی‬ ‫تزریق‬
( ‫ها‬
Dependency Injection
‫و‬ )
2
-
‫پیاده‬
( ‫واسطها‬ ‫سازی‬
Interface
)
‫آنها‬ ‫از‬ ‫و‬ ‫آشنایی‬
‫از‬ ‫مستقل‬ ‫پیازی‬ ‫معماری‬ ‫از‬ ‫گیری‬ ‫بهره‬ .‫کنید‬ ‫استفاده‬
.‫باشد‬ ‫می‬ ‫تکنولوژی‬ ‫چارچوب‬ ‫یا‬ ‫نویسی‬ ‫برنامه‬ ‫زبان‬
: ‫دوم‬ ‫بخش‬
‫سازمانی‬ ‫افزار‬ ‫نرم‬ ‫پیکربندی‬
(
Enterprise Application Configuration
)
‫توسعه‬ ‫چالشهای‬ ‫با‬ ‫همواره‬ ‫سازمانی‬ ‫جامع‬ ‫سیستم‬ ‫یک‬ ‫توسعه‬ ‫و‬ ‫طراحی‬
‫مقیاس‬ ،‫پذیری‬
‫نگهداری‬ ‫و‬ ‫پذیری‬
‫نقش‬ ‫افزایش‬ ‫با‬ .‫بود‬ ‫روبرو‬
‫دسترس‬ ‫میزان‬ ‫تکنولوژی‬ ‫به‬ ‫نیاز‬ ‫و‬ ‫افزارها‬ ‫نرم‬
‫تولید‬ ‫از‬ ‫سخن‬ ‫هرگاه‬ ‫گذشته‬ ‫سالهای‬ ‫در‬ .‫شد‬ ‫افزوده‬ ‫موجود‬ ‫چالشهای‬ ‫به‬ ‫نیز‬ ‫پذیری‬
‫جامع‬ ‫سیستم‬ ‫یک‬ ‫توسعه‬ ‫و‬
،‫آمده‬ ‫میان‬ ‫به‬
( ‫یکپارچه‬ ‫سیستم‬ ‫یک‬ ‫به‬ ‫رسیدن‬ ‫پیکربندی‬ ‫نگاه‬ ‫همواره‬
Monolithic
‫مجتمع‬ ‫و‬ )
(
Integrated
‫مانند‬ ‫جدیدی‬ ‫مفاهیم‬ ‫پدیداری‬ ‫با‬ ‫لیکن‬ .‫است‬ ‫بوده‬ )
DevOps
‫ت‬ ‫حوزه‬ ‫در‬ ‫بیشتر‬ ‫تعامل‬ ‫ایجاد‬ ‫هدف‬ ‫با‬
،‫افزار‬ ‫نرم‬ ‫وسعه‬
‫کیفیت‬ ‫تضمین‬
‫و‬
‫عملیات‬ ‫کنترل‬
،
‫باعث‬ ‫که‬
‫نرم‬ ‫سریع‬ ‫انتقال‬
‫عملیات‬ ‫به‬ ‫توسعه‬ ‫از‬ ‫افزار‬
‫و‬ ‫ارزش‬ ‫یکپارچه‬ ‫سیستمهای‬ ،‫شد‬ ‫خواهد‬
‫ف‬ ‫شرایط‬ ‫در‬ ‫حال‬ .‫دادند‬ ‫دست‬ ‫از‬ ‫را‬ ‫خود‬ ‫اهمیت‬
‫نرم‬ ‫سازماندهی‬ ‫و‬ ‫پیکربندی‬ ‫برای‬ ‫حل‬ ‫راه‬ ‫و‬ ‫گزینه‬ ‫سه‬ ‫علی‬
‫در‬ ‫را‬ ‫جامع‬ ‫افزارهای‬
‫می‬ ‫زیر‬ ‫موارد‬ ‫شامل‬ ‫که‬ ‫داریم‬ ‫رو‬ ‫پیش‬
.‫شود‬
1
-
( ‫یکپارچه‬ ‫معماری‬
Monolithic Architecture
)
2
-
( ‫سرویسگرا‬ ‫معماری‬
Service-
Oriented Architecture
)
3
-
‫معماری‬
( ‫ریزخدمات‬
Micro-Service Architecture
‫که‬ ،)
‫می‬ ‫پرداخته‬ ‫آنها‬ ‫تشریح‬ ‫به‬ ‫ادامه‬ ‫در‬
.‫شود‬
1
.
‫یکپارچه‬ ‫معماری‬
(
Monolithic Architecture
)
‫معماری‬
‫یکپارچه‬
‫همان‬
‫می‬ ‫سیستمی‬ ‫به‬ ‫دستیابی‬ ‫آن‬ ‫هدف‬ ‫که‬ ‫است‬ ‫حلی‬ ‫راه‬ ‫توسعه‬ ‫رویکرد‬
‫که‬ ‫باشد‬
،‫یکپارچه‬ ‫افزار‬ ‫نرم‬ ‫یک‬ ‫شکل‬ ‫به‬
‫اجرا‬
‫و‬
‫معماری‬ ‫این‬ ‫در‬ .‫باشد‬ ‫مجموعه‬ ‫یک‬ ‫نیازهای‬ ‫تمامی‬ ‫پاسخگوی‬
‫صورت‬ ‫به‬ ‫افزار‬ ‫نرم‬
‫ی‬
‫ک‬
‫پلتفرم‬
‫توسعه‬ ‫واحد‬
‫می‬
‫ی‬
‫ابد‬
.
‫ی‬
‫ک‬
‫پلت‬
‫فرم‬
‫واحد‬
‫دارای‬ ‫اغلب‬
‫ی‬
‫ک‬
‫پا‬
‫ی‬
‫گاه‬
‫برا‬ ‫مشترک‬ ‫داده‬
‫ی‬
‫می‬ ‫سیستم‬ ‫بخشهای‬ ‫تمامی‬
‫نرم‬ ‫سیستم‬ ‫رویکرد‬ ‫این‬ ‫در‬ .‫باشد‬
‫دیدگاه‬ ‫از‬ ‫فقط‬ ‫افزاری‬
‫رده‬
( ‫بندی‬
Tiring
‫می‬ ‫حالت‬ ‫بیشترین‬ ‫در‬ ‫و‬ ‫شده‬ ‫بندی‬ ‫بخش‬ )
‫دهنده‬ ‫سرویس‬ ‫سه‬ ‫طریق‬ ‫از‬ ‫تواند‬
‫صورت‬ ‫به‬ ‫که‬ ‫نمایش‬ ‫و‬ ‫برنامه‬ ،‫داده‬
‫می‬ ‫سرویس‬ ‫هم‬ ‫به‬ ‫متوالی‬
‫که‬ ‫داشت‬ ‫نظر‬ ‫در‬ ‫بایستی‬ .‫باشد‬ ‫شده‬ ‫توزیع‬ ‫دهند‬
‫مدل‬
‫ی‬
‫کپارچه‬
‫قد‬
‫ی‬
‫م‬
‫ی‬
‫ن‬
‫ی‬
،‫ست‬
‫برخ‬ ‫در‬ ‫هم‬ ‫هنوز‬ ‫و‬
‫ی‬
‫موارد‬
‫عال‬
‫ی‬
‫م‬ ‫عمل‬
‫ی‬
.‫کند‬
‫معمار‬
‫ی‬
‫ی‬
‫کپارچه‬
‫راحت‬ ‫به‬ ‫و‬ ‫است‬ ‫راحت‬
‫ی‬
‫ت‬ ‫توسط‬
‫ی‬
‫م‬
‫ها‬ ‫پروژه‬ ‫و‬ ‫ها‬
‫ی‬
‫پذ‬ ‫کوچک‬
‫ی‬
‫رفته‬
‫م‬
‫ی‬
.‫شود‬
‫در‬
‫بس‬
‫ی‬
‫ار‬
‫ی‬
‫از‬
‫برا‬ ‫ها‬ ‫آپ‬ ‫استارت‬
‫ی‬
‫معمار‬ ‫از‬ ‫توسعه‬
‫ی‬
‫ی‬
‫کپارچه‬
‫م‬ ‫استفاده‬
‫ی‬
‫شوند‬
‫و‬
‫زمان‬
‫ی‬
‫هستند‬ ‫مرتبط‬ ‫و‬ ‫وابسته‬ ‫هم‬ ‫به‬ ‫ها‬ ‫ماژول‬ ‫که‬
،
‫مناسبی‬ ‫گزینه‬
‫بود‬ ‫خواهد‬
.
Enterprise Application Configuration

‫مزایا‬
‫معمار‬
‫ی‬
‫ی‬
‫کپارچه‬
‫راحت‬ ‫به‬
‫ی‬
‫قابل‬
‫و‬ ‫توسعه‬
،‫است‬ ‫استقرار‬
‫نرم‬ ‫و‬
‫یک‬ ‫افزارهای‬
‫پارچه‬
‫به‬
‫نوع‬
‫ی‬
‫سر‬ ‫و‬ ‫بهتر‬ ‫عملکرد‬
‫ی‬
‫ع‬
‫تر‬
‫ی‬
‫دارند‬
،
‫ماژول‬
‫نزد‬ ‫هم‬ ‫به‬ ‫ها‬
‫ی‬
‫ک‬
‫هستند‬
‫که‬
‫ی‬
‫ک‬
‫ساختار‬
،‫واحد‬
‫یکدیگر‬ ‫به‬ ‫آنها‬ ‫دسترسی‬
‫بس‬ ‫را‬
‫ی‬
‫ار‬
‫سر‬
‫ی‬
‫ع‬
‫م‬
‫ی‬
‫کند‬
.

‫معایب‬
‫بزرگتر‬
‫ی‬
‫ن‬
‫معمار‬ ‫اشکال‬
‫ی‬
‫ی‬
،‫کپارچه‬
.‫است‬ ‫خطا‬ ‫تحمل‬
‫نرم‬
‫افزارهای‬
‫ی‬
‫کپارچه‬
‫عنوان‬ ‫به‬
‫ی‬
‫ک‬
‫م‬ ‫کار‬ ‫واحد‬
‫ی‬
‫ک‬
‫ن‬
‫مشکل‬ ‫اگر‬ ‫و‬ ‫ند‬
‫ی‬
‫در‬
‫ی‬
‫ک‬
‫و‬
‫ی‬
‫ژگ‬
‫ی‬
‫کار‬ ‫برنامه‬ ‫کل‬ ،‫باشد‬ ‫داشته‬ ‫وجود‬ ‫ساده‬ ‫کوچک‬
‫می‬ ‫متوقف‬
‫شود‬
.
‫بزرگ‬ ‫سیستمهای‬ ‫نگهداری‬ ‫و‬ ‫توسعه‬
‫در‬
‫معمار‬
‫ی‬
‫ی‬
‫کپارچه‬
‫پ‬
‫ی‬
‫چ‬
‫ی‬
‫ده‬
‫دشوار‬ ‫و‬
‫است‬
‫ز‬ ،
‫ی‬
‫را‬
‫ی‬
‫ک‬
‫تغ‬
‫یی‬
‫ر‬
‫م‬
‫ی‬
‫آزما‬ ‫را‬ ‫کامل‬ ‫برنامه‬ ‫کند‬ ‫وادار‬ ‫را‬ ‫ما‬ ‫تواند‬
‫ی‬
‫ش‬
‫کن‬
‫ی‬
‫م‬
‫و‬
‫این‬
‫هم‬
‫ی‬
‫شه‬
‫معمار‬ .‫است‬ ‫بر‬ ‫زمان‬
‫ی‬
‫ی‬
‫کپارچه‬
‫چابک‬
‫ی‬
‫م‬ ‫کاهش‬ ‫را‬
‫ی‬
‫ز‬ ،‫دهد‬
‫ی‬
‫را‬
‫ی‬
‫ک‬
‫رسان‬ ‫روز‬ ‫به‬
‫ی‬
‫و‬ ‫توسعه‬ ‫و‬ ‫کوچک‬
‫ی‬
‫ژگ‬
‫ی‬
‫هم‬
‫ی‬
‫شه‬
‫ت‬ ‫ارتقاء‬ .‫است‬ ‫کامل‬ ‫استقرار‬ ‫مستلزم‬
‫کنولوژ‬
‫ی‬
،
‫دردسر‬
‫ساز‬
‫ب‬ ‫و‬ ‫است‬
‫ی‬
‫شتر‬
‫م‬ ‫اجتناب‬ ‫آن‬ ‫از‬ ‫اوقات‬
‫ی‬
.‫شود‬
2
.
‫سرویسگرا‬ ‫معماری‬
(
Service-Oriented Architecture
)
‫معمار‬
‫ی‬
‫سرو‬
‫ی‬
‫س‬
‫گرا‬
‫یا‬
SOA
‫توسعه‬ ‫برای‬ ‫رویکردی‬
‫نرم‬
‫افزار‬
‫ی‬
‫می‬
‫باشد‬
‫که‬
‫آن‬ ‫در‬
‫عوامل‬ ‫از‬ ‫متشکل‬ ‫برنامه‬
‫ی‬
‫و‬ ‫گسسته‬
‫وابستگی‬ ‫با‬
( ‫ضعیف‬
Loosely Coupled
)
،
‫ن‬ ‫مورد‬ ‫عملکرد‬
‫ی‬
‫از‬
‫را‬ ‫سیستم‬
‫م‬ ‫انجام‬
‫ی‬
‫دهند‬
.
SOA
‫اصل‬ ‫نقش‬ ‫دو‬
‫ی‬
‫مصرف‬ ‫و‬ ‫خدمات‬ ‫دهنده‬ ‫ارائه‬ :‫دارد‬
‫دو‬ ‫هر‬ .‫خدمات‬ ‫کننده‬
‫ی‬
‫ا‬
‫ی‬
‫ن‬
‫م‬ ‫را‬ ‫ها‬ ‫نقش‬
‫ی‬
‫توسط‬ ‫توان‬
‫ی‬
‫ک‬
‫نرم‬ ‫عامل‬
‫افزار‬
‫ی‬
‫ا‬
‫ی‬
‫فا‬
‫نقش‬
‫مفهوم‬ .‫کرد‬
SOA
‫ز‬ ‫موارد‬ ‫در‬
‫ی‬
‫ر‬
:‫است‬ ‫نهفته‬
‫ی‬
‫ک‬
‫کاربرد‬ ‫برنامه‬
‫ی‬
‫م‬
‫ی‬
‫ا‬ ‫گونه‬ ‫به‬ ‫تواند‬
‫ی‬
‫طراح‬
‫ی‬
‫ها‬ ‫ماژول‬ ‫که‬ ‫شود‬ ‫ساخته‬ ‫و‬
‫ی‬
‫طور‬ ‫به‬ ‫آن‬
‫مجتمع‬
‫ی‬
‫کپارچه‬
‫راحت‬ ‫به‬ ‫و‬ ‫شده‬
‫ی‬
‫قابل‬
.‫باشد‬ ‫مجدد‬ ‫استفاده‬
‫سرو‬ ‫هر‬
‫ی‬
‫س‬
‫عملکرد‬
‫ی‬
‫م‬ ‫ارائه‬ ‫انتزاع‬ ‫سطح‬ ‫در‬ ‫را‬
‫ی‬
‫عنوان‬ ‫به‬ ،‫دهد‬
‫ی‬
‫ک‬
‫س‬ ‫جعبه‬
‫ی‬
‫اه‬
‫م‬ ‫گرفته‬ ‫نظر‬ ‫در‬
‫ی‬
‫در‬ ‫که‬ ،‫شود‬
‫جد‬ ‫توسعه‬ ‫سربار‬ ‫از‬ ‫آن‬
‫ی‬
‫د‬
‫جلوگ‬
‫ی‬
‫ر‬
‫ی‬
‫م‬
‫ی‬
.‫شود‬
‫خدمات‬
‫انتزاع‬
‫ی‬
‫م‬ ‫و‬ ‫هستند‬
‫ی‬
‫رو‬ ‫بر‬ ‫توانند‬
‫ی‬
‫فناور‬ ‫هر‬
‫ی‬
‫توسعه‬
‫ی‬
‫ابند‬
‫ب‬ ‫ارتباط‬ .
‫ی‬
‫ن‬
‫را‬ ‫آنها‬
‫م‬
‫ی‬
‫از‬ ‫استفاده‬ ‫با‬ ‫توان‬
‫ی‬
‫ک‬
‫مرکز‬ ‫اتصال‬ ‫نقطه‬
‫ی‬
‫نام‬ ‫به‬
Enterprise Service Bus
.‫داد‬ ‫انجام‬
ESB
‫م‬ ‫مراقبت‬ ‫خدمات‬ ‫تمام‬ ‫از‬
‫ی‬
‫و‬ ‫کند‬
‫م‬ ‫کمک‬ ‫آنها‬ ‫به‬
‫ی‬
‫با‬ ‫تا‬ ‫کند‬
‫ی‬
‫کد‬
‫ی‬
‫گر‬
.‫باشند‬ ‫داشته‬ ‫تعامل‬

‫مزایا‬
‫معمار‬
‫ی‬
‫سرویس‬
‫می‬ ‫فراهم‬ ‫را‬ ‫سرویسها‬ ‫از‬ ‫مجدد‬ ‫استفاده‬ ‫امکان‬ ‫گرا‬
‫پیاده‬ ‫امکان‬ .‫آورد‬
‫پیاده‬ ‫در‬ ‫تنوع‬ ‫و‬ ‫مستقل‬ ‫سازی‬
‫سازی‬
‫می‬ ‫بوجود‬ ‫را‬ ‫آنها‬
.‫دارد‬ ‫باالتری‬ ‫اطمینان‬ ‫و‬ ‫بهتر‬ ‫نگهداری‬ ‫قابلیت‬ .‫آورد‬
‫ماژول‬
‫ها‬
‫توسعه‬ ‫امکان‬ ‫مستقل‬ ‫سرویسهای‬ ‫قالب‬ ‫در‬
‫می‬ ‫پیدا‬ ‫موازی‬
.‫کنند‬

‫معایب‬
‫اصل‬ ‫اشکال‬
‫ی‬
‫معمار‬
‫ی‬
‫سرو‬
‫ی‬
‫س‬
‫پ‬ ‫گرا‬
‫ی‬
‫چ‬
‫ی‬
‫دگ‬
‫ی‬
‫سرو‬ ‫هر‬ .‫است‬ ‫آن‬
‫ی‬
‫س‬
‫با‬
‫ی‬
‫د‬
‫اطم‬
‫ی‬
‫نان‬
‫پ‬ ‫که‬ ‫کند‬ ‫حاصل‬
‫ی‬
‫ام‬
‫تحو‬ ‫موقع‬ ‫به‬ ‫ها‬
‫ی‬
‫ل‬
‫م‬ ‫داده‬
‫ی‬
.‫شوند‬
‫یکپارچه‬ ‫معماری‬ ‫نسبت‬ ‫به‬
‫هز‬
‫ی‬
‫نه‬
‫ها‬
‫ی‬
‫می‬ ‫بیشتری‬ ‫انسانی‬ ‫منابع‬ ‫و‬ ‫توسعه‬
‫بایستی‬ ‫توسعه‬ ‫تیم‬ ‫اعضاء‬ ‫و‬ ‫طلبد‬
‫سرویس‬ ‫توسعه‬ ‫مفاهیم‬ ‫به‬
‫است‬ ‫ممکن‬ ‫سرویسها‬ .‫باشند‬ ‫داشته‬ ‫آشنایی‬ ‫گرا‬
‫افزایش‬ ‫باعث‬ ‫و‬ ‫کنند‬ ‫ایجاد‬ ‫عملیاتی‬ ‫سربار‬
.‫گردد‬ ‫پاسخگویی‬ ‫زمان‬ ‫نسبی‬
3
.
‫معماری‬
‫ریزخدمات‬
(
Micro-Service Architecture
)
‫معمار‬
‫ی‬
‫ریزخدمات‬
‫نوع‬
‫ی‬
‫از‬
‫معمار‬
‫ی‬
‫سرو‬
‫ی‬
‫س‬
‫اجزا‬ ‫ساخت‬ ‫بر‬ ‫که‬ ‫است‬ ‫گرا‬
‫کامال‬ ‫ی‬
‫مستقل‬
‫جامع‬ ‫سیستم‬ ‫یک‬ ‫تشکیل‬ ‫برای‬
.‫دارد‬ ‫تمرکز‬
‫برنامه‬ ‫برخالف‬
‫ها‬
‫ی‬
‫ی‬
‫کپارچه‬
‫به‬ ‫که‬
‫عنوان‬
‫ی‬
‫ک‬
‫تقس‬ ‫واحد‬
‫ی‬
‫م‬
‫ناپذ‬
‫ی‬
‫ر‬
‫شده‬ ‫ساخته‬
‫برنامه‬ ،‫اند‬
‫ها‬
‫ی‬
‫م‬
‫ی‬
‫کروسرو‬
‫ی‬
‫س‬
‫چند‬ ‫از‬
‫ی‬
‫ن‬
‫مؤلفه‬
‫کامال‬
‫تشک‬ ‫مستقل‬
‫ی‬
‫ل‬
‫شده‬
.‫اند‬
‫می‬ ‫فراهم‬ ‫سیستم‬ ‫یک‬ ‫توزیع‬ ‫برای‬ ‫را‬ ‫شرایط‬ ‫ای‬ ‫بالقوه‬ ‫بطور‬ ‫معماری‬ ‫این‬
‫بخشهای‬ ‫از‬ ‫یک‬ ‫هر‬ ‫بتوان‬ ‫تا‬ ‫آورد‬
‫سروی‬ ‫یک‬ ‫در‬ ‫مستقل‬ ‫طور‬ ‫به‬ ‫سرویس‬ ‫یک‬ ‫قالب‬ ‫در‬ ‫را‬ ‫سیستم‬
‫س‬
‫راه‬ ‫و‬ ‫نصب‬ ‫جدا‬ ‫دهنده‬
.‫کرد‬ ‫اندازی‬
‫م‬
‫ی‬
‫کروسرو‬
‫ی‬
‫س‬
‫ها‬
‫ا‬ ‫به‬ ً‫ا‬‫صرف‬
‫ی‬
‫ن‬
‫دل‬
‫ی‬
‫ل‬
‫فرد‬ ‫به‬ ‫منحصر‬ ‫ارزش‬ ‫که‬ ‫هستند‬ ‫مهم‬
‫ی‬
‫ساده‬ ‫راه‬ ‫در‬ ‫را‬
‫ساز‬
‫ی‬
‫پ‬
‫ی‬
‫چ‬
‫ی‬
‫دگ‬
‫ی‬
‫س‬ ‫در‬
‫ی‬
‫ستم‬
‫ها‬
‫م‬ ‫اضافه‬
‫ی‬
‫کنند‬
‫تقس‬ ‫با‬ .
‫ی‬
‫م‬
‫س‬ ‫کردن‬
‫ی‬
‫ستم‬
‫ی‬
‫ا‬
‫برنامه‬
‫بخش‬ ‫به‬ ‫خود‬
‫ها‬
‫ی‬
‫کوچک‬
،‫تر‬
‫و‬ ‫کاهش‬ ‫را‬ ‫پیچیدگیها‬
‫انسجام‬
‫می‬ ‫افزایش‬ ‫را‬ ‫داخلی‬
.‫دهد‬
‫با‬
‫ب‬ ‫اتصال‬ ‫کاهش‬
‫ی‬
‫ن‬
‫قطعات‬
‫بخش‬ ‫هر‬ ‫درک‬
‫آسان‬
‫ت‬
‫ر‬
‫مق‬ ،
‫ی‬
‫اس‬
‫پذ‬
‫ی‬
‫رتر‬
‫و‬
‫قابل‬
‫تغ‬
‫یی‬
‫ر‬
‫بود‬ ‫خواهد‬ ‫تر‬
.
‫معماری‬ ‫این‬
‫افزایش‬ ‫با‬ ‫را‬ ‫سیستم‬ ‫در‬ ‫پایداری‬
‫چابک‬
‫فراهم‬
‫سمت‬ ‫به‬ ‫و‬
‫ایجاد‬
‫برای‬ ‫الزم‬ ‫زیرساختهای‬
DevOps
‫م‬ ‫حرکت‬
‫ی‬
.‫کند‬

‫مزایا‬
‫معمار‬
‫ی‬
‫شرایط‬ ‫ریزخدمات‬
‫آزما‬ ،‫توسعه‬
‫ی‬
‫ش‬
‫آسان‬ ‫استقرار‬ ‫و‬
‫می‬ ‫فراهم‬ ‫پیکربندی‬ ‫معماریهای‬ ‫سایر‬ ‫به‬ ‫نسبت‬ ‫تری‬
‫از‬ .‫آورد‬
‫را‬ ‫پاسخگویی‬ ‫قابلیت‬ ‫و‬ ‫پذیری‬ ‫مقیاس‬ ‫آن‬ ‫تعدد‬ ‫ایجاد‬ ‫و‬ ‫سرویس‬ ‫یک‬ ‫از‬ ‫موازی‬ ‫اجراهای‬ ‫افزودن‬ ‫با‬ ‫هستید‬ ‫قادر‬ ‫شما‬ ‫طرفی‬
‫می‬ ‫فراهم‬ ‫را‬ ‫امکان‬ ‫این‬ ‫که‬ ‫است‬ ‫دیگری‬ ‫مهم‬ ‫مزیب‬ ‫چابکی‬ .‫دهید‬ ‫افزایش‬ ‫چشمگیری‬ ‫طرز‬ ‫به‬
‫ی‬ ‫ماژولهای‬ ‫تا‬ ‫سازد‬
‫سیستم‬ ‫ک‬
‫یا‬ ‫چارچوب‬ ‫در‬ ‫تواند‬ ‫می‬ ‫سرویس‬ ‫هر‬ .‫دهید‬ ‫ارتقا‬ ‫یا‬ ‫و‬ ‫تغییر‬ ،‫تصحیح‬ ‫سیستم‬ ‫کل‬ ‫توقف‬ ‫بدون‬ ‫را‬
‫زبان‬
‫ها‬
‫ی‬
‫نو‬ ‫برنامه‬
‫ی‬
‫س‬
‫ی‬
‫مزیت‬ ‫عنوان‬ ‫به‬ ‫است‬ ‫ممکن‬ ‫هم‬ ‫موضوع‬ ‫این‬ ‫که‬ ‫نیست‬ ‫توسعه‬ ‫واحد‬ ‫رویکرد‬ ‫یک‬ ‫از‬ ‫تبعیت‬ ‫به‬ ‫لزومی‬ ‫و‬ ‫شود‬ ‫نوشته‬ ‫خاصی‬
‫گرف‬ ‫درنظر‬ ‫توسعه‬ ‫فرایند‬ ‫در‬ ‫عیب‬ ‫عنوان‬ ‫به‬ ‫هم‬ ‫و‬
.‫شود‬ ‫ته‬

‫معایب‬
‫بزرگتر‬
‫ی‬
‫ن‬
‫ضعف‬ ‫نقطه‬
‫ریزخدماتها‬
‫پ‬ ‫در‬
‫ی‬
‫چ‬
‫ی‬
‫دگ‬
‫ی‬
‫تقس‬ .‫است‬ ‫نهفته‬ ‫آنها‬
‫ی‬
‫م‬
‫ی‬
‫ک‬
‫به‬ ‫برنامه‬
‫مستقل‬ ‫سرویس‬ ‫چند‬
‫مستلزم‬
‫مد‬
‫ی‬
‫ر‬
‫ی‬
‫ت‬
‫ب‬
‫ی‬
‫شتر‬
‫آنها‬ ‫ارتباط‬ ‫نحوه‬ ‫و‬ ‫عناصر‬
‫ا‬ .‫است‬
‫ی‬
‫ن‬
‫معمار‬ ‫نوع‬
‫ی‬
‫قبل‬ ‫معماری‬ ‫دو‬ ‫نسبت‬ ‫به‬
‫ن‬
‫ی‬
‫از‬
‫بیشتری‬ ‫خیلی‬
‫برنامه‬ ‫به‬
‫ر‬
‫ی‬
‫ز‬
‫ی‬
‫دق‬
‫ی‬
،‫ق‬
‫ز‬ ‫تالش‬
‫ی‬
،‫اد‬
‫ت‬ ‫منابع‬
‫ی‬
‫م‬
‫ی‬
.‫دارد‬ ‫مهارت‬ ‫و‬
‫معماری‬ ‫این‬ ‫در‬
‫سازگار‬
‫ی‬
‫مد‬ ‫و‬ ‫ها‬ ‫داده‬
‫ی‬
‫ر‬
‫ی‬
‫ت‬
‫سخت‬ ‫تراکنش‬
‫م‬ ‫تر‬
‫ی‬
‫شود‬
‫ز‬
‫ی‬
‫را‬
‫سرو‬ ‫هر‬
‫ی‬
‫س‬
‫ی‬
‫ک‬
‫پا‬
‫ی‬
‫گاه‬
‫داده‬
‫مستقل‬
‫دارد‬
‫خواهد‬ ‫پیچیده‬ ‫و‬ ‫سخت‬ ‫میزان‬ ‫همان‬ ‫به‬ ‫نیز‬ ‫آزمون‬ ‫و‬ ‫اعتبارسنجی‬ ‫فرایند‬ ،
‫زیرا‬ ‫بود‬
‫سرو‬ ‫هر‬
‫ی‬
‫س‬
‫با‬
‫ی‬
‫د‬
‫سرویسها‬ ‫سایر‬ ‫با‬ ‫مواجهه‬ ‫در‬ ‫سپس‬ ‫و‬ ‫جدا‬ ‫بصور‬
‫آزما‬
‫ی‬
‫ش‬
‫نظار‬ ‫و‬
‫شود‬ ‫ت‬
.
‫جمع‬
‫بندی‬
‫الیه‬ ‫که‬ ‫همانگونه‬
‫تقسیم‬ ‫توسعه‬ ‫مفاهیم‬ ‫مبنای‬ ‫بر‬ ‫آن‬ ‫افقی‬ ‫نگاه‬ ‫با‬ ‫افزاری‬ ‫نرم‬ ‫سیستم‬ ‫یک‬ ‫بندی‬
‫می‬ ‫بندی‬
‫پیکربندی‬ ،‫کند‬
‫در‬ ‫سعی‬ ‫عمودی‬ ‫نگاه‬ ‫یک‬ ‫با‬ ‫نیز‬ ‫جامع‬ ‫سیستم‬ ‫یک‬
‫پیمانه‬
(‫سازی‬ ‫ای‬
Modularity
‫بخش‬ ‫و‬ )
.‫دارد‬ ‫آن‬ ‫بندی‬
‫معماری‬
‫سیستمهایی‬ ‫مناسب‬ ‫ریزخدمات‬
‫مق‬ ‫در‬
‫ی‬
‫اس‬
‫بزرگ‬
(
Large Scale
‫می‬ )
‫را‬ ‫بزرگی‬ ‫جغرافیایی‬ ‫گستره‬ ‫احتماال‬ ‫که‬ ‫باشد‬
‫می‬ ‫پوشش‬
‫می‬ ‫ایجاد‬ ‫ناگواری‬ ‫عواقب‬ ‫و‬ ‫نبوده‬ ‫پذیرش‬ ‫قابل‬ ‫آنها‬ ‫در‬ ‫خدمات‬ ‫توقف‬ ‫و‬ ‫دهند‬
.‫کند‬
‫رو‬
‫ی‬
‫کرد‬
‫سرویسگرا‬
‫برا‬
‫ی‬
‫س‬
‫ی‬
‫ستم‬
‫ها‬
‫ی‬
‫پ‬
‫ی‬
‫چ‬
‫ی‬
‫ده‬
‫سازمان‬
‫ی‬
‫مناسب‬
‫است‬ ‫تر‬
‫توسعه‬ ‫برای‬ ‫شرایطی‬ ‫بایستی‬ ‫و‬ ‫دارد‬ ‫اهمیت‬ ‫سیستمها‬ ‫میان‬ ‫تعامالت‬ ‫که‬
.‫کرد‬ ‫فراهم‬ ‫موازی‬ ‫نگهداری‬ ‫و‬
‫ی‬
‫ک‬
‫رو‬
‫ی‬
‫کرد‬
‫ی‬
‫کپارچه‬
‫ن‬
‫ی‬
‫ز‬
‫برا‬
‫ی‬
‫محدود‬ ‫زمان‬ ‫و‬ ‫افراد‬ ‫با‬ ‫تیمهایی‬ ‫یا‬ ‫و‬ ‫کوچک‬ ‫سیستمهای‬
‫می‬ ‫مناسب‬
‫سیستمهای‬ ‫ماهیت‬ ‫به‬ ‫توجه‬ ‫با‬ ‫لذا‬ .‫باشد‬
ERP
‫می‬ ‫توصیه‬
‫حوزه‬ ‫در‬ ‫کافی‬ ‫داش‬ ‫کسب‬ ‫از‬ ‫پس‬ ‫شود‬
‫م‬
‫عماری‬
‫سرویس‬
‫گرا‬
‫طراحی‬ ‫برای‬ ‫آن‬ ‫از‬ ،
.‫گردد‬ ‫استفاده‬ ‫سیستم‬
‫مهم‬ ‫نکته‬
‫نرم‬ ‫مهندسی‬ ‫ادبیات‬ ‫در‬
‫معماری‬ ‫از‬ ‫افزار‬
‫ها‬
‫و‬
‫مدلهای‬
‫طراحی‬
‫می‬ ‫برده‬ ‫نام‬ ‫بسیاری‬
‫که‬ ‫شود‬
‫شده‬ ‫مطرح‬ ‫موارد‬ ‫بر‬ ‫عالوه‬
‫می‬
‫توان‬
‫از‬
«
‫تمیز‬ ‫معماری‬
»
(
Clean Architecture
،)
«
‫رویداد‬ ‫معماری‬
-
‫گرا‬
»
(
Event-Driven Architecture
،)
‫مدل‬
«
‫پرس‬ ‫وظایف‬ ‫جداسازی‬
‫فرمان‬ ‫و‬ ‫وجو‬
»
(
Command Query Responsibility Segregation
‫یا‬ )
‫مدل‬
«
‫توسعه‬
‫محور‬ ‫آزمون‬
»
(
Test Driven Development
‫معماری‬ ‫این‬ ‫است‬ ‫بدیهی‬ .‫کرد‬ ‫اشاره‬ ‫نیز‬ )
‫یا‬ ‫ها‬
‫مدلها‬
‫همواره‬
‫نمی‬ ‫یکدیگر‬ ‫با‬ ‫تضاد‬ ‫در‬
‫گزینش‬ ‫امکان‬ ‫آنها‬ ‫از‬ ‫یک‬ ‫هر‬ ‫و‬ ‫باشند‬
‫می‬ ‫فراهم‬ ‫را‬ ‫موضوعی‬ ‫در‬
‫موضوع‬ ‫در‬ ‫اگرچه‬ ‫بنابرین‬ .‫آورد‬
‫الیه‬
‫سه‬ ‫یا‬ ‫پیازی‬ ‫معماریهای‬ ‫از‬ ‫یکی‬ ‫انتخاب‬ ‫به‬ ‫ناچار‬ ‫بندی‬
‫می‬ ‫لیکن‬ ‫بود‬ ‫خواهیم‬ ‫الیه‬
‫موضوع‬ ‫در‬ ،‫آن‬ ‫درکنار‬ ‫توان‬
‫پیکربندی‬
،
‫الیه‬ ‫معماری‬ ‫درکنار‬ ‫و‬ ‫انتخاب‬ ‫شده‬ ‫مطرح‬ ‫موارد‬ ‫بین‬ ‫از‬ ‫را‬ ‫دیگری‬ ‫معماری‬
‫حت‬ ‫یا‬ ‫و‬ .‫برد‬ ‫کار‬ ‫به‬ ‫بندی‬
‫برای‬ ‫ی‬
‫بهره‬ ‫در‬ ‫تاکید‬
‫از‬ ‫گیری‬
‫رویکردهای‬
( ‫تمیز‬ ‫کد‬
Clean Code
)
‫از‬
«
‫تمیز‬ ‫معماری‬
»
‫باهم‬ ‫منافاتی‬ ‫اینها‬ ‫و‬ ‫جست‬ ‫بهره‬
‫پروژه‬ ‫است‬ ‫ممکن‬ ‫بنابراین‬ .‫داشت‬ ‫نخواهند‬
‫از‬ ‫همزمان‬ ‫که‬ ‫گردد‬ ‫تعریف‬ ‫ای‬
«
‫پیازی‬ ‫معماری‬
»
،
«
‫معماری‬
‫تمیز‬
»
‫و‬
«
‫معماری‬
‫ریزخدمات‬
»
‫همراه‬ ‫به‬
‫مدل‬
«
‫توسعه‬
‫محور‬ ‫آزمون‬
»
.‫باشد‬ ‫شده‬ ‫استفاده‬ ‫آن‬ ‫در‬
‫پیاده‬ ‫چگونه‬
‫کنیم‬ ‫سازی‬
‫معماری‬
‫سرویس‬
‫تقسیم‬ ‫دلیل‬ ‫به‬ ‫گرا‬
‫بندی‬
‫سیستم‬
‫پیمانه‬ ‫به‬
‫پیاده‬ ‫برای‬ ‫تحلیلی‬ ‫نگاه‬ ‫نیازمند‬ ‫منطقی‬ ‫های‬
‫می‬ ‫سازی‬
‫باشد‬
‫می‬ ‫بنابرین‬
‫تکنیک‬ ‫از‬ ‫توان‬
«
‫محور‬ ‫دامنه‬ ‫طراحی‬
»
(
Domain Driven Design
)
‫مفاهیم‬ ‫و‬ ‫سیستم‬ ‫بندی‬ ‫بخش‬ ‫برای‬
Web Api
‫پیاده‬ ‫برای‬
‫کتابخانه‬ ‫از‬ .‫کرد‬ ‫استفاده‬ ‫سرویسها‬ ‫سازی‬
‫مانند‬ ‫هایی‬
Swagger
‫مانند‬ ‫ابزارهایی‬ ‫یا‬
Postman
‫سرویس‬ ‫ساختار‬ ‫نمایش‬ ‫و‬ ‫بررسی‬ ‫برای‬
‫می‬ ‫نیز‬ ‫ها‬
.‫کرد‬ ‫استفاده‬ ‫توان‬
: ‫سوم‬ ‫بخش‬
‫داده‬ ‫پایگاه‬ ‫با‬ ‫ارتباط‬
(
Data Access & ORM
)
‫بخش‬ ‫مهمترین‬ ‫داده‬ ‫پایگاه‬ ‫و‬ ‫داده‬ ‫به‬ ‫دسترسی‬
‫سیستم‬ ‫یک‬ ‫از‬
ERP
‫الزم‬ ‫گرایی‬ ‫شی‬ ‫طراحی‬ ‫و‬ ‫زیرساختها‬ ‫به‬ ‫توجه‬ ‫با‬ ‫که‬ ‫باشد‬ ‫می‬
‫شی‬ ‫نگاشت‬ ‫رویکردهای‬ ‫از‬ ‫یکی‬ ‫از‬ ‫است‬
-
( ‫ای‬ ‫رابطه‬
ORM
.‫گردد‬ ‫استفاده‬ )
ORM
‫ی‬
‫ک‬
‫تکن‬
‫ی‬
‫ک‬
‫نو‬ ‫برنامه‬
‫ی‬
‫س‬
‫ی‬
‫برا‬
‫ی‬
‫نگاشت‬
‫داده‬
‫ها‬
‫و‬ ‫ای‬ ‫رابطه‬ ‫داده‬ ‫پایگاه‬ ‫ی‬
‫ها‬ ‫زبان‬
‫ی‬
‫نو‬ ‫برنامه‬
‫ی‬
‫س‬
‫ی‬
‫ش‬
‫ی‬
.‫است‬ ‫گرا‬
‫که‬
‫واقع‬ ‫در‬
‫ی‬
‫ک‬
"
‫پا‬
‫ی‬
‫گاه‬
‫ش‬ ‫داده‬
‫ی‬
‫مجاز‬
‫ی‬
"
‫ا‬
‫ی‬
‫جاد‬
‫م‬
‫ی‬
‫کند‬
.
‫همواره‬
‫با‬ ‫مواجهه‬ ‫نحوه‬ ‫در‬ ‫اساسی‬ ‫رویکرد‬ ‫دو‬
ORM
‫پیاده‬ ‫و‬ ‫طراحی‬ ‫مسیر‬ ‫که‬ ‫دارد‬ ‫وجود‬
‫می‬ ‫مشخص‬ ‫را‬ ‫سیستم‬ ‫سازی‬
‫رویکردهای‬ .‫کند‬
‫کد‬
-
( ‫اول‬
Code-First
‫داده‬ ‫و‬ )
-
( ‫اول‬
Data-First
‫کد‬ ‫رویکرد‬ ‫در‬ ‫که‬ )
-
‫ساختار‬ ‫و‬ ‫کالسها‬ ‫ابتدا‬ ‫سیستم‬ ‫طراحی‬ ‫در‬ ‫منظور‬ ‫به‬ ‫اول‬
‫شی‬
‫می‬ ‫شکل‬ ‫برنامه‬ ‫گرایی‬
‫می‬ ‫طراحی‬ ‫داده‬ ‫پایگاه‬ ‫آن‬ ‫اساس‬ ‫بر‬ ‫سپس‬ ‫گیرد‬
‫ساختار‬ ‫سپس‬ ‫و‬ ‫طراحی‬ ‫داده‬ ‫پایگاه‬ ‫دوم‬ ‫رویکرد‬ ‫در‬ .‫گردد‬
‫شی‬ ‫مدل‬
‫می‬ ‫شکل‬ ‫آن‬ ‫روی‬ ‫از‬ ‫برنامه‬ ‫گرایی‬
.‫گیرد‬
Object Relational Mapping
1
.
‫کد‬ ‫طراحی‬
-
‫اول‬
(
Code-First
)
‫رو‬ ‫در‬
‫ی‬
‫کرد‬
Code First
‫کالس‬ ،
‫با‬ ‫ابتدا‬ ‫ها‬
‫اول‬ ‫تمرکز‬
‫ی‬
‫ه‬
‫رو‬
‫ی‬
‫دامنه‬
‫ی‬
‫ک‬
‫ا‬ ‫برنامه‬
‫ی‬
‫جاد‬
‫م‬
‫ی‬
‫شوند‬
‫م‬ .
‫ی‬
‫طراح‬ ‫بدون‬ ‫توان‬
‫ی‬
‫داده‬ ‫پایگاه‬
‫شروع‬ ،
‫ا‬ ‫به‬
‫ی‬
‫جاد‬
‫و‬ ‫و‬ ‫ها‬ ‫کالس‬
‫ی‬
‫ژگ‬
‫ی‬
‫ها‬
‫ی‬
‫ن‬ ‫مورد‬
‫ی‬
‫از‬
‫ک‬
‫رد‬
‫سپس‬ .
‫طریق‬ ‫از‬ ‫یا‬
ORM
‫دستی‬ ‫بصورت‬ ‫یا‬
‫پا‬ ‫و‬ ‫جداول‬
‫ی‬
‫گاه‬
‫را‬ ‫داده‬
‫بر‬
‫ا‬ ‫آن‬ ‫اساس‬
‫ی‬
‫جاد‬
.‫شود‬
‫که‬ ‫داشت‬ ‫نظر‬ ‫در‬ ‫باید‬
Code First
‫ی‬
‫ک‬
‫رو‬
‫ی‬
‫کرد‬
‫بس‬
‫ی‬
‫ار‬
‫کامل‬ ‫کنترل‬ ‫و‬ ‫است‬ ‫محبوب‬
‫ی‬
‫رو‬ ‫بر‬
‫ی‬
‫جا‬ ‫به‬ ‫کد‬
‫ی‬
‫فعال‬
‫ی‬
‫ت‬
‫داده‬ ‫پایگاه‬
.‫دارد‬
‫در‬
‫ا‬
‫ی‬
‫ن‬
‫م‬ ‫روش‬
‫ی‬
‫توان‬
‫تمام‬
‫ی‬
‫عمل‬
‫ی‬
‫ات‬
‫پا‬
‫ی‬
‫گاه‬
‫از‬ ‫را‬ ‫داده‬
‫طریق‬
‫کد‬
‫اعمال‬ ‫از‬ ‫انجام‬ ‫برنامه‬
‫تغ‬
‫یی‬
‫رات‬
‫دست‬
‫ی‬
‫پا‬ ‫به‬
‫ی‬
‫گاه‬
‫داده‬
.‫کرد‬ ‫اجتناب‬
‫در‬
‫ا‬
‫ی‬
‫ن‬
‫با‬ ‫مورد‬
‫ی‬
‫د‬
‫موجود‬
‫ی‬
‫ت‬
‫ها‬
‫ی‬
POCO
‫ا‬ ‫داده‬ ‫مدل‬ ‫عنوان‬ ‫به‬ ‫را‬
‫ی‬
‫جاد‬
‫کن‬
‫ی‬
‫د‬
.
‫مزایا‬
:

‫خودکار‬ ‫کامال‬ ‫صورت‬ ‫به‬
‫م‬
‫ی‬
‫توان‬
‫ی‬
‫ک‬
‫پا‬
‫ی‬
‫گاه‬
‫ن‬ ‫مورد‬ ‫جداول‬ ‫و‬ ‫داده‬
‫ی‬
‫از‬
‫از‬
‫را‬ ‫کالسها‬
‫ا‬
‫ی‬
‫جاد‬
‫ک‬
.‫رد‬

‫برا‬
‫ی‬
‫یا‬ ‫سیستم‬ ‫یک‬ ‫طراحی‬ ‫شروع‬ ‫فرایند‬
‫ها‬ ‫برنامه‬
‫ی‬
‫کوچک‬
‫ی‬
‫نم‬ ‫داده‬ ‫گسترده‬ ‫پردازش‬ ‫شامل‬ ‫که‬
‫ی‬
‫شوند‬
‫می‬ ‫کاربردی‬ ‫بسیار‬
.‫باشد‬

‫دسترس‬ ‫امکان‬
‫ی‬
‫کد‬ ‫به‬ ‫کامل‬
‫را‬
‫م‬ ‫فراهم‬
‫ی‬
‫م‬ ‫و‬ ‫کند‬
‫ی‬
‫توان‬
‫راحت‬ ‫به‬
‫ی‬
‫تغ‬
‫یی‬
‫رات‬
‫ده‬ ‫انجام‬ ‫کد‬ ‫در‬ ‫را‬
‫ی‬
‫د‬
.

‫شی‬ ‫طراحی‬ ‫محدودیدهای‬ ‫و‬ ‫استانداردها‬ ‫ایجاد‬ ‫با‬
‫از‬ ‫ساختارمندی‬ ‫و‬ ‫درست‬ ‫طراحی‬ ‫موجب‬ ‫گرایی‬
‫داده‬ ‫پایگاه‬
‫معایب‬
:

‫برروی‬ ‫تغییرات‬ ‫چالش‬ ‫جدید‬ ‫کالسها‬ ‫تعریف‬ ‫و‬ ‫کالسها‬ ‫تغییرات‬ ،‫داده‬ ‫پایگاه‬ ‫تغییر‬ ‫و‬ ‫ایجاد‬ ‫خودکار‬ ‫روشهای‬ ‫از‬ ‫استفاده‬ ‫عدم‬ ‫صورت‬ ‫در‬
.‫داشت‬ ‫خواهد‬ ‫همراه‬ ‫به‬ ‫را‬ ‫اطالتی‬ ‫بانک‬

‫برروی‬ ‫مستقیم‬ ‫تغییر‬ ‫گونه‬ ‫هر‬
‫داده‬ ‫پایگاه‬
‫طراحی‬ ‫خودکار‬ ‫روند‬ ‫رفتن‬ ‫دست‬ ‫از‬ ‫موجب‬
‫داده‬ ‫پایگاه‬
‫تغی‬ ‫اعمال‬ ‫و‬ ‫شده‬
‫داده‬ ‫پایگاه‬ ‫در‬ ‫یرات‬
‫شی‬ ‫طراحی‬ ‫اصول‬ ‫با‬ ‫منطبق‬ ‫بایستی‬
‫باشد‬ ‫کالسها‬ ‫برروی‬ ‫اعمال‬ ‫منظور‬ ‫به‬ ‫گرایی‬

‫مد‬
‫ی‬
‫ر‬
‫ی‬
‫ت‬
‫پا‬
‫ی‬
‫گاه‬
‫طر‬ ‫از‬ ‫داده‬
‫ی‬
‫ق‬
‫بنابرا‬ ،‫است‬ ‫دشوار‬ ‫کد‬
‫ی‬
،‫ن‬
‫ها‬ ‫برنامه‬ ‫در‬
‫ی‬
‫کاربرد‬
‫ی‬
‫ن‬ ‫که‬ ‫داده‬ ‫گسترده‬
‫ی‬
‫از‬
‫ز‬ ‫حجم‬ ‫پردازش‬ ‫به‬
‫ی‬
‫اد‬
‫ی‬
‫داده‬ ‫از‬
‫ها‬ ‫منطق‬ ‫داشتن‬ ‫و‬ ‫ها‬
‫ی‬
‫پ‬
‫ی‬
‫چ‬
‫ی‬
‫ده‬
‫برا‬
‫ی‬
‫ا‬
‫ی‬
‫جاد‬
‫ی‬
‫ا‬
‫نگهدار‬
‫ی‬
‫دار‬ ‫ها‬ ‫داده‬
‫ی‬
،‫د‬
‫توص‬
‫ی‬
‫ه‬
‫نم‬
‫ی‬
.‫شود‬

‫رویه‬ ‫از‬ ‫گیری‬ ‫بهره‬
‫در‬ ‫شده‬ ‫تعریف‬ ‫های‬
‫داده‬ ‫پایگاه‬
‫اول‬ ‫کد‬ ‫طراحی‬ ‫اصول‬ ‫که‬ ‫است‬ ‫پذیر‬ ‫امکان‬ ‫صورتی‬ ‫در‬ ‫فقط‬ ‫و‬ ‫بوده‬ ‫پیچیده‬ ‫معموال‬
‫یا‬ ‫کالس‬ ‫یا‬ ‫فقط‬ ‫رویه‬ ‫کل‬ ‫معموال‬ ‫و‬ ‫شده‬ ‫لحاظ‬ ‫رویه‬ ‫ساخت‬ ‫در‬
Entity
‫باشد‬ ‫درگیر‬
2
.
‫داده‬ ‫طراحی‬
-
‫اول‬
(
Data-First
)
‫در‬
‫روش‬
Data-First
‫آن‬ ‫به‬ ‫که‬
Database-First
‫یا‬
Reverse-Engineering
‫ب‬ ‫شود‬ ‫می‬ ‫گفته‬ ‫نیز‬
‫ای‬
‫یک‬ ‫در‬ ‫داده‬ ‫پایگاه‬ ‫اول‬ ‫ستی‬
DBMS
‫طریق‬ ‫از‬ ‫سپس‬ ‫و‬ ‫و‬ ‫شود‬ ‫ساخته‬
Scaffold
.‫شود‬ ‫طراحی‬ ‫کالسها‬ ‫ساختار‬ ‫دستی‬ ‫صورت‬ ‫به‬ ‫یا‬
‫اگر‬
‫بر‬ ‫کار‬ ‫هدف‬
‫رو‬
‫ی‬
‫ی‬
‫ک‬
‫پروژه‬
‫مهاجرت‬
‫می‬ ‫تکنولوژی‬ ‫تغییر‬ ‫یا‬
‫که‬ ‫باشد‬
ً‫ال‬‫قب‬
‫ی‬
‫ک‬
‫پا‬
‫ی‬
‫گاه‬
‫تول‬ ‫حال‬ ‫در‬ ‫داده‬
‫ی‬
‫د‬
‫دارد‬ ‫استفاده‬ ‫یا‬
‫ی‬
‫ا‬
‫اگر‬
‫یک‬ ‫تولیدی‬ ‫سیستم‬
‫پا‬ ‫برنامه‬
‫ی‬
‫گاه‬
‫ا‬ ‫در‬ ،‫است‬ ‫محور‬ ‫داده‬
‫ی‬
‫ن‬
‫با‬ ‫صورت‬
‫ی‬
‫د‬
‫رو‬ ‫از‬
‫ی‬
‫کرد‬
‫پا‬ ‫اول‬
‫ی‬
‫گاه‬
‫داده‬
‫ی‬
‫ا‬
‫مهندس‬
‫ی‬
‫استفاده‬ ‫معکوس‬
.‫شود‬
‫مکرر‬ ‫تغییرات‬ ‫که‬ ‫شرایطی‬ ‫در‬ ‫بعالوه‬
‫ا‬ ‫استفاده‬ ‫اهمیت‬ ‫میدهد‬ ‫رخ‬ ‫داده‬ ‫پایگاه‬ ‫در‬ ‫ای‬ ‫بالقوه‬
‫می‬ ‫پیدا‬ ‫ظهور‬ ‫بیشتر‬ ‫رویکرد‬ ‫این‬ ‫ز‬
‫کند‬
.
‫دریافت‬ ‫نکته‬ ‫مهمترین‬ ‫اول‬ ‫داده‬ ‫رویکرد‬ ‫در‬
‫به‬ ‫تغییرات‬ ‫و‬ ‫اطالعات‬ ‫درست‬ ‫ارسال‬ ‫و‬
‫داده‬ ‫پایگاه‬
‫تعریف‬ ‫برای‬ ‫خاصی‬ ‫الگوی‬ ‫یا‬ ‫محدودیت‬ ‫برنامه‬ ‫و‬ ‫است‬ ‫داده‬ ‫صحت‬ ‫حفظ‬ ‫و‬
‫پایگاه‬
‫داده‬
‫نمی‬ ‫نظر‬ ‫در‬
.‫گیرد‬
‫مزایا‬
:

‫و‬ ‫شده‬ ‫ساخته‬ ‫براحتی‬ ‫شما‬ ‫داده‬ ‫پایگاه‬
‫میشود‬ ‫ویرایش‬ ‫آسانی‬ ‫به‬

‫نوشتن‬ ، ‫اصلی‬ ‫کلید‬ ‫انتخاب‬ ، ‫جداول‬ ‫بین‬ ‫ارتباط‬ ‫ایجاد‬ ‫جهت‬
Store Procedure
‫باشد‬ ‫نمی‬ ‫کدنویسی‬ ‫به‬ ‫نیازی‬

‫که‬ ‫شرایطی‬ ‫و‬ ‫مهاجرت‬ ‫های‬ ‫پروژه‬ ‫برای‬ ‫مناسب‬
‫داده‬ ‫پایگاه‬ ‫کار‬ ‫شروع‬ ‫از‬ ‫قبل‬
‫در‬
‫باشد‬ ‫می‬ ‫دسترس‬

‫د‬ ‫عملیات‬ ‫نیازمند‬ ‫که‬ ‫پیچیده‬ ‫و‬ ‫بزرگ‬ ‫سیستمهای‬ ‫برای‬ ‫مناسب‬
‫دارد‬ ‫را‬ ‫داده‬ ‫پایگاه‬ ‫تغییرات‬ ‫و‬ ‫فعال‬ ‫مدیریت‬ ‫و‬ ‫داده‬ ‫پایگاه‬ ‫سطح‬ ‫ر‬
‫معایب‬
:

‫نداشته‬ ‫برنامه‬ ‫روند‬ ‫بر‬ ‫نامطلوبی‬ ‫اثر‬ ‫تا‬ ‫پذیرد‬ ‫انجام‬ ‫مستمر‬ ‫صورت‬ ‫به‬ ‫بایستی‬ ‫داده‬ ‫پایگاه‬ ‫برروی‬ ‫تغییرات‬ ‫کنترل‬ ‫و‬ ‫مدل‬ ‫روزرسانی‬ ‫به‬
.‫باشد‬

‫ها‬ ‫رویه‬ ‫وجود‬ ‫امکان‬ ‫و‬ ‫داده‬ ‫پایگاه‬ ‫از‬ ‫کالسها‬ ‫بودن‬ ‫جدا‬ ‫دلیل‬ ‫به‬
‫از‬ ‫صحیح‬ ‫درک‬ ‫امکان‬ ‫موارد‬ ‫برخی‬ ‫در‬ ‫داده‬ ‫پایگاه‬ ‫در‬ ‫شده‬ ‫ذخیره‬ ‫ی‬
( ‫کد‬ ‫تاریخچه‬ ‫مدیریت‬ ‫سیستمهای‬ ‫در‬ ‫تغییرات‬ ‫سوابق‬ ‫و‬ ‫شد‬ ‫خواهد‬ ‫پیچیده‬ ‫عملیاتی‬ ‫فرایند‬
Source Control
‫نخواهد‬ ‫ردگیری‬ ‫قابل‬ )
.‫بود‬

‫تغ‬ ‫اگر‬
‫یی‬
‫ر‬
‫ی‬
‫پا‬ ‫در‬
‫ی‬
‫گاه‬
‫ا‬ ‫داده‬
‫ی‬
‫جاد‬
‫با‬ ‫مدل‬ ‫کالس‬ ،‫شود‬
‫ی‬
‫د‬
‫و‬ ‫همان‬ ‫با‬
‫ی‬
‫ژگ‬
‫ی‬
‫گسترش‬ ‫ها‬
‫ی‬
‫ابد‬

‫ا‬
‫ی‬
‫جاد‬
‫مد‬ ‫و‬
‫ی‬
‫ر‬
‫ی‬
‫ت‬
‫کل‬
‫ی‬
‫دها‬
‫ن‬ ‫روابط‬ ‫و‬
‫ی‬
‫از‬
‫کدگذار‬ ‫به‬
‫ی‬
‫ب‬
‫ی‬
‫شتر‬
‫ی‬
‫دارد‬
‫جمع‬
‫بندی‬
‫کد‬ ‫روشهای‬ ‫از‬ ‫یک‬ ‫هر‬ ‫انتخاب‬ ‫که‬ ‫است‬ ‫مشخص‬
-
‫داده‬ ‫یا‬ ‫اول‬
-
‫طراحی‬ ‫مورد‬ ‫سیستم‬ ،‫پروژه‬ ‫نوع‬ ‫به‬ ‫مستقیم‬ ‫وابستگی‬ ‫اول‬
‫در‬ ‫لیکن‬ .‫دارد‬ ‫داده‬ ‫پایگاه‬ ‫و‬ ‫کد‬ ‫موضوع‬ ‫دو‬ ‫از‬ ‫یکی‬ ‫به‬ ‫آنها‬ ‫تسلط‬ ‫و‬ ‫تیم‬ ‫اعضای‬ ‫اطالعات‬ ‫و‬ ‫دانش‬ ‫و‬
‫سیستمهای‬
ERP
‫داده‬ ‫پایگاه‬ ‫های‬ ‫داده‬ ‫به‬ ‫شدید‬ ‫وابستگی‬ ‫با‬ ‫و‬ ‫گسترش‬ ‫درحال‬ ‫همواره‬ ،‫پیچیده‬ ،‫جامع‬ ‫سیستهایی‬ ‫بالقوه‬ ‫صورت‬ ‫به‬ ‫که‬
‫می‬
‫از‬ ‫استفاده‬ ‫باشد‬
‫داده‬ ‫رویکرد‬
-
‫اول‬
‫می‬ ‫نظر‬ ‫به‬ ‫ضروری‬
‫مهاجرت‬ ‫هدف‬ ‫با‬ ‫تکنولوژی‬ ‫تغییر‬ ‫هدف‬ ‫اگر‬ ‫مطمئنن‬ .‫رسد‬
‫می‬ ‫جدید‬ ‫زیرساخت‬ ‫یک‬ ‫در‬ ‫توسعه‬ ‫و‬
‫که‬ ‫باشد‬
‫داده‬ ‫ساختار‬ ‫و‬ ‫مقادیر‬ ‫حفظ‬ ‫الزمه‬
‫بهره‬ ‫جز‬ ‫راهی‬ ‫است‬ ‫موجود‬ ‫های‬
‫گیری‬
.‫ماند‬ ‫نمی‬ ‫اول‬ ‫داده‬ ‫رویکرد‬ ‫از‬
‫پیاده‬ ‫چگونه‬
‫کنیم‬ ‫سازی‬
‫پیاده‬ ‫منظور‬ ‫به‬
‫با‬ ‫ارتباط‬ ‫سازی‬
‫داده‬ ‫پایگاه‬
‫می‬
‫کتابخانه‬ ‫از‬ ‫توان‬
‫مانند‬ ‫مختلفی‬ ‫های‬
Entity Framework
،
Dapper
‫یا‬
Hibernate
‫کرد‬ ‫استفاده‬
‫ابتدا‬ ‫آنها‬ ‫میان‬ ‫از‬ ‫که‬
Dapper
‫سپس‬ ‫و‬
Entity Framework
‫رویکرد‬ ‫سازی‬ ‫پیاده‬ ‫برای‬
‫داده‬
-
‫می‬ ‫مناسب‬ ‫اول‬
.‫باشند‬
: ‫چهارم‬ ‫بخش‬
‫هو‬ ‫احراز‬
‫ی‬
‫ت‬
(
Authentication
)
‫سرویس‬ ‫فرد‬ ‫به‬ ‫منحصر‬ ‫شناسایی‬ ‫فرایند‬ ‫هویت‬ ‫احراز‬ ‫هستید؟‬ ‫کسی‬ ‫چه‬ ‫شما‬ ‫که‬ ‫داد‬ ‫اشاره‬ ‫سوال‬ ‫این‬ ‫به‬ ‫هویت‬ ‫احراز‬
‫گیرنده‬
‫های‬
‫نرم‬
‫افزار‬
‫کاربردی‬
‫است‬
‫که‬
‫ممکن‬
‫است‬
‫کاربران‬
‫نهایی‬
‫یا‬
‫سایر‬
‫سرویس‬
‫ها‬
‫و‬
‫فرایندهای‬
‫برنامه‬
‫نویسی‬
‫باشند‬
.
‫پایه‬ ‫بر‬ ‫که‬ ‫وب‬ ‫تحت‬ ‫سیستمهای‬
‫پروتکل‬
http
‫پروتکل‬ ‫این‬ ‫و‬ ‫میکنند‬ ‫پیروی‬ ‫پروتکل‬ ‫این‬ ‫مبانی‬ ‫از‬ ‫اند‬ ‫شده‬ ‫بنا‬
‫کالینت‬ ‫بین‬ ‫ارتباط‬
‫پروتکل‬ ‫این‬ ‫همچنین‬ ،‫میکند‬ ‫برقرار‬ ‫را‬ ‫سرور‬ ‫و‬
‫نمیکند‬ ‫حفظ‬ ‫خود‬ ‫درون‬ ‫را‬ ‫فعال‬ ‫کاربر‬ ‫وضعیت‬
(
stateless
)
‫اعتبارسنجی‬ ‫به‬ ‫نیاز‬ ‫و‬
.‫دارد‬ ‫مجدد‬
‫وسیله‬ ‫به‬
‫روشهای‬
‫و‬ ‫هستیم‬ ‫خود‬ ‫کاربری‬ ‫حساب‬ ‫داخل‬ ‫حاضر‬ ‫حال‬ ‫در‬ ‫که‬ ‫بفهمانیم‬ ‫سرور‬ ‫به‬ ‫که‬ ‫قادریم‬ ‫ما‬ ‫هویت‬ ‫احراز‬
‫به‬
‫سیستم‬
.‫باشیم‬ ‫داشته‬ ‫دسترسی‬
‫پرتکل‬ ‫در‬ ‫هویت‬ ‫احراز‬ ‫سازی‬ ‫پیاده‬ ‫در‬
http
‫استف‬
‫از‬ ‫اده‬
session
‫و‬
‫از‬ ‫استفاده‬ ‫یا‬
token
‫برای‬
‫غلبه‬
‫درخواست‬ ‫در‬ ‫مشکل‬ ‫این‬ ‫بر‬
.‫میشود‬ ‫استفاده‬ ‫ها‬
‫توسعه‬ ‫توسط‬ ‫هویت‬ ‫احراز‬ ‫مکانیزم‬ ‫فهمیدن‬
‫برنامه‬ ‫یک‬ ‫ایجاد‬ ‫سبب‬ ‫به‬ ‫دهندگان‬
.‫است‬ ‫اهمیت‬ ‫حائز‬ ‫بسیار‬ ،‫امن‬ ‫بصورت‬ ‫کاربران‬ ‫اطالعات‬ ‫نگهداری‬ ‫همچنین‬ ‫و‬ ‫اطمینان‬ ‫قابل‬ ‫کاربردی‬
Session Base Authentication Vs Token Base Authentication
1
.
( ‫جلسه‬ ‫بر‬ ‫مبتنی‬ ‫هویت‬ ‫احراز‬
Session Base
)
‫در‬ ‫خود‬ ‫حساب‬ ‫وارد‬ ‫کاربر‬ ‫که‬ ‫زمانی‬
‫تحت‬ ‫سیستم‬ ‫یک‬
‫وب‬
‫می‬
‫یک‬ ‫سرور‬ ،‫شود‬
Session
‫در‬ ‫را‬ ‫آن‬ ‫اطالعات‬ ‫و‬ ‫میکند‬ ‫ایجاد‬ ‫او‬ ‫برای‬
،‫سرور‬ ‫آن‬ ‫از‬ ‫پس‬ .‫میکند‬ ‫ذخیره‬ ‫خود‬ ‫حافظه‬
Session Id
‫یک‬ ‫در‬ ‫را‬ ‫شده‬ ‫حاصل‬
Cookie
( ‫جستجوگر‬ ‫در‬
Browser)
‫ذخیره‬ ‫کاربر‬
‫از‬ ‫درخواست‬ ‫هر‬ ‫برای‬ ،‫شود‬ ‫شناسایی‬ ‫سرور‬ ‫توسط‬ ‫کاربر‬ ‫که‬ ‫زمانی‬ ‫تا‬ ،‫آن‬ ‫از‬ ‫پس‬ .‫میکند‬
Cookie
‫استفاده‬ ‫او‬ ‫جستجوگر‬ ‫در‬ ‫شده‬ ‫ذخیره‬
.‫میشود‬
‫که‬ ‫بود‬ ‫خواهد‬ ‫قادر‬ ‫سرور‬ ‫صورت‬ ‫این‬ ‫در‬
Session Id
‫در‬ ‫شده‬ ‫ذخیره‬
Cookie
‫اط‬ ‫با‬ ‫را‬
‫العات‬
Session
‫حافظه‬ ‫در‬ ‫شده‬ ‫ذخیره‬
،‫کاربری‬ ‫حساب‬ ‫از‬ ‫خروج‬ ‫زمان‬ ‫در‬ ‫همچنین‬ .‫کند‬ ‫ارسال‬ ‫را‬ ‫پاسخ‬ ‫و‬ ‫شناسایی‬ ‫دقیق‬ ‫بصورت‬ ‫را‬ ‫کاربر‬ ‫تا‬ ‫کند‬ ‫مقایسه‬ ‫سرور‬
Session
.‫شد‬ ‫خواهد‬ ‫حذف‬ ‫داده‬ ‫پایگاه‬ ‫از‬ ،‫شده‬ ‫ساخته‬
: ‫جلسه‬ ‫بر‬ ‫مبتنی‬ ‫هویت‬ ‫احراز‬ ‫ویژگیهای‬

‫امنیتی‬ ‫معیارهای‬
،‫فرض‬ ‫پیش‬ ‫طور‬ ‫به‬
‫در‬ ‫عمدتا‬ ‫و‬ ‫نیست‬ ‫برخوردار‬ ‫حمالت‬ ‫برابر‬ ‫در‬ ‫باالیی‬ ‫حفاظت‬ ‫از‬ ‫کوکی‬ ‫بر‬ ‫مبتنی‬ ‫هویت‬ ‫احراز‬
‫برابر‬
XSS
‫و‬
CSRF
‫آسیب‬
‫پذیر‬
‫است‬
.
‫ا‬
‫لبته‬
‫می‬
‫توان‬
‫تغییر‬ ‫با‬
‫در‬
‫هدرهای‬
Cookie
‫حدی‬ ‫تا‬
‫حمالتی‬ ‫چنین‬ ‫برابر‬ ‫در‬
.‫شوند‬ ‫محافظت‬

‫می‬ ‫کار‬ ‫دامنه‬ ‫یک‬ ‫روی‬ ‫معموال‬
‫کند‬
‫کوکی‬
‫واحد‬ ‫دامنه‬ ‫یک‬ ‫در‬ ‫فقط‬ ‫ها‬
‫می‬ ‫کار‬
.‫باشید‬ ‫کرده‬ ‫پیکربندی‬ ‫خاص‬ ‫طور‬ ‫به‬ ‫را‬ ‫آن‬ ‫اینکه‬ ‫مگر‬ ،‫کنند‬

‫برای‬
API
‫نیست‬ ‫مناسب‬ ‫ها‬
‫اگر‬
‫پایه‬ ‫بر‬ ‫شده‬ ‫ارائه‬ ‫سیستم‬ ‫است‬ ‫قرار‬
API
‫گردد‬ ‫طراحی‬
‫کوکی‬ ،
.‫نیستند‬ ‫مناسبی‬ ‫حل‬ ‫راه‬ ‫ها‬

‫مشکال‬ ‫وجود‬
‫پذیری‬ ‫مقیاس‬ ‫ت‬
‫باید‬ ‫ما‬ ‫و‬ ‫است‬ ‫کوکی‬ ‫پیکربندی‬ ‫مسئول‬ ‫سرور‬
Session
.‫کنیم‬ ‫ذخیره‬ ‫کاربر‬ ‫هر‬ ‫برای‬ ‫داده‬ ‫پایگاه‬ ‫در‬ ‫را‬ ‫ها‬

‫اضافی‬ ‫اطالعات‬ ‫ذخیره‬ ‫برای‬ ‫مناسب‬
‫روش‬ ‫این‬ ‫که‬ ‫آنجا‬ ‫از‬
Session
‫جداگانه‬ ‫های‬
‫می‬ ‫نظر‬ ‫در‬ ‫کاربر‬ ‫هر‬ ‫برای‬ ‫را‬ ‫ای‬
‫می‬ ‫بنابراین‬ ،‫گیرد‬
‫داده‬ ‫توانیم‬
‫به‬ ‫متصل‬ ‫های‬
Session
‫ها‬
.‫کنیم‬ ‫ذخیره‬ ‫را‬
‫از‬ ‫گیری‬ ‫بهره‬ ‫با‬
Cookie
‫و‬ ‫ها‬
Session
‫می‬ ‫ها‬
‫داده‬ ‫توانیم‬
‫شخصی‬ ‫مانند‬ ‫خاصی‬ ‫های‬
‫سازی‬
‫می‬ ‫اجازه‬ ‫ما‬ ‫به‬ ‫سپس‬ .‫کنیم‬ ‫ذخیره‬ ‫را‬ ‫دسترسی‬ ‫کنترل‬ ‫و‬ ‫کاربر‬
‫درخواست‬ ‫برای‬ ‫آن‬ ‫از‬ ‫تا‬ ‫دهد‬
.‫نماییم‬ ‫استفاده‬ ‫بعدی‬ ‫های‬

‫می‬
‫کند‬ ‫محدود‬ ‫مرورگر‬ ‫در‬ ‫را‬ ‫کوکی‬ ‫به‬ ‫دسترسی‬ ‫تواند‬
‫ویژگی‬ ‫کوکی‬ ‫که‬ ‫آنجا‬ ‫از‬
HTTP-Only
‫را‬
‫ارائه‬
‫می‬
،‫دهد‬
‫می‬
‫توانیم‬
‫دسترسی‬
‫جاوااسکریپت‬
‫را‬
‫برای‬
‫آن‬
‫محدود‬
‫کنیم‬
.
‫عالوه‬
‫بر‬
‫این‬
‫از‬
‫هرگونه‬
‫دسترسی‬
‫به‬
‫کوکی‬
‫با‬
‫حمالت‬
Cross-Site
‫جلوگیری‬
‫می‬
‫کن‬
.‫د‬
2
.
( ‫توکن‬ ‫بر‬ ‫مبتنی‬ ‫هویت‬ ‫احراز‬
Token Base
)
‫هویت‬ ‫احراز‬ ‫در‬
‫توکن‬ ‫یک‬ ‫سرور‬ ،‫توکن‬ ‫برپایه‬
‫امضا‬
(
sign
)
‫شده‬
‫خصوصی‬ ‫کلید‬ ‫اساس‬ ‫بر‬
.‫میکند‬ ‫ارسال‬ ‫کالینت‬ ‫به‬ ‫را‬ ‫آن‬ ‫و‬ ‫ایجاد‬ ‫را‬
‫عنوان‬ ‫به‬ ‫و‬ ‫میشود‬ ‫ذخیره‬ ‫کالینت‬ ‫سمت‬ ‫در‬ ‫توکن‬
header
‫درخواست‬ ‫از‬ ‫یک‬ ‫هر‬ ‫در‬
‫را‬ ‫توکن‬ ‫سرور‬ ‫آن‬ ‫از‬ ‫پس‬ .‫میشود‬ ‫ارسال‬ ‫ها‬
‫معت‬ ‫توکن‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫و‬ ‫کرده‬ ‫رمزگشایی‬
‫ب‬
‫ر‬ ‫آن‬ ‫پاسخ‬ ‫و‬ ‫پردازش‬ ‫را‬ ‫درخواست‬ ،‫باشد‬ ‫ر‬
‫از‬ ‫کاربر‬ ‫که‬ ‫زمانی‬ ‫همچنین‬ .‫میکند‬ ‫ارسال‬ ‫ا‬
.‫میرود‬ ‫بین‬ ‫از‬ ‫سرور‬ ‫با‬ ‫تعاملی‬ ‫هیچ‬ ‫بدون‬ ‫کالینت‬ ‫سمت‬ ‫در‬ ‫توکن‬ ،‫میشود‬ ‫خارج‬ ‫خود‬ ‫حساب‬
‫بر‬ ‫هویت‬ ‫احراز‬ ‫مورد‬ ‫در‬ ‫ما‬ ‫که‬ ‫زمانی‬
‫به‬ ‫ما‬ ‫اصلی‬ ‫اشاره‬ ‫واقع‬ ‫در‬ ،‫میکنیم‬ ‫صحبت‬ ‫توکن‬ ‫اساس‬
JWT
‫همان‬ ‫یا‬
JSON Web Token
‫گسترد‬ ‫طور‬ ‫به‬ ‫امروزه‬ ‫که‬ ‫میباشد‬
‫در‬ ‫ه‬
‫سیستمها‬ ‫از‬ ‫بسیاری‬
‫است‬ ‫شده‬ ‫تبدیل‬ ‫هویت‬ ‫احراز‬ ‫زمینه‬ ‫در‬ ‫استاندارد‬ ‫یک‬ ‫به‬ ‫عمال‬ ‫و‬ ‫میگردد‬ ‫استفاده‬
.
‫بر‬ ‫مبتنی‬ ‫هویت‬ ‫احراز‬ ‫ویژگیهای‬
‫توکن‬
:

‫مکانیزم‬ ‫یک‬
stateless
‫مقیاس‬ ‫و‬
‫پذیر‬
‫کوکی‬ ‫برخالف‬
‫توکن‬ ‫بر‬ ‫مبتنی‬ ‫روش‬ ،‫ها‬
stateless
‫است‬
.
‫این‬
‫بدان‬
‫داده‬ ‫پایگاه‬ ‫در‬ ‫کاربران‬ ‫از‬ ‫اطالعاتی‬ ‫هیچ‬ ‫که‬ ‫معناست‬
‫نمی‬ ‫ذخیره‬ ‫سرور‬ ‫یا‬
.‫شود‬
‫توکن‬ ‫اعتبارسنجی‬ ‫و‬ ‫ایجاد‬ ‫مسئول‬ ‫فقط‬ ‫سرور‬
‫می‬ ‫امکان‬ ‫شما‬ ‫به‬ ‫که‬ ‫است‬ ‫ها‬
‫حل‬ ‫راه‬ ‫دهد‬
‫های‬
.‫کنید‬ ‫ایجاد‬ ‫کوکی‬ ‫بر‬ ‫مبتنی‬ ‫روش‬ ‫به‬ ‫نسبت‬ ‫بیشتری‬ ‫پذیر‬ ‫مقیاس‬

‫امنیتی‬ ‫مسائل‬
‫توکن‬ ‫اگرچه‬
‫می‬ ‫سعی‬ ‫ها‬
‫مسائل‬ ‫کنند‬
‫کوکی‬ ‫امنیتی‬
.‫نیستند‬ ‫امن‬ ‫هم‬ ‫آنقدر‬ ‫اما‬ ،‫کنند‬ ‫برطرف‬ ‫را‬ ‫ها‬
‫اجازه‬ ‫شما‬ ‫برنامه‬ ‫اگر‬
‫اسکریپت‬ ‫دهد‬
‫توکن‬ ‫نتیجه‬ ‫در‬ ،‫گیرند‬ ‫قرار‬ ‫آن‬ ‫در‬ ‫خارجی‬ ‫های‬
‫می‬ ‫مرورگر‬ ‫در‬ ‫شده‬ ‫ذخیره‬ ‫های‬
‫برابر‬ ‫در‬ ‫توانند‬
‫حمالت‬
XSS
‫آسیب‬
‫پذیر‬
‫باشند‬
.
‫توکن‬ ‫که‬ ‫آنجا‬ ‫از‬ ‫این‬ ‫بر‬ ‫عالوه‬
stateless
،‫است‬
‫اگر‬
‫از‬
‫بیرون‬
‫قابل‬
‫دسترسی‬
،‫باشد‬
‫هیچ‬
‫راهی‬
‫برای‬
‫لغو‬
‫آن‬
‫تا‬
‫زمان‬
‫انقضایش‬
‫وجود‬
‫ن‬
‫من‬ .‫کنیم‬ ‫حفاظت‬ ‫ممکن‬ ‫حد‬ ‫تا‬ ‫را‬ ‫توکن‬ ‫که‬ ‫است‬ ‫مهم‬ ‫بسیار‬ ‫بنابراین‬ .‫دارد‬
‫سرویس‬ ‫از‬ ‫بسیاری‬
‫دیده‬ ‫را‬ ‫هویت‬ ‫احراز‬ ‫های‬
‫از‬ ‫که‬ ‫ام‬
5
‫توکن‬ ‫فرض‬ ‫پیش‬ ‫زمان‬ ‫عنوان‬ ‫به‬ ‫دقیقه‬
‫های‬
JWT
‫استفاده‬
‫می‬
‫کنند‬
.

‫ذخیره‬ ‫برای‬ ‫مناسب‬
‫اضافی‬ ‫اطالعات‬
‫اضافی‬ ‫اطالعات‬ ‫ذخیره‬
‫توکن‬ ‫با‬
‫توکن‬ ‫طریق‬ ‫از‬ ‫مثال‬ ‫عنوان‬ ‫به‬ .‫است‬ ‫پذیر‬ ‫امکان‬ ‫نیز‬ ‫ها‬
‫ها‬
‫می‬
‫داده‬ ‫توانیم‬
‫ها‬
‫در‬ ‫را‬
Claims
‫می‬ ‫افزایش‬ ‫را‬ ‫توکن‬ ‫سایز‬ ‫که‬ ‫آنجا‬ ‫از‬ ‫اما‬ .‫کنیم‬ ‫ذخیره‬
‫آ‬ ‫بیشتر‬ ‫نگهداری‬ ،‫دهد‬
‫می‬ ‫تأثیر‬ ‫شبکه‬ ‫کارکرد‬ ‫بر‬ ‫ن‬
‫گذارد‬

‫سازی‬ ‫پیاده‬ ‫قابلیت‬
Single-Sign-On
SSO
‫یک‬
‫هویت‬ ‫تایید‬ ‫متمرکز‬ ‫سرویس‬
‫رمز‬ ‫و‬ ‫کاربری‬ ‫(نام‬ ‫کاربری‬ ‫حساب‬ ‫یک‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫تنها‬ ‫کاربر‬ ‫آن‬ ‫در‬ ‫که‬ ‫است‬
)‫عبور‬
‫در‬ ‫هویت‬ ‫احراز‬ ‫طریق‬ ‫از‬
«
‫سرویس‬
‫هویت‬ ‫احراز‬ ‫دهنده‬
»
(
Authentication Server
)
‫می‬
‫برنامه‬ ‫چندین‬ ‫به‬ ‫تواند‬
‫باشد‬ ‫داشته‬ ‫دسترسی‬ ‫سایت‬ ‫یا‬
.
‫شرایط‬ ‫توکن‬ ‫بر‬ ‫مبتی‬ ‫هویت‬ ‫احراز‬
SSO
‫همچنین‬ ‫و‬
«
‫ثالث‬ ‫شخص‬ ‫هویت‬ ‫احراز‬
»
Third-Party Authentication
‫می‬ ‫فراهم‬ ‫را‬
‫در‬ .‫سازد‬
«
‫ثالث‬ ‫شخص‬ ‫هویت‬ ‫احراز‬
»
‫هویت‬ ‫تائید‬ ‫برای‬ ‫تواند‬ ‫می‬ ‫برنامه‬
‫از‬ ‫کاربر‬
‫ببرد‬ ‫بهره‬ ‫عمومی‬ ‫هویت‬ ‫احراز‬ ‫سرویسهای‬
‫جمع‬
‫بندی‬
‫و‬ ‫توکن‬ ‫بر‬ ‫مبتنی‬ ‫رویکردهای‬
‫جلسه‬
‫برنامه‬ ‫برای‬ ‫هویت‬ ‫احراز‬ ‫پرکاربرد‬ ‫مکانیزم‬ ‫دو‬
‫می‬ ‫حساب‬ ‫به‬ ‫وب‬ ‫های‬
‫همانطور‬ .‫آیند‬
‫که‬
‫مشخ‬
‫ص‬
‫است‬
‫روش‬ ‫این‬ ‫از‬ ‫یک‬ ‫هیچ‬ ،
‫ها‬
‫صد‬
‫کدام‬ ‫هر‬ ‫و‬ ‫نیستند‬ ‫کامل‬ ‫درصد‬
‫خود‬ ‫سازی‬ ‫پیاده‬ ‫رویکرد‬ ‫در‬
‫چندین‬
‫اشکال‬
.‫دارد‬ ‫جزیی‬
‫ب‬ ،‫هویت‬ ‫احراز‬ ‫روش‬ ‫انتخاب‬ ‫هنگام‬ ‫بنابراین‬
‫ایستی‬
‫خود‬ ‫پروژه‬ ‫الزامات‬
‫بهترین‬ ‫و‬ ‫شده‬ ‫گرفته‬ ‫نظر‬ ‫در‬
‫پیاده‬ ‫در‬ ‫سازمان‬ ‫هدف‬ ‫اینکه‬ ‫به‬ ‫توجه‬ ‫با‬ ‫لیکن‬ .‫باشد‬ ‫مدنظر‬ ‫سازمان‬ ‫نیازهای‬ ‫بر‬ ‫منطبق‬ ‫رویکرد‬
‫سیستم‬ ‫سازی‬
ERP
‫مقیاس‬ ‫سیستم‬ ‫یک‬ ‫به‬ ‫دستیابی‬
‫چندین‬ ‫برروی‬ ‫دستیابی‬ ‫قابل‬ ،‫پذیر‬
‫برای‬ ‫مناسب‬ ‫و‬ ‫متمرکز‬ ‫هویت‬ ‫احراز‬ ‫امکان‬ ‫با‬ ‫دامنه‬
‫سازی‬ ‫پیاده‬
PI
A
‫می‬ ‫ها‬
‫می‬ ‫پیشنهاد‬ ‫باشد‬
‫از‬ ‫گردد‬
‫توکن‬ ‫بر‬ ‫مبتنی‬ ‫رویکرد‬
.‫گردد‬ ‫استفاده‬ ‫سازی‬ ‫پیاده‬ ‫برای‬
‫پیاده‬ ‫چگونه‬
‫کنیم‬ ‫سازی‬
‫پیاده‬ ‫برای‬
‫کتابخانه‬ ‫هویت‬ ‫احراز‬ ‫سازی‬
‫که‬ ‫است‬ ‫شده‬ ‫ارائه‬ ‫بسیاری‬ ‫های‬
‫کتابخانه‬ ‫از‬ ‫جلسه‬ ‫بر‬ ‫مبتنی‬ ‫رویکرد‬ ‫برای‬
AspNetIdentity
‫کتابخانه‬ ‫از‬ ‫توکن‬ ‫بر‬ ‫مبتنی‬ ‫رویکرد‬ ‫برای‬ ‫و‬
JwtBrearer
‫می‬
.‫کرد‬ ‫استفاده‬ ‫توان‬
Single-Sign-On by Authentication Server
: ‫پنجم‬ ‫بخش‬
‫مجوزها‬
‫ی‬
‫دسترس‬
( ‫ی‬
Authorization
)
‫اعطای‬
‫مجوزهای‬
‫می‬ ‫کاری‬ ‫چه‬ ‫شما‬ ‫که‬ ‫دارد‬ ‫اشاره‬ ‫سوال‬ ‫این‬ ‫به‬ ‫دسترسی‬
‫است‬ ‫فرایندی‬ ‫دسترسی‬ ‫حق‬ ‫اعطای‬ ‫دهید؟‬ ‫انجام‬ ‫توانید‬
‫می‬ ‫مدیریت‬ ،‫دارند‬ ‫را‬ ‫آنها‬ ‫به‬ ‫دسترسی‬ ‫اجازه‬ ‫شده‬ ‫هویت‬ ‫احراز‬ ‫کاربران‬ ‫که‬ ‫عملیاتی‬ ‫و‬ ‫منابع‬ ،‫آن‬ ‫در‬ ‫که‬
‫شامل‬ ‫منابع‬ .‫شود‬
،‫عملیاتها‬
،‫دستورات‬ ،‫فرمها‬
‫فایل‬
‫پایگاه‬ ،‫ها‬
،‫داده‬ ‫های‬
‫می‬ ‫عملیات‬ .‫است‬ ‫غیره‬ ‫و‬ ‫سطرها‬ ،‫جداول‬
‫یک‬ ‫خرید‬ ‫مانند‬ ‫تراکنش‬ ‫یک‬ ‫انجام‬ ‫شامل‬ ‫تواند‬
‫باشد‬ ‫دیگر‬ ‫حساب‬ ‫به‬ ‫حساب‬ ‫یک‬ ‫از‬ ‫وجه‬ ‫انتقال‬ ‫یا‬ ‫محصول‬
.
‫که‬ ‫دارد‬ ‫وجود‬ ‫کاربران‬ ‫به‬ ‫دسترسی‬ ‫حق‬ ‫اعطای‬ ‫برای‬ ‫مختلفی‬ ‫روشهای‬
‫استفاده‬ ‫افزاری‬ ‫نرم‬ ‫سیستهای‬ ‫از‬ ‫بسیاری‬ ‫در‬ ‫عمده‬ ‫بصورت‬ ‫روش‬ ‫دو‬ ‫آنها‬ ‫میان‬ ‫از‬
‫و‬ ‫نقش‬ ‫بر‬ ‫مبتی‬ ‫روش‬ ‫عنوان‬ ‫با‬ ‫آنها‬ ‫از‬ ‫شود‬ ‫می‬
‫می‬ ‫ادعا‬ ‫بر‬ ‫مبتنی‬ ‫روش‬
.‫کرد‬ ‫یاد‬ ‫توان‬
1
.
‫اعطای‬
‫مجوزهای‬
‫دسترسی‬
‫نقشها‬ ‫روش‬ ‫به‬
(
Role Base
)
‫م‬ ‫را‬ ‫ها‬ ‫نقش‬
‫ی‬
‫عناو‬ ‫عنوان‬ ‫به‬ ‫توان‬
‫ی‬
‫ن‬
‫شغل‬
‫ی‬
‫مانند‬ .‫گرفت‬ ‫نظر‬ ‫در‬
}
‫مد‬
‫ی‬
‫ر‬
‫فروش‬
{
،
}
‫مد‬
‫ی‬
‫ر‬
‫بازار‬
‫ی‬
‫اب‬
‫ی‬
{
،
}
‫ادم‬
‫ی‬
‫ن‬
{
‫غ‬ ‫و‬
‫ی‬
‫ره‬
.
‫مبتن‬ ‫مجوز‬
‫ی‬
‫بر‬
‫مکان‬ ‫نقش‬
‫ی‬
‫زم‬
‫ی‬
‫برا‬ ‫ها‬ ‫نقش‬ ‫از‬ ‫که‬ ‫است‬
‫ی‬
‫برا‬ ‫کاربران‬ ‫به‬ ‫مناسب‬ ‫حقوق‬ ‫اختصاص‬
‫ی‬
‫وظا‬ ‫انجام‬
‫ی‬
‫ف‬
‫س‬
‫ی‬
‫ستم‬
‫برا‬ ‫مجوز‬ ‫و‬
‫ی‬
‫دسترس‬
‫ی‬
‫به‬
‫م‬ ‫استفاده‬ ‫منابع‬
‫ی‬
‫کند‬
.
2
.
‫اعطای‬
‫مجوزهای‬
‫دسترسی‬
‫ادعاها‬ ‫روش‬ ‫به‬
(
Claim Base
)
‫ادعاها‬
‫م‬
‫ی‬
‫از‬ ‫تر‬ ‫گسترده‬ ‫توانند‬
‫ی‬
‫ک‬
‫م‬ .‫باشند‬ ‫نقش‬
‫ی‬
‫عنوان‬ ‫به‬ ‫ادعا‬ ‫مورد‬ ‫در‬ ‫توان‬
‫ی‬
‫ک‬
‫فکر‬ ‫برچسب‬
‫کرد‬
‫م‬ ،‫مثال‬ ‫عنوان‬ ‫به‬ .
‫ی‬
‫توان‬
‫ی‬
‫د‬
‫ی‬
‫ک‬
‫ب‬ ‫را‬ ‫فرد‬
‫ا‬
‫عن‬
‫ا‬
‫و‬
‫ی‬
‫ن‬
{
‫دوستانه‬
}
،
‫باالی‬ ‫{سابقه‬
5
}‫تبریز‬ ‫{ساکن‬ ،}‫سال‬
،
{
‫بزرگسال‬
18
‫سال‬
}
‫غ‬ ‫و‬
‫ی‬
‫ره‬
‫گرفت‬ ‫نظر‬ ‫در‬
.
‫ضمن‬ ‫در‬
‫نظر‬ ‫از‬
‫فن‬
‫ی‬
،
‫را‬ ‫نقش‬
‫نیز‬
‫م‬
‫ی‬
‫عنوان‬ ‫به‬ ‫توان‬
‫ی‬
‫ک‬
‫ادعا‬
.‫کرد‬ ‫مطرح‬
‫ادعاها‬ ‫روش‬ ‫با‬ ‫نقشها‬ ‫روش‬ ‫به‬ ‫مبتنی‬ ‫دسترسی‬ ‫مجوزهای‬ ‫مقایسه‬
:

‫با‬
‫م‬ ‫فقط‬ ‫ها‬ ‫نقش‬
‫ی‬
‫کاربر‬ ‫نوع‬ ‫توان‬
‫ی‬
‫م‬ ‫کار‬ ‫آن‬ ‫با‬ ‫که‬
‫ی‬
‫کن‬
‫ی‬
‫د‬
‫را‬
‫شناسا‬
‫یی‬
‫ک‬
‫ر‬
‫د‬
‫لیکن‬
‫م‬ ‫ادعاها‬ ‫با‬
‫ی‬
‫توان‬
‫ی‬
‫د‬
‫ز‬
‫ی‬
‫رمجموعه‬
‫ا‬
‫ی‬
‫اطالعات‬ ‫از‬
‫کاربرد‬
‫ی‬
‫باش‬ ‫داشته‬ ‫کاربر‬ ‫مورد‬ ‫در‬
‫ی‬
‫د‬
.

‫ها‬ ‫جفت‬ ‫ادعاها‬
‫ی‬
‫کلید‬
-
‫مقدار‬
‫ساده‬
‫ا‬
‫ی‬
‫هستند‬
‫میتوان‬ ‫که‬
‫و‬ ‫عنوان‬ ‫به‬ ‫را‬ ‫آنها‬
‫ی‬
‫ژگ‬
‫ی‬
‫ها‬
‫ی‬
‫ی‬
‫ک‬
‫گ‬ ‫نظر‬ ‫در‬ ‫کاربر‬
‫رفت‬
.
‫اما‬
‫نقش‬
‫ها‬
‫کل‬ ‫فقط‬
‫ی‬
‫د‬
‫هستند‬
‫و‬
‫ادعا‬ ‫مانند‬
‫مقداری‬
.‫ندارند‬

‫می‬ ‫نگهداری‬ ‫دهنده‬ ‫سرویس‬ ‫روی‬ ‫بر‬ ‫معموال‬ ‫نقشها‬ ‫کلید‬
‫کاربر‬ ‫و‬ ‫است‬ ‫کاربر‬ ‫اختیار‬ ‫در‬ ‫ادعا‬ ‫مقادیر‬ ‫ادعا‬ ‫رویکرد‬ ‫در‬ ‫لیکن‬ ‫شود‬
‫می‬
‫د‬ ‫و‬ ‫نقش‬ ‫صاحب‬ ‫دیگری‬ ‫سرویس‬ ‫در‬ ‫است‬ ‫کرده‬ ‫دریافت‬ ‫دهنده‬ ‫سرویس‬ ‫یک‬ ‫از‬ ‫که‬ ‫ادعایی‬ ‫مقدار‬ ‫طریق‬ ‫از‬ ‫تواند‬
‫سترسی‬
.‫باشد‬
‫جمع‬
‫بندی‬
‫کل‬ ‫طور‬ ‫به‬
‫ی‬
،
‫مبتن‬ ‫مجوز‬
‫ی‬
‫مبتن‬ ‫مجوز‬ ،‫ادعا‬ ‫بر‬
‫ی‬
‫م‬ ‫بر‬ ‫در‬ ‫را‬ ‫نقش‬ ‫بر‬
‫ی‬
‫گ‬
‫ی‬
‫رد‬
‫دق‬ ‫طور‬ ‫به‬ .
‫ی‬
،‫ق‬
‫عضو‬
‫ی‬
‫ت‬
‫اساس‬ ‫بر‬ ‫ها‬ ‫نقش‬ ‫در‬
‫هو‬
‫ی‬
‫ت‬
‫تع‬
‫یی‬
‫ن‬
‫م‬
‫ی‬
‫هو‬ ،‫شود‬
‫ی‬
‫ت‬
‫فقط‬
‫ی‬
‫ک‬
‫ارزش‬ ‫بر‬ ‫حق‬ ‫نوع‬
‫ی‬
‫ک‬
،‫است‬ ‫ادعا‬
‫ادعاها‬ ‫ولیکن‬ ‫ندارند‬ ‫مقداری‬ ‫حالت‬ ‫هویتها‬
‫باشند‬ ‫می‬ ‫ارزش‬ ‫و‬ ‫مقدار‬ ‫دارای‬
.
‫مشخص‬
‫مه‬ ‫است‬
‫تنها‬ ‫نقش‬
‫ی‬
‫ک‬
.‫ادعاست‬ ‫نوع‬
‫واقع‬ ‫در‬
‫اما‬ ،‫هستند‬ ‫ادعا‬ ‫ها‬ ‫نقش‬ ‫همه‬
‫ن‬ ‫نقش‬ ‫ادعاها‬ ‫همه‬
‫ی‬
‫ستند‬
‫نیز‬ ‫را‬ ‫نقشها‬ ‫رویکرد‬ ‫ادعاها‬ ‫روش‬ ‫به‬ ‫دسترسی‬ ‫مجوز‬ ‫رویکرد‬ ‫اینکه‬ ‫به‬ ‫توجه‬ ‫با‬ ‫مجموع‬ ‫در‬ .
‫سیستم‬ ‫سازی‬ ‫پیاده‬ ‫در‬ ‫گردد‬ ‫می‬ ‫توصیه‬ ‫شود‬ ‫می‬ ‫شامل‬
P
ER
‫از‬
‫ادعا‬ ‫روش‬ ‫به‬ ‫دسترسی‬ ‫اعطای‬
‫بهره‬
‫گیری‬
.‫گردد‬
: ‫ششم‬ ‫بخش‬
‫کاربری‬ ‫رابط‬ ‫طراحی‬
(
User-Interface Design
)
‫بگیریم‬ ‫بزرگ‬ ‫تصمیم‬ ‫یک‬ ‫بایستی‬ ‫میرسیم‬ ‫کاربری‬ ‫رابط‬ ‫طراحی‬ ‫به‬ ‫که‬ ‫هنگامی‬ ‫افزار‬ ‫نرم‬ ‫توسعه‬ ‫فرایند‬ ‫در‬
‫که‬
‫میخواهیم‬ ‫آیا‬
‫برنامه‬
‫صورت‬ ‫به‬
‫وب‬
‫صورت‬ ‫به‬ ‫یا‬ ‫گردد‬ ‫طراحی‬
‫بومی‬
(
Native
)
‫باشد‬
.
‫نرم‬ ‫بومی‬ ‫طراحی‬
‫افزار‬
‫می‬ ‫گفته‬ ‫حالتی‬ ‫به‬
‫کاربری‬ ‫رابط‬ ‫که‬ ‫شود‬
‫برای‬
‫استفاده‬
‫در‬
‫یک‬
‫اجرایی‬ ‫سکوی‬
‫سیستم‬ ،
‫عامل‬
‫یا‬
‫دستگاه‬
‫خاص‬
‫توسعه‬
‫یافته‬
‫باشد‬
.
‫هر‬
‫انتخابی‬
‫نکات‬
‫مثبت‬
‫و‬
‫منفی‬
‫خود‬
‫را‬
‫دارد‬
.
Native Design Vs Web Design
1
.
( ‫وب‬ ‫کاربری‬ ‫رابط‬ ‫طراحی‬
Web UI Design
)
‫برنامه‬
‫های‬
‫وب‬
‫به‬
‫راحتی‬
‫از‬
‫طریق‬
‫پیوندها‬
‫به‬
‫اشتراک‬
‫گذاشته‬
‫می‬
.‫شوند‬
‫هیچ‬
‫چیزی‬
‫برای‬
‫نصب‬
‫وجود‬
‫ندارد‬
‫طریق‬ ‫از‬ ‫کاربر‬ ‫و‬
‫سیستم‬ ‫و‬ ‫افزار‬ ‫سخت‬ ‫ساختار‬ ‫نظر‬ ‫از‬ ‫نیز‬ ‫محدودتی‬ ‫بنابراین‬ ‫داشت‬ ‫خواهد‬ ‫دسترسی‬ ‫سیستم‬ ‫به‬ ‫خود‬ ‫مرورگر‬
‫نخواهد‬ ‫عامل‬
‫ت‬ ‫وب‬ ‫برنامه‬ ‫یک‬ .‫داشت‬
‫قریبا‬
‫قادر‬
‫است‬
‫روی‬
‫هر‬
‫دستگاهی‬
‫با‬
‫صفحه‬
،‫نمایش‬
‫مرورگر‬
‫ای‬
‫نترنت‬
‫و‬
‫اتصال‬
‫به‬
‫شبکه‬
‫اجرا‬
‫شود‬
‫و‬
‫امکان‬ ‫نتیجه‬ ‫در‬
‫دسترس‬
.‫کرد‬ ‫خواهد‬ ‫فراهم‬ ‫ما‬ ‫برای‬ ‫را‬ ‫گسترش‬ ‫و‬ ‫توسعه‬ ‫قابلیت‬ ‫و‬ ‫آنی‬ ‫روزرسانی‬ ‫به‬ ،‫پذیری‬
2
.
( ‫بومی‬ ‫کاربری‬ ‫رابط‬ ‫طراحی‬
Native UI Design
)
‫برنامه‬
‫محیط‬ ‫در‬ ‫نصب‬ ‫نیازمند‬ ‫معموال‬ ‫اند‬ ‫یافته‬ ‫توسعه‬ ‫بومی‬ ‫کاربری‬ ‫رابط‬ ‫یک‬ ‫اساس‬ ‫بر‬ ‫که‬ ‫هایی‬
‫می‬ ‫کاربر‬
‫این‬ ‫و‬ ‫باشند‬
‫می‬ ‫باعث‬ ‫موضوع‬
‫به‬ ‫یا‬ ‫نسخه‬ ‫تغییر‬ ‫شود‬
‫برای‬ ‫کاربر‬ ‫خود‬ ‫تعامل‬ ‫با‬ ‫اغلب‬ ‫که‬ ‫شود‬ ‫جدی‬ ‫چالش‬ ‫یک‬ ‫ایجاد‬ ‫موجب‬ ‫آنها‬ ‫روزرسانی‬
‫می‬ ‫حل‬ ‫قابل‬ ‫جدید‬ ‫نسخه‬ ‫نصب‬
‫نمی‬ ‫مرورگر‬ ‫نیازمند‬ ‫آن‬ ‫اجرای‬ ‫برنامه‬ ‫مستقیم‬ ‫نصب‬ ‫بدلیل‬ ‫طرفی‬ ‫از‬ ‫اما‬ .‫باشد‬
‫به‬ ‫و‬ ‫باشد‬
‫می‬ ‫اجرا‬ ‫آماده‬ ‫سرعت‬
‫شود‬
.
‫برنامه‬
‫های‬
‫بومی‬
‫کمتر‬
‫به‬
‫داده‬
‫هایی‬
‫که‬
‫از‬
‫طریق‬
‫اتصال‬
‫به‬
‫شبکه‬
‫به‬
‫آنها‬
‫منتقل‬
‫می‬
‫شود‬
‫متکی‬
،‫هستند‬
‫بنابراین‬
ً‫ال‬‫معمو‬
‫سریعتر‬
‫بارگیری‬
‫می‬
‫شوند‬
.
‫دسترسی‬
‫بیشتر‬
‫به‬
‫قابلیت‬
‫های‬
‫سخت‬
‫افزاری‬
‫سیستم‬ ‫منابع‬ ‫و‬
‫باعث‬ ‫عامل‬
‫می‬
‫شود‬
‫قدرت‬
‫پردازش‬
‫مانند‬ ‫منابعی‬ ‫از‬ ‫نیاز‬ ‫صورت‬ ‫در‬ ‫و‬ ‫داشته‬ ‫بیشتری‬
‫کارت‬
‫های‬
،‫گرافیک‬
‫دوربین‬
‫ها‬
‫و‬
‫میکروفون‬
‫یا‬ ‫ها‬
.‫باشند‬ ‫داشته‬ ‫راحتتری‬ ‫استفاده‬ ‫هستند‬ ‫متصل‬ ‫دستگاه‬ ‫به‬ ‫که‬ ‫جانبی‬ ‫ابزارهای‬
‫پروتکل‬ ‫و‬ ‫وب‬ ‫بر‬ ‫مبتنی‬ ‫سیستم‬ ‫یک‬ ‫طراحی‬ ،‫کاربری‬ ‫رابط‬ ‫از‬ ‫ما‬ ‫مقصد‬ ‫و‬ ‫هدف‬ ‫اگر‬
http
‫می‬
‫تکنولوژی‬ ‫باشد‬
‫زیادی‬ ‫ابزارهای‬ ‫و‬ ‫ها‬
‫بصورت‬ ‫که‬ ‫دارند‬ ‫وجود‬ ‫کار‬ ‫این‬ ‫برای‬
‫کلی‬
‫گروه‬ ‫دو‬ ‫از‬ ‫یکی‬ ‫در‬
‫تفسیر‬
‫سرویس‬ ‫سمت‬
( ‫دهنده‬
Server Side Rendering
‫و‬ )
‫تفسیر‬
Enterprise Resource Planning Implementation Architectures and Frameworks.pdf
Enterprise Resource Planning Implementation Architectures and Frameworks.pdf
Enterprise Resource Planning Implementation Architectures and Frameworks.pdf
Enterprise Resource Planning Implementation Architectures and Frameworks.pdf
Enterprise Resource Planning Implementation Architectures and Frameworks.pdf
Enterprise Resource Planning Implementation Architectures and Frameworks.pdf
Enterprise Resource Planning Implementation Architectures and Frameworks.pdf

More Related Content

Similar to Enterprise Resource Planning Implementation Architectures and Frameworks.pdf

چارچوب متن باز جهت توسعه سیستم های نرم افزاری
چارچوب متن باز جهت توسعه سیستم های نرم افزاریچارچوب متن باز جهت توسعه سیستم های نرم افزاری
چارچوب متن باز جهت توسعه سیستم های نرم افزاریعباس بني اسدي مقدم
 
مجازي سازي، مجازى سازى
مجازي سازي، مجازى سازىمجازي سازي، مجازى سازى
مجازي سازي، مجازى سازىmarketingfarkhad
 
Oracle Data Integrator (persian)
Oracle Data Integrator (persian)Oracle Data Integrator (persian)
Oracle Data Integrator (persian)Ehsan Hamzei
 
What is itsm? مدیریت خدمات فناوری اطلاعات چیست؟
What is itsm? مدیریت خدمات فناوری اطلاعات چیست؟What is itsm? مدیریت خدمات فناوری اطلاعات چیست؟
What is itsm? مدیریت خدمات فناوری اطلاعات چیست؟Kaveh Radi
 
Persian Document ITBSC
Persian Document   ITBSCPersian Document   ITBSC
Persian Document ITBSCHamideh Iraj
 
مجموعه برنامه‌های دیدگاه در بستر همراه
مجموعه برنامه‌های دیدگاه در بستر همراهمجموعه برنامه‌های دیدگاه در بستر همراه
مجموعه برنامه‌های دیدگاه در بستر همراهchargoon
 
قلاب سازی در تحلیل بدافزارهاHooking in Malware Analysis
 قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis
قلاب سازی در تحلیل بدافزارهاHooking in Malware AnalysisM Mehdi Ahmadian
 
How to choose right methodology
How to choose right methodologyHow to choose right methodology
How to choose right methodologyEhsan Alirezaei
 
BPMN استانداردی برای مدل سازی فرایندهای کسب وکار
BPMN استانداردی برای مدل سازی فرایندهای کسب وکارBPMN استانداردی برای مدل سازی فرایندهای کسب وکار
BPMN استانداردی برای مدل سازی فرایندهای کسب وکارRayBPMS
 
Erp roya bajelan_v2
Erp roya bajelan_v2Erp roya bajelan_v2
Erp roya bajelan_v2roya bajelan
 
Microservices.pdf
Microservices.pdfMicroservices.pdf
Microservices.pdfhbsd1374
 
Keydoc presentation (1)
Keydoc presentation (1)Keydoc presentation (1)
Keydoc presentation (1)danesh hamara
 
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیرازIntroduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیرازMobin Ranjbar
 
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهرانFarafekr Technology
 
طرح چارچوب متن باز تولید نرم افزار
طرح چارچوب  متن باز تولید نرم افزار طرح چارچوب  متن باز تولید نرم افزار
طرح چارچوب متن باز تولید نرم افزار عباس بني اسدي مقدم
 

Similar to Enterprise Resource Planning Implementation Architectures and Frameworks.pdf (20)

چارچوب متن باز جهت توسعه سیستم های نرم افزاری
چارچوب متن باز جهت توسعه سیستم های نرم افزاریچارچوب متن باز جهت توسعه سیستم های نرم افزاری
چارچوب متن باز جهت توسعه سیستم های نرم افزاری
 
مجازي سازي، مجازى سازى
مجازي سازي، مجازى سازىمجازي سازي، مجازى سازى
مجازي سازي، مجازى سازى
 
Oracle Data Integrator (persian)
Oracle Data Integrator (persian)Oracle Data Integrator (persian)
Oracle Data Integrator (persian)
 
What is itsm? مدیریت خدمات فناوری اطلاعات چیست؟
What is itsm? مدیریت خدمات فناوری اطلاعات چیست؟What is itsm? مدیریت خدمات فناوری اطلاعات چیست؟
What is itsm? مدیریت خدمات فناوری اطلاعات چیست؟
 
پروژه پورتال جامع سازمانی
پروژه پورتال جامع سازمانیپروژه پورتال جامع سازمانی
پروژه پورتال جامع سازمانی
 
Persian Document ITBSC
Persian Document   ITBSCPersian Document   ITBSC
Persian Document ITBSC
 
مجموعه برنامه‌های دیدگاه در بستر همراه
مجموعه برنامه‌های دیدگاه در بستر همراهمجموعه برنامه‌های دیدگاه در بستر همراه
مجموعه برنامه‌های دیدگاه در بستر همراه
 
قلاب سازی در تحلیل بدافزارهاHooking in Malware Analysis
 قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis قلاب سازی در تحلیل بدافزارهاHooking  in Malware Analysis
قلاب سازی در تحلیل بدافزارهاHooking in Malware Analysis
 
RayBPMS (Rayvarz Business Process Management System)
RayBPMS (Rayvarz Business Process Management System)RayBPMS (Rayvarz Business Process Management System)
RayBPMS (Rayvarz Business Process Management System)
 
How to choose right methodology
How to choose right methodologyHow to choose right methodology
How to choose right methodology
 
ارائهٔ DLP
ارائهٔ DLPارائهٔ DLP
ارائهٔ DLP
 
BPMN استانداردی برای مدل سازی فرایندهای کسب وکار
BPMN استانداردی برای مدل سازی فرایندهای کسب وکارBPMN استانداردی برای مدل سازی فرایندهای کسب وکار
BPMN استانداردی برای مدل سازی فرایندهای کسب وکار
 
Erp roya bajelan_v2
Erp roya bajelan_v2Erp roya bajelan_v2
Erp roya bajelan_v2
 
مدل رانده
مدل راندهمدل رانده
مدل رانده
 
Cloud ofthings
Cloud ofthingsCloud ofthings
Cloud ofthings
 
Microservices.pdf
Microservices.pdfMicroservices.pdf
Microservices.pdf
 
Keydoc presentation (1)
Keydoc presentation (1)Keydoc presentation (1)
Keydoc presentation (1)
 
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیرازIntroduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
 
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
 
طرح چارچوب متن باز تولید نرم افزار
طرح چارچوب  متن باز تولید نرم افزار طرح چارچوب  متن باز تولید نرم افزار
طرح چارچوب متن باز تولید نرم افزار
 

Enterprise Resource Planning Implementation Architectures and Frameworks.pdf

  • 1. ‫توسعه‬ ‫معماریهای‬ ‫و‬ ‫چهارچوبها‬ ‫بررسی‬ ‫سازمانی‬ ‫منابع‬ ‫مدیریت‬ ‫سیستم‬ Enterprise Resource Planning Implementation Architectures and Frameworks ‫گردآوری‬ ‫و‬ ‫تالیف‬ ‫منیع‬ ‫میکائیلی‬ ‫هادی‬ ‫آذر‬ ‫استوار‬ ‫وحید‬ ‫بهار‬ 1401
  • 2. ‫مقدمه‬ ‫در‬ ‫تکنول‬ ‫پیدایش‬ ‫اخیر‬ ‫سالهای‬ ‫معما‬ ‫و‬ ‫وژیهای‬ ‫را‬ ‫متعددی‬ ‫مسیرهای‬ ‫فراوان‬ ‫ریهای‬ ‫توسعه‬ ‫رو‬ ‫پیش‬ ‫داده‬ ‫قرار‬ ‫دهندگان‬ .‫اند‬ ‫اینکه‬ ‫با‬ ‫این‬ ‫ت‬ ‫نوع‬ ‫برنامه‬ ‫دست‬ ‫برنامه‬ ‫بهتر‬ ‫توسعه‬ ‫برای‬ ‫را‬ ‫نویسان‬ ‫می‬ ‫باز‬ ‫ها‬ ‫معماری‬ ‫یک‬ ‫انتخاب‬ ‫چالش‬ ‫اما‬ ،‫گذارد‬ ‫را‬ ‫کارآمد‬ ‫و‬ ‫صحیح‬ ‫رویکرد‬ ‫یا‬ .‫دارد‬ ‫همراه‬ ‫به‬ ‫و‬ ‫چهارچوبها‬ ‫این‬ ‫از‬ ‫بسیاری‬ ‫فاقد‬ ‫موجود‬ ‫شده‬ ‫طراحی‬ ‫سیستمهای‬ ‫از‬ ‫بسیاری‬ ‫طرفی‬ ‫از‬ ‫می‬ ‫معماریها‬ ‫این‬ ‫حال‬ .‫باشد‬ ‫می‬ ‫مطرح‬ ‫سوال‬ ‫تغییر‬ ‫هدف‬ ‫با‬ ‫یا‬ ‫شده‬ ‫گرفته‬ ‫جدید‬ ‫جامع‬ ‫سیستم‬ ‫یک‬ ‫توسعه‬ ‫به‬ ‫تصمیم‬ ‫اگر‬ ‫که‬ ‫گردد‬ ‫ارتقا‬ ‫و‬ ، ‫قصد‬ ‫سیستم‬ ‫مهاجرت‬ ‫به‬ ‫تکنولوژی‬ ‫را‬ ‫دیگری‬ ‫وجود‬ ‫دار‬ ‫د‬ ‫ب‬ ‫بهره‬ ‫رویکرد‬ ‫و‬ ‫روش‬ ‫کدام‬ ‫از‬ ‫ر‬ ‫د‬ . ‫سیستم‬ ‫یک‬ ‫مهاجرت‬ ‫یا‬ ‫و‬ ‫توسعه‬ ‫هدف‬ ‫با‬ ‫جاری‬ ‫مقاله‬ ‫در‬ ‫جامع‬ ERP ‫پرداخته‬ ‫ابزارهایی‬ ‫و‬ ‫روشها‬ ،‫چهارچوبها‬ ،‫معماریها‬ ‫بررسی‬ ‫به‬ ‫اس‬ ‫شده‬ ‫شرایط‬ ‫بتواند‬ ‫که‬ ‫ت‬ ‫ی‬ ‫بتوان‬ ‫تا‬ ‫سازد‬ ‫فراهم‬ ‫را‬ ‫معماری‬ ‫توسعه‬ ‫موضوعات‬ ‫از‬ ‫یک‬ ‫هر‬ ‫در‬ ، ‫گ‬ ‫پیشرو‬ ‫را‬ ‫مناسبی‬ ‫رویکرد‬ ‫رفت‬ ‫که‬ ‫امکان‬ ‫آمده‬ ‫بدست‬ ‫سیستم‬ ‫بهره‬ ،‫برداری‬ ‫مجموعه‬ ‫یک‬ ‫برای‬ ‫طوالنی‬ ‫مدت‬ ‫در‬ ‫نگهداری‬ ‫و‬ ‫توسعه‬ .‫آورد‬ ‫فراهم‬ ‫را‬ ‫صنعتی‬ ‫یا‬ ‫سازمانی‬ ‫معم‬ ‫جامع‬ ‫سیستم‬ ‫یک‬ ‫توسعه‬ ‫برای‬ ‫نیاز‬ ‫مورد‬ ‫ساختارهای‬ ‫و‬ ‫اریها‬ ERP ‫دسته‬ ‫موضوعی‬ ‫گروه‬ ‫هشت‬ ‫در‬ ‫را‬ ‫بندی‬ ‫بیان‬ ‫و‬ ‫کرده‬ .‫ایم‬ ‫پرداخته‬ ‫موضوعات‬ ‫از‬ ‫یک‬ ‫هر‬ ‫در‬ ‫شده‬ ‫مطرح‬ ‫رویکردهای‬ ‫عالوه‬ ‫مناسب‬ ‫ابزار‬ ‫و‬ ‫معماری‬ ‫انتخاب‬ ‫که‬ ‫است‬ ‫ذکر‬ ‫به‬ ‫الزم‬ ‫تاثیر‬ ‫ویژگیها‬ ‫سیستم‬ ‫خصوصیات‬ ‫و‬ ‫به‬ ‫انتخاب‬ ‫امر‬ ‫در‬ ‫محیط‬ ‫شرایط‬ ‫و‬ ‫توسعه‬ ،‫تواناییها‬ ‫اعضا‬ ‫دانش‬ ‫میزان‬ ‫و‬ ‫قابلیتها‬ ‫ی‬ .‫دارد‬ ‫مستقیم‬ ‫بستگی‬ ‫نیز‬ ‫تیم‬
  • 3. : ‫اول‬ ‫بخش‬ ‫افزار‬ ‫نرم‬ ‫بندی‬ ‫الیه‬ ( Software Layering ) ‫مدیریت‬ ‫و‬ ‫کاهش‬ ‫هدف‬ ‫با‬ ‫افزار‬ ‫نرم‬ ‫بندی‬ ‫الیه‬ ‫پیچیدگی‬ ‫بزرگ‬ ‫افزارهای‬ ‫نرم‬ ‫درحال‬ ‫فرایند‬ ‫در‬ ‫معماری‬ ‫یک‬ ‫عنوان‬ ‫به‬ ‫خود‬ ‫توسعه‬ ‫می‬ ‫شناخته‬ ‫افزار‬ ‫نرم‬ ‫توسعه‬ ‫قابلیت‬ ‫و‬ ‫توسعه‬ ‫رویکردهای‬ ‫شفافیت‬ ،‫توسعه‬ ‫تیم‬ ‫اعضاء‬ ‫میان‬ ‫وظایف‬ ‫تقسیم‬ ‫موجب‬ ‫معماری‬ ‫این‬ .‫شود‬ .‫شد‬ ‫خواهد‬ ‫پروژه‬ ‫در‬ ‫راحت‬ ‫و‬ ‫سریع‬ ‫پشتیبانی‬ ‫و‬ ‫نگهداری‬ ‫افزار‬ ‫نرم‬ ‫چندالیه‬ ‫معماری‬ ‫یک‬ ‫ی‬ ‫الیه‬ ‫شامل‬ ‫متفا‬ ‫های‬ ‫الیه‬ ‫هر‬ ‫و‬ ‫است‬ ‫وتی‬ ‫سرویس‬ ‫به‬ ‫مربوط‬ ‫یا‬ ‫ها‬ ‫می‬ ‫مشخصی‬ ‫وظایف‬ .‫شود‬ ‫که‬ ‫آنجایی‬ ‫از‬ ‫کار‬ ‫از‬ ‫تر‬ ‫ساده‬ ‫الیه‬ ‫هر‬ ‫در‬ ‫تغییر‬ ‫مجزاست‬ ‫دیگر‬ ‫های‬ ‫الیه‬ ‫از‬ ‫الیه‬ ‫هر‬ ‫معماری‬ ‫کل‬ ‫با‬ ‫که‬ ‫است‬ ‫شده‬ ‫ارائه‬ ‫مختلف‬ ‫های‬ ‫الیه‬ ‫به‬ ‫افزار‬ ‫نرم‬ ‫بندی‬ ‫تقسیم‬ ‫هدف‬ ‫با‬ ‫مختلفی‬ ‫معماریهای‬ ‫روشهای‬ .‫بود‬ ‫خواهد‬ ‫مشهورترین‬ ‫آنها‬ ‫معماری‬ ‫سه‬ ( ‫الیه‬ Three-Layer Architecture ( ‫پیازی‬ ‫معماری‬ ‫و‬ ) Onion Architecture ‫می‬ ) .‫باشند‬ 1 . ‫الیه‬ ‫سه‬ ‫معماری‬ ( Three-Layer Architecture ) Three Layer Architecture ‫با‬ ‫معماری‬ ‫این‬ ‫مقاالت‬ ‫بیشتر‬ ‫در‬ ‫که‬ ‫است‬ ‫توضیح‬ ‫به‬ ‫الزم‬ ‫ابتدا‬ ‫در‬ ( ‫ردیفه‬ ‫سه‬ ‫معماری‬ Three-Tier ‫می‬ ‫گرفته‬ ‫اشتباه‬ ) ‫آن‬ ‫در‬ ‫که‬ ‫شود‬ ‫بخش‬ ‫سه‬ ‫به‬ ‫را‬ ‫افزاری‬ ‫نرم‬ ‫سیستم‬ ، ( ‫داده‬ ‫ردیف‬ Data Tier ‫ردیف‬ ،) ‫برنامه‬ (Application Tier) ( ‫نمایش‬ ‫ردیف‬ ‫و‬ User-Interface Tier ‫الیه‬ ‫سه‬ ‫معماری‬ ‫از‬ ‫درست‬ ‫تعریفی‬ ‫ارائه‬ ‫به‬ ‫ابتدا‬ ‫در‬ ‫به‬ ‫لذا‬ .‫است‬ ‫شده‬ ‫بندی‬ ‫تقسیم‬ ) ‫می‬ ‫پرداخته‬ .‫شود‬ ‫معماری‬ ‫سه‬ - ‫واقع‬ ‫در‬ ‫الیه‬ ‫برنامه‬ ‫ردیف‬ ‫برای‬ ‫بندی‬ ‫الیه‬ ‫و‬ ‫بندی‬ ‫تقسیم‬ ‫یک‬ (Application Tier) ‫می‬ ‫ردیفه‬ ‫سه‬ ‫معماری‬ ‫در‬ ‫شامل‬ ‫که‬ ‫باشد‬ 1 - ‫الیه‬ ‫دسترسی‬ ‫های‬ ( ‫داده‬ ‫به‬ Data-Access Layer ) ، 2 - ( ‫تجاری‬ ‫قوانین‬ ‫الیه‬ Business Rule Layer ‫و‬ ) 3 - ( ‫ارائه‬ ‫الیه‬ Presentation Layer ‫می‬ ) .‫باشد‬  ‫داده‬ ‫به‬ ‫دسترسی‬ ‫الیه‬ ( Data-Access Layer ) ‫الیه‬ ‫این‬ ‫داده‬ ‫تغییرات‬ ‫اعمال‬ ‫و‬ ‫های‬ ‫داده‬ ‫سازی‬ ‫فراهم‬ ‫وظیفه‬ ‫می‬ ‫که‬ ‫دارد‬ ‫عهده‬ ‫بر‬ ‫را‬ ‫داده‬ ‫پایگاه‬ ‫برروی‬ ‫ای‬ ‫پیاده‬ ‫برای‬ ‫توان‬ ‫رویکردهای‬ ‫از‬ ‫یکی‬ ‫از‬ ‫یا‬ ‫داده‬ ‫به‬ ‫دسترسی‬ ‫ساده‬ ‫روشهای‬ ‫از‬ ‫یکی‬ ‫از‬ ‫آن‬ ‫سازی‬ ORM ‫عملیات‬ ‫الیه‬ ‫این‬ .‫کرد‬ ‫استفاده‬ ‫می‬ ‫فراهم‬ ‫آن‬ ‫برای‬ ‫را‬ ‫درخواستی‬ ‫نتایج‬ ‫و‬ ‫انجام‬ ‫داده‬ ‫پایگاه‬ ‫برروی‬ ‫را‬ ‫تجاری‬ ‫قوانین‬ ‫الیه‬ ‫توسط‬ ‫درخواستی‬ .‫آورد‬ ‫توجه‬ ‫باید‬ ‫که‬ ‫داشت‬ ‫گونه‬ ‫هر‬ ‫با‬ ‫ارتباط‬ ‫داده‬ ‫ردیف‬ ‫اصطالح‬ ‫به‬ ‫یا‬ ‫داده‬ ‫پایگاه‬ ( Data Tier ‫می‬ ‫صورت‬ ‫الیه‬ ‫این‬ ‫طریق‬ ‫از‬ ) .‫پذیرد‬  ‫الیه‬ ‫قوا‬ ‫تجاری‬ ‫نین‬ ( Business-Rule Layer ) ‫قوانین‬ ‫الیه‬ ‫منطق‬ ‫یا‬ ‫واقع‬ ‫در‬ ‫که‬ ‫تجاری‬ ‫میا‬ ‫الیه‬ ‫می‬ ‫معماری‬ ‫این‬ ‫نی‬ ،‫باشد‬ ‫ارتباط‬ ‫وظیفه‬ ‫و‬ ‫بوده‬ ‫برنامه‬ ‫اصلی‬ ‫منطق‬ ‫حاوی‬ ‫الیه‬ ‫بین‬ ‫ارائه‬ ‫الیه‬ ‫و‬ ‫به‬ ‫دسترسی‬ ‫درخواست‬ ‫کلیه‬ ‫واقع‬ ‫در‬ .‫دارد‬ ‫عهده‬ ‫بر‬ ‫را‬ ‫داده‬ ‫کاربر‬ ‫تعامل‬ ‫اثر‬ ‫در‬ ‫که‬ ‫هایی‬ ‫الیه‬ ‫یا‬ ‫برنامه‬ ‫با‬ ‫ارائه‬ ‫شده‬ ‫ایجاد‬ ‫پردازش‬ ‫تمام‬ ‫و‬ ‫شده‬ ‫منتقل‬ ‫الیه‬ ‫این‬ ‫به‬ ‫است‬ ‫شده‬ ‫انجام‬ ‫الیه‬ ‫این‬ ‫در‬ ‫برنامه‬ ‫اصلی‬ ‫منطق‬ ‫اساس‬ ‫بر‬ ‫الزم‬ ‫های‬ ‫الیه‬ ‫به‬ ً‫ا‬‫مجدد‬ ‫پردازش‬ ‫این‬ ‫نتیجه‬ ‫و‬ ‫ارائه‬ ‫منتقل‬ ‫ب‬ ‫نمایش‬ ‫ردیف‬ ‫کمک‬ ‫به‬ ‫نتایج‬ ‫و‬ ‫درمی‬ ‫نمایش‬ ‫به‬ ‫کاربر‬ ‫رای‬ ‫گاهی‬ .‫آید‬ ‫گونه‬ ‫به‬ ‫کاربر‬ ‫درخواست‬ ‫اوقات‬ ‫الیه‬ ‫که‬ ‫است‬ ‫ای‬ ‫قوانین‬ ‫الیه‬ ‫با‬ ‫که‬ ‫دارد‬ ‫نیاز‬ ‫آن‬ ‫انجام‬ ‫برای‬ ‫تجاری‬ ‫به‬ ‫دسترسی‬ ‫یعنی‬ ‫داده‬ Tree Tier Architecture
  • 4. ‫باشد‬ ‫داشته‬ ‫ارتباط‬ ‫خود‬ ‫زیرین‬ ‫الیه‬ . ‫کاربران‬ ‫درخواست‬ ‫روی‬ ‫بر‬ ‫برنامه‬ ‫اصلی‬ ‫منطق‬ ‫اعمال‬ ‫برنامه‬ ‫منطق‬ ‫الیه‬ ‫اصلی‬ ‫وظیفه‬ ‫ال‬ ‫بین‬ ‫ارتباط‬ ‫برقراری‬ ‫نیز‬ ‫و‬ ‫یه‬ ‫ارائه‬ ‫الیه‬ ‫و‬ ‫به‬ ‫دسترسی‬ ‫می‬ ‫داده‬ ‫باشد‬ .  ‫ارائه‬ ‫الیه‬ ( Presentation Layer ) ‫الیه‬ ‫این‬ ( ‫کاربر‬ ‫گرافیکی‬ ‫رابط‬ ‫طریق‬ ‫از‬ ‫کاربر‬ ‫با‬ ‫مستقیم‬ ‫تعامل‬ ‫و‬ ‫اطالعات‬ ‫نمایش‬ ‫وظیفه‬ ‫نادرست‬ ‫باور‬ ‫برخالف‬ GUI ) ‫را‬ ‫فقط‬ ‫و‬ ‫ندارد‬ ‫داده‬ ‫ساختار‬ ‫با‬ ‫را‬ ‫برنامه‬ ‫منطق‬ ‫الیه‬ ‫از‬ ‫شده‬ ‫حاصل‬ ‫نتایج‬ ‫نمایش‬ ‫ردیف‬ ‫اختیار‬ ‫در‬ ‫مناسب‬ ‫ای‬ (User-Interface) ‫می‬ ‫قرار‬ ‫می‬ ‫قرار‬ ‫منطق‬ ‫قوانین‬ ‫الیه‬ ‫اختیار‬ ‫در‬ ‫اعتبارسنجی‬ ‫از‬ ‫پس‬ ‫را‬ ‫نمایش‬ ‫ردیف‬ ‫از‬ ‫دریافتی‬ ‫مقادیر‬ ‫طرفی‬ ‫از‬ .‫دهد‬ .‫دهد‬ ‫می‬ ‫ارائه‬ ‫الیه‬ ‫نقش‬ ‫شدن‬ ‫روشنتر‬ ‫برای‬ ‫نقش‬ ‫از‬ ‫توان‬ Api ‫و‬ Dto ‫نقش‬ ‫یا‬ ‫و‬ ‫گرا‬ ‫سرویس‬ ‫معماری‬ ‫در‬ Controller ‫و‬ ViewModel ‫زیرساخت‬ ‫در‬ mvc ‫نرم‬ ‫یک‬ ‫طراحی‬ ‫برای‬ .‫برد‬ ‫نام‬ ‫ارائه‬ ‫الیه‬ ‫از‬ ‫مثالهایی‬ ‫عنوان‬ ‫به‬ ‫وب‬ ‫تحت‬ ‫افزار‬ ‫ویژگیهای‬ ‫الیه‬ ‫سه‬ ‫معماری‬ : ‫بندی‬ ‫تقسیم‬ ‫با‬ ‫الیه‬ ‫سه‬ ‫معماری‬ ‫مفهومی‬ ‫سازی‬ ‫ای‬ ‫پیمانه‬ ‫و‬ ‫می‬ ‫رخ‬ ‫افزار‬ ‫نرم‬ ‫توسعه‬ ‫فرایند‬ ‫در‬ ‫که‬ ‫آنچه‬ ‫از‬ ‫دهد‬ ‫پیاده‬ ‫و‬ ‫تجاری‬ ‫قوانین‬ ‫تحلیل‬ ‫برای‬ ‫روشنی‬ ‫و‬ ‫شفاف‬ ‫نگاه‬ ‫فراهم‬ ‫باال‬ ‫پشتیبانی‬ ‫قابلیت‬ ‫با‬ ‫افزاری‬ ‫نرم‬ ‫ارائه‬ ‫و‬ ‫سازی‬ ‫می‬ ‫الیه‬ ‫طراحی‬ ‫لیکن‬ .‫آورد‬ ‫طبقه‬ ‫صورت‬ ‫به‬ ‫ها‬ ‫پیاده‬ ‫روند‬ ‫در‬ ‫تغییر‬ ‫که‬ ‫شود‬ ‫می‬ ‫باعث‬ ‫همدیگر‬ ‫برروی‬ ‫هایی‬ - ‫الیه‬ ‫از‬ ‫یک‬ ‫هر‬ ‫سازی‬ ‫الیه‬ ‫سایر‬ ‫برروی‬ ‫تغییرات‬ ‫انتشار‬ ‫موجب‬ ‫ها‬ ‫از‬ ‫هریک‬ ‫از‬ ‫سازی‬ ‫پیاده‬ ‫استقالل‬ ‫و‬ ‫گردد‬ ‫ها‬ ‫الیه‬ .‫شود‬ ‫گرفته‬ ‫ها‬ ‫توسعه‬ ‫مفاهیم‬ ‫جداسازی‬ ‫عالرغم‬ ‫واقع‬ ‫در‬ ، ( ‫کامل‬ ‫اتصال‬ ‫معماری‬ ‫یک‬ ‫ارائه‬ ‫با‬ Tightly coupled ،) ‫پیاده‬ ‫نحوه‬ ‫وابستگی‬ ‫دغدغه‬ ‫اصل‬ ‫با‬ ‫مغایر‬ ‫کامال‬ ‫امر‬ ‫این‬ ‫که‬ ‫است‬ ‫نشده‬ ‫رفع‬ ‫همدیگر‬ ‫به‬ ‫آنها‬ ‫سازی‬ ( ‫ها‬ ‫دغدغه‬ ‫جداسازی‬ Separation of Concerns ) ‫می‬ ‫باشد‬ 2 . ‫معماری‬ ‫پیازی‬ ( Onion Architecture ) ‫پیازی‬ ‫معماری‬ ‫نحوه‬ ‫بر‬ ‫دیگری‬ ‫رویکرد‬ ‫الیه‬ ‫برنامه‬ ‫ردیف‬ ‫بندی‬ ( Application Tier ) ‫ردیفه‬ ‫سه‬ ‫ساختار‬ ‫در‬ ( Three Tier ) ‫این‬ .‫دارد‬ ‫معماری‬ ‫می‬ ‫ارائه‬ ‫را‬ ‫روشی‬ ‫دهد‬ ‫تست‬ ،‫نگهداری‬ ‫قابلیت‬ ‫که‬ ‫توسعه‬ ‫و‬ ‫پذیری‬ ‫می‬ ‫فراهم‬ ‫آسانی‬ ‫به‬ ‫را‬ ‫افزارها‬ ‫نرم‬ ‫پذیری‬ ‫سازد‬ ‫معماری‬ . ‫پیازی‬ ‫تاکید‬ ‫عملیات‬ ،‫منطق‬ ‫جدایی‬ ‫و‬ ‫ها‬ ‫وابستگی‬ ‫روی‬ ‫زیادی‬ ‫سرویس‬ ،‫ها‬ ‫رابط‬ ‫و‬ ‫ها‬ - ‫کاربری‬ ‫را‬ ‫دارد‬ ‫و‬ ‫الیه‬ ‫بندی‬ ‫حول‬ ‫م‬ ‫حور‬ ‫سیستم‬ ‫هسته‬ ‫الیه‬ ‫واقع‬ ‫در‬ ‫که‬ ‫دامنه‬ ( Domain ) ‫می‬ ‫سیستم‬ ‫طراحی‬ ‫دامنه‬ .‫است‬ ‫متمرکز‬ ‫باشد‬ ‫یک‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫آن‬ ‫ماهیت‬ ‫حقیقت‬ ‫در‬ ‫که‬ ‫سیستم‬ ‫الزمه‬ ‫و‬ ‫تالقی‬ ‫نقطه‬ ‫کند‬ ‫الیه‬ ‫سایر‬ ‫و‬ ‫باشد‬ ‫می‬ ‫پیازی‬ ‫معماری‬ ‫اصلی‬ ‫ها‬ ‫مرکزیت‬ ‫با‬ ‫و‬ ‫دامنه‬ ‫منبای‬ ‫بر‬ ‫آ‬ ‫می‬ ‫شکل‬ ‫ن‬ .‫گیرند‬ ‫معماری‬ ‫خالف‬ ‫بر‬ ‫معماری‬ ‫این‬ ‫در‬ ‫سه‬ ‫وابستگی‬ ‫الیه‬ ‫د‬ ‫الیه‬ ‫به‬ ‫اده‬ ‫بر‬ ‫تمرکز‬ ‫و‬ ‫ندارد‬ ‫وجود‬ ‫نرم‬ ‫دامنه‬ ‫افزار‬ .‫باشد‬ ‫می‬ ‫پی‬ ‫سازی‬ ‫اده‬ ‫معماری‬ ‫پیازی‬ ‫مف‬ ‫به‬ ‫شدت‬ ‫به‬ ‫ا‬ ‫ه‬ ‫ی‬ ‫م‬ ‫معکوس‬ ‫سازی‬ ( ‫کنترلها‬ Inversion Of Controls ) ( ‫وابستگیها‬ ‫تزریق‬ ‫و‬ Dependency Injection ) ‫دارد‬ ‫تکیه‬ . ‫مرکز‬ ‫الیه‬ ‫بجز‬ ‫پیازی‬ ‫معماری‬ ‫شده‬ ‫ارائه‬ ‫مقاالت‬ ‫از‬ ‫بسیاری‬ ‫در‬ ‫ی‬ ( ‫دامنه‬ Domain Layer ) ‫الیه‬ ‫شامل‬ ‫سرویس‬ ( ‫برنامه‬ Application Service Layer ،) ‫الیه‬ ( ‫ارائه‬ Presentation Layer ) ، ‫الیه‬ ( ‫زیرساخت‬ Infrastructure Layer ‫و‬ ) ‫الیه‬ ( ‫تست‬ Test Layer .‫باشد‬ ‫می‬ ‫نیز‬ )  ‫د‬ ‫الیه‬ ‫امنه‬ ( Domain Layer ) Onion Architecture
  • 5. ‫مشخص‬ ‫الیه‬ ‫این‬ ‫در‬ ‫بایستی‬ ‫واقع‬ ‫در‬ .‫باشد‬ ‫می‬ ‫سیستم‬ ‫طراحی‬ ‫شروع‬ ‫نقطه‬ ‫دارد‬ ‫قرار‬ ‫معماری‬ ‫این‬ ‫مرکز‬ ‫در‬ ‫که‬ ‫دامنه‬ ‫الیه‬ ‫چه‬ ‫سیستم‬ ‫گردد‬ ‫رفتارهایی‬ ‫می‬ ‫دنبال‬ ‫را‬ ‫کند‬ ‫که‬ ‫تا‬ ‫آنها‬ ‫عملیات‬ ‫مدل‬ ‫صورت‬ ‫به‬ ‫واسط‬ ( Interface ) ‫و‬ ‫داده‬ ‫ساختار‬ ‫های‬ ( ‫داده‬ ‫انتقال‬ ‫اشیاء‬ ‫صورت‬ ‫به‬ ‫دامنه‬ ‫نیاز‬ ‫مورد‬ Dto ) ‫پیاده‬ ‫نوع‬ ‫هیچ‬ ‫الیه‬ ‫این‬ ‫در‬ ‫است‬ ‫الزامی‬ .‫گردد‬ ‫مشخص‬ ‫عملیاتها‬ ‫از‬ ‫سازی‬ ‫نمی‬ ‫صورت‬ ‫الیه‬ ‫در‬ ‫قراردادها‬ ‫این‬ ‫سازی‬ ‫پیاده‬ .‫گیرد‬ .‫بود‬ ‫خواهد‬ ‫دیگر‬ ‫های‬  ‫الیه‬ ‫برنامه‬ ‫سرویس‬ ( Application Service Layer ) ‫الیه‬ ‫الیه‬ ‫عنوان‬ ‫به‬ ‫آن‬ ‫از‬ ‫که‬ ‫برنامه‬ ‫سرویس‬ ‫تجاری‬ ‫منطق‬ ‫یا‬ ‫قوانین‬ ( Business-Rule Layer ) ‫می‬ ‫یاد‬ ‫نیز‬ ‫شود‬ ‫الیه‬ ‫ای‬ ‫پیاده‬ ‫برای‬ ‫اعمال‬ ‫و‬ ‫سازی‬ ‫تجاری‬ ‫منطق‬ ‫یا‬ ‫قوانین‬ ‫هاست‬ ‫آن‬ ‫سازی‬ ‫پیاده‬ ‫و‬ ‫سیستم‬ ‫الیه‬ ‫میان‬ ‫واسطی‬ ‫الیه‬ ‫این‬ . ‫های‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫دامنه‬ ‫و‬ ‫ارائه‬ ،‫زیرساخت‬ .‫آورد‬  ( ‫زیرساخت‬ ‫الیه‬ Infrastructure Layer ) ‫الیه‬ ‫زیرساخت‬ ( ‫مخرن‬ ‫الیه‬ ‫عنوان‬ ‫به‬ ‫آن‬ ‫از‬ ‫که‬ Repository Later ‫می‬ ‫یاد‬ ‫نیز‬ ) .‫شود‬ ‫پیاده‬ ‫بخش‬ ‫ساخت‬ ‫زیر‬ ‫الیه‬ ‫سازی‬ ‫داده‬ ‫زیرساختهای‬ ‫می‬ ‫پروژه‬ ‫دامنه‬ ‫از‬ ‫خارج‬ ‫که‬ ‫است‬ ‫سرویسهایی‬ ‫یا‬ ‫داده‬ ‫با‬ ‫ارتباطات‬ ‫و‬ ‫ایی‬ ‫باشند‬ ‫زیر‬ ‫الیه‬ ‫کامل‬ ‫استقالل‬ . ‫پیاده‬ ‫در‬ ‫ساخت‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫شرایطی‬ ‫سازی‬ ‫ت‬ ‫انتشار‬ ‫از‬ ‫مانع‬ ‫آن‬ ‫در‬ ‫تغییر‬ ‫گونه‬ ‫هر‬ ‫که‬ ‫آورد‬ ‫الیه‬ ‫سایر‬ ‫به‬ ‫غییرات‬ .‫گردد‬ ‫ها‬  ‫ارائه‬ ‫الیه‬ ( Presentation Layer ) ‫پوست‬ ‫الیه‬ ‫عنوان‬ ‫به‬ ‫میتوان‬ ‫را‬ ‫ارائه‬ ‫الیه‬ ‫ه‬ ‫گرفت‬ ‫نظر‬ ‫در‬ ‫پیاز‬ ‫الیه‬ ‫این‬ ‫الیه‬ ‫سه‬ ‫معماری‬ ‫در‬ ‫خود‬ ‫نام‬ ‫هم‬ ‫الیه‬ ‫مشابه‬ ‫نیز‬ ‫وظیفه‬ ‫نمایش‬ ‫برای‬ ‫کاربر‬ ‫و‬ ‫ندارد‬ ‫را‬ ‫فقط‬ ‫شکل‬ ،‫اعتبارسنجی‬ ‫با‬ ‫معماری‬ ‫داده‬ ‫انتقال‬ ‫و‬ ‫دهی‬ ‫نمایش‬ ‫ردیف‬ (User-Interface) ‫را‬ ‫می‬ ‫فراهم‬ .‫آورد‬  ‫الیه‬ ( ‫تست‬ Test Layer ) ‫می‬ ‫طراحی‬ ‫برنامه‬ ‫سرویس‬ ‫الیه‬ ‫و‬ ‫دامنه‬ ‫الیه‬ ‫برروی‬ ‫که‬ ‫است‬ ‫دیگری‬ ‫مستقل‬ ‫الیه‬ ‫نیز‬ ‫تست‬ ‫الیه‬ ‫از‬ ‫نیاز‬ ‫صورت‬ ‫در‬ ‫و‬ ‫گردد‬ ‫پیاده‬ ‫یا‬ ‫و‬ ‫شده‬ ‫ارائه‬ ‫زیرساخت‬ ‫الیه‬ ‫طریق‬ ‫سازی‬ ‫های‬ (‫جعلی‬ Fake ‫منطق‬ ‫زیرساخت‬ ‫برای‬ ) ‫رویه‬ ‫و‬ ‫تجاری‬ ‫را‬ ‫سیستم‬ ‫های‬ ‫می‬ ‫تست‬ ‫و‬ ‫ارزیابی‬ .‫کند‬ ‫ویژگیهای‬ ‫معماری‬ ‫پیازی‬ : ‫معماری‬ ‫محافظت‬ ‫زیرساختی‬ ‫تغییرات‬ ‫برابر‬ ‫در‬ ‫را‬ ‫سیستم‬ ‫اساس‬ ،‫سیستم‬ ‫دامنه‬ ‫برروی‬ ‫تاکید‬ ‫با‬ ‫پیازی‬ ‫می‬ .‫کند‬ ‫تا‬ ‫است‬ ‫ساختاری‬ ‫به‬ ‫نیازمندی‬ ،‫ای‬ ‫معماری‬ ‫چنین‬ ‫ایجاد‬ ‫برای‬ ‫دلیل‬ ‫مهمترین‬ ‫نگهداری‬ ‫قابلیت‬ ‫مدت‬ ‫دراز‬ ‫در‬ ‫ها‬ ‫برنامه‬ ‫را‬ ‫فراهم‬ ‫نماید‬ . ‫این‬ ‫ر‬ ‫کامل‬ ‫صورت‬ ‫به‬ ‫معماری‬ ‫عایت‬ ‫اصل‬ ‫ها‬ ‫دغدغه‬ ‫جداسازی‬ ( Separation of Concerns ) ‫ر‬ ‫در‬ ‫ا‬ ‫سیستم‬ ‫سرتاسر‬ ‫می‬ ‫فراهم‬ ‫آورد‬ . ‫با‬ ‫رابطه‬ ‫در‬ ‫اهمیت‬ ‫حائز‬ ‫نکته‬ ‫پیازی‬ ‫معماری‬ ‫نیست‬ ‫مناسب‬ ‫اصال‬ ‫سبک‬ ‫و‬ ‫ساده‬ ‫های‬ ‫پروژه‬ ‫برای‬ ‫معماری‬ ‫این‬ ‫که‬ ‫است‬ ‫این‬ ‫برای‬ ‫بلکه‬ ‫باشد‬ ‫می‬ ‫مناسب‬ ‫پیچیده‬ ‫رفتارهای‬ ‫با‬ ‫بزرگ‬ ‫های‬ ‫برنامه‬ . ‫م‬ ‫پیاز‬ ‫عماری‬ ‫های‬ ‫معماری‬ ‫بهترین‬ ‫از‬ ‫یکی‬ ‫سازی‬ ‫پیاده‬ ‫برای‬ ‫موجود‬ ‫سیستم‬ ‫یک‬ ‫تست‬ ‫قابل‬ ( Testable ) ( ‫اطمینان‬ ‫قابل‬ ‫و‬ Dependable ‫است‬ ) . ‫جمع‬ ‫بندی‬ ‫منظور‬ ‫به‬ ‫پیاده‬ ‫جامع‬ ‫سیستم‬ ‫یک‬ ‫سازی‬ ERP ‫فر‬ ‫که‬ ‫از‬ ‫است‬ ‫بهتر‬ ‫است‬ ‫شده‬ ‫مشخص‬ ‫آن‬ ‫در‬ ‫کاری‬ ‫ایندهای‬ ‫معماری‬ ‫پیازی‬ ‫بهره‬ ‫توجه‬ ‫با‬ ‫زیرا‬ ‫شود‬ ‫گرفته‬ ‫به‬ ‫سیستم‬ ‫یک‬ ‫حیات‬ ‫مدت‬ ERP ‫است‬ ‫کم‬ ‫عملیاتها‬ ‫دامنه‬ ‫در‬ ‫تغییر‬ ‫احتمال‬ ‫پیاده‬ ‫در‬ ‫تغییر‬ ‫به‬ ‫نیاز‬ ‫و‬ ‫تکنولوژی‬ ‫زیرساختهای‬ ‫تغییر‬ ‫در‬ ‫سرعت‬ ‫با‬ ‫درحالیکه‬ ‫استفاده‬ ‫رویکردی‬ ‫از‬ ‫است‬ ‫بهتر‬ ‫آنها‬ ‫سازی‬ ‫پروژه‬ ‫در‬ ‫موضوع‬ ‫این‬ .‫باشند‬ ‫داشته‬ ‫را‬ ‫بخشها‬ ‫سایر‬ ‫بر‬ ‫کمتری‬ ‫تاثیر‬ ‫تغییرات‬ ‫تا‬ ‫گردد‬ ‫تکنولوژی‬ ‫تغییر‬ ‫یا‬ ‫مهاجرت‬ ‫های‬
  • 6. ‫جداسازی‬ ‫در‬ ‫احتمام‬ ‫دلیل‬ ‫به‬ « ‫زیرساخت‬ ‫های‬ ‫دغدغه‬ ‫داده‬ ‫پایگاه‬ » ‫از‬ « ‫نرم‬ ‫توسعه‬ ‫تکنولوژی‬ ‫تغییرات‬ ‫دغدغه‬ ‫افزار‬ » ، .‫داشت‬ ‫خواهد‬ ‫مهمتری‬ ‫نقش‬ ‫پیاده‬ ‫چگونه‬ ‫کنیم‬ ‫سازی‬ ‫طرا‬ ‫برای‬ ‫مفهومی‬ ‫چارچوب‬ ‫یک‬ ‫پیازی‬ ‫معماری‬ ‫حی‬ ‫می‬ ‫سیستم‬ ‫پیاده‬ ‫برای‬ ‫لذا‬ ‫باشد‬ ‫آن‬ ‫سازی‬ ‫مف‬ ‫با‬ ‫حداقل‬ ‫بایستی‬ ‫ا‬ ‫ه‬ ‫ی‬ ‫م‬ ‫تکنولوژی‬ 1 - ‫وابستگی‬ ‫تزریق‬ ( ‫ها‬ Dependency Injection ‫و‬ ) 2 - ‫پیاده‬ ( ‫واسطها‬ ‫سازی‬ Interface ) ‫آنها‬ ‫از‬ ‫و‬ ‫آشنایی‬ ‫از‬ ‫مستقل‬ ‫پیازی‬ ‫معماری‬ ‫از‬ ‫گیری‬ ‫بهره‬ .‫کنید‬ ‫استفاده‬ .‫باشد‬ ‫می‬ ‫تکنولوژی‬ ‫چارچوب‬ ‫یا‬ ‫نویسی‬ ‫برنامه‬ ‫زبان‬
  • 7. : ‫دوم‬ ‫بخش‬ ‫سازمانی‬ ‫افزار‬ ‫نرم‬ ‫پیکربندی‬ ( Enterprise Application Configuration ) ‫توسعه‬ ‫چالشهای‬ ‫با‬ ‫همواره‬ ‫سازمانی‬ ‫جامع‬ ‫سیستم‬ ‫یک‬ ‫توسعه‬ ‫و‬ ‫طراحی‬ ‫مقیاس‬ ،‫پذیری‬ ‫نگهداری‬ ‫و‬ ‫پذیری‬ ‫نقش‬ ‫افزایش‬ ‫با‬ .‫بود‬ ‫روبرو‬ ‫دسترس‬ ‫میزان‬ ‫تکنولوژی‬ ‫به‬ ‫نیاز‬ ‫و‬ ‫افزارها‬ ‫نرم‬ ‫تولید‬ ‫از‬ ‫سخن‬ ‫هرگاه‬ ‫گذشته‬ ‫سالهای‬ ‫در‬ .‫شد‬ ‫افزوده‬ ‫موجود‬ ‫چالشهای‬ ‫به‬ ‫نیز‬ ‫پذیری‬ ‫جامع‬ ‫سیستم‬ ‫یک‬ ‫توسعه‬ ‫و‬ ،‫آمده‬ ‫میان‬ ‫به‬ ( ‫یکپارچه‬ ‫سیستم‬ ‫یک‬ ‫به‬ ‫رسیدن‬ ‫پیکربندی‬ ‫نگاه‬ ‫همواره‬ Monolithic ‫مجتمع‬ ‫و‬ ) ( Integrated ‫مانند‬ ‫جدیدی‬ ‫مفاهیم‬ ‫پدیداری‬ ‫با‬ ‫لیکن‬ .‫است‬ ‫بوده‬ ) DevOps ‫ت‬ ‫حوزه‬ ‫در‬ ‫بیشتر‬ ‫تعامل‬ ‫ایجاد‬ ‫هدف‬ ‫با‬ ،‫افزار‬ ‫نرم‬ ‫وسعه‬ ‫کیفیت‬ ‫تضمین‬ ‫و‬ ‫عملیات‬ ‫کنترل‬ ، ‫باعث‬ ‫که‬ ‫نرم‬ ‫سریع‬ ‫انتقال‬ ‫عملیات‬ ‫به‬ ‫توسعه‬ ‫از‬ ‫افزار‬ ‫و‬ ‫ارزش‬ ‫یکپارچه‬ ‫سیستمهای‬ ،‫شد‬ ‫خواهد‬ ‫ف‬ ‫شرایط‬ ‫در‬ ‫حال‬ .‫دادند‬ ‫دست‬ ‫از‬ ‫را‬ ‫خود‬ ‫اهمیت‬ ‫نرم‬ ‫سازماندهی‬ ‫و‬ ‫پیکربندی‬ ‫برای‬ ‫حل‬ ‫راه‬ ‫و‬ ‫گزینه‬ ‫سه‬ ‫علی‬ ‫در‬ ‫را‬ ‫جامع‬ ‫افزارهای‬ ‫می‬ ‫زیر‬ ‫موارد‬ ‫شامل‬ ‫که‬ ‫داریم‬ ‫رو‬ ‫پیش‬ .‫شود‬ 1 - ( ‫یکپارچه‬ ‫معماری‬ Monolithic Architecture ) 2 - ( ‫سرویسگرا‬ ‫معماری‬ Service- Oriented Architecture ) 3 - ‫معماری‬ ( ‫ریزخدمات‬ Micro-Service Architecture ‫که‬ ،) ‫می‬ ‫پرداخته‬ ‫آنها‬ ‫تشریح‬ ‫به‬ ‫ادامه‬ ‫در‬ .‫شود‬ 1 . ‫یکپارچه‬ ‫معماری‬ ( Monolithic Architecture ) ‫معماری‬ ‫یکپارچه‬ ‫همان‬ ‫می‬ ‫سیستمی‬ ‫به‬ ‫دستیابی‬ ‫آن‬ ‫هدف‬ ‫که‬ ‫است‬ ‫حلی‬ ‫راه‬ ‫توسعه‬ ‫رویکرد‬ ‫که‬ ‫باشد‬ ،‫یکپارچه‬ ‫افزار‬ ‫نرم‬ ‫یک‬ ‫شکل‬ ‫به‬ ‫اجرا‬ ‫و‬ ‫معماری‬ ‫این‬ ‫در‬ .‫باشد‬ ‫مجموعه‬ ‫یک‬ ‫نیازهای‬ ‫تمامی‬ ‫پاسخگوی‬ ‫صورت‬ ‫به‬ ‫افزار‬ ‫نرم‬ ‫ی‬ ‫ک‬ ‫پلتفرم‬ ‫توسعه‬ ‫واحد‬ ‫می‬ ‫ی‬ ‫ابد‬ . ‫ی‬ ‫ک‬ ‫پلت‬ ‫فرم‬ ‫واحد‬ ‫دارای‬ ‫اغلب‬ ‫ی‬ ‫ک‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫برا‬ ‫مشترک‬ ‫داده‬ ‫ی‬ ‫می‬ ‫سیستم‬ ‫بخشهای‬ ‫تمامی‬ ‫نرم‬ ‫سیستم‬ ‫رویکرد‬ ‫این‬ ‫در‬ .‫باشد‬ ‫دیدگاه‬ ‫از‬ ‫فقط‬ ‫افزاری‬ ‫رده‬ ( ‫بندی‬ Tiring ‫می‬ ‫حالت‬ ‫بیشترین‬ ‫در‬ ‫و‬ ‫شده‬ ‫بندی‬ ‫بخش‬ ) ‫دهنده‬ ‫سرویس‬ ‫سه‬ ‫طریق‬ ‫از‬ ‫تواند‬ ‫صورت‬ ‫به‬ ‫که‬ ‫نمایش‬ ‫و‬ ‫برنامه‬ ،‫داده‬ ‫می‬ ‫سرویس‬ ‫هم‬ ‫به‬ ‫متوالی‬ ‫که‬ ‫داشت‬ ‫نظر‬ ‫در‬ ‫بایستی‬ .‫باشد‬ ‫شده‬ ‫توزیع‬ ‫دهند‬ ‫مدل‬ ‫ی‬ ‫کپارچه‬ ‫قد‬ ‫ی‬ ‫م‬ ‫ی‬ ‫ن‬ ‫ی‬ ،‫ست‬ ‫برخ‬ ‫در‬ ‫هم‬ ‫هنوز‬ ‫و‬ ‫ی‬ ‫موارد‬ ‫عال‬ ‫ی‬ ‫م‬ ‫عمل‬ ‫ی‬ .‫کند‬ ‫معمار‬ ‫ی‬ ‫ی‬ ‫کپارچه‬ ‫راحت‬ ‫به‬ ‫و‬ ‫است‬ ‫راحت‬ ‫ی‬ ‫ت‬ ‫توسط‬ ‫ی‬ ‫م‬ ‫ها‬ ‫پروژه‬ ‫و‬ ‫ها‬ ‫ی‬ ‫پذ‬ ‫کوچک‬ ‫ی‬ ‫رفته‬ ‫م‬ ‫ی‬ .‫شود‬ ‫در‬ ‫بس‬ ‫ی‬ ‫ار‬ ‫ی‬ ‫از‬ ‫برا‬ ‫ها‬ ‫آپ‬ ‫استارت‬ ‫ی‬ ‫معمار‬ ‫از‬ ‫توسعه‬ ‫ی‬ ‫ی‬ ‫کپارچه‬ ‫م‬ ‫استفاده‬ ‫ی‬ ‫شوند‬ ‫و‬ ‫زمان‬ ‫ی‬ ‫هستند‬ ‫مرتبط‬ ‫و‬ ‫وابسته‬ ‫هم‬ ‫به‬ ‫ها‬ ‫ماژول‬ ‫که‬ ، ‫مناسبی‬ ‫گزینه‬ ‫بود‬ ‫خواهد‬ . Enterprise Application Configuration
  • 8.  ‫مزایا‬ ‫معمار‬ ‫ی‬ ‫ی‬ ‫کپارچه‬ ‫راحت‬ ‫به‬ ‫ی‬ ‫قابل‬ ‫و‬ ‫توسعه‬ ،‫است‬ ‫استقرار‬ ‫نرم‬ ‫و‬ ‫یک‬ ‫افزارهای‬ ‫پارچه‬ ‫به‬ ‫نوع‬ ‫ی‬ ‫سر‬ ‫و‬ ‫بهتر‬ ‫عملکرد‬ ‫ی‬ ‫ع‬ ‫تر‬ ‫ی‬ ‫دارند‬ ، ‫ماژول‬ ‫نزد‬ ‫هم‬ ‫به‬ ‫ها‬ ‫ی‬ ‫ک‬ ‫هستند‬ ‫که‬ ‫ی‬ ‫ک‬ ‫ساختار‬ ،‫واحد‬ ‫یکدیگر‬ ‫به‬ ‫آنها‬ ‫دسترسی‬ ‫بس‬ ‫را‬ ‫ی‬ ‫ار‬ ‫سر‬ ‫ی‬ ‫ع‬ ‫م‬ ‫ی‬ ‫کند‬ .  ‫معایب‬ ‫بزرگتر‬ ‫ی‬ ‫ن‬ ‫معمار‬ ‫اشکال‬ ‫ی‬ ‫ی‬ ،‫کپارچه‬ .‫است‬ ‫خطا‬ ‫تحمل‬ ‫نرم‬ ‫افزارهای‬ ‫ی‬ ‫کپارچه‬ ‫عنوان‬ ‫به‬ ‫ی‬ ‫ک‬ ‫م‬ ‫کار‬ ‫واحد‬ ‫ی‬ ‫ک‬ ‫ن‬ ‫مشکل‬ ‫اگر‬ ‫و‬ ‫ند‬ ‫ی‬ ‫در‬ ‫ی‬ ‫ک‬ ‫و‬ ‫ی‬ ‫ژگ‬ ‫ی‬ ‫کار‬ ‫برنامه‬ ‫کل‬ ،‫باشد‬ ‫داشته‬ ‫وجود‬ ‫ساده‬ ‫کوچک‬ ‫می‬ ‫متوقف‬ ‫شود‬ . ‫بزرگ‬ ‫سیستمهای‬ ‫نگهداری‬ ‫و‬ ‫توسعه‬ ‫در‬ ‫معمار‬ ‫ی‬ ‫ی‬ ‫کپارچه‬ ‫پ‬ ‫ی‬ ‫چ‬ ‫ی‬ ‫ده‬ ‫دشوار‬ ‫و‬ ‫است‬ ‫ز‬ ، ‫ی‬ ‫را‬ ‫ی‬ ‫ک‬ ‫تغ‬ ‫یی‬ ‫ر‬ ‫م‬ ‫ی‬ ‫آزما‬ ‫را‬ ‫کامل‬ ‫برنامه‬ ‫کند‬ ‫وادار‬ ‫را‬ ‫ما‬ ‫تواند‬ ‫ی‬ ‫ش‬ ‫کن‬ ‫ی‬ ‫م‬ ‫و‬ ‫این‬ ‫هم‬ ‫ی‬ ‫شه‬ ‫معمار‬ .‫است‬ ‫بر‬ ‫زمان‬ ‫ی‬ ‫ی‬ ‫کپارچه‬ ‫چابک‬ ‫ی‬ ‫م‬ ‫کاهش‬ ‫را‬ ‫ی‬ ‫ز‬ ،‫دهد‬ ‫ی‬ ‫را‬ ‫ی‬ ‫ک‬ ‫رسان‬ ‫روز‬ ‫به‬ ‫ی‬ ‫و‬ ‫توسعه‬ ‫و‬ ‫کوچک‬ ‫ی‬ ‫ژگ‬ ‫ی‬ ‫هم‬ ‫ی‬ ‫شه‬ ‫ت‬ ‫ارتقاء‬ .‫است‬ ‫کامل‬ ‫استقرار‬ ‫مستلزم‬ ‫کنولوژ‬ ‫ی‬ ، ‫دردسر‬ ‫ساز‬ ‫ب‬ ‫و‬ ‫است‬ ‫ی‬ ‫شتر‬ ‫م‬ ‫اجتناب‬ ‫آن‬ ‫از‬ ‫اوقات‬ ‫ی‬ .‫شود‬ 2 . ‫سرویسگرا‬ ‫معماری‬ ( Service-Oriented Architecture ) ‫معمار‬ ‫ی‬ ‫سرو‬ ‫ی‬ ‫س‬ ‫گرا‬ ‫یا‬ SOA ‫توسعه‬ ‫برای‬ ‫رویکردی‬ ‫نرم‬ ‫افزار‬ ‫ی‬ ‫می‬ ‫باشد‬ ‫که‬ ‫آن‬ ‫در‬ ‫عوامل‬ ‫از‬ ‫متشکل‬ ‫برنامه‬ ‫ی‬ ‫و‬ ‫گسسته‬ ‫وابستگی‬ ‫با‬ ( ‫ضعیف‬ Loosely Coupled ) ، ‫ن‬ ‫مورد‬ ‫عملکرد‬ ‫ی‬ ‫از‬ ‫را‬ ‫سیستم‬ ‫م‬ ‫انجام‬ ‫ی‬ ‫دهند‬ . SOA ‫اصل‬ ‫نقش‬ ‫دو‬ ‫ی‬ ‫مصرف‬ ‫و‬ ‫خدمات‬ ‫دهنده‬ ‫ارائه‬ :‫دارد‬ ‫دو‬ ‫هر‬ .‫خدمات‬ ‫کننده‬ ‫ی‬ ‫ا‬ ‫ی‬ ‫ن‬ ‫م‬ ‫را‬ ‫ها‬ ‫نقش‬ ‫ی‬ ‫توسط‬ ‫توان‬ ‫ی‬ ‫ک‬ ‫نرم‬ ‫عامل‬ ‫افزار‬ ‫ی‬ ‫ا‬ ‫ی‬ ‫فا‬ ‫نقش‬ ‫مفهوم‬ .‫کرد‬ SOA ‫ز‬ ‫موارد‬ ‫در‬ ‫ی‬ ‫ر‬ :‫است‬ ‫نهفته‬ ‫ی‬ ‫ک‬ ‫کاربرد‬ ‫برنامه‬ ‫ی‬ ‫م‬ ‫ی‬ ‫ا‬ ‫گونه‬ ‫به‬ ‫تواند‬ ‫ی‬ ‫طراح‬ ‫ی‬ ‫ها‬ ‫ماژول‬ ‫که‬ ‫شود‬ ‫ساخته‬ ‫و‬ ‫ی‬ ‫طور‬ ‫به‬ ‫آن‬ ‫مجتمع‬ ‫ی‬ ‫کپارچه‬ ‫راحت‬ ‫به‬ ‫و‬ ‫شده‬ ‫ی‬ ‫قابل‬ .‫باشد‬ ‫مجدد‬ ‫استفاده‬ ‫سرو‬ ‫هر‬ ‫ی‬ ‫س‬ ‫عملکرد‬ ‫ی‬ ‫م‬ ‫ارائه‬ ‫انتزاع‬ ‫سطح‬ ‫در‬ ‫را‬ ‫ی‬ ‫عنوان‬ ‫به‬ ،‫دهد‬ ‫ی‬ ‫ک‬ ‫س‬ ‫جعبه‬ ‫ی‬ ‫اه‬ ‫م‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫ی‬ ‫در‬ ‫که‬ ،‫شود‬ ‫جد‬ ‫توسعه‬ ‫سربار‬ ‫از‬ ‫آن‬ ‫ی‬ ‫د‬ ‫جلوگ‬ ‫ی‬ ‫ر‬ ‫ی‬ ‫م‬ ‫ی‬ .‫شود‬ ‫خدمات‬ ‫انتزاع‬ ‫ی‬ ‫م‬ ‫و‬ ‫هستند‬ ‫ی‬ ‫رو‬ ‫بر‬ ‫توانند‬ ‫ی‬ ‫فناور‬ ‫هر‬ ‫ی‬ ‫توسعه‬ ‫ی‬ ‫ابند‬ ‫ب‬ ‫ارتباط‬ . ‫ی‬ ‫ن‬ ‫را‬ ‫آنها‬ ‫م‬ ‫ی‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫توان‬ ‫ی‬ ‫ک‬ ‫مرکز‬ ‫اتصال‬ ‫نقطه‬ ‫ی‬ ‫نام‬ ‫به‬ Enterprise Service Bus .‫داد‬ ‫انجام‬ ESB ‫م‬ ‫مراقبت‬ ‫خدمات‬ ‫تمام‬ ‫از‬ ‫ی‬ ‫و‬ ‫کند‬ ‫م‬ ‫کمک‬ ‫آنها‬ ‫به‬ ‫ی‬ ‫با‬ ‫تا‬ ‫کند‬ ‫ی‬ ‫کد‬ ‫ی‬ ‫گر‬ .‫باشند‬ ‫داشته‬ ‫تعامل‬  ‫مزایا‬ ‫معمار‬ ‫ی‬ ‫سرویس‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫سرویسها‬ ‫از‬ ‫مجدد‬ ‫استفاده‬ ‫امکان‬ ‫گرا‬ ‫پیاده‬ ‫امکان‬ .‫آورد‬ ‫پیاده‬ ‫در‬ ‫تنوع‬ ‫و‬ ‫مستقل‬ ‫سازی‬ ‫سازی‬ ‫می‬ ‫بوجود‬ ‫را‬ ‫آنها‬ .‫دارد‬ ‫باالتری‬ ‫اطمینان‬ ‫و‬ ‫بهتر‬ ‫نگهداری‬ ‫قابلیت‬ .‫آورد‬ ‫ماژول‬ ‫ها‬ ‫توسعه‬ ‫امکان‬ ‫مستقل‬ ‫سرویسهای‬ ‫قالب‬ ‫در‬ ‫می‬ ‫پیدا‬ ‫موازی‬ .‫کنند‬  ‫معایب‬ ‫اصل‬ ‫اشکال‬ ‫ی‬ ‫معمار‬ ‫ی‬ ‫سرو‬ ‫ی‬ ‫س‬ ‫پ‬ ‫گرا‬ ‫ی‬ ‫چ‬ ‫ی‬ ‫دگ‬ ‫ی‬ ‫سرو‬ ‫هر‬ .‫است‬ ‫آن‬ ‫ی‬ ‫س‬ ‫با‬ ‫ی‬ ‫د‬ ‫اطم‬ ‫ی‬ ‫نان‬ ‫پ‬ ‫که‬ ‫کند‬ ‫حاصل‬ ‫ی‬ ‫ام‬ ‫تحو‬ ‫موقع‬ ‫به‬ ‫ها‬ ‫ی‬ ‫ل‬ ‫م‬ ‫داده‬ ‫ی‬ .‫شوند‬ ‫یکپارچه‬ ‫معماری‬ ‫نسبت‬ ‫به‬ ‫هز‬ ‫ی‬ ‫نه‬ ‫ها‬ ‫ی‬ ‫می‬ ‫بیشتری‬ ‫انسانی‬ ‫منابع‬ ‫و‬ ‫توسعه‬ ‫بایستی‬ ‫توسعه‬ ‫تیم‬ ‫اعضاء‬ ‫و‬ ‫طلبد‬ ‫سرویس‬ ‫توسعه‬ ‫مفاهیم‬ ‫به‬ ‫است‬ ‫ممکن‬ ‫سرویسها‬ .‫باشند‬ ‫داشته‬ ‫آشنایی‬ ‫گرا‬ ‫افزایش‬ ‫باعث‬ ‫و‬ ‫کنند‬ ‫ایجاد‬ ‫عملیاتی‬ ‫سربار‬ .‫گردد‬ ‫پاسخگویی‬ ‫زمان‬ ‫نسبی‬ 3 . ‫معماری‬ ‫ریزخدمات‬ ( Micro-Service Architecture ) ‫معمار‬ ‫ی‬ ‫ریزخدمات‬ ‫نوع‬ ‫ی‬ ‫از‬ ‫معمار‬ ‫ی‬ ‫سرو‬ ‫ی‬ ‫س‬ ‫اجزا‬ ‫ساخت‬ ‫بر‬ ‫که‬ ‫است‬ ‫گرا‬ ‫کامال‬ ‫ی‬ ‫مستقل‬ ‫جامع‬ ‫سیستم‬ ‫یک‬ ‫تشکیل‬ ‫برای‬ .‫دارد‬ ‫تمرکز‬ ‫برنامه‬ ‫برخالف‬ ‫ها‬ ‫ی‬ ‫ی‬ ‫کپارچه‬ ‫به‬ ‫که‬ ‫عنوان‬ ‫ی‬ ‫ک‬ ‫تقس‬ ‫واحد‬ ‫ی‬ ‫م‬ ‫ناپذ‬ ‫ی‬ ‫ر‬ ‫شده‬ ‫ساخته‬ ‫برنامه‬ ،‫اند‬ ‫ها‬ ‫ی‬ ‫م‬ ‫ی‬ ‫کروسرو‬ ‫ی‬ ‫س‬ ‫چند‬ ‫از‬ ‫ی‬ ‫ن‬ ‫مؤلفه‬ ‫کامال‬ ‫تشک‬ ‫مستقل‬ ‫ی‬ ‫ل‬ ‫شده‬ .‫اند‬ ‫می‬ ‫فراهم‬ ‫سیستم‬ ‫یک‬ ‫توزیع‬ ‫برای‬ ‫را‬ ‫شرایط‬ ‫ای‬ ‫بالقوه‬ ‫بطور‬ ‫معماری‬ ‫این‬ ‫بخشهای‬ ‫از‬ ‫یک‬ ‫هر‬ ‫بتوان‬ ‫تا‬ ‫آورد‬ ‫سروی‬ ‫یک‬ ‫در‬ ‫مستقل‬ ‫طور‬ ‫به‬ ‫سرویس‬ ‫یک‬ ‫قالب‬ ‫در‬ ‫را‬ ‫سیستم‬ ‫س‬ ‫راه‬ ‫و‬ ‫نصب‬ ‫جدا‬ ‫دهنده‬ .‫کرد‬ ‫اندازی‬ ‫م‬ ‫ی‬ ‫کروسرو‬ ‫ی‬ ‫س‬ ‫ها‬ ‫ا‬ ‫به‬ ً‫ا‬‫صرف‬ ‫ی‬ ‫ن‬ ‫دل‬ ‫ی‬ ‫ل‬ ‫فرد‬ ‫به‬ ‫منحصر‬ ‫ارزش‬ ‫که‬ ‫هستند‬ ‫مهم‬ ‫ی‬ ‫ساده‬ ‫راه‬ ‫در‬ ‫را‬ ‫ساز‬ ‫ی‬ ‫پ‬ ‫ی‬ ‫چ‬ ‫ی‬ ‫دگ‬ ‫ی‬ ‫س‬ ‫در‬ ‫ی‬ ‫ستم‬ ‫ها‬ ‫م‬ ‫اضافه‬ ‫ی‬ ‫کنند‬ ‫تقس‬ ‫با‬ . ‫ی‬ ‫م‬ ‫س‬ ‫کردن‬ ‫ی‬ ‫ستم‬ ‫ی‬ ‫ا‬ ‫برنامه‬ ‫بخش‬ ‫به‬ ‫خود‬ ‫ها‬ ‫ی‬ ‫کوچک‬ ،‫تر‬ ‫و‬ ‫کاهش‬ ‫را‬ ‫پیچیدگیها‬ ‫انسجام‬ ‫می‬ ‫افزایش‬ ‫را‬ ‫داخلی‬ .‫دهد‬ ‫با‬ ‫ب‬ ‫اتصال‬ ‫کاهش‬ ‫ی‬ ‫ن‬ ‫قطعات‬ ‫بخش‬ ‫هر‬ ‫درک‬
  • 9. ‫آسان‬ ‫ت‬ ‫ر‬ ‫مق‬ ، ‫ی‬ ‫اس‬ ‫پذ‬ ‫ی‬ ‫رتر‬ ‫و‬ ‫قابل‬ ‫تغ‬ ‫یی‬ ‫ر‬ ‫بود‬ ‫خواهد‬ ‫تر‬ . ‫معماری‬ ‫این‬ ‫افزایش‬ ‫با‬ ‫را‬ ‫سیستم‬ ‫در‬ ‫پایداری‬ ‫چابک‬ ‫فراهم‬ ‫سمت‬ ‫به‬ ‫و‬ ‫ایجاد‬ ‫برای‬ ‫الزم‬ ‫زیرساختهای‬ DevOps ‫م‬ ‫حرکت‬ ‫ی‬ .‫کند‬  ‫مزایا‬ ‫معمار‬ ‫ی‬ ‫شرایط‬ ‫ریزخدمات‬ ‫آزما‬ ،‫توسعه‬ ‫ی‬ ‫ش‬ ‫آسان‬ ‫استقرار‬ ‫و‬ ‫می‬ ‫فراهم‬ ‫پیکربندی‬ ‫معماریهای‬ ‫سایر‬ ‫به‬ ‫نسبت‬ ‫تری‬ ‫از‬ .‫آورد‬ ‫را‬ ‫پاسخگویی‬ ‫قابلیت‬ ‫و‬ ‫پذیری‬ ‫مقیاس‬ ‫آن‬ ‫تعدد‬ ‫ایجاد‬ ‫و‬ ‫سرویس‬ ‫یک‬ ‫از‬ ‫موازی‬ ‫اجراهای‬ ‫افزودن‬ ‫با‬ ‫هستید‬ ‫قادر‬ ‫شما‬ ‫طرفی‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫امکان‬ ‫این‬ ‫که‬ ‫است‬ ‫دیگری‬ ‫مهم‬ ‫مزیب‬ ‫چابکی‬ .‫دهید‬ ‫افزایش‬ ‫چشمگیری‬ ‫طرز‬ ‫به‬ ‫ی‬ ‫ماژولهای‬ ‫تا‬ ‫سازد‬ ‫سیستم‬ ‫ک‬ ‫یا‬ ‫چارچوب‬ ‫در‬ ‫تواند‬ ‫می‬ ‫سرویس‬ ‫هر‬ .‫دهید‬ ‫ارتقا‬ ‫یا‬ ‫و‬ ‫تغییر‬ ،‫تصحیح‬ ‫سیستم‬ ‫کل‬ ‫توقف‬ ‫بدون‬ ‫را‬ ‫زبان‬ ‫ها‬ ‫ی‬ ‫نو‬ ‫برنامه‬ ‫ی‬ ‫س‬ ‫ی‬ ‫مزیت‬ ‫عنوان‬ ‫به‬ ‫است‬ ‫ممکن‬ ‫هم‬ ‫موضوع‬ ‫این‬ ‫که‬ ‫نیست‬ ‫توسعه‬ ‫واحد‬ ‫رویکرد‬ ‫یک‬ ‫از‬ ‫تبعیت‬ ‫به‬ ‫لزومی‬ ‫و‬ ‫شود‬ ‫نوشته‬ ‫خاصی‬ ‫گرف‬ ‫درنظر‬ ‫توسعه‬ ‫فرایند‬ ‫در‬ ‫عیب‬ ‫عنوان‬ ‫به‬ ‫هم‬ ‫و‬ .‫شود‬ ‫ته‬  ‫معایب‬ ‫بزرگتر‬ ‫ی‬ ‫ن‬ ‫ضعف‬ ‫نقطه‬ ‫ریزخدماتها‬ ‫پ‬ ‫در‬ ‫ی‬ ‫چ‬ ‫ی‬ ‫دگ‬ ‫ی‬ ‫تقس‬ .‫است‬ ‫نهفته‬ ‫آنها‬ ‫ی‬ ‫م‬ ‫ی‬ ‫ک‬ ‫به‬ ‫برنامه‬ ‫مستقل‬ ‫سرویس‬ ‫چند‬ ‫مستلزم‬ ‫مد‬ ‫ی‬ ‫ر‬ ‫ی‬ ‫ت‬ ‫ب‬ ‫ی‬ ‫شتر‬ ‫آنها‬ ‫ارتباط‬ ‫نحوه‬ ‫و‬ ‫عناصر‬ ‫ا‬ .‫است‬ ‫ی‬ ‫ن‬ ‫معمار‬ ‫نوع‬ ‫ی‬ ‫قبل‬ ‫معماری‬ ‫دو‬ ‫نسبت‬ ‫به‬ ‫ن‬ ‫ی‬ ‫از‬ ‫بیشتری‬ ‫خیلی‬ ‫برنامه‬ ‫به‬ ‫ر‬ ‫ی‬ ‫ز‬ ‫ی‬ ‫دق‬ ‫ی‬ ،‫ق‬ ‫ز‬ ‫تالش‬ ‫ی‬ ،‫اد‬ ‫ت‬ ‫منابع‬ ‫ی‬ ‫م‬ ‫ی‬ .‫دارد‬ ‫مهارت‬ ‫و‬ ‫معماری‬ ‫این‬ ‫در‬ ‫سازگار‬ ‫ی‬ ‫مد‬ ‫و‬ ‫ها‬ ‫داده‬ ‫ی‬ ‫ر‬ ‫ی‬ ‫ت‬ ‫سخت‬ ‫تراکنش‬ ‫م‬ ‫تر‬ ‫ی‬ ‫شود‬ ‫ز‬ ‫ی‬ ‫را‬ ‫سرو‬ ‫هر‬ ‫ی‬ ‫س‬ ‫ی‬ ‫ک‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫داده‬ ‫مستقل‬ ‫دارد‬ ‫خواهد‬ ‫پیچیده‬ ‫و‬ ‫سخت‬ ‫میزان‬ ‫همان‬ ‫به‬ ‫نیز‬ ‫آزمون‬ ‫و‬ ‫اعتبارسنجی‬ ‫فرایند‬ ، ‫زیرا‬ ‫بود‬ ‫سرو‬ ‫هر‬ ‫ی‬ ‫س‬ ‫با‬ ‫ی‬ ‫د‬ ‫سرویسها‬ ‫سایر‬ ‫با‬ ‫مواجهه‬ ‫در‬ ‫سپس‬ ‫و‬ ‫جدا‬ ‫بصور‬ ‫آزما‬ ‫ی‬ ‫ش‬ ‫نظار‬ ‫و‬ ‫شود‬ ‫ت‬ . ‫جمع‬ ‫بندی‬ ‫الیه‬ ‫که‬ ‫همانگونه‬ ‫تقسیم‬ ‫توسعه‬ ‫مفاهیم‬ ‫مبنای‬ ‫بر‬ ‫آن‬ ‫افقی‬ ‫نگاه‬ ‫با‬ ‫افزاری‬ ‫نرم‬ ‫سیستم‬ ‫یک‬ ‫بندی‬ ‫می‬ ‫بندی‬ ‫پیکربندی‬ ،‫کند‬ ‫در‬ ‫سعی‬ ‫عمودی‬ ‫نگاه‬ ‫یک‬ ‫با‬ ‫نیز‬ ‫جامع‬ ‫سیستم‬ ‫یک‬ ‫پیمانه‬ (‫سازی‬ ‫ای‬ Modularity ‫بخش‬ ‫و‬ ) .‫دارد‬ ‫آن‬ ‫بندی‬ ‫معماری‬ ‫سیستمهایی‬ ‫مناسب‬ ‫ریزخدمات‬ ‫مق‬ ‫در‬ ‫ی‬ ‫اس‬ ‫بزرگ‬ ( Large Scale ‫می‬ ) ‫را‬ ‫بزرگی‬ ‫جغرافیایی‬ ‫گستره‬ ‫احتماال‬ ‫که‬ ‫باشد‬ ‫می‬ ‫پوشش‬ ‫می‬ ‫ایجاد‬ ‫ناگواری‬ ‫عواقب‬ ‫و‬ ‫نبوده‬ ‫پذیرش‬ ‫قابل‬ ‫آنها‬ ‫در‬ ‫خدمات‬ ‫توقف‬ ‫و‬ ‫دهند‬ .‫کند‬ ‫رو‬ ‫ی‬ ‫کرد‬ ‫سرویسگرا‬ ‫برا‬ ‫ی‬ ‫س‬ ‫ی‬ ‫ستم‬ ‫ها‬ ‫ی‬ ‫پ‬ ‫ی‬ ‫چ‬ ‫ی‬ ‫ده‬ ‫سازمان‬ ‫ی‬ ‫مناسب‬ ‫است‬ ‫تر‬ ‫توسعه‬ ‫برای‬ ‫شرایطی‬ ‫بایستی‬ ‫و‬ ‫دارد‬ ‫اهمیت‬ ‫سیستمها‬ ‫میان‬ ‫تعامالت‬ ‫که‬ .‫کرد‬ ‫فراهم‬ ‫موازی‬ ‫نگهداری‬ ‫و‬ ‫ی‬ ‫ک‬ ‫رو‬ ‫ی‬ ‫کرد‬ ‫ی‬ ‫کپارچه‬ ‫ن‬ ‫ی‬ ‫ز‬ ‫برا‬ ‫ی‬ ‫محدود‬ ‫زمان‬ ‫و‬ ‫افراد‬ ‫با‬ ‫تیمهایی‬ ‫یا‬ ‫و‬ ‫کوچک‬ ‫سیستمهای‬ ‫می‬ ‫مناسب‬ ‫سیستمهای‬ ‫ماهیت‬ ‫به‬ ‫توجه‬ ‫با‬ ‫لذا‬ .‫باشد‬ ERP ‫می‬ ‫توصیه‬ ‫حوزه‬ ‫در‬ ‫کافی‬ ‫داش‬ ‫کسب‬ ‫از‬ ‫پس‬ ‫شود‬ ‫م‬ ‫عماری‬ ‫سرویس‬ ‫گرا‬ ‫طراحی‬ ‫برای‬ ‫آن‬ ‫از‬ ، .‫گردد‬ ‫استفاده‬ ‫سیستم‬ ‫مهم‬ ‫نکته‬ ‫نرم‬ ‫مهندسی‬ ‫ادبیات‬ ‫در‬ ‫معماری‬ ‫از‬ ‫افزار‬ ‫ها‬ ‫و‬ ‫مدلهای‬ ‫طراحی‬ ‫می‬ ‫برده‬ ‫نام‬ ‫بسیاری‬ ‫که‬ ‫شود‬ ‫شده‬ ‫مطرح‬ ‫موارد‬ ‫بر‬ ‫عالوه‬ ‫می‬ ‫توان‬ ‫از‬ « ‫تمیز‬ ‫معماری‬ » ( Clean Architecture ،) « ‫رویداد‬ ‫معماری‬ - ‫گرا‬ » ( Event-Driven Architecture ،) ‫مدل‬ « ‫پرس‬ ‫وظایف‬ ‫جداسازی‬ ‫فرمان‬ ‫و‬ ‫وجو‬ » ( Command Query Responsibility Segregation ‫یا‬ ) ‫مدل‬ « ‫توسعه‬ ‫محور‬ ‫آزمون‬ » ( Test Driven Development ‫معماری‬ ‫این‬ ‫است‬ ‫بدیهی‬ .‫کرد‬ ‫اشاره‬ ‫نیز‬ ) ‫یا‬ ‫ها‬ ‫مدلها‬ ‫همواره‬ ‫نمی‬ ‫یکدیگر‬ ‫با‬ ‫تضاد‬ ‫در‬ ‫گزینش‬ ‫امکان‬ ‫آنها‬ ‫از‬ ‫یک‬ ‫هر‬ ‫و‬ ‫باشند‬ ‫می‬ ‫فراهم‬ ‫را‬ ‫موضوعی‬ ‫در‬ ‫موضوع‬ ‫در‬ ‫اگرچه‬ ‫بنابرین‬ .‫آورد‬ ‫الیه‬ ‫سه‬ ‫یا‬ ‫پیازی‬ ‫معماریهای‬ ‫از‬ ‫یکی‬ ‫انتخاب‬ ‫به‬ ‫ناچار‬ ‫بندی‬ ‫می‬ ‫لیکن‬ ‫بود‬ ‫خواهیم‬ ‫الیه‬ ‫موضوع‬ ‫در‬ ،‫آن‬ ‫درکنار‬ ‫توان‬
  • 10. ‫پیکربندی‬ ، ‫الیه‬ ‫معماری‬ ‫درکنار‬ ‫و‬ ‫انتخاب‬ ‫شده‬ ‫مطرح‬ ‫موارد‬ ‫بین‬ ‫از‬ ‫را‬ ‫دیگری‬ ‫معماری‬ ‫حت‬ ‫یا‬ ‫و‬ .‫برد‬ ‫کار‬ ‫به‬ ‫بندی‬ ‫برای‬ ‫ی‬ ‫بهره‬ ‫در‬ ‫تاکید‬ ‫از‬ ‫گیری‬ ‫رویکردهای‬ ( ‫تمیز‬ ‫کد‬ Clean Code ) ‫از‬ « ‫تمیز‬ ‫معماری‬ » ‫باهم‬ ‫منافاتی‬ ‫اینها‬ ‫و‬ ‫جست‬ ‫بهره‬ ‫پروژه‬ ‫است‬ ‫ممکن‬ ‫بنابراین‬ .‫داشت‬ ‫نخواهند‬ ‫از‬ ‫همزمان‬ ‫که‬ ‫گردد‬ ‫تعریف‬ ‫ای‬ « ‫پیازی‬ ‫معماری‬ » ، « ‫معماری‬ ‫تمیز‬ » ‫و‬ « ‫معماری‬ ‫ریزخدمات‬ » ‫همراه‬ ‫به‬ ‫مدل‬ « ‫توسعه‬ ‫محور‬ ‫آزمون‬ » .‫باشد‬ ‫شده‬ ‫استفاده‬ ‫آن‬ ‫در‬ ‫پیاده‬ ‫چگونه‬ ‫کنیم‬ ‫سازی‬ ‫معماری‬ ‫سرویس‬ ‫تقسیم‬ ‫دلیل‬ ‫به‬ ‫گرا‬ ‫بندی‬ ‫سیستم‬ ‫پیمانه‬ ‫به‬ ‫پیاده‬ ‫برای‬ ‫تحلیلی‬ ‫نگاه‬ ‫نیازمند‬ ‫منطقی‬ ‫های‬ ‫می‬ ‫سازی‬ ‫باشد‬ ‫می‬ ‫بنابرین‬ ‫تکنیک‬ ‫از‬ ‫توان‬ « ‫محور‬ ‫دامنه‬ ‫طراحی‬ » ( Domain Driven Design ) ‫مفاهیم‬ ‫و‬ ‫سیستم‬ ‫بندی‬ ‫بخش‬ ‫برای‬ Web Api ‫پیاده‬ ‫برای‬ ‫کتابخانه‬ ‫از‬ .‫کرد‬ ‫استفاده‬ ‫سرویسها‬ ‫سازی‬ ‫مانند‬ ‫هایی‬ Swagger ‫مانند‬ ‫ابزارهایی‬ ‫یا‬ Postman ‫سرویس‬ ‫ساختار‬ ‫نمایش‬ ‫و‬ ‫بررسی‬ ‫برای‬ ‫می‬ ‫نیز‬ ‫ها‬ .‫کرد‬ ‫استفاده‬ ‫توان‬
  • 11. : ‫سوم‬ ‫بخش‬ ‫داده‬ ‫پایگاه‬ ‫با‬ ‫ارتباط‬ ( Data Access & ORM ) ‫بخش‬ ‫مهمترین‬ ‫داده‬ ‫پایگاه‬ ‫و‬ ‫داده‬ ‫به‬ ‫دسترسی‬ ‫سیستم‬ ‫یک‬ ‫از‬ ERP ‫الزم‬ ‫گرایی‬ ‫شی‬ ‫طراحی‬ ‫و‬ ‫زیرساختها‬ ‫به‬ ‫توجه‬ ‫با‬ ‫که‬ ‫باشد‬ ‫می‬ ‫شی‬ ‫نگاشت‬ ‫رویکردهای‬ ‫از‬ ‫یکی‬ ‫از‬ ‫است‬ - ( ‫ای‬ ‫رابطه‬ ORM .‫گردد‬ ‫استفاده‬ ) ORM ‫ی‬ ‫ک‬ ‫تکن‬ ‫ی‬ ‫ک‬ ‫نو‬ ‫برنامه‬ ‫ی‬ ‫س‬ ‫ی‬ ‫برا‬ ‫ی‬ ‫نگاشت‬ ‫داده‬ ‫ها‬ ‫و‬ ‫ای‬ ‫رابطه‬ ‫داده‬ ‫پایگاه‬ ‫ی‬ ‫ها‬ ‫زبان‬ ‫ی‬ ‫نو‬ ‫برنامه‬ ‫ی‬ ‫س‬ ‫ی‬ ‫ش‬ ‫ی‬ .‫است‬ ‫گرا‬ ‫که‬ ‫واقع‬ ‫در‬ ‫ی‬ ‫ک‬ " ‫پا‬ ‫ی‬ ‫گاه‬ ‫ش‬ ‫داده‬ ‫ی‬ ‫مجاز‬ ‫ی‬ " ‫ا‬ ‫ی‬ ‫جاد‬ ‫م‬ ‫ی‬ ‫کند‬ . ‫همواره‬ ‫با‬ ‫مواجهه‬ ‫نحوه‬ ‫در‬ ‫اساسی‬ ‫رویکرد‬ ‫دو‬ ORM ‫پیاده‬ ‫و‬ ‫طراحی‬ ‫مسیر‬ ‫که‬ ‫دارد‬ ‫وجود‬ ‫می‬ ‫مشخص‬ ‫را‬ ‫سیستم‬ ‫سازی‬ ‫رویکردهای‬ .‫کند‬ ‫کد‬ - ( ‫اول‬ Code-First ‫داده‬ ‫و‬ ) - ( ‫اول‬ Data-First ‫کد‬ ‫رویکرد‬ ‫در‬ ‫که‬ ) - ‫ساختار‬ ‫و‬ ‫کالسها‬ ‫ابتدا‬ ‫سیستم‬ ‫طراحی‬ ‫در‬ ‫منظور‬ ‫به‬ ‫اول‬ ‫شی‬ ‫می‬ ‫شکل‬ ‫برنامه‬ ‫گرایی‬ ‫می‬ ‫طراحی‬ ‫داده‬ ‫پایگاه‬ ‫آن‬ ‫اساس‬ ‫بر‬ ‫سپس‬ ‫گیرد‬ ‫ساختار‬ ‫سپس‬ ‫و‬ ‫طراحی‬ ‫داده‬ ‫پایگاه‬ ‫دوم‬ ‫رویکرد‬ ‫در‬ .‫گردد‬ ‫شی‬ ‫مدل‬ ‫می‬ ‫شکل‬ ‫آن‬ ‫روی‬ ‫از‬ ‫برنامه‬ ‫گرایی‬ .‫گیرد‬ Object Relational Mapping 1 . ‫کد‬ ‫طراحی‬ - ‫اول‬ ( Code-First ) ‫رو‬ ‫در‬ ‫ی‬ ‫کرد‬ Code First ‫کالس‬ ، ‫با‬ ‫ابتدا‬ ‫ها‬ ‫اول‬ ‫تمرکز‬ ‫ی‬ ‫ه‬ ‫رو‬ ‫ی‬ ‫دامنه‬ ‫ی‬ ‫ک‬ ‫ا‬ ‫برنامه‬ ‫ی‬ ‫جاد‬ ‫م‬ ‫ی‬ ‫شوند‬ ‫م‬ . ‫ی‬ ‫طراح‬ ‫بدون‬ ‫توان‬ ‫ی‬ ‫داده‬ ‫پایگاه‬ ‫شروع‬ ، ‫ا‬ ‫به‬ ‫ی‬ ‫جاد‬ ‫و‬ ‫و‬ ‫ها‬ ‫کالس‬ ‫ی‬ ‫ژگ‬ ‫ی‬ ‫ها‬ ‫ی‬ ‫ن‬ ‫مورد‬ ‫ی‬ ‫از‬ ‫ک‬ ‫رد‬ ‫سپس‬ . ‫طریق‬ ‫از‬ ‫یا‬ ORM ‫دستی‬ ‫بصورت‬ ‫یا‬ ‫پا‬ ‫و‬ ‫جداول‬ ‫ی‬ ‫گاه‬ ‫را‬ ‫داده‬ ‫بر‬ ‫ا‬ ‫آن‬ ‫اساس‬ ‫ی‬ ‫جاد‬ .‫شود‬ ‫که‬ ‫داشت‬ ‫نظر‬ ‫در‬ ‫باید‬ Code First ‫ی‬ ‫ک‬ ‫رو‬ ‫ی‬ ‫کرد‬ ‫بس‬ ‫ی‬ ‫ار‬ ‫کامل‬ ‫کنترل‬ ‫و‬ ‫است‬ ‫محبوب‬ ‫ی‬ ‫رو‬ ‫بر‬ ‫ی‬ ‫جا‬ ‫به‬ ‫کد‬ ‫ی‬ ‫فعال‬ ‫ی‬ ‫ت‬ ‫داده‬ ‫پایگاه‬ .‫دارد‬ ‫در‬ ‫ا‬ ‫ی‬ ‫ن‬ ‫م‬ ‫روش‬ ‫ی‬ ‫توان‬ ‫تمام‬ ‫ی‬ ‫عمل‬ ‫ی‬ ‫ات‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫از‬ ‫را‬ ‫داده‬ ‫طریق‬ ‫کد‬ ‫اعمال‬ ‫از‬ ‫انجام‬ ‫برنامه‬ ‫تغ‬ ‫یی‬ ‫رات‬ ‫دست‬ ‫ی‬ ‫پا‬ ‫به‬ ‫ی‬ ‫گاه‬ ‫داده‬ .‫کرد‬ ‫اجتناب‬ ‫در‬ ‫ا‬ ‫ی‬ ‫ن‬ ‫با‬ ‫مورد‬ ‫ی‬ ‫د‬ ‫موجود‬ ‫ی‬ ‫ت‬ ‫ها‬ ‫ی‬ POCO ‫ا‬ ‫داده‬ ‫مدل‬ ‫عنوان‬ ‫به‬ ‫را‬ ‫ی‬ ‫جاد‬ ‫کن‬ ‫ی‬ ‫د‬ . ‫مزایا‬ :  ‫خودکار‬ ‫کامال‬ ‫صورت‬ ‫به‬ ‫م‬ ‫ی‬ ‫توان‬ ‫ی‬ ‫ک‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫ن‬ ‫مورد‬ ‫جداول‬ ‫و‬ ‫داده‬ ‫ی‬ ‫از‬ ‫از‬ ‫را‬ ‫کالسها‬ ‫ا‬ ‫ی‬ ‫جاد‬ ‫ک‬ .‫رد‬  ‫برا‬ ‫ی‬ ‫یا‬ ‫سیستم‬ ‫یک‬ ‫طراحی‬ ‫شروع‬ ‫فرایند‬ ‫ها‬ ‫برنامه‬ ‫ی‬ ‫کوچک‬ ‫ی‬ ‫نم‬ ‫داده‬ ‫گسترده‬ ‫پردازش‬ ‫شامل‬ ‫که‬ ‫ی‬ ‫شوند‬ ‫می‬ ‫کاربردی‬ ‫بسیار‬ .‫باشد‬  ‫دسترس‬ ‫امکان‬ ‫ی‬ ‫کد‬ ‫به‬ ‫کامل‬ ‫را‬ ‫م‬ ‫فراهم‬ ‫ی‬ ‫م‬ ‫و‬ ‫کند‬ ‫ی‬ ‫توان‬ ‫راحت‬ ‫به‬ ‫ی‬ ‫تغ‬ ‫یی‬ ‫رات‬ ‫ده‬ ‫انجام‬ ‫کد‬ ‫در‬ ‫را‬ ‫ی‬ ‫د‬ .  ‫شی‬ ‫طراحی‬ ‫محدودیدهای‬ ‫و‬ ‫استانداردها‬ ‫ایجاد‬ ‫با‬ ‫از‬ ‫ساختارمندی‬ ‫و‬ ‫درست‬ ‫طراحی‬ ‫موجب‬ ‫گرایی‬ ‫داده‬ ‫پایگاه‬ ‫معایب‬ :  ‫برروی‬ ‫تغییرات‬ ‫چالش‬ ‫جدید‬ ‫کالسها‬ ‫تعریف‬ ‫و‬ ‫کالسها‬ ‫تغییرات‬ ،‫داده‬ ‫پایگاه‬ ‫تغییر‬ ‫و‬ ‫ایجاد‬ ‫خودکار‬ ‫روشهای‬ ‫از‬ ‫استفاده‬ ‫عدم‬ ‫صورت‬ ‫در‬ .‫داشت‬ ‫خواهد‬ ‫همراه‬ ‫به‬ ‫را‬ ‫اطالتی‬ ‫بانک‬
  • 12.  ‫برروی‬ ‫مستقیم‬ ‫تغییر‬ ‫گونه‬ ‫هر‬ ‫داده‬ ‫پایگاه‬ ‫طراحی‬ ‫خودکار‬ ‫روند‬ ‫رفتن‬ ‫دست‬ ‫از‬ ‫موجب‬ ‫داده‬ ‫پایگاه‬ ‫تغی‬ ‫اعمال‬ ‫و‬ ‫شده‬ ‫داده‬ ‫پایگاه‬ ‫در‬ ‫یرات‬ ‫شی‬ ‫طراحی‬ ‫اصول‬ ‫با‬ ‫منطبق‬ ‫بایستی‬ ‫باشد‬ ‫کالسها‬ ‫برروی‬ ‫اعمال‬ ‫منظور‬ ‫به‬ ‫گرایی‬  ‫مد‬ ‫ی‬ ‫ر‬ ‫ی‬ ‫ت‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫طر‬ ‫از‬ ‫داده‬ ‫ی‬ ‫ق‬ ‫بنابرا‬ ،‫است‬ ‫دشوار‬ ‫کد‬ ‫ی‬ ،‫ن‬ ‫ها‬ ‫برنامه‬ ‫در‬ ‫ی‬ ‫کاربرد‬ ‫ی‬ ‫ن‬ ‫که‬ ‫داده‬ ‫گسترده‬ ‫ی‬ ‫از‬ ‫ز‬ ‫حجم‬ ‫پردازش‬ ‫به‬ ‫ی‬ ‫اد‬ ‫ی‬ ‫داده‬ ‫از‬ ‫ها‬ ‫منطق‬ ‫داشتن‬ ‫و‬ ‫ها‬ ‫ی‬ ‫پ‬ ‫ی‬ ‫چ‬ ‫ی‬ ‫ده‬ ‫برا‬ ‫ی‬ ‫ا‬ ‫ی‬ ‫جاد‬ ‫ی‬ ‫ا‬ ‫نگهدار‬ ‫ی‬ ‫دار‬ ‫ها‬ ‫داده‬ ‫ی‬ ،‫د‬ ‫توص‬ ‫ی‬ ‫ه‬ ‫نم‬ ‫ی‬ .‫شود‬  ‫رویه‬ ‫از‬ ‫گیری‬ ‫بهره‬ ‫در‬ ‫شده‬ ‫تعریف‬ ‫های‬ ‫داده‬ ‫پایگاه‬ ‫اول‬ ‫کد‬ ‫طراحی‬ ‫اصول‬ ‫که‬ ‫است‬ ‫پذیر‬ ‫امکان‬ ‫صورتی‬ ‫در‬ ‫فقط‬ ‫و‬ ‫بوده‬ ‫پیچیده‬ ‫معموال‬ ‫یا‬ ‫کالس‬ ‫یا‬ ‫فقط‬ ‫رویه‬ ‫کل‬ ‫معموال‬ ‫و‬ ‫شده‬ ‫لحاظ‬ ‫رویه‬ ‫ساخت‬ ‫در‬ Entity ‫باشد‬ ‫درگیر‬ 2 . ‫داده‬ ‫طراحی‬ - ‫اول‬ ( Data-First ) ‫در‬ ‫روش‬ Data-First ‫آن‬ ‫به‬ ‫که‬ Database-First ‫یا‬ Reverse-Engineering ‫ب‬ ‫شود‬ ‫می‬ ‫گفته‬ ‫نیز‬ ‫ای‬ ‫یک‬ ‫در‬ ‫داده‬ ‫پایگاه‬ ‫اول‬ ‫ستی‬ DBMS ‫طریق‬ ‫از‬ ‫سپس‬ ‫و‬ ‫و‬ ‫شود‬ ‫ساخته‬ Scaffold .‫شود‬ ‫طراحی‬ ‫کالسها‬ ‫ساختار‬ ‫دستی‬ ‫صورت‬ ‫به‬ ‫یا‬ ‫اگر‬ ‫بر‬ ‫کار‬ ‫هدف‬ ‫رو‬ ‫ی‬ ‫ی‬ ‫ک‬ ‫پروژه‬ ‫مهاجرت‬ ‫می‬ ‫تکنولوژی‬ ‫تغییر‬ ‫یا‬ ‫که‬ ‫باشد‬ ً‫ال‬‫قب‬ ‫ی‬ ‫ک‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫تول‬ ‫حال‬ ‫در‬ ‫داده‬ ‫ی‬ ‫د‬ ‫دارد‬ ‫استفاده‬ ‫یا‬ ‫ی‬ ‫ا‬ ‫اگر‬ ‫یک‬ ‫تولیدی‬ ‫سیستم‬ ‫پا‬ ‫برنامه‬ ‫ی‬ ‫گاه‬ ‫ا‬ ‫در‬ ،‫است‬ ‫محور‬ ‫داده‬ ‫ی‬ ‫ن‬ ‫با‬ ‫صورت‬ ‫ی‬ ‫د‬ ‫رو‬ ‫از‬ ‫ی‬ ‫کرد‬ ‫پا‬ ‫اول‬ ‫ی‬ ‫گاه‬ ‫داده‬ ‫ی‬ ‫ا‬ ‫مهندس‬ ‫ی‬ ‫استفاده‬ ‫معکوس‬ .‫شود‬ ‫مکرر‬ ‫تغییرات‬ ‫که‬ ‫شرایطی‬ ‫در‬ ‫بعالوه‬ ‫ا‬ ‫استفاده‬ ‫اهمیت‬ ‫میدهد‬ ‫رخ‬ ‫داده‬ ‫پایگاه‬ ‫در‬ ‫ای‬ ‫بالقوه‬ ‫می‬ ‫پیدا‬ ‫ظهور‬ ‫بیشتر‬ ‫رویکرد‬ ‫این‬ ‫ز‬ ‫کند‬ . ‫دریافت‬ ‫نکته‬ ‫مهمترین‬ ‫اول‬ ‫داده‬ ‫رویکرد‬ ‫در‬ ‫به‬ ‫تغییرات‬ ‫و‬ ‫اطالعات‬ ‫درست‬ ‫ارسال‬ ‫و‬ ‫داده‬ ‫پایگاه‬ ‫تعریف‬ ‫برای‬ ‫خاصی‬ ‫الگوی‬ ‫یا‬ ‫محدودیت‬ ‫برنامه‬ ‫و‬ ‫است‬ ‫داده‬ ‫صحت‬ ‫حفظ‬ ‫و‬ ‫پایگاه‬ ‫داده‬ ‫نمی‬ ‫نظر‬ ‫در‬ .‫گیرد‬ ‫مزایا‬ :  ‫و‬ ‫شده‬ ‫ساخته‬ ‫براحتی‬ ‫شما‬ ‫داده‬ ‫پایگاه‬ ‫میشود‬ ‫ویرایش‬ ‫آسانی‬ ‫به‬  ‫نوشتن‬ ، ‫اصلی‬ ‫کلید‬ ‫انتخاب‬ ، ‫جداول‬ ‫بین‬ ‫ارتباط‬ ‫ایجاد‬ ‫جهت‬ Store Procedure ‫باشد‬ ‫نمی‬ ‫کدنویسی‬ ‫به‬ ‫نیازی‬  ‫که‬ ‫شرایطی‬ ‫و‬ ‫مهاجرت‬ ‫های‬ ‫پروژه‬ ‫برای‬ ‫مناسب‬ ‫داده‬ ‫پایگاه‬ ‫کار‬ ‫شروع‬ ‫از‬ ‫قبل‬ ‫در‬ ‫باشد‬ ‫می‬ ‫دسترس‬  ‫د‬ ‫عملیات‬ ‫نیازمند‬ ‫که‬ ‫پیچیده‬ ‫و‬ ‫بزرگ‬ ‫سیستمهای‬ ‫برای‬ ‫مناسب‬ ‫دارد‬ ‫را‬ ‫داده‬ ‫پایگاه‬ ‫تغییرات‬ ‫و‬ ‫فعال‬ ‫مدیریت‬ ‫و‬ ‫داده‬ ‫پایگاه‬ ‫سطح‬ ‫ر‬ ‫معایب‬ :  ‫نداشته‬ ‫برنامه‬ ‫روند‬ ‫بر‬ ‫نامطلوبی‬ ‫اثر‬ ‫تا‬ ‫پذیرد‬ ‫انجام‬ ‫مستمر‬ ‫صورت‬ ‫به‬ ‫بایستی‬ ‫داده‬ ‫پایگاه‬ ‫برروی‬ ‫تغییرات‬ ‫کنترل‬ ‫و‬ ‫مدل‬ ‫روزرسانی‬ ‫به‬ .‫باشد‬  ‫ها‬ ‫رویه‬ ‫وجود‬ ‫امکان‬ ‫و‬ ‫داده‬ ‫پایگاه‬ ‫از‬ ‫کالسها‬ ‫بودن‬ ‫جدا‬ ‫دلیل‬ ‫به‬ ‫از‬ ‫صحیح‬ ‫درک‬ ‫امکان‬ ‫موارد‬ ‫برخی‬ ‫در‬ ‫داده‬ ‫پایگاه‬ ‫در‬ ‫شده‬ ‫ذخیره‬ ‫ی‬ ( ‫کد‬ ‫تاریخچه‬ ‫مدیریت‬ ‫سیستمهای‬ ‫در‬ ‫تغییرات‬ ‫سوابق‬ ‫و‬ ‫شد‬ ‫خواهد‬ ‫پیچیده‬ ‫عملیاتی‬ ‫فرایند‬ Source Control ‫نخواهد‬ ‫ردگیری‬ ‫قابل‬ ) .‫بود‬  ‫تغ‬ ‫اگر‬ ‫یی‬ ‫ر‬ ‫ی‬ ‫پا‬ ‫در‬ ‫ی‬ ‫گاه‬ ‫ا‬ ‫داده‬ ‫ی‬ ‫جاد‬ ‫با‬ ‫مدل‬ ‫کالس‬ ،‫شود‬ ‫ی‬ ‫د‬ ‫و‬ ‫همان‬ ‫با‬ ‫ی‬ ‫ژگ‬ ‫ی‬ ‫گسترش‬ ‫ها‬ ‫ی‬ ‫ابد‬  ‫ا‬ ‫ی‬ ‫جاد‬ ‫مد‬ ‫و‬ ‫ی‬ ‫ر‬ ‫ی‬ ‫ت‬ ‫کل‬ ‫ی‬ ‫دها‬ ‫ن‬ ‫روابط‬ ‫و‬ ‫ی‬ ‫از‬ ‫کدگذار‬ ‫به‬ ‫ی‬ ‫ب‬ ‫ی‬ ‫شتر‬ ‫ی‬ ‫دارد‬ ‫جمع‬ ‫بندی‬ ‫کد‬ ‫روشهای‬ ‫از‬ ‫یک‬ ‫هر‬ ‫انتخاب‬ ‫که‬ ‫است‬ ‫مشخص‬ - ‫داده‬ ‫یا‬ ‫اول‬ - ‫طراحی‬ ‫مورد‬ ‫سیستم‬ ،‫پروژه‬ ‫نوع‬ ‫به‬ ‫مستقیم‬ ‫وابستگی‬ ‫اول‬ ‫در‬ ‫لیکن‬ .‫دارد‬ ‫داده‬ ‫پایگاه‬ ‫و‬ ‫کد‬ ‫موضوع‬ ‫دو‬ ‫از‬ ‫یکی‬ ‫به‬ ‫آنها‬ ‫تسلط‬ ‫و‬ ‫تیم‬ ‫اعضای‬ ‫اطالعات‬ ‫و‬ ‫دانش‬ ‫و‬ ‫سیستمهای‬ ERP ‫داده‬ ‫پایگاه‬ ‫های‬ ‫داده‬ ‫به‬ ‫شدید‬ ‫وابستگی‬ ‫با‬ ‫و‬ ‫گسترش‬ ‫درحال‬ ‫همواره‬ ،‫پیچیده‬ ،‫جامع‬ ‫سیستهایی‬ ‫بالقوه‬ ‫صورت‬ ‫به‬ ‫که‬ ‫می‬ ‫از‬ ‫استفاده‬ ‫باشد‬ ‫داده‬ ‫رویکرد‬ - ‫اول‬ ‫می‬ ‫نظر‬ ‫به‬ ‫ضروری‬ ‫مهاجرت‬ ‫هدف‬ ‫با‬ ‫تکنولوژی‬ ‫تغییر‬ ‫هدف‬ ‫اگر‬ ‫مطمئنن‬ .‫رسد‬
  • 13. ‫می‬ ‫جدید‬ ‫زیرساخت‬ ‫یک‬ ‫در‬ ‫توسعه‬ ‫و‬ ‫که‬ ‫باشد‬ ‫داده‬ ‫ساختار‬ ‫و‬ ‫مقادیر‬ ‫حفظ‬ ‫الزمه‬ ‫بهره‬ ‫جز‬ ‫راهی‬ ‫است‬ ‫موجود‬ ‫های‬ ‫گیری‬ .‫ماند‬ ‫نمی‬ ‫اول‬ ‫داده‬ ‫رویکرد‬ ‫از‬ ‫پیاده‬ ‫چگونه‬ ‫کنیم‬ ‫سازی‬ ‫پیاده‬ ‫منظور‬ ‫به‬ ‫با‬ ‫ارتباط‬ ‫سازی‬ ‫داده‬ ‫پایگاه‬ ‫می‬ ‫کتابخانه‬ ‫از‬ ‫توان‬ ‫مانند‬ ‫مختلفی‬ ‫های‬ Entity Framework ، Dapper ‫یا‬ Hibernate ‫کرد‬ ‫استفاده‬ ‫ابتدا‬ ‫آنها‬ ‫میان‬ ‫از‬ ‫که‬ Dapper ‫سپس‬ ‫و‬ Entity Framework ‫رویکرد‬ ‫سازی‬ ‫پیاده‬ ‫برای‬ ‫داده‬ - ‫می‬ ‫مناسب‬ ‫اول‬ .‫باشند‬
  • 14. : ‫چهارم‬ ‫بخش‬ ‫هو‬ ‫احراز‬ ‫ی‬ ‫ت‬ ( Authentication ) ‫سرویس‬ ‫فرد‬ ‫به‬ ‫منحصر‬ ‫شناسایی‬ ‫فرایند‬ ‫هویت‬ ‫احراز‬ ‫هستید؟‬ ‫کسی‬ ‫چه‬ ‫شما‬ ‫که‬ ‫داد‬ ‫اشاره‬ ‫سوال‬ ‫این‬ ‫به‬ ‫هویت‬ ‫احراز‬ ‫گیرنده‬ ‫های‬ ‫نرم‬ ‫افزار‬ ‫کاربردی‬ ‫است‬ ‫که‬ ‫ممکن‬ ‫است‬ ‫کاربران‬ ‫نهایی‬ ‫یا‬ ‫سایر‬ ‫سرویس‬ ‫ها‬ ‫و‬ ‫فرایندهای‬ ‫برنامه‬ ‫نویسی‬ ‫باشند‬ . ‫پایه‬ ‫بر‬ ‫که‬ ‫وب‬ ‫تحت‬ ‫سیستمهای‬ ‫پروتکل‬ http ‫پروتکل‬ ‫این‬ ‫و‬ ‫میکنند‬ ‫پیروی‬ ‫پروتکل‬ ‫این‬ ‫مبانی‬ ‫از‬ ‫اند‬ ‫شده‬ ‫بنا‬ ‫کالینت‬ ‫بین‬ ‫ارتباط‬ ‫پروتکل‬ ‫این‬ ‫همچنین‬ ،‫میکند‬ ‫برقرار‬ ‫را‬ ‫سرور‬ ‫و‬ ‫نمیکند‬ ‫حفظ‬ ‫خود‬ ‫درون‬ ‫را‬ ‫فعال‬ ‫کاربر‬ ‫وضعیت‬ ( stateless ) ‫اعتبارسنجی‬ ‫به‬ ‫نیاز‬ ‫و‬ .‫دارد‬ ‫مجدد‬ ‫وسیله‬ ‫به‬ ‫روشهای‬ ‫و‬ ‫هستیم‬ ‫خود‬ ‫کاربری‬ ‫حساب‬ ‫داخل‬ ‫حاضر‬ ‫حال‬ ‫در‬ ‫که‬ ‫بفهمانیم‬ ‫سرور‬ ‫به‬ ‫که‬ ‫قادریم‬ ‫ما‬ ‫هویت‬ ‫احراز‬ ‫به‬ ‫سیستم‬ .‫باشیم‬ ‫داشته‬ ‫دسترسی‬ ‫پرتکل‬ ‫در‬ ‫هویت‬ ‫احراز‬ ‫سازی‬ ‫پیاده‬ ‫در‬ http ‫استف‬ ‫از‬ ‫اده‬ session ‫و‬ ‫از‬ ‫استفاده‬ ‫یا‬ token ‫برای‬ ‫غلبه‬ ‫درخواست‬ ‫در‬ ‫مشکل‬ ‫این‬ ‫بر‬ .‫میشود‬ ‫استفاده‬ ‫ها‬ ‫توسعه‬ ‫توسط‬ ‫هویت‬ ‫احراز‬ ‫مکانیزم‬ ‫فهمیدن‬ ‫برنامه‬ ‫یک‬ ‫ایجاد‬ ‫سبب‬ ‫به‬ ‫دهندگان‬ .‫است‬ ‫اهمیت‬ ‫حائز‬ ‫بسیار‬ ،‫امن‬ ‫بصورت‬ ‫کاربران‬ ‫اطالعات‬ ‫نگهداری‬ ‫همچنین‬ ‫و‬ ‫اطمینان‬ ‫قابل‬ ‫کاربردی‬ Session Base Authentication Vs Token Base Authentication 1 . ( ‫جلسه‬ ‫بر‬ ‫مبتنی‬ ‫هویت‬ ‫احراز‬ Session Base ) ‫در‬ ‫خود‬ ‫حساب‬ ‫وارد‬ ‫کاربر‬ ‫که‬ ‫زمانی‬ ‫تحت‬ ‫سیستم‬ ‫یک‬ ‫وب‬ ‫می‬ ‫یک‬ ‫سرور‬ ،‫شود‬ Session ‫در‬ ‫را‬ ‫آن‬ ‫اطالعات‬ ‫و‬ ‫میکند‬ ‫ایجاد‬ ‫او‬ ‫برای‬ ،‫سرور‬ ‫آن‬ ‫از‬ ‫پس‬ .‫میکند‬ ‫ذخیره‬ ‫خود‬ ‫حافظه‬ Session Id ‫یک‬ ‫در‬ ‫را‬ ‫شده‬ ‫حاصل‬ Cookie ( ‫جستجوگر‬ ‫در‬ Browser) ‫ذخیره‬ ‫کاربر‬ ‫از‬ ‫درخواست‬ ‫هر‬ ‫برای‬ ،‫شود‬ ‫شناسایی‬ ‫سرور‬ ‫توسط‬ ‫کاربر‬ ‫که‬ ‫زمانی‬ ‫تا‬ ،‫آن‬ ‫از‬ ‫پس‬ .‫میکند‬ Cookie ‫استفاده‬ ‫او‬ ‫جستجوگر‬ ‫در‬ ‫شده‬ ‫ذخیره‬ .‫میشود‬ ‫که‬ ‫بود‬ ‫خواهد‬ ‫قادر‬ ‫سرور‬ ‫صورت‬ ‫این‬ ‫در‬ Session Id ‫در‬ ‫شده‬ ‫ذخیره‬ Cookie ‫اط‬ ‫با‬ ‫را‬ ‫العات‬ Session ‫حافظه‬ ‫در‬ ‫شده‬ ‫ذخیره‬ ،‫کاربری‬ ‫حساب‬ ‫از‬ ‫خروج‬ ‫زمان‬ ‫در‬ ‫همچنین‬ .‫کند‬ ‫ارسال‬ ‫را‬ ‫پاسخ‬ ‫و‬ ‫شناسایی‬ ‫دقیق‬ ‫بصورت‬ ‫را‬ ‫کاربر‬ ‫تا‬ ‫کند‬ ‫مقایسه‬ ‫سرور‬ Session .‫شد‬ ‫خواهد‬ ‫حذف‬ ‫داده‬ ‫پایگاه‬ ‫از‬ ،‫شده‬ ‫ساخته‬ : ‫جلسه‬ ‫بر‬ ‫مبتنی‬ ‫هویت‬ ‫احراز‬ ‫ویژگیهای‬
  • 15.  ‫امنیتی‬ ‫معیارهای‬ ،‫فرض‬ ‫پیش‬ ‫طور‬ ‫به‬ ‫در‬ ‫عمدتا‬ ‫و‬ ‫نیست‬ ‫برخوردار‬ ‫حمالت‬ ‫برابر‬ ‫در‬ ‫باالیی‬ ‫حفاظت‬ ‫از‬ ‫کوکی‬ ‫بر‬ ‫مبتنی‬ ‫هویت‬ ‫احراز‬ ‫برابر‬ XSS ‫و‬ CSRF ‫آسیب‬ ‫پذیر‬ ‫است‬ . ‫ا‬ ‫لبته‬ ‫می‬ ‫توان‬ ‫تغییر‬ ‫با‬ ‫در‬ ‫هدرهای‬ Cookie ‫حدی‬ ‫تا‬ ‫حمالتی‬ ‫چنین‬ ‫برابر‬ ‫در‬ .‫شوند‬ ‫محافظت‬  ‫می‬ ‫کار‬ ‫دامنه‬ ‫یک‬ ‫روی‬ ‫معموال‬ ‫کند‬ ‫کوکی‬ ‫واحد‬ ‫دامنه‬ ‫یک‬ ‫در‬ ‫فقط‬ ‫ها‬ ‫می‬ ‫کار‬ .‫باشید‬ ‫کرده‬ ‫پیکربندی‬ ‫خاص‬ ‫طور‬ ‫به‬ ‫را‬ ‫آن‬ ‫اینکه‬ ‫مگر‬ ،‫کنند‬  ‫برای‬ API ‫نیست‬ ‫مناسب‬ ‫ها‬ ‫اگر‬ ‫پایه‬ ‫بر‬ ‫شده‬ ‫ارائه‬ ‫سیستم‬ ‫است‬ ‫قرار‬ API ‫گردد‬ ‫طراحی‬ ‫کوکی‬ ، .‫نیستند‬ ‫مناسبی‬ ‫حل‬ ‫راه‬ ‫ها‬  ‫مشکال‬ ‫وجود‬ ‫پذیری‬ ‫مقیاس‬ ‫ت‬ ‫باید‬ ‫ما‬ ‫و‬ ‫است‬ ‫کوکی‬ ‫پیکربندی‬ ‫مسئول‬ ‫سرور‬ Session .‫کنیم‬ ‫ذخیره‬ ‫کاربر‬ ‫هر‬ ‫برای‬ ‫داده‬ ‫پایگاه‬ ‫در‬ ‫را‬ ‫ها‬  ‫اضافی‬ ‫اطالعات‬ ‫ذخیره‬ ‫برای‬ ‫مناسب‬ ‫روش‬ ‫این‬ ‫که‬ ‫آنجا‬ ‫از‬ Session ‫جداگانه‬ ‫های‬ ‫می‬ ‫نظر‬ ‫در‬ ‫کاربر‬ ‫هر‬ ‫برای‬ ‫را‬ ‫ای‬ ‫می‬ ‫بنابراین‬ ،‫گیرد‬ ‫داده‬ ‫توانیم‬ ‫به‬ ‫متصل‬ ‫های‬ Session ‫ها‬ .‫کنیم‬ ‫ذخیره‬ ‫را‬ ‫از‬ ‫گیری‬ ‫بهره‬ ‫با‬ Cookie ‫و‬ ‫ها‬ Session ‫می‬ ‫ها‬ ‫داده‬ ‫توانیم‬ ‫شخصی‬ ‫مانند‬ ‫خاصی‬ ‫های‬ ‫سازی‬ ‫می‬ ‫اجازه‬ ‫ما‬ ‫به‬ ‫سپس‬ .‫کنیم‬ ‫ذخیره‬ ‫را‬ ‫دسترسی‬ ‫کنترل‬ ‫و‬ ‫کاربر‬ ‫درخواست‬ ‫برای‬ ‫آن‬ ‫از‬ ‫تا‬ ‫دهد‬ .‫نماییم‬ ‫استفاده‬ ‫بعدی‬ ‫های‬  ‫می‬ ‫کند‬ ‫محدود‬ ‫مرورگر‬ ‫در‬ ‫را‬ ‫کوکی‬ ‫به‬ ‫دسترسی‬ ‫تواند‬ ‫ویژگی‬ ‫کوکی‬ ‫که‬ ‫آنجا‬ ‫از‬ HTTP-Only ‫را‬ ‫ارائه‬ ‫می‬ ،‫دهد‬ ‫می‬ ‫توانیم‬ ‫دسترسی‬ ‫جاوااسکریپت‬ ‫را‬ ‫برای‬ ‫آن‬ ‫محدود‬ ‫کنیم‬ . ‫عالوه‬ ‫بر‬ ‫این‬ ‫از‬ ‫هرگونه‬ ‫دسترسی‬ ‫به‬ ‫کوکی‬ ‫با‬ ‫حمالت‬ Cross-Site ‫جلوگیری‬ ‫می‬ ‫کن‬ .‫د‬ 2 . ( ‫توکن‬ ‫بر‬ ‫مبتنی‬ ‫هویت‬ ‫احراز‬ Token Base ) ‫هویت‬ ‫احراز‬ ‫در‬ ‫توکن‬ ‫یک‬ ‫سرور‬ ،‫توکن‬ ‫برپایه‬ ‫امضا‬ ( sign ) ‫شده‬ ‫خصوصی‬ ‫کلید‬ ‫اساس‬ ‫بر‬ .‫میکند‬ ‫ارسال‬ ‫کالینت‬ ‫به‬ ‫را‬ ‫آن‬ ‫و‬ ‫ایجاد‬ ‫را‬ ‫عنوان‬ ‫به‬ ‫و‬ ‫میشود‬ ‫ذخیره‬ ‫کالینت‬ ‫سمت‬ ‫در‬ ‫توکن‬ header ‫درخواست‬ ‫از‬ ‫یک‬ ‫هر‬ ‫در‬ ‫را‬ ‫توکن‬ ‫سرور‬ ‫آن‬ ‫از‬ ‫پس‬ .‫میشود‬ ‫ارسال‬ ‫ها‬ ‫معت‬ ‫توکن‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫و‬ ‫کرده‬ ‫رمزگشایی‬ ‫ب‬ ‫ر‬ ‫آن‬ ‫پاسخ‬ ‫و‬ ‫پردازش‬ ‫را‬ ‫درخواست‬ ،‫باشد‬ ‫ر‬ ‫از‬ ‫کاربر‬ ‫که‬ ‫زمانی‬ ‫همچنین‬ .‫میکند‬ ‫ارسال‬ ‫ا‬ .‫میرود‬ ‫بین‬ ‫از‬ ‫سرور‬ ‫با‬ ‫تعاملی‬ ‫هیچ‬ ‫بدون‬ ‫کالینت‬ ‫سمت‬ ‫در‬ ‫توکن‬ ،‫میشود‬ ‫خارج‬ ‫خود‬ ‫حساب‬ ‫بر‬ ‫هویت‬ ‫احراز‬ ‫مورد‬ ‫در‬ ‫ما‬ ‫که‬ ‫زمانی‬ ‫به‬ ‫ما‬ ‫اصلی‬ ‫اشاره‬ ‫واقع‬ ‫در‬ ،‫میکنیم‬ ‫صحبت‬ ‫توکن‬ ‫اساس‬ JWT ‫همان‬ ‫یا‬ JSON Web Token ‫گسترد‬ ‫طور‬ ‫به‬ ‫امروزه‬ ‫که‬ ‫میباشد‬ ‫در‬ ‫ه‬ ‫سیستمها‬ ‫از‬ ‫بسیاری‬ ‫است‬ ‫شده‬ ‫تبدیل‬ ‫هویت‬ ‫احراز‬ ‫زمینه‬ ‫در‬ ‫استاندارد‬ ‫یک‬ ‫به‬ ‫عمال‬ ‫و‬ ‫میگردد‬ ‫استفاده‬ . ‫بر‬ ‫مبتنی‬ ‫هویت‬ ‫احراز‬ ‫ویژگیهای‬ ‫توکن‬ :  ‫مکانیزم‬ ‫یک‬ stateless ‫مقیاس‬ ‫و‬ ‫پذیر‬ ‫کوکی‬ ‫برخالف‬ ‫توکن‬ ‫بر‬ ‫مبتنی‬ ‫روش‬ ،‫ها‬ stateless ‫است‬ . ‫این‬ ‫بدان‬ ‫داده‬ ‫پایگاه‬ ‫در‬ ‫کاربران‬ ‫از‬ ‫اطالعاتی‬ ‫هیچ‬ ‫که‬ ‫معناست‬ ‫نمی‬ ‫ذخیره‬ ‫سرور‬ ‫یا‬ .‫شود‬ ‫توکن‬ ‫اعتبارسنجی‬ ‫و‬ ‫ایجاد‬ ‫مسئول‬ ‫فقط‬ ‫سرور‬ ‫می‬ ‫امکان‬ ‫شما‬ ‫به‬ ‫که‬ ‫است‬ ‫ها‬ ‫حل‬ ‫راه‬ ‫دهد‬ ‫های‬ .‫کنید‬ ‫ایجاد‬ ‫کوکی‬ ‫بر‬ ‫مبتنی‬ ‫روش‬ ‫به‬ ‫نسبت‬ ‫بیشتری‬ ‫پذیر‬ ‫مقیاس‬  ‫امنیتی‬ ‫مسائل‬ ‫توکن‬ ‫اگرچه‬ ‫می‬ ‫سعی‬ ‫ها‬ ‫مسائل‬ ‫کنند‬ ‫کوکی‬ ‫امنیتی‬ .‫نیستند‬ ‫امن‬ ‫هم‬ ‫آنقدر‬ ‫اما‬ ،‫کنند‬ ‫برطرف‬ ‫را‬ ‫ها‬ ‫اجازه‬ ‫شما‬ ‫برنامه‬ ‫اگر‬ ‫اسکریپت‬ ‫دهد‬ ‫توکن‬ ‫نتیجه‬ ‫در‬ ،‫گیرند‬ ‫قرار‬ ‫آن‬ ‫در‬ ‫خارجی‬ ‫های‬ ‫می‬ ‫مرورگر‬ ‫در‬ ‫شده‬ ‫ذخیره‬ ‫های‬ ‫برابر‬ ‫در‬ ‫توانند‬ ‫حمالت‬ XSS ‫آسیب‬ ‫پذیر‬ ‫باشند‬ . ‫توکن‬ ‫که‬ ‫آنجا‬ ‫از‬ ‫این‬ ‫بر‬ ‫عالوه‬ stateless ،‫است‬ ‫اگر‬ ‫از‬ ‫بیرون‬ ‫قابل‬ ‫دسترسی‬ ،‫باشد‬ ‫هیچ‬ ‫راهی‬ ‫برای‬ ‫لغو‬ ‫آن‬ ‫تا‬ ‫زمان‬ ‫انقضایش‬ ‫وجود‬ ‫ن‬ ‫من‬ .‫کنیم‬ ‫حفاظت‬ ‫ممکن‬ ‫حد‬ ‫تا‬ ‫را‬ ‫توکن‬ ‫که‬ ‫است‬ ‫مهم‬ ‫بسیار‬ ‫بنابراین‬ .‫دارد‬
  • 16. ‫سرویس‬ ‫از‬ ‫بسیاری‬ ‫دیده‬ ‫را‬ ‫هویت‬ ‫احراز‬ ‫های‬ ‫از‬ ‫که‬ ‫ام‬ 5 ‫توکن‬ ‫فرض‬ ‫پیش‬ ‫زمان‬ ‫عنوان‬ ‫به‬ ‫دقیقه‬ ‫های‬ JWT ‫استفاده‬ ‫می‬ ‫کنند‬ .  ‫ذخیره‬ ‫برای‬ ‫مناسب‬ ‫اضافی‬ ‫اطالعات‬ ‫اضافی‬ ‫اطالعات‬ ‫ذخیره‬ ‫توکن‬ ‫با‬ ‫توکن‬ ‫طریق‬ ‫از‬ ‫مثال‬ ‫عنوان‬ ‫به‬ .‫است‬ ‫پذیر‬ ‫امکان‬ ‫نیز‬ ‫ها‬ ‫ها‬ ‫می‬ ‫داده‬ ‫توانیم‬ ‫ها‬ ‫در‬ ‫را‬ Claims ‫می‬ ‫افزایش‬ ‫را‬ ‫توکن‬ ‫سایز‬ ‫که‬ ‫آنجا‬ ‫از‬ ‫اما‬ .‫کنیم‬ ‫ذخیره‬ ‫آ‬ ‫بیشتر‬ ‫نگهداری‬ ،‫دهد‬ ‫می‬ ‫تأثیر‬ ‫شبکه‬ ‫کارکرد‬ ‫بر‬ ‫ن‬ ‫گذارد‬  ‫سازی‬ ‫پیاده‬ ‫قابلیت‬ Single-Sign-On SSO ‫یک‬ ‫هویت‬ ‫تایید‬ ‫متمرکز‬ ‫سرویس‬ ‫رمز‬ ‫و‬ ‫کاربری‬ ‫(نام‬ ‫کاربری‬ ‫حساب‬ ‫یک‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫تنها‬ ‫کاربر‬ ‫آن‬ ‫در‬ ‫که‬ ‫است‬ )‫عبور‬ ‫در‬ ‫هویت‬ ‫احراز‬ ‫طریق‬ ‫از‬ « ‫سرویس‬ ‫هویت‬ ‫احراز‬ ‫دهنده‬ » ( Authentication Server ) ‫می‬ ‫برنامه‬ ‫چندین‬ ‫به‬ ‫تواند‬ ‫باشد‬ ‫داشته‬ ‫دسترسی‬ ‫سایت‬ ‫یا‬ . ‫شرایط‬ ‫توکن‬ ‫بر‬ ‫مبتی‬ ‫هویت‬ ‫احراز‬ SSO ‫همچنین‬ ‫و‬ « ‫ثالث‬ ‫شخص‬ ‫هویت‬ ‫احراز‬ » Third-Party Authentication ‫می‬ ‫فراهم‬ ‫را‬ ‫در‬ .‫سازد‬ « ‫ثالث‬ ‫شخص‬ ‫هویت‬ ‫احراز‬ » ‫هویت‬ ‫تائید‬ ‫برای‬ ‫تواند‬ ‫می‬ ‫برنامه‬ ‫از‬ ‫کاربر‬ ‫ببرد‬ ‫بهره‬ ‫عمومی‬ ‫هویت‬ ‫احراز‬ ‫سرویسهای‬ ‫جمع‬ ‫بندی‬ ‫و‬ ‫توکن‬ ‫بر‬ ‫مبتنی‬ ‫رویکردهای‬ ‫جلسه‬ ‫برنامه‬ ‫برای‬ ‫هویت‬ ‫احراز‬ ‫پرکاربرد‬ ‫مکانیزم‬ ‫دو‬ ‫می‬ ‫حساب‬ ‫به‬ ‫وب‬ ‫های‬ ‫همانطور‬ .‫آیند‬ ‫که‬ ‫مشخ‬ ‫ص‬ ‫است‬ ‫روش‬ ‫این‬ ‫از‬ ‫یک‬ ‫هیچ‬ ، ‫ها‬ ‫صد‬ ‫کدام‬ ‫هر‬ ‫و‬ ‫نیستند‬ ‫کامل‬ ‫درصد‬ ‫خود‬ ‫سازی‬ ‫پیاده‬ ‫رویکرد‬ ‫در‬ ‫چندین‬ ‫اشکال‬ .‫دارد‬ ‫جزیی‬ ‫ب‬ ،‫هویت‬ ‫احراز‬ ‫روش‬ ‫انتخاب‬ ‫هنگام‬ ‫بنابراین‬ ‫ایستی‬ ‫خود‬ ‫پروژه‬ ‫الزامات‬ ‫بهترین‬ ‫و‬ ‫شده‬ ‫گرفته‬ ‫نظر‬ ‫در‬ ‫پیاده‬ ‫در‬ ‫سازمان‬ ‫هدف‬ ‫اینکه‬ ‫به‬ ‫توجه‬ ‫با‬ ‫لیکن‬ .‫باشد‬ ‫مدنظر‬ ‫سازمان‬ ‫نیازهای‬ ‫بر‬ ‫منطبق‬ ‫رویکرد‬ ‫سیستم‬ ‫سازی‬ ERP ‫مقیاس‬ ‫سیستم‬ ‫یک‬ ‫به‬ ‫دستیابی‬ ‫چندین‬ ‫برروی‬ ‫دستیابی‬ ‫قابل‬ ،‫پذیر‬ ‫برای‬ ‫مناسب‬ ‫و‬ ‫متمرکز‬ ‫هویت‬ ‫احراز‬ ‫امکان‬ ‫با‬ ‫دامنه‬ ‫سازی‬ ‫پیاده‬ PI A ‫می‬ ‫ها‬ ‫می‬ ‫پیشنهاد‬ ‫باشد‬ ‫از‬ ‫گردد‬ ‫توکن‬ ‫بر‬ ‫مبتنی‬ ‫رویکرد‬ .‫گردد‬ ‫استفاده‬ ‫سازی‬ ‫پیاده‬ ‫برای‬ ‫پیاده‬ ‫چگونه‬ ‫کنیم‬ ‫سازی‬ ‫پیاده‬ ‫برای‬ ‫کتابخانه‬ ‫هویت‬ ‫احراز‬ ‫سازی‬ ‫که‬ ‫است‬ ‫شده‬ ‫ارائه‬ ‫بسیاری‬ ‫های‬ ‫کتابخانه‬ ‫از‬ ‫جلسه‬ ‫بر‬ ‫مبتنی‬ ‫رویکرد‬ ‫برای‬ AspNetIdentity ‫کتابخانه‬ ‫از‬ ‫توکن‬ ‫بر‬ ‫مبتنی‬ ‫رویکرد‬ ‫برای‬ ‫و‬ JwtBrearer ‫می‬ .‫کرد‬ ‫استفاده‬ ‫توان‬ Single-Sign-On by Authentication Server
  • 17. : ‫پنجم‬ ‫بخش‬ ‫مجوزها‬ ‫ی‬ ‫دسترس‬ ( ‫ی‬ Authorization ) ‫اعطای‬ ‫مجوزهای‬ ‫می‬ ‫کاری‬ ‫چه‬ ‫شما‬ ‫که‬ ‫دارد‬ ‫اشاره‬ ‫سوال‬ ‫این‬ ‫به‬ ‫دسترسی‬ ‫است‬ ‫فرایندی‬ ‫دسترسی‬ ‫حق‬ ‫اعطای‬ ‫دهید؟‬ ‫انجام‬ ‫توانید‬ ‫می‬ ‫مدیریت‬ ،‫دارند‬ ‫را‬ ‫آنها‬ ‫به‬ ‫دسترسی‬ ‫اجازه‬ ‫شده‬ ‫هویت‬ ‫احراز‬ ‫کاربران‬ ‫که‬ ‫عملیاتی‬ ‫و‬ ‫منابع‬ ،‫آن‬ ‫در‬ ‫که‬ ‫شامل‬ ‫منابع‬ .‫شود‬ ،‫عملیاتها‬ ،‫دستورات‬ ،‫فرمها‬ ‫فایل‬ ‫پایگاه‬ ،‫ها‬ ،‫داده‬ ‫های‬ ‫می‬ ‫عملیات‬ .‫است‬ ‫غیره‬ ‫و‬ ‫سطرها‬ ،‫جداول‬ ‫یک‬ ‫خرید‬ ‫مانند‬ ‫تراکنش‬ ‫یک‬ ‫انجام‬ ‫شامل‬ ‫تواند‬ ‫باشد‬ ‫دیگر‬ ‫حساب‬ ‫به‬ ‫حساب‬ ‫یک‬ ‫از‬ ‫وجه‬ ‫انتقال‬ ‫یا‬ ‫محصول‬ . ‫که‬ ‫دارد‬ ‫وجود‬ ‫کاربران‬ ‫به‬ ‫دسترسی‬ ‫حق‬ ‫اعطای‬ ‫برای‬ ‫مختلفی‬ ‫روشهای‬ ‫استفاده‬ ‫افزاری‬ ‫نرم‬ ‫سیستهای‬ ‫از‬ ‫بسیاری‬ ‫در‬ ‫عمده‬ ‫بصورت‬ ‫روش‬ ‫دو‬ ‫آنها‬ ‫میان‬ ‫از‬ ‫و‬ ‫نقش‬ ‫بر‬ ‫مبتی‬ ‫روش‬ ‫عنوان‬ ‫با‬ ‫آنها‬ ‫از‬ ‫شود‬ ‫می‬ ‫می‬ ‫ادعا‬ ‫بر‬ ‫مبتنی‬ ‫روش‬ .‫کرد‬ ‫یاد‬ ‫توان‬ 1 . ‫اعطای‬ ‫مجوزهای‬ ‫دسترسی‬ ‫نقشها‬ ‫روش‬ ‫به‬ ( Role Base ) ‫م‬ ‫را‬ ‫ها‬ ‫نقش‬ ‫ی‬ ‫عناو‬ ‫عنوان‬ ‫به‬ ‫توان‬ ‫ی‬ ‫ن‬ ‫شغل‬ ‫ی‬ ‫مانند‬ .‫گرفت‬ ‫نظر‬ ‫در‬ } ‫مد‬ ‫ی‬ ‫ر‬ ‫فروش‬ { ، } ‫مد‬ ‫ی‬ ‫ر‬ ‫بازار‬ ‫ی‬ ‫اب‬ ‫ی‬ { ، } ‫ادم‬ ‫ی‬ ‫ن‬ { ‫غ‬ ‫و‬ ‫ی‬ ‫ره‬ . ‫مبتن‬ ‫مجوز‬ ‫ی‬ ‫بر‬ ‫مکان‬ ‫نقش‬ ‫ی‬ ‫زم‬ ‫ی‬ ‫برا‬ ‫ها‬ ‫نقش‬ ‫از‬ ‫که‬ ‫است‬ ‫ی‬ ‫برا‬ ‫کاربران‬ ‫به‬ ‫مناسب‬ ‫حقوق‬ ‫اختصاص‬ ‫ی‬ ‫وظا‬ ‫انجام‬ ‫ی‬ ‫ف‬ ‫س‬ ‫ی‬ ‫ستم‬ ‫برا‬ ‫مجوز‬ ‫و‬ ‫ی‬ ‫دسترس‬ ‫ی‬ ‫به‬ ‫م‬ ‫استفاده‬ ‫منابع‬ ‫ی‬ ‫کند‬ . 2 . ‫اعطای‬ ‫مجوزهای‬ ‫دسترسی‬ ‫ادعاها‬ ‫روش‬ ‫به‬ ( Claim Base ) ‫ادعاها‬ ‫م‬ ‫ی‬ ‫از‬ ‫تر‬ ‫گسترده‬ ‫توانند‬ ‫ی‬ ‫ک‬ ‫م‬ .‫باشند‬ ‫نقش‬ ‫ی‬ ‫عنوان‬ ‫به‬ ‫ادعا‬ ‫مورد‬ ‫در‬ ‫توان‬ ‫ی‬ ‫ک‬ ‫فکر‬ ‫برچسب‬ ‫کرد‬ ‫م‬ ،‫مثال‬ ‫عنوان‬ ‫به‬ . ‫ی‬ ‫توان‬ ‫ی‬ ‫د‬ ‫ی‬ ‫ک‬ ‫ب‬ ‫را‬ ‫فرد‬ ‫ا‬ ‫عن‬ ‫ا‬ ‫و‬ ‫ی‬ ‫ن‬ { ‫دوستانه‬ } ، ‫باالی‬ ‫{سابقه‬ 5 }‫تبریز‬ ‫{ساکن‬ ،}‫سال‬ ، { ‫بزرگسال‬ 18 ‫سال‬ } ‫غ‬ ‫و‬ ‫ی‬ ‫ره‬ ‫گرفت‬ ‫نظر‬ ‫در‬ . ‫ضمن‬ ‫در‬ ‫نظر‬ ‫از‬ ‫فن‬ ‫ی‬ ، ‫را‬ ‫نقش‬ ‫نیز‬ ‫م‬ ‫ی‬ ‫عنوان‬ ‫به‬ ‫توان‬ ‫ی‬ ‫ک‬ ‫ادعا‬ .‫کرد‬ ‫مطرح‬ ‫ادعاها‬ ‫روش‬ ‫با‬ ‫نقشها‬ ‫روش‬ ‫به‬ ‫مبتنی‬ ‫دسترسی‬ ‫مجوزهای‬ ‫مقایسه‬ :  ‫با‬ ‫م‬ ‫فقط‬ ‫ها‬ ‫نقش‬ ‫ی‬ ‫کاربر‬ ‫نوع‬ ‫توان‬ ‫ی‬ ‫م‬ ‫کار‬ ‫آن‬ ‫با‬ ‫که‬ ‫ی‬ ‫کن‬ ‫ی‬ ‫د‬ ‫را‬ ‫شناسا‬ ‫یی‬ ‫ک‬ ‫ر‬ ‫د‬ ‫لیکن‬ ‫م‬ ‫ادعاها‬ ‫با‬ ‫ی‬ ‫توان‬ ‫ی‬ ‫د‬ ‫ز‬ ‫ی‬ ‫رمجموعه‬ ‫ا‬ ‫ی‬ ‫اطالعات‬ ‫از‬ ‫کاربرد‬ ‫ی‬ ‫باش‬ ‫داشته‬ ‫کاربر‬ ‫مورد‬ ‫در‬ ‫ی‬ ‫د‬ .  ‫ها‬ ‫جفت‬ ‫ادعاها‬ ‫ی‬ ‫کلید‬ - ‫مقدار‬ ‫ساده‬ ‫ا‬ ‫ی‬ ‫هستند‬ ‫میتوان‬ ‫که‬ ‫و‬ ‫عنوان‬ ‫به‬ ‫را‬ ‫آنها‬ ‫ی‬ ‫ژگ‬ ‫ی‬ ‫ها‬ ‫ی‬ ‫ی‬ ‫ک‬ ‫گ‬ ‫نظر‬ ‫در‬ ‫کاربر‬ ‫رفت‬ . ‫اما‬ ‫نقش‬ ‫ها‬ ‫کل‬ ‫فقط‬ ‫ی‬ ‫د‬ ‫هستند‬ ‫و‬ ‫ادعا‬ ‫مانند‬ ‫مقداری‬ .‫ندارند‬  ‫می‬ ‫نگهداری‬ ‫دهنده‬ ‫سرویس‬ ‫روی‬ ‫بر‬ ‫معموال‬ ‫نقشها‬ ‫کلید‬ ‫کاربر‬ ‫و‬ ‫است‬ ‫کاربر‬ ‫اختیار‬ ‫در‬ ‫ادعا‬ ‫مقادیر‬ ‫ادعا‬ ‫رویکرد‬ ‫در‬ ‫لیکن‬ ‫شود‬ ‫می‬ ‫د‬ ‫و‬ ‫نقش‬ ‫صاحب‬ ‫دیگری‬ ‫سرویس‬ ‫در‬ ‫است‬ ‫کرده‬ ‫دریافت‬ ‫دهنده‬ ‫سرویس‬ ‫یک‬ ‫از‬ ‫که‬ ‫ادعایی‬ ‫مقدار‬ ‫طریق‬ ‫از‬ ‫تواند‬ ‫سترسی‬ .‫باشد‬ ‫جمع‬ ‫بندی‬ ‫کل‬ ‫طور‬ ‫به‬ ‫ی‬ ، ‫مبتن‬ ‫مجوز‬ ‫ی‬ ‫مبتن‬ ‫مجوز‬ ،‫ادعا‬ ‫بر‬ ‫ی‬ ‫م‬ ‫بر‬ ‫در‬ ‫را‬ ‫نقش‬ ‫بر‬ ‫ی‬ ‫گ‬ ‫ی‬ ‫رد‬ ‫دق‬ ‫طور‬ ‫به‬ . ‫ی‬ ،‫ق‬ ‫عضو‬ ‫ی‬ ‫ت‬ ‫اساس‬ ‫بر‬ ‫ها‬ ‫نقش‬ ‫در‬ ‫هو‬ ‫ی‬ ‫ت‬ ‫تع‬ ‫یی‬ ‫ن‬ ‫م‬ ‫ی‬ ‫هو‬ ،‫شود‬ ‫ی‬ ‫ت‬ ‫فقط‬ ‫ی‬ ‫ک‬ ‫ارزش‬ ‫بر‬ ‫حق‬ ‫نوع‬ ‫ی‬ ‫ک‬ ،‫است‬ ‫ادعا‬ ‫ادعاها‬ ‫ولیکن‬ ‫ندارند‬ ‫مقداری‬ ‫حالت‬ ‫هویتها‬ ‫باشند‬ ‫می‬ ‫ارزش‬ ‫و‬ ‫مقدار‬ ‫دارای‬ . ‫مشخص‬ ‫مه‬ ‫است‬ ‫تنها‬ ‫نقش‬ ‫ی‬ ‫ک‬ .‫ادعاست‬ ‫نوع‬ ‫واقع‬ ‫در‬ ‫اما‬ ،‫هستند‬ ‫ادعا‬ ‫ها‬ ‫نقش‬ ‫همه‬ ‫ن‬ ‫نقش‬ ‫ادعاها‬ ‫همه‬ ‫ی‬ ‫ستند‬ ‫نیز‬ ‫را‬ ‫نقشها‬ ‫رویکرد‬ ‫ادعاها‬ ‫روش‬ ‫به‬ ‫دسترسی‬ ‫مجوز‬ ‫رویکرد‬ ‫اینکه‬ ‫به‬ ‫توجه‬ ‫با‬ ‫مجموع‬ ‫در‬ . ‫سیستم‬ ‫سازی‬ ‫پیاده‬ ‫در‬ ‫گردد‬ ‫می‬ ‫توصیه‬ ‫شود‬ ‫می‬ ‫شامل‬ P ER ‫از‬ ‫ادعا‬ ‫روش‬ ‫به‬ ‫دسترسی‬ ‫اعطای‬ ‫بهره‬ ‫گیری‬ .‫گردد‬
  • 18. : ‫ششم‬ ‫بخش‬ ‫کاربری‬ ‫رابط‬ ‫طراحی‬ ( User-Interface Design ) ‫بگیریم‬ ‫بزرگ‬ ‫تصمیم‬ ‫یک‬ ‫بایستی‬ ‫میرسیم‬ ‫کاربری‬ ‫رابط‬ ‫طراحی‬ ‫به‬ ‫که‬ ‫هنگامی‬ ‫افزار‬ ‫نرم‬ ‫توسعه‬ ‫فرایند‬ ‫در‬ ‫که‬ ‫میخواهیم‬ ‫آیا‬ ‫برنامه‬ ‫صورت‬ ‫به‬ ‫وب‬ ‫صورت‬ ‫به‬ ‫یا‬ ‫گردد‬ ‫طراحی‬ ‫بومی‬ ( Native ) ‫باشد‬ . ‫نرم‬ ‫بومی‬ ‫طراحی‬ ‫افزار‬ ‫می‬ ‫گفته‬ ‫حالتی‬ ‫به‬ ‫کاربری‬ ‫رابط‬ ‫که‬ ‫شود‬ ‫برای‬ ‫استفاده‬ ‫در‬ ‫یک‬ ‫اجرایی‬ ‫سکوی‬ ‫سیستم‬ ، ‫عامل‬ ‫یا‬ ‫دستگاه‬ ‫خاص‬ ‫توسعه‬ ‫یافته‬ ‫باشد‬ . ‫هر‬ ‫انتخابی‬ ‫نکات‬ ‫مثبت‬ ‫و‬ ‫منفی‬ ‫خود‬ ‫را‬ ‫دارد‬ . Native Design Vs Web Design 1 . ( ‫وب‬ ‫کاربری‬ ‫رابط‬ ‫طراحی‬ Web UI Design ) ‫برنامه‬ ‫های‬ ‫وب‬ ‫به‬ ‫راحتی‬ ‫از‬ ‫طریق‬ ‫پیوندها‬ ‫به‬ ‫اشتراک‬ ‫گذاشته‬ ‫می‬ .‫شوند‬ ‫هیچ‬ ‫چیزی‬ ‫برای‬ ‫نصب‬ ‫وجود‬ ‫ندارد‬ ‫طریق‬ ‫از‬ ‫کاربر‬ ‫و‬ ‫سیستم‬ ‫و‬ ‫افزار‬ ‫سخت‬ ‫ساختار‬ ‫نظر‬ ‫از‬ ‫نیز‬ ‫محدودتی‬ ‫بنابراین‬ ‫داشت‬ ‫خواهد‬ ‫دسترسی‬ ‫سیستم‬ ‫به‬ ‫خود‬ ‫مرورگر‬ ‫نخواهد‬ ‫عامل‬ ‫ت‬ ‫وب‬ ‫برنامه‬ ‫یک‬ .‫داشت‬ ‫قریبا‬ ‫قادر‬ ‫است‬ ‫روی‬ ‫هر‬ ‫دستگاهی‬ ‫با‬ ‫صفحه‬ ،‫نمایش‬ ‫مرورگر‬ ‫ای‬ ‫نترنت‬ ‫و‬ ‫اتصال‬ ‫به‬ ‫شبکه‬ ‫اجرا‬ ‫شود‬ ‫و‬ ‫امکان‬ ‫نتیجه‬ ‫در‬ ‫دسترس‬ .‫کرد‬ ‫خواهد‬ ‫فراهم‬ ‫ما‬ ‫برای‬ ‫را‬ ‫گسترش‬ ‫و‬ ‫توسعه‬ ‫قابلیت‬ ‫و‬ ‫آنی‬ ‫روزرسانی‬ ‫به‬ ،‫پذیری‬ 2 . ( ‫بومی‬ ‫کاربری‬ ‫رابط‬ ‫طراحی‬ Native UI Design ) ‫برنامه‬ ‫محیط‬ ‫در‬ ‫نصب‬ ‫نیازمند‬ ‫معموال‬ ‫اند‬ ‫یافته‬ ‫توسعه‬ ‫بومی‬ ‫کاربری‬ ‫رابط‬ ‫یک‬ ‫اساس‬ ‫بر‬ ‫که‬ ‫هایی‬ ‫می‬ ‫کاربر‬ ‫این‬ ‫و‬ ‫باشند‬ ‫می‬ ‫باعث‬ ‫موضوع‬ ‫به‬ ‫یا‬ ‫نسخه‬ ‫تغییر‬ ‫شود‬ ‫برای‬ ‫کاربر‬ ‫خود‬ ‫تعامل‬ ‫با‬ ‫اغلب‬ ‫که‬ ‫شود‬ ‫جدی‬ ‫چالش‬ ‫یک‬ ‫ایجاد‬ ‫موجب‬ ‫آنها‬ ‫روزرسانی‬ ‫می‬ ‫حل‬ ‫قابل‬ ‫جدید‬ ‫نسخه‬ ‫نصب‬ ‫نمی‬ ‫مرورگر‬ ‫نیازمند‬ ‫آن‬ ‫اجرای‬ ‫برنامه‬ ‫مستقیم‬ ‫نصب‬ ‫بدلیل‬ ‫طرفی‬ ‫از‬ ‫اما‬ .‫باشد‬ ‫به‬ ‫و‬ ‫باشد‬ ‫می‬ ‫اجرا‬ ‫آماده‬ ‫سرعت‬ ‫شود‬ . ‫برنامه‬ ‫های‬ ‫بومی‬ ‫کمتر‬ ‫به‬ ‫داده‬ ‫هایی‬ ‫که‬ ‫از‬ ‫طریق‬ ‫اتصال‬ ‫به‬ ‫شبکه‬ ‫به‬ ‫آنها‬ ‫منتقل‬ ‫می‬ ‫شود‬ ‫متکی‬ ،‫هستند‬ ‫بنابراین‬ ً‫ال‬‫معمو‬ ‫سریعتر‬ ‫بارگیری‬ ‫می‬ ‫شوند‬ . ‫دسترسی‬ ‫بیشتر‬ ‫به‬ ‫قابلیت‬ ‫های‬ ‫سخت‬ ‫افزاری‬ ‫سیستم‬ ‫منابع‬ ‫و‬ ‫باعث‬ ‫عامل‬ ‫می‬ ‫شود‬ ‫قدرت‬ ‫پردازش‬ ‫مانند‬ ‫منابعی‬ ‫از‬ ‫نیاز‬ ‫صورت‬ ‫در‬ ‫و‬ ‫داشته‬ ‫بیشتری‬ ‫کارت‬ ‫های‬ ،‫گرافیک‬ ‫دوربین‬ ‫ها‬ ‫و‬ ‫میکروفون‬ ‫یا‬ ‫ها‬ .‫باشند‬ ‫داشته‬ ‫راحتتری‬ ‫استفاده‬ ‫هستند‬ ‫متصل‬ ‫دستگاه‬ ‫به‬ ‫که‬ ‫جانبی‬ ‫ابزارهای‬ ‫پروتکل‬ ‫و‬ ‫وب‬ ‫بر‬ ‫مبتنی‬ ‫سیستم‬ ‫یک‬ ‫طراحی‬ ،‫کاربری‬ ‫رابط‬ ‫از‬ ‫ما‬ ‫مقصد‬ ‫و‬ ‫هدف‬ ‫اگر‬ http ‫می‬ ‫تکنولوژی‬ ‫باشد‬ ‫زیادی‬ ‫ابزارهای‬ ‫و‬ ‫ها‬ ‫بصورت‬ ‫که‬ ‫دارند‬ ‫وجود‬ ‫کار‬ ‫این‬ ‫برای‬ ‫کلی‬ ‫گروه‬ ‫دو‬ ‫از‬ ‫یکی‬ ‫در‬ ‫تفسیر‬ ‫سرویس‬ ‫سمت‬ ( ‫دهنده‬ Server Side Rendering ‫و‬ ) ‫تفسیر‬