‫توسعه‬ ‫معماریهای‬ ‫و‬ ‫چهارچوبها‬ ‫بررسی‬
‫سازمانی‬ ‫منابع‬ ‫مدیریت‬ ‫سیستم‬
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
‫و‬ )
‫تفسیر‬
‫سرویس‬ ‫سمت‬
‫گیرنده‬
(
Client Side Rendering
)
‫می‬ ‫تقسیم‬
.‫شود‬
‫از‬ ‫منظور‬ ‫اینجا‬ ‫در‬ ‫که‬ ‫است‬ ‫توضیح‬ ‫به‬ ‫الزم‬
‫تفسیر‬
(
Rendering
)
‫فرآیندی‬
‫ا‬
‫که‬ ‫ست‬
‫داده‬
‫های‬
‫سیستم‬ ‫یک‬ ‫خروجی‬
‫الگو‬ ‫یک‬ ‫با‬ ‫را‬
(
Template
)
‫می‬ ‫ترکیب‬
‫فایل‬ ‫یک‬ ‫و‬ ‫کند‬
HTML
‫ر‬
‫کند‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫تواند‬ ‫می‬ ‫مرورگر‬ ‫که‬ ‫دهد‬ ‫می‬ ‫ارائه‬ ‫خروجی‬ ‫عنوان‬ ‫به‬ ‫ا‬
.
1
.
‫تفسیر‬
‫سرویس‬ ‫سمت‬
‫دهنده‬
(
Server Side Rendering
)
‫هر‬
‫زمانی‬
‫که‬
‫از‬
‫یک‬
‫وب‬
‫سایت‬
‫وب‬ ‫تحت‬ ‫سیستم‬ ‫یا‬
‫بازدید‬
‫می‬
‫شو‬
،‫د‬
‫مرورگر‬
‫را‬ ‫محتوایی‬ ‫یا‬ ‫صفحه‬ ‫آدرس‬
‫از‬
‫سرو‬
‫دهنده‬ ‫یس‬
‫درخواست‬
‫می‬
‫کند‬
‫رویکرد‬ ‫در‬ .
SSR
‫الگوی‬ ‫صورت‬ ‫به‬ ‫نتیجه‬ ‫و‬ ‫تولید‬ ‫سرور‬ ‫سمت‬ ‫در‬ ‫درخواستی‬ ‫محتوای‬ ‫یا‬ ‫صفحه‬
HTML
‫برای‬
‫نمایش‬
‫به‬
‫کاربر‬
‫ارسال‬
‫کند‬
.
‫حال‬
‫اگر‬
‫تصمیم‬
‫دارید‬
‫از‬
‫صفحه‬
‫دیگری‬
‫کنید‬ ‫بازدید‬ ‫نیز‬
،
‫مرورگر‬
‫شما‬
‫یک‬
‫بار‬
‫دیگر‬
‫درخواست‬
‫صفحه‬
‫به‬ ‫را‬ ‫جدید‬
‫می‬ ‫نمایش‬ ‫شما‬ ‫به‬ ‫و‬ ‫دریافت‬ ‫را‬ ‫آن‬ ‫ارسال‬ ‫دهنده‬ ‫سرویس‬
.‫دهد‬
Server Side Rendering

‫مزایا‬
‫آنجاییکه‬ ‫از‬ ‫روش‬ ‫این‬ ‫در‬
‫پردازش‬ ‫تمام‬
‫سرو‬ ‫در‬ ‫ها‬
‫یس‬
‫دهنده‬
‫می‬ ‫انجام‬
‫گیرد‬
‫ر‬ ‫اطالعات‬ ‫فقط‬ ‫مرورگر‬ ‫و‬
‫ا‬
‫نمایش‬
‫در‬ ‫و‬ ‫داده‬
‫نتیجه‬
‫سرعت‬
‫بارگذاری‬
‫می‬ ‫بیشتر‬ ‫صفحات‬
‫این‬ ‫و‬ ‫شود‬
‫موضوع‬
‫سرویس‬ ‫زمانیکه‬
‫گیرنده‬
‫باشد‬ ‫داشته‬ ‫ضعیفی‬ ‫سیستم‬
‫تاثیر‬
‫در‬ .‫داشت‬ ‫خواهد‬ ‫بیشتری‬
‫صفحه‬ ‫یک‬ ‫یافت‬
html
‫برای‬ ‫را‬ ‫شرایط‬ ‫آماده‬
‫قدیمی‬ ‫های‬ ‫مرورگر‬
‫می‬ ‫بهبود‬
‫طرفی‬ ‫از‬ ‫و‬ ‫بخشد‬
‫رده‬ ‫خود‬ ‫برای‬ ‫را‬ ‫شما‬ ‫صفحات‬ ‫از‬ ‫کاملتری‬ ‫محتوی‬ ‫جستجوی‬ ‫موتورهای‬
‫می‬ ‫بندی‬
.‫کنند‬

‫معایب‬
‫سمت‬ ‫در‬ ‫تفسیر‬ ‫اصلی‬ ‫ایراد‬
‫سرویس‬
‫پیاده‬ ‫دهنده‬
‫می‬ ‫پاسخگویی‬ ‫زمان‬ ‫مدت‬ ‫افزایش‬ ‫و‬ ‫پیچیده‬ ‫سازی‬
‫موارد‬ ‫اغلب‬ ‫در‬ ‫که‬ ‫باشد‬
‫محتوی‬ ‫از‬ ‫زیادی‬ ‫حجم‬ ‫انتقال‬ ‫از‬ ‫ناشی‬
HTML
‫البه‬ ‫در‬
‫سرویس‬ ‫سمت‬ ‫به‬ ‫پاسخها‬ ‫و‬ ‫درخواستها‬ ‫الی‬
.‫است‬ ‫دهنده‬
2
.
‫تفسیر‬
‫سرویس‬ ‫سمت‬
‫گیرنده‬
(
Client Side Rendering
)
‫مور‬ ‫در‬ ‫وقتی‬
‫تفسیر‬ ‫د‬
‫سمت‬
‫سرویس‬
‫گیرنده‬
‫می‬ ‫صحبت‬
‫شود‬
،
‫صفحه‬ ‫یا‬ ‫فایل‬ ‫تولید‬ ‫فرایند‬
HTML
‫می‬ ‫صورت‬ ‫گیرنده‬ ‫سمت‬ ‫در‬
.‫پذیرد‬
‫سرویس‬ ‫از‬ ‫خود‬ ‫درخواست‬ ‫اولین‬ ‫در‬ ‫معموال‬ ‫مرورگر‬
‫گیرنده‬
‫دستورات‬ ‫قالب‬ ‫در‬ ‫را‬ ‫فایلهایی‬
JavaScript
‫می‬ ‫دریافت‬
‫این‬ ‫که‬ ‫کند‬
‫شکل‬ ‫وظیفه‬ ‫دستورات‬
.‫دارند‬ ‫را‬ ‫کاربر‬ ‫نیاز‬ ‫مورد‬ ‫صفحات‬ ‫به‬ ‫دهی‬
‫اگر‬
‫صفحه‬
‫نیاز‬
‫به‬
‫گرفتن‬
‫داده‬
‫سرویس‬ ‫سمت‬ ‫از‬ ‫اطالعاتی‬ ‫یا‬
‫دهنده‬
‫بصورت‬ ‫که‬ ‫وب‬ ‫سرویسهای‬ ‫طریق‬ ‫از‬ ‫اطالعات‬ ‫این‬ ‫باشد‬
Api
.‫بود‬ ‫خواهد‬ ‫دسترس‬ ‫در‬ ‫اند‬ ‫شده‬ ‫فراهم‬
‫سرویس‬ ‫سمت‬ ‫تفسیر‬
‫گیرنده‬
‫ارائه‬ ‫برای‬ ‫جدیدی‬ ‫نسبتا‬ ‫رویکرد‬
‫برنامه‬ ‫آنها‬ ‫به‬ ‫اصطالح‬ ‫به‬ ‫که‬ ‫است‬ ‫افزارهای‬ ‫نرم‬
‫صفحه‬ ‫تک‬ ‫های‬
( ‫ای‬
Single Page Application
)
‫نیز‬
‫می‬ ‫گفته‬
‫شود‬
‫سرویس‬ ‫و‬ ‫ویژگیها‬ ‫برخی‬ ‫افزودن‬ ‫با‬ ‫که‬
‫نرم‬ ‫بود‬ ‫خواهیم‬ ‫قادر‬ ‫ها‬
‫بومی‬ ‫اجرایی‬ ‫تجربه‬ ‫یک‬ ‫که‬ ‫باشیم‬ ‫داشته‬ ‫افزاری‬
(
Native
‫نرم‬ ‫نوع‬ ‫این‬ ‫به‬ .‫کند‬ ‫ایجاد‬ ‫ما‬ ‫برای‬ ‫را‬ )
‫برنامه‬ ‫افزارها‬
( ‫پیشرو‬ ‫وب‬ ‫های‬
Progressive Web App
‫می‬ ‫نیز‬ )
‫گویند‬
.
Client Side Rendering

‫مزایا‬
‫تفسیر‬
‫سمت‬
‫سرویس‬
‫گیرنده‬
‫مشابه‬ ‫به‬
‫یک‬
‫برنامه‬
‫وب‬
‫پیشرو‬
‫کاربری‬ ‫تجربه‬ ‫یک‬
‫جذاب‬
‫و‬
‫م‬
‫شابه‬
‫برنامه‬
‫بومی‬
‫را‬
‫روی‬
‫دستگاه‬
.‫میکند‬ ‫ایجاد‬ ‫ما‬ ‫برای‬
‫اگر‬
‫نظر‬ ‫مورد‬ ‫سیستم‬
‫تعامالت‬
‫داده‬
‫سرویس‬ ‫با‬ ‫زیادی‬ ‫ای‬
‫می‬ ‫برقرار‬ ‫دهنده‬
‫کند‬
CSR
‫مناسبی‬ ‫گزینه‬
‫یک‬ ‫ساخت‬ ‫کلی‬ ‫حالت‬ ‫در‬ .‫بود‬ ‫خواهد‬ ‫پیاده‬ ‫برای‬
‫برنامه‬
‫وب‬
(
‫و‬
‫نه‬
‫یک‬
)‫سایت‬ ‫وب‬
‫رویکردهای‬ ‫طریق‬ ‫از‬
CSR
‫نتایج‬
.‫کرد‬ ‫خواهد‬ ‫حاصل‬ ‫مطلوبی‬

‫معایب‬
‫بزرگتر‬
‫ی‬
‫ن‬
‫ا‬
‫طراحی‬ ‫یراد‬
CSR
‫صفحات‬ ‫گیری‬ ‫شکل‬ ‫آن‬ ‫دلیل‬ ‫و‬ ‫باشد‬ ‫می‬ ‫جستو‬ ‫موتورهای‬ ‫توسط‬ ‫آن‬ ‫محتوی‬ ‫شناسایی‬ ‫عدم‬
‫می‬ ‫آنها‬ ‫اولیه‬ ‫بارگذاری‬ ‫از‬ ‫بعد‬
‫سرویس‬ ‫بودن‬ ‫ضعیف‬ ‫احتمال‬ ‫دیگر‬ ‫مشکل‬ .‫باشد‬
‫پردازش‬ ‫سرعت‬ ‫در‬ ‫مشکالت‬ ‫بروز‬ ‫و‬ ‫گیرنده‬
‫دستورات‬ ‫اجرای‬ ‫در‬ ‫محدودیت‬ ‫و‬
JavaScript
‫می‬
.‫باشد‬
‫جمع‬
‫بندی‬
‫سیستم‬ ‫یک‬ ‫توسعه‬ ‫در‬
ERP
‫ب‬
‫ا‬
‫وسیع‬ ‫طیف‬
‫از‬ ‫ی‬
‫رابط‬ ‫طراحی‬ ‫موجب‬ ‫نیازمندیها‬
‫ساختارهای‬ ‫در‬ ‫مختلفی‬ ‫کاربری‬ ‫های‬
‫خواهد‬ ‫وب‬ ‫و‬ ‫بومی‬
‫ش‬
‫نرم‬ ‫یک‬ ‫که‬ ‫سیستم‬ ‫ماهیت‬ ‫به‬ ‫توجه‬ ‫با‬ ‫سیستم‬ ‫عمده‬ ‫و‬ ‫اصلی‬ ‫کاربری‬ ‫رابط‬ ‫عنوان‬ ‫به‬ ‫لیکن‬ .‫د‬
‫افزار‬
‫داده‬ ‫تعامالت‬ ‫و‬ ‫بوده‬ ‫کاربردی‬
‫سرویس‬ ‫با‬ ‫زیادی‬ ‫ای‬
‫بهره‬ ‫داشت‬ ‫خواهد‬ ‫دهنده‬
‫از‬ ‫گیری‬
‫وب‬ ‫توسعه‬ ‫رویکردهای‬
‫و‬
‫سرویس‬ ‫سمت‬ ‫در‬ ‫تفسیر‬
‫گیرنده‬
( ‫کاربری‬ ‫تجربه‬
User Experience
‫را‬ ‫بهتری‬ )
‫سیستم‬ ‫کابران‬ ‫برای‬
‫خواهد‬ ‫حاصل‬
.‫کرد‬
‫پیاده‬ ‫چگونه‬
‫کنیم‬ ‫سازی‬
‫که‬ ‫دارد‬ ‫وجود‬ ‫مستقلی‬ ‫و‬ ‫متعدد‬ ‫سکوهای‬ ‫و‬ ‫نویسی‬ ‫برنامه‬ ‫زبانهای‬ ،‫توسعه‬ ‫محیطهای‬ ‫کاربری‬ ‫واسط‬ ‫طراحی‬ ‫حوزه‬ ‫در‬
‫در‬ ‫آنها‬ ‫معرفی‬
‫نمی‬ ‫مطلب‬ ‫این‬ ‫حوصله‬
‫نیاز‬ ‫مشکالت‬ ‫از‬ ‫بسیاری‬ ‫حل‬ ‫برای‬ ‫است‬ ‫ممکن‬ ‫اینکه‬ ‫گرفتن‬ ‫نظر‬ ‫در‬ ‫با‬ .‫گنجد‬
‫می‬ ‫پیشنهاد‬ ‫باشیم‬ ‫بومی‬ ‫ابزارهای‬ ‫توسعه‬ ‫به‬
‫نرم‬ ‫جامع‬ ‫بخش‬ ‫عنوان‬ ‫به‬ ‫شود‬
‫کتابخانه‬ ‫از‬ ‫افزار‬
ReactJs
‫بهره‬
.‫شود‬ ‫گیری‬
‫خروجی‬ ،‫گزارشات‬ : ‫هفتم‬ ‫بخش‬
‫ها‬
(
Reports, Outputs
)
‫از‬ ‫یکی‬
‫نرم‬ ‫سیستم‬ ‫یک‬ ‫بخشهای‬ ‫مهمترین‬
‫داده‬ ‫و‬ ‫گزارشات‬ ‫افزاری‬
‫می‬ ‫قرار‬ ‫کاربر‬ ‫اختیار‬ ‫در‬ ‫را‬ ‫آنها‬ ‫سیستم‬ ‫که‬ ‫هست‬ ‫آماری‬ ‫های‬
‫دهند‬
‫و‬
‫برای‬ ‫مبنایی‬
‫مدیران‬ ‫گیری‬ ‫تصمیم‬
‫ا‬ ‫کاربران‬ ‫سایر‬ ‫و‬
‫ست‬
‫سیستمها‬ ‫از‬ ‫بسیاری‬ ‫واقع‬ ‫در‬ .
،
‫داده‬ ‫انباشت‬
‫هدف‬ ‫با‬ ‫فقط‬ ‫را‬ ‫گوناگون‬ ‫های‬
‫و‬ ‫صحیح‬ ،‫کاربردی‬ ‫گزارشات‬ ‫حصول‬
‫ساخت‬
‫می‬ ‫انجام‬ ‫یافته‬
‫انعطاف‬ ‫میزان‬ ،‫گزارشات‬ ‫فرمت‬ ‫و‬ ‫شکل‬ ،‫انسجام‬ .‫دهند‬
‫پویایی‬ ‫و‬ ‫پذیری‬
( ‫پاالیش‬ ‫در‬ ‫آنها‬
Filtering
‫مهمترین‬ ‫از‬ )
‫فاکتورهای‬
‫می‬ ‫محسوب‬ ‫گزارش‬
‫شکل‬ ‫به‬ ‫خروجی‬ ‫یک‬ ‫فقط‬ ‫شاید‬ ‫دیگر‬ ‫منظری‬ ‫از‬ .‫شود‬
.‫کند‬ ‫کسب‬ ‫سیستم‬ ‫از‬ ‫است‬ ‫قرار‬ ‫کاربر‬ ‫یک‬ ‫که‬ ‫باشد‬ ‫چیزی‬ ‫تنها‬ ‫کاغذی‬ ‫برگ‬ ‫یک‬
‫طراحی‬ ‫برای‬ ‫مناسب‬ ‫رویکرد‬ ‫انتخاب‬ ‫بنابراین‬
‫بود‬ ‫خواهد‬ ‫اهمیت‬ ‫حائذ‬ ‫داشبردها‬ ‫و‬ ‫خروجیها‬ ،‫گزارشات‬
،
‫قرار‬ ‫بررسی‬ ‫مورد‬ ‫زیر‬ ‫اصلی‬ ‫رویکرد‬ ‫سه‬ ‫شده‬ ‫گفته‬ ‫موارد‬ ‫توسعه‬ ‫منظور‬ ‫به‬
‫می‬
.‫گیرد‬
1
.
‫فایل‬ ‫بر‬ ‫مبتنی‬ ‫گزارشات‬
(
File Base Reports
)
‫توسط‬ ‫که‬ ‫هستند‬ ‫گزارشاتی‬ ‫فایل‬ ‫بر‬ ‫مبتنی‬ ‫گزارشات‬
‫کتابخانه‬ ‫توسط‬ ‫و‬ ‫شده‬ ‫طراحی‬ ‫مشخصی‬ ‫ابزارهای‬
‫اختصاصی‬ ‫های‬
‫قالب‬ ‫در‬ ‫یا‬ ‫شده‬ ‫داده‬ ‫نمایش‬ ‫ها‬ ‫برنامه‬ ‫در‬ ‫ابزارها‬ ‫همان‬
‫می‬ ‫خروجی‬ ‫مختلف‬ ‫های‬
‫بهره‬ ‫برای‬ ‫که‬ ‫است‬ ‫محرز‬ .‫دهند‬
‫این‬ ‫از‬ ‫گیری‬
.‫بود‬ ‫خواهیم‬ ‫وابسته‬ ‫نظر‬ ‫مورد‬ ‫ابزار‬ ‫زیرساخت‬ ‫به‬ ‫گزارشات‬ ‫نوع‬
2
.
‫سرویس‬ ‫بر‬ ‫مبتنی‬ ‫گزارشات‬
(
Service Base Reports
)
‫می‬ ‫فراهم‬ ‫وب‬ ‫تحت‬ ‫سرویسهای‬ ‫توسط‬ ‫آنها‬ ‫خروجی‬ ‫که‬ ‫هستند‬ ‫گزارشاتی‬ ‫سرویس‬ ‫بر‬ ‫مبتنی‬ ‫گزارشات‬
‫اجرایی‬ ‫نظر‬ ‫از‬ ‫و‬ ‫شوند‬
‫می‬ ‫راحتی‬ ‫به‬ ‫سیستم‬ ‫از‬ ‫بخش‬ ‫هر‬ ‫در‬ ‫آنها‬ ‫بودن‬ ‫محور‬ ‫سرویس‬ ‫اساس‬ ‫دلیل‬ ‫به‬ .‫هستند‬ ‫مستقل‬ ‫کاربردی‬ ‫برنامه‬ ‫از‬
‫آنها‬ ‫از‬ ‫توان‬
.‫جست‬ ‫بهره‬
3
.
‫بهره‬
‫گزارش‬ ‫از‬ ‫گیری‬
‫ساز‬
(
Report Generators
)
‫بخواهیم‬ ‫اگر‬
‫عناصر‬
‫دریافت‬ ‫قابل‬
‫خروجی‬ ،‫کنیم‬ ‫تقسیم‬ ‫خروجی‬ ‫و‬ ‫گزارش‬ ‫صورت‬ ‫دو‬ ‫به‬ ‫را‬ ‫سیستم‬ ‫هر‬ ‫از‬
‫داده‬ ‫معموال‬ ‫ها‬
‫چاپی‬ ‫قابل‬ ‫های‬
‫فاکتور‬ ‫یک‬ ‫یا‬ ‫خدمات‬/‫کاال‬ ‫رسید‬ ،‫مرخصی‬ ‫برگ‬ ،‫مالی‬ ‫سند‬ ‫مانند‬ ‫باشد‬ ‫می‬ ‫سند‬ ‫یک‬ ‫یا‬ ‫موجودیت‬ ‫یک‬ ‫اطالعات‬ ‫بیانگر‬ ‫که‬ ‫هستند‬
‫ک‬ ‫فروش‬
‫داده‬ ‫جداول‬ ‫گزارشات‬ ‫اما‬ .‫گردد‬ ‫طراحی‬ ‫شده‬ ‫خواسته‬ ‫فرمت‬ ‫اساس‬ ‫بر‬ ‫یک‬ ‫هر‬ ‫بایستی‬ ‫معموال‬ ‫ه‬
‫لیست‬ ‫یا‬ ‫آماری‬ ‫های‬
‫های‬
‫می‬ ‫کسب‬ ‫سیستم‬ ‫از‬ ‫سازی‬ ‫تصمیم‬ ‫و‬ ‫بررسی‬ ‫هدف‬ ‫با‬ ‫موارد‬ ‫از‬ ‫بسیاری‬ ‫در‬ ‫که‬ ‫هستند‬ ‫اطالعاتی‬
‫راه‬ ‫بهترین‬ .‫شود‬
‫گزارشات‬ ‫کسب‬ ‫برای‬ ‫کار‬
‫سیستم‬ ‫از‬
‫بهره‬
‫از‬ ‫گیری‬
‫ی‬
‫ک‬
‫ابزار‬
‫قابلیتهای‬ ‫با‬ ‫ساز‬ ‫گزارش‬
‫و‬ ‫قالبیندی‬ ،‫پاالیش‬
‫گروه‬
‫اطالعات‬ ‫بندی‬
.‫است‬
‫جمع‬
‫بندی‬
‫سیستم‬
ERP
‫داده‬ ‫و‬ ‫اطالعات‬ ‫گستره‬ ‫دلیل‬ ‫به‬
‫مدیران‬ ‫و‬ ‫کاربران‬ ‫برای‬ ‫سازی‬ ‫تصمیم‬ ‫هدف‬ ‫با‬ ‫و‬ ‫آنها‬ ‫اهمیت‬ ‫و‬ ‫های‬
‫بهره‬ ‫برنابراین‬ .‫دارند‬ ‫را‬ ‫گزارشات‬ ‫از‬ ‫متنوعی‬ ‫و‬ ‫وسیع‬ ‫نیازمندیهای‬
‫از‬ ‫گیری‬
‫گزار‬ ‫ابزار‬ ‫یک‬
‫ش‬
‫ساز‬
‫می‬ ‫کارآمد‬
‫بار‬ ‫تواند‬
‫خروجی‬ ‫موضوع‬ ‫در‬ .‫بردارد‬ ‫توسعه‬ ‫تیم‬ ‫دوش‬ ‫از‬ ‫را‬ ‫گزارشات‬ ‫از‬ ‫بسیاری‬ ‫توسعه‬
‫منظور‬ ‫به‬ ‫نیز‬ ‫ها‬
‫مشخص‬ ‫الگوی‬ ‫طراحی‬
‫بهره‬ ‫و‬
‫از‬ ‫است‬ ‫بهتر‬ ‫سیستم‬ ‫مختلف‬ ‫بخشهای‬ ‫در‬ ‫آن‬ ‫از‬ ‫گیری‬
‫سرویس‬ ‫بر‬ ‫مبتنی‬ ‫روشهای‬
.‫شود‬ ‫استفاده‬
‫داده‬ ‫پایگاه‬ : ‫هشتم‬ ‫بخش‬
(
Data Base
)
‫پا‬
‫ی‬
‫گاه‬
‫ها‬
‫ی‬
‫اساس‬ ‫بخش‬ ‫داده‬
‫ی‬
‫معمار‬
‫ی‬
‫سازمان‬
‫ی‬
‫هستند‬
‫و‬
‫نم‬ ‫واقعا‬
‫ی‬
‫توان‬
‫ی‬
‫ک‬
‫تجار‬ ‫برنامه‬
‫ی‬
-
‫سازمانی‬
‫را‬
‫ا‬ ‫آن‬ ‫بدون‬
‫ی‬
‫جاد‬
‫کرد‬
‫اما‬ .
‫پا‬ ‫هر‬ ‫انتخاب‬
‫ی‬
‫گاه‬
‫ا‬ ‫داده‬
‫ی‬
‫مناسب‬
‫ن‬
‫ی‬
‫ست‬
‫پا‬ .
‫ی‬
‫گاه‬
‫ها‬
‫ی‬
‫اطالعات‬
‫ی‬
‫ز‬
‫ی‬
‫اد‬
‫ی‬
‫انتخاب‬ .‫دارد‬ ‫وجود‬
‫ی‬
‫ک‬
‫پا‬
‫ی‬
‫گاه‬
‫برا‬ ‫مناسب‬ ‫داده‬
‫ی‬
‫پاسخگو‬
‫یی‬
‫ن‬ ‫به‬
‫ی‬
‫ازها‬
‫ی‬
‫فناور‬
‫ی‬
‫سازمان‬
‫ی‬
‫برسد‬ ‫نظر‬ ‫به‬ ‫سخت‬ ‫است‬ ‫ممکن‬
‫و‬
‫بخش‬
‫ی‬
‫تخصص‬ ‫از‬
‫ی‬
‫ک‬
‫سازمان‬ ‫معمار‬
‫ی‬
‫است‬
.
‫که‬ ‫است‬ ‫درست‬
‫انتخاب‬
‫پا‬
‫ی‬
‫گاه‬
‫صح‬ ‫داده‬
‫ی‬
‫ح‬
‫وا‬ ‫در‬
‫قع‬
‫ی‬
‫ک‬
‫تصم‬
‫ی‬
‫م‬
‫م‬ ‫که‬ ‫است‬ ‫مدت‬ ‫بلند‬
‫ی‬
‫بر‬ ‫تواند‬
‫سازمان‬
‫تأث‬
‫ی‬
‫ر‬
‫بگذارد‬
‫ولی‬ ،
‫بررسی‬
‫رو‬ ‫بر‬
‫ی‬
‫نوع‬
‫پ‬
‫ی‬
‫اده‬
‫ساز‬
‫ی‬
‫پا‬
‫ی‬
‫گاه‬
‫داده‬
‫صورت‬ ‫نظر‬ ‫مورد‬ ‫سازمان‬ ‫کامل‬ ‫بررسی‬ ‫از‬ ‫پس‬ ‫باید‬
.‫پذیرد‬
‫از‬
‫مزا‬
‫ی‬
‫ا‬
‫ی‬
‫پا‬ ‫نوع‬ ‫انتخاب‬
‫ی‬
‫گاه‬
‫برا‬ ‫مناسب‬ ‫داده‬
‫ی‬
‫سازمان‬
‫می‬
:‫کرد‬ ‫اشاره‬ ‫زیر‬ ‫موارد‬ ‫به‬ ‫توان‬

‫تسه‬
‫ی‬
‫ل‬
‫ذخ‬
‫ی‬
‫ره‬
‫ساز‬
‫ی‬
‫ش‬ ‫به‬ ‫الزم‬ ‫و‬ ‫مرتبط‬ ‫اطالعات‬
‫ی‬
‫وه‬
‫ا‬
‫ی‬
‫سازگار‬

‫نرمال‬ ‫به‬ ‫کمک‬
،‫سازی‬
‫افزونگ‬ ‫کاهش‬
‫ی‬
‫ها‬ ‫داده‬
‫از‬ ‫جلوگیری‬ ،
‫ها‬ ‫داده‬ ‫تکرار‬
‫داده‬ ‫پایگاه‬ ‫حجم‬ ‫کاهش‬ ‫و‬

‫ساده‬
‫سازی‬
‫اجرا‬
‫ی‬
‫جوها‬ ‫و‬ ‫پرس‬
‫ی‬
‫برا‬ ‫شده‬ ‫ارسال‬
‫ی‬
‫واکش‬
‫ی‬
‫ها‬ ‫داده‬
‫همچن‬ ‫و‬
‫ی‬
‫ن‬
‫بخش‬ ‫سرعت‬
‫ی‬
‫دن‬
‫اجرا‬ ‫به‬
‫آنها‬

‫تسهیل‬
‫وظا‬
‫ی‬
‫ف‬
‫به‬ ‫مربوط‬
‫نگهداری‬
‫پا‬
‫ی‬
‫گاه‬
‫داده‬
‫همچنین‬
‫عوامل‬
‫ی‬
‫پا‬ ‫انتخاب‬ ‫هنگام‬ ‫که‬
‫ی‬
‫گاه‬
‫برا‬ ‫مناسب‬ ‫داده‬
‫ی‬
‫سازمان‬
‫با‬
‫ی‬
‫د‬
‫شود‬ ‫گرفته‬ ‫نظر‬ ‫در‬
:‫هستند‬ ‫زیر‬ ‫موارد‬ ‫به‬ ،

‫ا‬ ‫داده‬ ‫اندازه‬
‫ی‬
‫با‬ ‫که‬
‫ی‬
‫د‬
‫ذخ‬
‫ی‬
‫ره‬
‫شود‬

‫قابلیت‬
‫دسترس‬
‫ی‬
‫به‬ ‫پذیری‬
‫ها‬ ‫داده‬

‫داده‬ ‫ساختار‬
‫ها‬

‫داده‬ ‫امنیت‬
‫ها‬
‫پایگاه‬ ‫اصلی‬ ‫انواع‬ ،‫شده‬ ‫ذکر‬ ‫موارد‬ ‫به‬ ‫توجه‬ ‫با‬
:‫هستند‬ ‫زیر‬ ‫شرح‬ ‫به‬ ‫داده‬ ‫های‬
1
.
‫پایگاه‬
‫داده‬
‫ها‬
‫رابطه‬ ‫ی‬
( ‫ای‬
Relational Databases
)
‫پا‬
‫ی‬
‫گاه‬
‫رابطه‬ ‫داده‬
‫ا‬
‫ی‬
‫پا‬
‫ی‬
‫گاه‬
‫ی‬
‫رو‬ ‫بر‬ ‫اطالعات‬ ‫آن‬ ‫در‬ ‫که‬ ‫است‬
‫ی‬
‫ا‬ ‫گونه‬ ‫به‬ ‫جداول‬ ‫انواع‬
‫ی‬
‫تقس‬
‫ی‬
‫م‬
‫م‬
‫ی‬
‫اطم‬ ‫که‬ ‫شود‬
‫ی‬
‫نان‬
‫حاصل‬
‫ه‬ ‫که‬ ‫شود‬
‫ی‬
‫چ‬
‫افزونگ‬
‫ی‬
‫ه‬ ‫در‬ ‫داده‬
‫ی‬
‫چ‬
‫جدول‬
‫ی‬
‫ا‬
‫ب‬
‫ی‬
‫ن‬
‫برا‬ .‫ندارد‬ ‫وجود‬ ‫جداول‬
‫ی‬
‫ا‬
‫ی‬
‫جاد‬
‫تجم‬
‫ی‬
‫ع‬
‫داده‬
‫هایی‬
‫طر‬ ‫از‬ ‫جداول‬ ‫خاص‬
‫ی‬
‫ق‬
‫به‬ ‫اتصال‬
‫ی‬
‫کد‬
‫ی‬
‫گر‬
‫هم‬ ‫با‬
.‫هستند‬ ‫مرتبط‬
Relational Database
‫ا‬
‫ز‬
‫پایگاه‬
‫داده‬ ‫های‬
‫رابطه‬ ‫ی‬
‫می‬ ‫ای‬
‫به‬ ‫توان‬
CockroachDB
،
Firebird
،
IBM Db2
،
MariaDB
،
Microsoft SQL
Server
،
MS Access
،
Oracle
،
Postgres
،
SAP HANA
‫و‬
SQLite
.‫نمود‬ ‫اشاره‬
2
.
‫پا‬
‫ی‬
‫گا‬
‫ه‬
‫داده‬
‫ها‬
‫ی‬
‫کلید‬
-
( ‫مقدار‬
Key-Value NoSQL Database
)
‫پا‬
‫ی‬
‫گاه‬
‫ها‬
‫ی‬
‫داده‬
‫های‬
‫کلید‬
-
‫همان‬ ‫یا‬ ‫مقدار‬
NoSQL
‫پ‬ ‫آن‬ ‫نام‬ ‫از‬ ‫که‬ ‫همانطور‬ ،
‫ی‬
،‫داست‬
‫داده‬
‫نم‬ ‫پخش‬ ‫جداول‬ ‫در‬ ‫را‬ ‫ها‬
‫ی‬
‫کنند‬
‫نتیجه‬ ‫در‬
‫داده‬
‫ها‬
‫ی‬
‫تکرار‬
‫ی‬
‫داخل‬ ‫در‬
‫ی‬
‫ا‬
‫ب‬
‫ی‬
‫ن‬
‫وجود‬ ‫جدول‬
‫ندارند‬
‫فناور‬ .
‫ی‬
‫ها‬
‫ی‬
‫پا‬
‫ی‬
‫گاه‬
‫داده‬
NoSQL
‫رو‬ ً‫ال‬‫معمو‬
‫ی‬
‫کرد‬
‫ی‬
‫مبتن‬
‫ی‬
‫سند‬ ‫بر‬
(
document
)
‫برا‬
‫ی‬
‫ذخ‬
‫ی‬
‫ره‬
‫ساز‬
‫ی‬
‫دارند‬ ‫ها‬ ‫داده‬
.
‫اسناد‬
‫فرمت‬ ‫با‬ ً‫ال‬‫معمو‬
JSON
‫در‬
‫ی‬
‫ک‬
‫واحد‬
‫سازماندهی‬
‫شده‬
‫نام‬ ‫به‬
‫مجموعه‬
(
collection
)
‫ذخ‬
‫ی‬
‫ره‬
‫م‬
‫ی‬
‫حال‬ ‫در‬ .‫شوند‬
‫ی‬
‫سازمانده‬ ‫که‬
‫ی‬
‫در‬ ‫اطالعات‬
‫ی‬
‫ک‬
‫طبق‬ ‫سند‬
‫ی‬
‫ک‬
‫استاندارد‬ ‫ساختار‬
‫صورت‬
‫می‬
‫گیرد‬
‫م‬ ‫را‬ ‫مجموعه‬ ‫در‬ ‫سند‬ ‫هر‬ ،
‫ی‬
‫نحو‬ ‫هر‬ ‫به‬ ‫توان‬
‫ی‬
‫داد‬ ‫قرار‬
‫برا‬ .
‫ی‬
،‫مثال‬
‫ی‬
‫ک‬
‫م‬ ‫سند‬
‫ی‬
‫تواند‬
‫حاو‬
‫ی‬
‫اطالعات‬
first_name
‫و‬
last_name
‫حال‬ ‫در‬ ،‫باشد‬
‫ی‬
‫د‬ ‫سند‬ ‫که‬
‫ی‬
‫گر‬
‫م‬
‫ی‬
‫تواند‬
‫حاو‬
‫ی‬
‫اطالعات‬
first_name
،
last_name
‫و‬
email
‫سوم‬ ‫سند‬ .‫باشد‬
‫م‬
‫ی‬
‫حاو‬ ‫تواند‬
‫ی‬
.‫باشد‬ ‫مقدار‬ ‫و‬ ‫محصول‬ ‫نام‬ ‫اطالعات‬
NoSql DataBase
‫م‬
‫ز‬
‫ی‬
‫ت‬
‫پا‬
‫ی‬
‫گاه‬
‫ها‬
‫ی‬
‫داده‬
NoSQL
‫ا‬
‫ی‬
‫ن‬
‫تطب‬ ‫آنها‬ ‫که‬ ‫است‬
‫ی‬
‫ق‬
‫پذ‬
‫ی‬
‫ر‬
‫ی‬
‫بسیاری‬
‫م‬ ‫ارائه‬ ‫را‬
‫ی‬
‫دهند‬
‫و‬
‫اشکال‬
‫آنها‬
‫ا‬
‫ی‬
‫ن‬
‫است‬
‫که‬
‫تما‬
‫ی‬
‫ل‬
‫ز‬ ‫مقدار‬ ‫دارند‬
‫ی‬
‫اد‬
‫ی‬
‫اضاف‬ ‫اطالعات‬ ‫از‬
‫ی‬
‫آور‬ ‫جمع‬ ‫را‬
‫ی‬
‫نت‬ ‫در‬ .‫کنند‬
‫ی‬
،‫جه‬
‫ی‬
‫کپارچگ‬
‫ی‬
(
Integrity
)
‫داده‬
‫م‬ ‫ها‬
‫ی‬
‫خطر‬ ‫به‬ ‫تواند‬
‫ب‬
‫ی‬
‫فتد‬
‫و‬
‫دادن‬ ‫ارتباط‬
‫ب‬ ‫ها‬ ‫داده‬
‫ی‬
‫ن‬
‫م‬ ‫ها‬ ‫مجموعه‬
‫ی‬
‫دشوار‬ ‫تواند‬
‫باشد‬
.
‫پایگاه‬ ‫از‬
‫داده‬ ‫های‬
‫ای‬
NoSQL
‫می‬ ‫هم‬
‫از‬ ‫توان‬
Cassandra
،
Couchbase
،
Elasticsearch
،
InfluxDB
،
MongoDB
،
Redis
‫و‬
Riak
.‫برد‬ ‫نام‬
3
.
‫پا‬
‫ی‬
‫گاه‬
‫داده‬
‫ها‬
‫ی‬
‫نمودار‬
‫ی‬
(
Graph Databases
)
‫پا‬
‫ی‬
‫گاه‬
‫پا‬ ،‫گراف‬ ‫داده‬
‫ی‬
‫گاه‬
‫ی‬
‫موجود‬ ‫اطالعات‬ ‫تنها‬ ‫نه‬ ‫که‬ ‫است‬
‫ی‬
‫ت‬
‫ها‬
‫ذخ‬ ‫را‬
‫ی‬
‫ره‬
‫م‬
‫ی‬
‫ب‬ ‫روابط‬ ‫بلکه‬ ،‫کند‬
‫ی‬
‫ن‬
‫موجود‬
‫ی‬
‫ت‬
‫ن‬ ‫را‬ ‫ها‬
‫ی‬
‫ز‬
‫ذخ‬
‫ی‬
‫ره‬
‫م‬
‫ی‬
‫ساختار‬ .‫کند‬
‫ی‬
‫موجود‬ ‫که‬
‫ی‬
‫ت‬
‫توص‬ ‫را‬ ‫آنها‬ ‫روابط‬ ‫و‬ ‫ها‬
‫ی‬
‫ف‬
‫م‬
‫ی‬
‫نام‬ ‫گراف‬ ،‫کند‬
‫ی‬
‫ده‬
‫م‬
‫ی‬
‫ا‬ ‫از‬ ،‫شود‬
‫ی‬
‫ن‬
‫رو‬
‫نوع‬ ‫این‬
‫پا‬
‫ی‬
‫گاه‬
‫نام‬ ‫گراف‬ ‫داده‬
‫ی‬
‫ده‬
‫م‬
‫ی‬
.‫شود‬
Graph Databases
‫محبوب‬
‫ی‬
‫ت‬
‫پا‬
‫ی‬
‫گاه‬
‫ها‬
‫ی‬
‫اطالعات‬
‫ی‬
‫به‬ ،‫گراف‬
‫و‬
‫ی‬
‫ژه‬
‫م‬ ‫در‬
‫ی‬
‫ان‬
‫سا‬
‫ی‬
‫ت‬
‫ها‬
‫ی‬
‫رسانه‬
‫ها‬
‫ی‬
‫اجتماع‬
‫ی‬
(
Social Media
)
‫مورد‬ ‫در‬ ‫تنها‬ ‫نه‬ ‫که‬
‫موجود‬
‫ی‬
‫ت‬
‫ها‬
‫یی‬
‫از‬ ‫که‬
‫آنها‬
‫م‬ ‫استفاده‬
‫ی‬
،‫کنند‬
‫ب‬ ‫رابطه‬ ‫به‬ ‫بلکه‬
‫ی‬
‫ن‬
‫موجود‬
‫ی‬
‫ت‬
‫ها‬
‫ن‬
‫ی‬
‫ز‬
‫ن‬
‫ی‬
‫از‬
‫افزا‬ ‫حال‬ ‫در‬ ،‫دارند‬
‫ی‬
‫ش‬
،‫مثال‬ ‫عنوان‬ ‫به‬ .‫است‬
‫ی‬
‫ک‬
‫ف‬ ‫در‬ ‫کاربر‬
‫ی‬
‫س‬
‫م‬ ‫بوک‬
‫ی‬
‫کاربر‬ ‫دوست‬ ‫تواند‬
‫د‬
‫ی‬
‫گر‬
‫ی‬
‫عضو‬ ‫و‬
‫ی‬
‫ک‬
.‫باشد‬ ‫گروه‬
‫پایگاه‬ ‫از‬
‫داده‬ ‫های‬
‫هم‬ ‫نموداری‬ ‫ی‬
AgangoDB
،
Neo4J
‫و‬
OrientedDB
.‫هستند‬ ‫اشاره‬ ‫قابل‬
Database Type
‫مقایسه‬
‫پایگاه‬
‫داده‬
‫رابطه‬ ‫های‬
‫کلید‬ ،‫ای‬
-
‫نموداری‬ ‫و‬ ‫مقدار‬

‫داده‬ ‫پایگاه‬
‫رابطه‬ ‫های‬
‫ای‬
‫دارای‬
‫ساختار‬ ‫و‬ ‫چارچوب‬
‫محکم‬
‫پایه‬ ‫با‬
‫ریاضی‬ ‫های‬
‫و‬ ‫هستند‬
‫تراکنشها‬ ‫برای‬ ‫باالیی‬ ‫عملکرد‬
‫صحت‬ ‫حفظ‬ ‫و‬
‫داده‬
‫ها‬
‫می‬ ‫نمایش‬ ‫خود‬ ‫از‬
.‫دهند‬
‫نوع‬ ‫این‬
‫داده‬ ‫پایگاه‬
‫به‬ ‫اصالح‬ ‫به‬ ‫که‬ ‫خواصی‬ ‫اعمال‬ ‫با‬ ‫ها‬
‫آنها‬
ACID
‫می‬ ‫گفته‬
‫یکپارچکی‬ ،‫صحت‬ ‫شود‬
‫می‬ ‫تضمین‬ ‫را‬ ‫اطالعات‬ ‫ثبات‬ ‫و‬
.‫کنند‬
‫اما‬
‫داده‬ ‫پایگاه‬
‫رابطه‬ ‫های‬
‫ای‬
‫عمیق‬ ‫تحلیل‬ ‫در‬ ‫ضعیفی‬ ‫بسیار‬ ‫عملکرد‬
(
Deep Analysis
)
.‫دارند‬
‫راه‬ ‫مشکل‬ ‫این‬ ‫بر‬ ‫غلبه‬ ‫برای‬ ‫البته‬
‫حل‬
‫به‬ ‫که‬ ‫دارد‬ ‫وجود‬ ‫هایی‬
‫کمک‬
‫مانند‬ ‫روشهایی‬
OLAP
‫می‬
.‫کرد‬ ‫حل‬ ‫را‬ ‫آن‬ ‫شود‬

‫در‬
‫پایگ‬
‫ا‬
‫داده‬ ‫ه‬
‫کلید‬ ‫های‬
-
‫مقدار‬
‫چارچوب‬ ‫و‬ ‫ساختار‬
‫می‬ ‫گاهی‬ ‫که‬ ‫است‬ ‫سیال‬ ‫بقدری‬ ‫اطالعات‬
‫ساختاری‬ ‫هیچ‬ ‫که‬ ‫گفت‬ ‫توان‬
‫بی‬ .‫ندارند‬
‫می‬ ‫که‬ ‫میزان‬ ‫همان‬ ‫به‬ ‫ساختاری‬
‫در‬ ‫است‬ ‫ممکن‬ ‫شود‬ ‫محسوب‬ ‫مزیت‬ ‫تواند‬
‫ثبات‬ ‫رفتن‬ ‫بین‬ ‫از‬ ‫موجب‬ ‫نهایت‬
(
Consistency
)
‫داده‬ ‫در‬
.‫شود‬ ‫ها‬
‫صحت‬ ‫ما‬ ‫برای‬ ‫شاید‬
‫یکپارچکی‬ ‫و‬
‫لحظه‬
‫ای‬
‫کلی‬ ‫و‬
‫داده‬
‫نباشد‬ ‫مهم‬ ‫ها‬
‫بدنبال‬ ‫مطمئنا‬ ‫اما‬
‫ثبات‬
‫نها‬
‫یی‬
(
Eventual Consistency
)
.‫بود‬ ‫خواهیم‬
‫داده‬ ‫پایگاه‬ ‫این‬
‫نیز‬ ‫ها‬
‫عل‬
‫ی‬
‫ر‬
‫غ‬
‫تر‬ ‫در‬ ‫مناسب‬ ‫عملکرد‬ ‫م‬
‫کوچک‬ ‫اکنشهای‬
‫می‬ ‫دقت‬ ‫و‬ ‫سرعت‬ ‫عملکردی‬ ‫فراوان‬ ‫مشکالت‬ ‫دچار‬ ‫عمیق‬ ‫تحلیل‬ ‫بحث‬ ‫در‬
.‫باشند‬

‫پایگاه‬
‫داده‬ ‫ساختار‬ ‫و‬ ‫چارچوب‬ ‫یک‬ ‫داشتن‬ ‫بر‬ ‫عالوه‬ ‫نموداری‬ ‫های‬ ‫داده‬
‫منعطف‬
،
‫امکان‬
‫داده‬ ‫صحت‬ ‫و‬ ‫ثبات‬ ‫ایجاد‬
‫در‬ ‫ها‬
‫تراکنشهای‬
‫فراهم‬ ‫را‬ ‫محلی‬
‫می‬
‫آ‬
‫تر‬ ‫در‬ ‫طرفی‬ ‫از‬ .‫ورند‬
‫ا‬
‫می‬ ‫نمایش‬ ‫خود‬ ‫از‬ ‫خوبی‬ ‫عملکرد‬ ‫پیچیده‬ ‫کنشهای‬
.‫دهند‬
‫پایگاه‬ ‫این‬
‫داده‬
‫ها‬
‫شرایط‬
‫عمیق‬ ‫تحلیل‬ ‫برای‬ ‫مناسبی‬
‫می‬ ‫میسر‬
.‫کنند‬
‫جمع‬
‫بندی‬
‫سیستم‬
‫های‬
ERP
‫داده‬ ‫دارای‬
‫نیازمند‬ ‫و‬ ‫ساختارمند‬ ،‫حجیم‬ ‫های‬
‫گزارش‬
‫گیری‬
‫فراوان‬ ‫های‬
.‫هستند‬
‫پا‬
‫ی‬
‫گاه‬
‫ها‬ ‫داده‬
‫ی‬
‫ا‬ ‫رابطه‬
‫ی‬
‫مد‬ ‫به‬ ‫قادر‬
‫ی‬
‫ر‬
‫ی‬
‫ت‬
‫ها‬ ‫داده‬
‫ی‬
‫بس‬
‫ی‬
‫ار‬
‫ساخت‬
‫ی‬
‫افته‬
‫ا‬ ‫بر‬ ‫عالوه‬ .‫هستند‬
‫ی‬
‫ن‬
‫صحت‬ ‫به‬ ‫تاکید‬ ‫با‬
‫لحظه‬
‫ای‬
‫تراکنشها‬
‫بهره‬
‫داده‬ ‫همواره‬ ‫ای‬ ‫رابطه‬ ‫مدل‬ ‫از‬ ‫گیری‬
.‫کرد‬ ‫خواهد‬ ‫حاصل‬ ‫را‬ ‫استنادی‬ ‫قابل‬ ‫و‬ ‫صحیح‬ ‫های‬
‫ا‬ ‫بر‬ ‫عالوه‬
‫ی‬
،‫ن‬
‫پایگاه‬
‫رابطه‬ ‫داده‬
‫ای‬
‫ش‬ ‫برای‬
‫ر‬
‫ایطی‬
‫که‬
‫داده‬
‫س‬ ‫صورت‬ ‫به‬ ‫ها‬
.‫است‬ ‫مناسب‬ ‫بسیار‬ ‫هستند‬ ‫افزایش‬ ‫حال‬ ‫در‬ ‫لحظه‬ ‫هر‬ ‫اختارمند‬
‫پیاده‬ ‫چگونه‬
‫کنیم‬ ‫سازی‬
‫پایگاه‬ ‫از‬
‫داده‬ ‫های‬
‫رابطه‬ ‫ی‬
‫ای‬
‫پرکاربرد‬
‫می‬ ‫بهتری‬ ‫پشتیبانی‬ ‫دارای‬ ‫که‬
‫می‬ ‫باشند‬
‫داده‬ ‫پایگاه‬ ‫به‬ ‫توان‬
‫ی‬
SQL Sever
‫و‬ ‫مایکروسات‬ ‫شرکت‬
Oracle
‫بحث‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫البته‬ .‫نمود‬ ‫اشاره‬
‫کپی‬ ‫های‬
‫هزینه‬ ‫و‬ ‫رایت‬
‫پایگاه‬ ‫این‬ ‫مجوزهای‬
‫داده‬
‫ها‬
‫داده‬ ‫پایگاه‬ ،‫باشد‬ ‫پوشی‬ ‫چشم‬ ‫غیرقابل‬ ‫و‬ ‫مهم‬
‫ی‬
Postgres
‫رتبه‬ ‫در‬ ‫و‬
‫بعدی‬ ‫ی‬
MySQL
‫پیشن‬ ،
‫می‬ ‫داده‬ ‫هاد‬
.‫شود‬

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 ‫و‬ ) ‫تفسیر‬
  • 19.
    ‫سرویس‬ ‫سمت‬ ‫گیرنده‬ ( Client SideRendering ) ‫می‬ ‫تقسیم‬ .‫شود‬ ‫از‬ ‫منظور‬ ‫اینجا‬ ‫در‬ ‫که‬ ‫است‬ ‫توضیح‬ ‫به‬ ‫الزم‬ ‫تفسیر‬ ( Rendering ) ‫فرآیندی‬ ‫ا‬ ‫که‬ ‫ست‬ ‫داده‬ ‫های‬ ‫سیستم‬ ‫یک‬ ‫خروجی‬ ‫الگو‬ ‫یک‬ ‫با‬ ‫را‬ ( Template ) ‫می‬ ‫ترکیب‬ ‫فایل‬ ‫یک‬ ‫و‬ ‫کند‬ HTML ‫ر‬ ‫کند‬ ‫استفاده‬ ‫آن‬ ‫از‬ ‫تواند‬ ‫می‬ ‫مرورگر‬ ‫که‬ ‫دهد‬ ‫می‬ ‫ارائه‬ ‫خروجی‬ ‫عنوان‬ ‫به‬ ‫ا‬ . 1 . ‫تفسیر‬ ‫سرویس‬ ‫سمت‬ ‫دهنده‬ ( Server Side Rendering ) ‫هر‬ ‫زمانی‬ ‫که‬ ‫از‬ ‫یک‬ ‫وب‬ ‫سایت‬ ‫وب‬ ‫تحت‬ ‫سیستم‬ ‫یا‬ ‫بازدید‬ ‫می‬ ‫شو‬ ،‫د‬ ‫مرورگر‬ ‫را‬ ‫محتوایی‬ ‫یا‬ ‫صفحه‬ ‫آدرس‬ ‫از‬ ‫سرو‬ ‫دهنده‬ ‫یس‬ ‫درخواست‬ ‫می‬ ‫کند‬ ‫رویکرد‬ ‫در‬ . SSR ‫الگوی‬ ‫صورت‬ ‫به‬ ‫نتیجه‬ ‫و‬ ‫تولید‬ ‫سرور‬ ‫سمت‬ ‫در‬ ‫درخواستی‬ ‫محتوای‬ ‫یا‬ ‫صفحه‬ HTML ‫برای‬ ‫نمایش‬ ‫به‬ ‫کاربر‬ ‫ارسال‬ ‫کند‬ . ‫حال‬ ‫اگر‬ ‫تصمیم‬ ‫دارید‬ ‫از‬ ‫صفحه‬ ‫دیگری‬ ‫کنید‬ ‫بازدید‬ ‫نیز‬ ، ‫مرورگر‬ ‫شما‬ ‫یک‬ ‫بار‬ ‫دیگر‬ ‫درخواست‬ ‫صفحه‬ ‫به‬ ‫را‬ ‫جدید‬ ‫می‬ ‫نمایش‬ ‫شما‬ ‫به‬ ‫و‬ ‫دریافت‬ ‫را‬ ‫آن‬ ‫ارسال‬ ‫دهنده‬ ‫سرویس‬ .‫دهد‬ Server Side Rendering  ‫مزایا‬ ‫آنجاییکه‬ ‫از‬ ‫روش‬ ‫این‬ ‫در‬ ‫پردازش‬ ‫تمام‬ ‫سرو‬ ‫در‬ ‫ها‬ ‫یس‬ ‫دهنده‬ ‫می‬ ‫انجام‬ ‫گیرد‬ ‫ر‬ ‫اطالعات‬ ‫فقط‬ ‫مرورگر‬ ‫و‬ ‫ا‬ ‫نمایش‬ ‫در‬ ‫و‬ ‫داده‬ ‫نتیجه‬ ‫سرعت‬ ‫بارگذاری‬ ‫می‬ ‫بیشتر‬ ‫صفحات‬ ‫این‬ ‫و‬ ‫شود‬ ‫موضوع‬ ‫سرویس‬ ‫زمانیکه‬ ‫گیرنده‬ ‫باشد‬ ‫داشته‬ ‫ضعیفی‬ ‫سیستم‬ ‫تاثیر‬ ‫در‬ .‫داشت‬ ‫خواهد‬ ‫بیشتری‬ ‫صفحه‬ ‫یک‬ ‫یافت‬ html ‫برای‬ ‫را‬ ‫شرایط‬ ‫آماده‬ ‫قدیمی‬ ‫های‬ ‫مرورگر‬ ‫می‬ ‫بهبود‬ ‫طرفی‬ ‫از‬ ‫و‬ ‫بخشد‬ ‫رده‬ ‫خود‬ ‫برای‬ ‫را‬ ‫شما‬ ‫صفحات‬ ‫از‬ ‫کاملتری‬ ‫محتوی‬ ‫جستجوی‬ ‫موتورهای‬ ‫می‬ ‫بندی‬ .‫کنند‬  ‫معایب‬ ‫سمت‬ ‫در‬ ‫تفسیر‬ ‫اصلی‬ ‫ایراد‬ ‫سرویس‬ ‫پیاده‬ ‫دهنده‬ ‫می‬ ‫پاسخگویی‬ ‫زمان‬ ‫مدت‬ ‫افزایش‬ ‫و‬ ‫پیچیده‬ ‫سازی‬ ‫موارد‬ ‫اغلب‬ ‫در‬ ‫که‬ ‫باشد‬ ‫محتوی‬ ‫از‬ ‫زیادی‬ ‫حجم‬ ‫انتقال‬ ‫از‬ ‫ناشی‬ HTML ‫البه‬ ‫در‬ ‫سرویس‬ ‫سمت‬ ‫به‬ ‫پاسخها‬ ‫و‬ ‫درخواستها‬ ‫الی‬ .‫است‬ ‫دهنده‬ 2 . ‫تفسیر‬ ‫سرویس‬ ‫سمت‬ ‫گیرنده‬ ( Client Side Rendering ) ‫مور‬ ‫در‬ ‫وقتی‬ ‫تفسیر‬ ‫د‬ ‫سمت‬ ‫سرویس‬ ‫گیرنده‬ ‫می‬ ‫صحبت‬ ‫شود‬ ، ‫صفحه‬ ‫یا‬ ‫فایل‬ ‫تولید‬ ‫فرایند‬ HTML ‫می‬ ‫صورت‬ ‫گیرنده‬ ‫سمت‬ ‫در‬ .‫پذیرد‬ ‫سرویس‬ ‫از‬ ‫خود‬ ‫درخواست‬ ‫اولین‬ ‫در‬ ‫معموال‬ ‫مرورگر‬ ‫گیرنده‬ ‫دستورات‬ ‫قالب‬ ‫در‬ ‫را‬ ‫فایلهایی‬ JavaScript ‫می‬ ‫دریافت‬ ‫این‬ ‫که‬ ‫کند‬ ‫شکل‬ ‫وظیفه‬ ‫دستورات‬ .‫دارند‬ ‫را‬ ‫کاربر‬ ‫نیاز‬ ‫مورد‬ ‫صفحات‬ ‫به‬ ‫دهی‬ ‫اگر‬ ‫صفحه‬ ‫نیاز‬ ‫به‬ ‫گرفتن‬ ‫داده‬ ‫سرویس‬ ‫سمت‬ ‫از‬ ‫اطالعاتی‬ ‫یا‬ ‫دهنده‬ ‫بصورت‬ ‫که‬ ‫وب‬ ‫سرویسهای‬ ‫طریق‬ ‫از‬ ‫اطالعات‬ ‫این‬ ‫باشد‬ Api .‫بود‬ ‫خواهد‬ ‫دسترس‬ ‫در‬ ‫اند‬ ‫شده‬ ‫فراهم‬ ‫سرویس‬ ‫سمت‬ ‫تفسیر‬ ‫گیرنده‬ ‫ارائه‬ ‫برای‬ ‫جدیدی‬ ‫نسبتا‬ ‫رویکرد‬ ‫برنامه‬ ‫آنها‬ ‫به‬ ‫اصطالح‬ ‫به‬ ‫که‬ ‫است‬ ‫افزارهای‬ ‫نرم‬ ‫صفحه‬ ‫تک‬ ‫های‬ ( ‫ای‬ Single Page Application )
  • 20.
    ‫نیز‬ ‫می‬ ‫گفته‬ ‫شود‬ ‫سرویس‬ ‫و‬‫ویژگیها‬ ‫برخی‬ ‫افزودن‬ ‫با‬ ‫که‬ ‫نرم‬ ‫بود‬ ‫خواهیم‬ ‫قادر‬ ‫ها‬ ‫بومی‬ ‫اجرایی‬ ‫تجربه‬ ‫یک‬ ‫که‬ ‫باشیم‬ ‫داشته‬ ‫افزاری‬ ( Native ‫نرم‬ ‫نوع‬ ‫این‬ ‫به‬ .‫کند‬ ‫ایجاد‬ ‫ما‬ ‫برای‬ ‫را‬ ) ‫برنامه‬ ‫افزارها‬ ( ‫پیشرو‬ ‫وب‬ ‫های‬ Progressive Web App ‫می‬ ‫نیز‬ ) ‫گویند‬ . Client Side Rendering  ‫مزایا‬ ‫تفسیر‬ ‫سمت‬ ‫سرویس‬ ‫گیرنده‬ ‫مشابه‬ ‫به‬ ‫یک‬ ‫برنامه‬ ‫وب‬ ‫پیشرو‬ ‫کاربری‬ ‫تجربه‬ ‫یک‬ ‫جذاب‬ ‫و‬ ‫م‬ ‫شابه‬ ‫برنامه‬ ‫بومی‬ ‫را‬ ‫روی‬ ‫دستگاه‬ .‫میکند‬ ‫ایجاد‬ ‫ما‬ ‫برای‬ ‫اگر‬ ‫نظر‬ ‫مورد‬ ‫سیستم‬ ‫تعامالت‬ ‫داده‬ ‫سرویس‬ ‫با‬ ‫زیادی‬ ‫ای‬ ‫می‬ ‫برقرار‬ ‫دهنده‬ ‫کند‬ CSR ‫مناسبی‬ ‫گزینه‬ ‫یک‬ ‫ساخت‬ ‫کلی‬ ‫حالت‬ ‫در‬ .‫بود‬ ‫خواهد‬ ‫پیاده‬ ‫برای‬ ‫برنامه‬ ‫وب‬ ( ‫و‬ ‫نه‬ ‫یک‬ )‫سایت‬ ‫وب‬ ‫رویکردهای‬ ‫طریق‬ ‫از‬ CSR ‫نتایج‬ .‫کرد‬ ‫خواهد‬ ‫حاصل‬ ‫مطلوبی‬  ‫معایب‬ ‫بزرگتر‬ ‫ی‬ ‫ن‬ ‫ا‬ ‫طراحی‬ ‫یراد‬ CSR ‫صفحات‬ ‫گیری‬ ‫شکل‬ ‫آن‬ ‫دلیل‬ ‫و‬ ‫باشد‬ ‫می‬ ‫جستو‬ ‫موتورهای‬ ‫توسط‬ ‫آن‬ ‫محتوی‬ ‫شناسایی‬ ‫عدم‬ ‫می‬ ‫آنها‬ ‫اولیه‬ ‫بارگذاری‬ ‫از‬ ‫بعد‬ ‫سرویس‬ ‫بودن‬ ‫ضعیف‬ ‫احتمال‬ ‫دیگر‬ ‫مشکل‬ .‫باشد‬ ‫پردازش‬ ‫سرعت‬ ‫در‬ ‫مشکالت‬ ‫بروز‬ ‫و‬ ‫گیرنده‬ ‫دستورات‬ ‫اجرای‬ ‫در‬ ‫محدودیت‬ ‫و‬ JavaScript ‫می‬ .‫باشد‬ ‫جمع‬ ‫بندی‬ ‫سیستم‬ ‫یک‬ ‫توسعه‬ ‫در‬ ERP ‫ب‬ ‫ا‬ ‫وسیع‬ ‫طیف‬ ‫از‬ ‫ی‬ ‫رابط‬ ‫طراحی‬ ‫موجب‬ ‫نیازمندیها‬ ‫ساختارهای‬ ‫در‬ ‫مختلفی‬ ‫کاربری‬ ‫های‬ ‫خواهد‬ ‫وب‬ ‫و‬ ‫بومی‬ ‫ش‬ ‫نرم‬ ‫یک‬ ‫که‬ ‫سیستم‬ ‫ماهیت‬ ‫به‬ ‫توجه‬ ‫با‬ ‫سیستم‬ ‫عمده‬ ‫و‬ ‫اصلی‬ ‫کاربری‬ ‫رابط‬ ‫عنوان‬ ‫به‬ ‫لیکن‬ .‫د‬ ‫افزار‬ ‫داده‬ ‫تعامالت‬ ‫و‬ ‫بوده‬ ‫کاربردی‬ ‫سرویس‬ ‫با‬ ‫زیادی‬ ‫ای‬ ‫بهره‬ ‫داشت‬ ‫خواهد‬ ‫دهنده‬ ‫از‬ ‫گیری‬ ‫وب‬ ‫توسعه‬ ‫رویکردهای‬ ‫و‬ ‫سرویس‬ ‫سمت‬ ‫در‬ ‫تفسیر‬ ‫گیرنده‬ ( ‫کاربری‬ ‫تجربه‬ User Experience ‫را‬ ‫بهتری‬ ) ‫سیستم‬ ‫کابران‬ ‫برای‬ ‫خواهد‬ ‫حاصل‬ .‫کرد‬ ‫پیاده‬ ‫چگونه‬ ‫کنیم‬ ‫سازی‬ ‫که‬ ‫دارد‬ ‫وجود‬ ‫مستقلی‬ ‫و‬ ‫متعدد‬ ‫سکوهای‬ ‫و‬ ‫نویسی‬ ‫برنامه‬ ‫زبانهای‬ ،‫توسعه‬ ‫محیطهای‬ ‫کاربری‬ ‫واسط‬ ‫طراحی‬ ‫حوزه‬ ‫در‬ ‫در‬ ‫آنها‬ ‫معرفی‬ ‫نمی‬ ‫مطلب‬ ‫این‬ ‫حوصله‬ ‫نیاز‬ ‫مشکالت‬ ‫از‬ ‫بسیاری‬ ‫حل‬ ‫برای‬ ‫است‬ ‫ممکن‬ ‫اینکه‬ ‫گرفتن‬ ‫نظر‬ ‫در‬ ‫با‬ .‫گنجد‬ ‫می‬ ‫پیشنهاد‬ ‫باشیم‬ ‫بومی‬ ‫ابزارهای‬ ‫توسعه‬ ‫به‬ ‫نرم‬ ‫جامع‬ ‫بخش‬ ‫عنوان‬ ‫به‬ ‫شود‬ ‫کتابخانه‬ ‫از‬ ‫افزار‬ ReactJs ‫بهره‬ .‫شود‬ ‫گیری‬
  • 21.
    ‫خروجی‬ ،‫گزارشات‬ :‫هفتم‬ ‫بخش‬ ‫ها‬ ( Reports, Outputs ) ‫از‬ ‫یکی‬ ‫نرم‬ ‫سیستم‬ ‫یک‬ ‫بخشهای‬ ‫مهمترین‬ ‫داده‬ ‫و‬ ‫گزارشات‬ ‫افزاری‬ ‫می‬ ‫قرار‬ ‫کاربر‬ ‫اختیار‬ ‫در‬ ‫را‬ ‫آنها‬ ‫سیستم‬ ‫که‬ ‫هست‬ ‫آماری‬ ‫های‬ ‫دهند‬ ‫و‬ ‫برای‬ ‫مبنایی‬ ‫مدیران‬ ‫گیری‬ ‫تصمیم‬ ‫ا‬ ‫کاربران‬ ‫سایر‬ ‫و‬ ‫ست‬ ‫سیستمها‬ ‫از‬ ‫بسیاری‬ ‫واقع‬ ‫در‬ . ، ‫داده‬ ‫انباشت‬ ‫هدف‬ ‫با‬ ‫فقط‬ ‫را‬ ‫گوناگون‬ ‫های‬ ‫و‬ ‫صحیح‬ ،‫کاربردی‬ ‫گزارشات‬ ‫حصول‬ ‫ساخت‬ ‫می‬ ‫انجام‬ ‫یافته‬ ‫انعطاف‬ ‫میزان‬ ،‫گزارشات‬ ‫فرمت‬ ‫و‬ ‫شکل‬ ،‫انسجام‬ .‫دهند‬ ‫پویایی‬ ‫و‬ ‫پذیری‬ ( ‫پاالیش‬ ‫در‬ ‫آنها‬ Filtering ‫مهمترین‬ ‫از‬ ) ‫فاکتورهای‬ ‫می‬ ‫محسوب‬ ‫گزارش‬ ‫شکل‬ ‫به‬ ‫خروجی‬ ‫یک‬ ‫فقط‬ ‫شاید‬ ‫دیگر‬ ‫منظری‬ ‫از‬ .‫شود‬ .‫کند‬ ‫کسب‬ ‫سیستم‬ ‫از‬ ‫است‬ ‫قرار‬ ‫کاربر‬ ‫یک‬ ‫که‬ ‫باشد‬ ‫چیزی‬ ‫تنها‬ ‫کاغذی‬ ‫برگ‬ ‫یک‬ ‫طراحی‬ ‫برای‬ ‫مناسب‬ ‫رویکرد‬ ‫انتخاب‬ ‫بنابراین‬ ‫بود‬ ‫خواهد‬ ‫اهمیت‬ ‫حائذ‬ ‫داشبردها‬ ‫و‬ ‫خروجیها‬ ،‫گزارشات‬ ، ‫قرار‬ ‫بررسی‬ ‫مورد‬ ‫زیر‬ ‫اصلی‬ ‫رویکرد‬ ‫سه‬ ‫شده‬ ‫گفته‬ ‫موارد‬ ‫توسعه‬ ‫منظور‬ ‫به‬ ‫می‬ .‫گیرد‬ 1 . ‫فایل‬ ‫بر‬ ‫مبتنی‬ ‫گزارشات‬ ( File Base Reports ) ‫توسط‬ ‫که‬ ‫هستند‬ ‫گزارشاتی‬ ‫فایل‬ ‫بر‬ ‫مبتنی‬ ‫گزارشات‬ ‫کتابخانه‬ ‫توسط‬ ‫و‬ ‫شده‬ ‫طراحی‬ ‫مشخصی‬ ‫ابزارهای‬ ‫اختصاصی‬ ‫های‬ ‫قالب‬ ‫در‬ ‫یا‬ ‫شده‬ ‫داده‬ ‫نمایش‬ ‫ها‬ ‫برنامه‬ ‫در‬ ‫ابزارها‬ ‫همان‬ ‫می‬ ‫خروجی‬ ‫مختلف‬ ‫های‬ ‫بهره‬ ‫برای‬ ‫که‬ ‫است‬ ‫محرز‬ .‫دهند‬ ‫این‬ ‫از‬ ‫گیری‬ .‫بود‬ ‫خواهیم‬ ‫وابسته‬ ‫نظر‬ ‫مورد‬ ‫ابزار‬ ‫زیرساخت‬ ‫به‬ ‫گزارشات‬ ‫نوع‬ 2 . ‫سرویس‬ ‫بر‬ ‫مبتنی‬ ‫گزارشات‬ ( Service Base Reports ) ‫می‬ ‫فراهم‬ ‫وب‬ ‫تحت‬ ‫سرویسهای‬ ‫توسط‬ ‫آنها‬ ‫خروجی‬ ‫که‬ ‫هستند‬ ‫گزارشاتی‬ ‫سرویس‬ ‫بر‬ ‫مبتنی‬ ‫گزارشات‬ ‫اجرایی‬ ‫نظر‬ ‫از‬ ‫و‬ ‫شوند‬ ‫می‬ ‫راحتی‬ ‫به‬ ‫سیستم‬ ‫از‬ ‫بخش‬ ‫هر‬ ‫در‬ ‫آنها‬ ‫بودن‬ ‫محور‬ ‫سرویس‬ ‫اساس‬ ‫دلیل‬ ‫به‬ .‫هستند‬ ‫مستقل‬ ‫کاربردی‬ ‫برنامه‬ ‫از‬ ‫آنها‬ ‫از‬ ‫توان‬ .‫جست‬ ‫بهره‬ 3 . ‫بهره‬ ‫گزارش‬ ‫از‬ ‫گیری‬ ‫ساز‬ ( Report Generators ) ‫بخواهیم‬ ‫اگر‬ ‫عناصر‬ ‫دریافت‬ ‫قابل‬ ‫خروجی‬ ،‫کنیم‬ ‫تقسیم‬ ‫خروجی‬ ‫و‬ ‫گزارش‬ ‫صورت‬ ‫دو‬ ‫به‬ ‫را‬ ‫سیستم‬ ‫هر‬ ‫از‬ ‫داده‬ ‫معموال‬ ‫ها‬ ‫چاپی‬ ‫قابل‬ ‫های‬ ‫فاکتور‬ ‫یک‬ ‫یا‬ ‫خدمات‬/‫کاال‬ ‫رسید‬ ،‫مرخصی‬ ‫برگ‬ ،‫مالی‬ ‫سند‬ ‫مانند‬ ‫باشد‬ ‫می‬ ‫سند‬ ‫یک‬ ‫یا‬ ‫موجودیت‬ ‫یک‬ ‫اطالعات‬ ‫بیانگر‬ ‫که‬ ‫هستند‬ ‫ک‬ ‫فروش‬ ‫داده‬ ‫جداول‬ ‫گزارشات‬ ‫اما‬ .‫گردد‬ ‫طراحی‬ ‫شده‬ ‫خواسته‬ ‫فرمت‬ ‫اساس‬ ‫بر‬ ‫یک‬ ‫هر‬ ‫بایستی‬ ‫معموال‬ ‫ه‬ ‫لیست‬ ‫یا‬ ‫آماری‬ ‫های‬ ‫های‬ ‫می‬ ‫کسب‬ ‫سیستم‬ ‫از‬ ‫سازی‬ ‫تصمیم‬ ‫و‬ ‫بررسی‬ ‫هدف‬ ‫با‬ ‫موارد‬ ‫از‬ ‫بسیاری‬ ‫در‬ ‫که‬ ‫هستند‬ ‫اطالعاتی‬ ‫راه‬ ‫بهترین‬ .‫شود‬ ‫گزارشات‬ ‫کسب‬ ‫برای‬ ‫کار‬ ‫سیستم‬ ‫از‬ ‫بهره‬ ‫از‬ ‫گیری‬ ‫ی‬ ‫ک‬ ‫ابزار‬ ‫قابلیتهای‬ ‫با‬ ‫ساز‬ ‫گزارش‬ ‫و‬ ‫قالبیندی‬ ،‫پاالیش‬ ‫گروه‬ ‫اطالعات‬ ‫بندی‬ .‫است‬ ‫جمع‬ ‫بندی‬ ‫سیستم‬ ERP ‫داده‬ ‫و‬ ‫اطالعات‬ ‫گستره‬ ‫دلیل‬ ‫به‬ ‫مدیران‬ ‫و‬ ‫کاربران‬ ‫برای‬ ‫سازی‬ ‫تصمیم‬ ‫هدف‬ ‫با‬ ‫و‬ ‫آنها‬ ‫اهمیت‬ ‫و‬ ‫های‬ ‫بهره‬ ‫برنابراین‬ .‫دارند‬ ‫را‬ ‫گزارشات‬ ‫از‬ ‫متنوعی‬ ‫و‬ ‫وسیع‬ ‫نیازمندیهای‬ ‫از‬ ‫گیری‬ ‫گزار‬ ‫ابزار‬ ‫یک‬ ‫ش‬ ‫ساز‬ ‫می‬ ‫کارآمد‬ ‫بار‬ ‫تواند‬ ‫خروجی‬ ‫موضوع‬ ‫در‬ .‫بردارد‬ ‫توسعه‬ ‫تیم‬ ‫دوش‬ ‫از‬ ‫را‬ ‫گزارشات‬ ‫از‬ ‫بسیاری‬ ‫توسعه‬ ‫منظور‬ ‫به‬ ‫نیز‬ ‫ها‬ ‫مشخص‬ ‫الگوی‬ ‫طراحی‬ ‫بهره‬ ‫و‬ ‫از‬ ‫است‬ ‫بهتر‬ ‫سیستم‬ ‫مختلف‬ ‫بخشهای‬ ‫در‬ ‫آن‬ ‫از‬ ‫گیری‬ ‫سرویس‬ ‫بر‬ ‫مبتنی‬ ‫روشهای‬ .‫شود‬ ‫استفاده‬
  • 22.
    ‫داده‬ ‫پایگاه‬ :‫هشتم‬ ‫بخش‬ ( Data Base ) ‫پا‬ ‫ی‬ ‫گاه‬ ‫ها‬ ‫ی‬ ‫اساس‬ ‫بخش‬ ‫داده‬ ‫ی‬ ‫معمار‬ ‫ی‬ ‫سازمان‬ ‫ی‬ ‫هستند‬ ‫و‬ ‫نم‬ ‫واقعا‬ ‫ی‬ ‫توان‬ ‫ی‬ ‫ک‬ ‫تجار‬ ‫برنامه‬ ‫ی‬ - ‫سازمانی‬ ‫را‬ ‫ا‬ ‫آن‬ ‫بدون‬ ‫ی‬ ‫جاد‬ ‫کرد‬ ‫اما‬ . ‫پا‬ ‫هر‬ ‫انتخاب‬ ‫ی‬ ‫گاه‬ ‫ا‬ ‫داده‬ ‫ی‬ ‫مناسب‬ ‫ن‬ ‫ی‬ ‫ست‬ ‫پا‬ . ‫ی‬ ‫گاه‬ ‫ها‬ ‫ی‬ ‫اطالعات‬ ‫ی‬ ‫ز‬ ‫ی‬ ‫اد‬ ‫ی‬ ‫انتخاب‬ .‫دارد‬ ‫وجود‬ ‫ی‬ ‫ک‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫برا‬ ‫مناسب‬ ‫داده‬ ‫ی‬ ‫پاسخگو‬ ‫یی‬ ‫ن‬ ‫به‬ ‫ی‬ ‫ازها‬ ‫ی‬ ‫فناور‬ ‫ی‬ ‫سازمان‬ ‫ی‬ ‫برسد‬ ‫نظر‬ ‫به‬ ‫سخت‬ ‫است‬ ‫ممکن‬ ‫و‬ ‫بخش‬ ‫ی‬ ‫تخصص‬ ‫از‬ ‫ی‬ ‫ک‬ ‫سازمان‬ ‫معمار‬ ‫ی‬ ‫است‬ . ‫که‬ ‫است‬ ‫درست‬ ‫انتخاب‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫صح‬ ‫داده‬ ‫ی‬ ‫ح‬ ‫وا‬ ‫در‬ ‫قع‬ ‫ی‬ ‫ک‬ ‫تصم‬ ‫ی‬ ‫م‬ ‫م‬ ‫که‬ ‫است‬ ‫مدت‬ ‫بلند‬ ‫ی‬ ‫بر‬ ‫تواند‬ ‫سازمان‬ ‫تأث‬ ‫ی‬ ‫ر‬ ‫بگذارد‬ ‫ولی‬ ، ‫بررسی‬ ‫رو‬ ‫بر‬ ‫ی‬ ‫نوع‬ ‫پ‬ ‫ی‬ ‫اده‬ ‫ساز‬ ‫ی‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫داده‬ ‫صورت‬ ‫نظر‬ ‫مورد‬ ‫سازمان‬ ‫کامل‬ ‫بررسی‬ ‫از‬ ‫پس‬ ‫باید‬ .‫پذیرد‬ ‫از‬ ‫مزا‬ ‫ی‬ ‫ا‬ ‫ی‬ ‫پا‬ ‫نوع‬ ‫انتخاب‬ ‫ی‬ ‫گاه‬ ‫برا‬ ‫مناسب‬ ‫داده‬ ‫ی‬ ‫سازمان‬ ‫می‬ :‫کرد‬ ‫اشاره‬ ‫زیر‬ ‫موارد‬ ‫به‬ ‫توان‬  ‫تسه‬ ‫ی‬ ‫ل‬ ‫ذخ‬ ‫ی‬ ‫ره‬ ‫ساز‬ ‫ی‬ ‫ش‬ ‫به‬ ‫الزم‬ ‫و‬ ‫مرتبط‬ ‫اطالعات‬ ‫ی‬ ‫وه‬ ‫ا‬ ‫ی‬ ‫سازگار‬  ‫نرمال‬ ‫به‬ ‫کمک‬ ،‫سازی‬ ‫افزونگ‬ ‫کاهش‬ ‫ی‬ ‫ها‬ ‫داده‬ ‫از‬ ‫جلوگیری‬ ، ‫ها‬ ‫داده‬ ‫تکرار‬ ‫داده‬ ‫پایگاه‬ ‫حجم‬ ‫کاهش‬ ‫و‬  ‫ساده‬ ‫سازی‬ ‫اجرا‬ ‫ی‬ ‫جوها‬ ‫و‬ ‫پرس‬ ‫ی‬ ‫برا‬ ‫شده‬ ‫ارسال‬ ‫ی‬ ‫واکش‬ ‫ی‬ ‫ها‬ ‫داده‬ ‫همچن‬ ‫و‬ ‫ی‬ ‫ن‬ ‫بخش‬ ‫سرعت‬ ‫ی‬ ‫دن‬ ‫اجرا‬ ‫به‬ ‫آنها‬  ‫تسهیل‬ ‫وظا‬ ‫ی‬ ‫ف‬ ‫به‬ ‫مربوط‬ ‫نگهداری‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫داده‬ ‫همچنین‬ ‫عوامل‬ ‫ی‬ ‫پا‬ ‫انتخاب‬ ‫هنگام‬ ‫که‬ ‫ی‬ ‫گاه‬ ‫برا‬ ‫مناسب‬ ‫داده‬ ‫ی‬ ‫سازمان‬ ‫با‬ ‫ی‬ ‫د‬ ‫شود‬ ‫گرفته‬ ‫نظر‬ ‫در‬ :‫هستند‬ ‫زیر‬ ‫موارد‬ ‫به‬ ،  ‫ا‬ ‫داده‬ ‫اندازه‬ ‫ی‬ ‫با‬ ‫که‬ ‫ی‬ ‫د‬ ‫ذخ‬ ‫ی‬ ‫ره‬ ‫شود‬  ‫قابلیت‬ ‫دسترس‬ ‫ی‬ ‫به‬ ‫پذیری‬ ‫ها‬ ‫داده‬  ‫داده‬ ‫ساختار‬ ‫ها‬  ‫داده‬ ‫امنیت‬ ‫ها‬ ‫پایگاه‬ ‫اصلی‬ ‫انواع‬ ،‫شده‬ ‫ذکر‬ ‫موارد‬ ‫به‬ ‫توجه‬ ‫با‬ :‫هستند‬ ‫زیر‬ ‫شرح‬ ‫به‬ ‫داده‬ ‫های‬ 1 . ‫پایگاه‬ ‫داده‬ ‫ها‬ ‫رابطه‬ ‫ی‬ ( ‫ای‬ Relational Databases ) ‫پا‬ ‫ی‬ ‫گاه‬ ‫رابطه‬ ‫داده‬ ‫ا‬ ‫ی‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫ی‬ ‫رو‬ ‫بر‬ ‫اطالعات‬ ‫آن‬ ‫در‬ ‫که‬ ‫است‬ ‫ی‬ ‫ا‬ ‫گونه‬ ‫به‬ ‫جداول‬ ‫انواع‬ ‫ی‬ ‫تقس‬ ‫ی‬ ‫م‬ ‫م‬ ‫ی‬ ‫اطم‬ ‫که‬ ‫شود‬ ‫ی‬ ‫نان‬ ‫حاصل‬ ‫ه‬ ‫که‬ ‫شود‬ ‫ی‬ ‫چ‬ ‫افزونگ‬ ‫ی‬ ‫ه‬ ‫در‬ ‫داده‬ ‫ی‬ ‫چ‬ ‫جدول‬ ‫ی‬ ‫ا‬ ‫ب‬ ‫ی‬ ‫ن‬ ‫برا‬ .‫ندارد‬ ‫وجود‬ ‫جداول‬ ‫ی‬ ‫ا‬ ‫ی‬ ‫جاد‬ ‫تجم‬ ‫ی‬ ‫ع‬ ‫داده‬ ‫هایی‬ ‫طر‬ ‫از‬ ‫جداول‬ ‫خاص‬ ‫ی‬ ‫ق‬ ‫به‬ ‫اتصال‬ ‫ی‬ ‫کد‬ ‫ی‬ ‫گر‬ ‫هم‬ ‫با‬ .‫هستند‬ ‫مرتبط‬ Relational Database
  • 23.
    ‫ا‬ ‫ز‬ ‫پایگاه‬ ‫داده‬ ‫های‬ ‫رابطه‬ ‫ی‬ ‫می‬‫ای‬ ‫به‬ ‫توان‬ CockroachDB ، Firebird ، IBM Db2 ، MariaDB ، Microsoft SQL Server ، MS Access ، Oracle ، Postgres ، SAP HANA ‫و‬ SQLite .‫نمود‬ ‫اشاره‬ 2 . ‫پا‬ ‫ی‬ ‫گا‬ ‫ه‬ ‫داده‬ ‫ها‬ ‫ی‬ ‫کلید‬ - ( ‫مقدار‬ Key-Value NoSQL Database ) ‫پا‬ ‫ی‬ ‫گاه‬ ‫ها‬ ‫ی‬ ‫داده‬ ‫های‬ ‫کلید‬ - ‫همان‬ ‫یا‬ ‫مقدار‬ NoSQL ‫پ‬ ‫آن‬ ‫نام‬ ‫از‬ ‫که‬ ‫همانطور‬ ، ‫ی‬ ،‫داست‬ ‫داده‬ ‫نم‬ ‫پخش‬ ‫جداول‬ ‫در‬ ‫را‬ ‫ها‬ ‫ی‬ ‫کنند‬ ‫نتیجه‬ ‫در‬ ‫داده‬ ‫ها‬ ‫ی‬ ‫تکرار‬ ‫ی‬ ‫داخل‬ ‫در‬ ‫ی‬ ‫ا‬ ‫ب‬ ‫ی‬ ‫ن‬ ‫وجود‬ ‫جدول‬ ‫ندارند‬ ‫فناور‬ . ‫ی‬ ‫ها‬ ‫ی‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫داده‬ NoSQL ‫رو‬ ً‫ال‬‫معمو‬ ‫ی‬ ‫کرد‬ ‫ی‬ ‫مبتن‬ ‫ی‬ ‫سند‬ ‫بر‬ ( document ) ‫برا‬ ‫ی‬ ‫ذخ‬ ‫ی‬ ‫ره‬ ‫ساز‬ ‫ی‬ ‫دارند‬ ‫ها‬ ‫داده‬ . ‫اسناد‬ ‫فرمت‬ ‫با‬ ً‫ال‬‫معمو‬ JSON ‫در‬ ‫ی‬ ‫ک‬ ‫واحد‬ ‫سازماندهی‬ ‫شده‬ ‫نام‬ ‫به‬ ‫مجموعه‬ ( collection ) ‫ذخ‬ ‫ی‬ ‫ره‬ ‫م‬ ‫ی‬ ‫حال‬ ‫در‬ .‫شوند‬ ‫ی‬ ‫سازمانده‬ ‫که‬ ‫ی‬ ‫در‬ ‫اطالعات‬ ‫ی‬ ‫ک‬ ‫طبق‬ ‫سند‬ ‫ی‬ ‫ک‬ ‫استاندارد‬ ‫ساختار‬ ‫صورت‬ ‫می‬ ‫گیرد‬ ‫م‬ ‫را‬ ‫مجموعه‬ ‫در‬ ‫سند‬ ‫هر‬ ، ‫ی‬ ‫نحو‬ ‫هر‬ ‫به‬ ‫توان‬ ‫ی‬ ‫داد‬ ‫قرار‬ ‫برا‬ . ‫ی‬ ،‫مثال‬ ‫ی‬ ‫ک‬ ‫م‬ ‫سند‬ ‫ی‬ ‫تواند‬ ‫حاو‬ ‫ی‬ ‫اطالعات‬ first_name ‫و‬ last_name ‫حال‬ ‫در‬ ،‫باشد‬ ‫ی‬ ‫د‬ ‫سند‬ ‫که‬ ‫ی‬ ‫گر‬ ‫م‬ ‫ی‬ ‫تواند‬ ‫حاو‬ ‫ی‬ ‫اطالعات‬ first_name ، last_name ‫و‬ email ‫سوم‬ ‫سند‬ .‫باشد‬ ‫م‬ ‫ی‬ ‫حاو‬ ‫تواند‬ ‫ی‬ .‫باشد‬ ‫مقدار‬ ‫و‬ ‫محصول‬ ‫نام‬ ‫اطالعات‬ NoSql DataBase ‫م‬ ‫ز‬ ‫ی‬ ‫ت‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫ها‬ ‫ی‬ ‫داده‬ NoSQL ‫ا‬ ‫ی‬ ‫ن‬ ‫تطب‬ ‫آنها‬ ‫که‬ ‫است‬ ‫ی‬ ‫ق‬ ‫پذ‬ ‫ی‬ ‫ر‬ ‫ی‬ ‫بسیاری‬ ‫م‬ ‫ارائه‬ ‫را‬ ‫ی‬ ‫دهند‬ ‫و‬ ‫اشکال‬ ‫آنها‬ ‫ا‬ ‫ی‬ ‫ن‬ ‫است‬ ‫که‬ ‫تما‬ ‫ی‬ ‫ل‬ ‫ز‬ ‫مقدار‬ ‫دارند‬ ‫ی‬ ‫اد‬ ‫ی‬ ‫اضاف‬ ‫اطالعات‬ ‫از‬ ‫ی‬ ‫آور‬ ‫جمع‬ ‫را‬ ‫ی‬ ‫نت‬ ‫در‬ .‫کنند‬ ‫ی‬ ،‫جه‬ ‫ی‬ ‫کپارچگ‬ ‫ی‬ ( Integrity ) ‫داده‬ ‫م‬ ‫ها‬ ‫ی‬ ‫خطر‬ ‫به‬ ‫تواند‬ ‫ب‬ ‫ی‬ ‫فتد‬ ‫و‬ ‫دادن‬ ‫ارتباط‬ ‫ب‬ ‫ها‬ ‫داده‬ ‫ی‬ ‫ن‬ ‫م‬ ‫ها‬ ‫مجموعه‬ ‫ی‬ ‫دشوار‬ ‫تواند‬ ‫باشد‬ . ‫پایگاه‬ ‫از‬ ‫داده‬ ‫های‬ ‫ای‬ NoSQL ‫می‬ ‫هم‬ ‫از‬ ‫توان‬ Cassandra ، Couchbase ، Elasticsearch ، InfluxDB ، MongoDB ، Redis ‫و‬ Riak .‫برد‬ ‫نام‬ 3 . ‫پا‬ ‫ی‬ ‫گاه‬ ‫داده‬ ‫ها‬ ‫ی‬ ‫نمودار‬ ‫ی‬ ( Graph Databases ) ‫پا‬ ‫ی‬ ‫گاه‬ ‫پا‬ ،‫گراف‬ ‫داده‬ ‫ی‬ ‫گاه‬ ‫ی‬ ‫موجود‬ ‫اطالعات‬ ‫تنها‬ ‫نه‬ ‫که‬ ‫است‬ ‫ی‬ ‫ت‬ ‫ها‬ ‫ذخ‬ ‫را‬ ‫ی‬ ‫ره‬ ‫م‬ ‫ی‬ ‫ب‬ ‫روابط‬ ‫بلکه‬ ،‫کند‬ ‫ی‬ ‫ن‬ ‫موجود‬ ‫ی‬ ‫ت‬ ‫ن‬ ‫را‬ ‫ها‬ ‫ی‬ ‫ز‬ ‫ذخ‬ ‫ی‬ ‫ره‬ ‫م‬ ‫ی‬ ‫ساختار‬ .‫کند‬ ‫ی‬ ‫موجود‬ ‫که‬ ‫ی‬ ‫ت‬ ‫توص‬ ‫را‬ ‫آنها‬ ‫روابط‬ ‫و‬ ‫ها‬ ‫ی‬ ‫ف‬ ‫م‬ ‫ی‬ ‫نام‬ ‫گراف‬ ،‫کند‬ ‫ی‬ ‫ده‬ ‫م‬ ‫ی‬ ‫ا‬ ‫از‬ ،‫شود‬ ‫ی‬ ‫ن‬ ‫رو‬ ‫نوع‬ ‫این‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫نام‬ ‫گراف‬ ‫داده‬ ‫ی‬ ‫ده‬ ‫م‬ ‫ی‬ .‫شود‬
  • 24.
    Graph Databases ‫محبوب‬ ‫ی‬ ‫ت‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫ها‬ ‫ی‬ ‫اطالعات‬ ‫ی‬ ‫به‬ ،‫گراف‬ ‫و‬ ‫ی‬ ‫ژه‬ ‫م‬‫در‬ ‫ی‬ ‫ان‬ ‫سا‬ ‫ی‬ ‫ت‬ ‫ها‬ ‫ی‬ ‫رسانه‬ ‫ها‬ ‫ی‬ ‫اجتماع‬ ‫ی‬ ( Social Media ) ‫مورد‬ ‫در‬ ‫تنها‬ ‫نه‬ ‫که‬ ‫موجود‬ ‫ی‬ ‫ت‬ ‫ها‬ ‫یی‬ ‫از‬ ‫که‬ ‫آنها‬ ‫م‬ ‫استفاده‬ ‫ی‬ ،‫کنند‬ ‫ب‬ ‫رابطه‬ ‫به‬ ‫بلکه‬ ‫ی‬ ‫ن‬ ‫موجود‬ ‫ی‬ ‫ت‬ ‫ها‬ ‫ن‬ ‫ی‬ ‫ز‬ ‫ن‬ ‫ی‬ ‫از‬ ‫افزا‬ ‫حال‬ ‫در‬ ،‫دارند‬ ‫ی‬ ‫ش‬ ،‫مثال‬ ‫عنوان‬ ‫به‬ .‫است‬ ‫ی‬ ‫ک‬ ‫ف‬ ‫در‬ ‫کاربر‬ ‫ی‬ ‫س‬ ‫م‬ ‫بوک‬ ‫ی‬ ‫کاربر‬ ‫دوست‬ ‫تواند‬ ‫د‬ ‫ی‬ ‫گر‬ ‫ی‬ ‫عضو‬ ‫و‬ ‫ی‬ ‫ک‬ .‫باشد‬ ‫گروه‬ ‫پایگاه‬ ‫از‬ ‫داده‬ ‫های‬ ‫هم‬ ‫نموداری‬ ‫ی‬ AgangoDB ، Neo4J ‫و‬ OrientedDB .‫هستند‬ ‫اشاره‬ ‫قابل‬ Database Type ‫مقایسه‬ ‫پایگاه‬ ‫داده‬ ‫رابطه‬ ‫های‬ ‫کلید‬ ،‫ای‬ - ‫نموداری‬ ‫و‬ ‫مقدار‬  ‫داده‬ ‫پایگاه‬ ‫رابطه‬ ‫های‬ ‫ای‬ ‫دارای‬ ‫ساختار‬ ‫و‬ ‫چارچوب‬ ‫محکم‬ ‫پایه‬ ‫با‬ ‫ریاضی‬ ‫های‬ ‫و‬ ‫هستند‬ ‫تراکنشها‬ ‫برای‬ ‫باالیی‬ ‫عملکرد‬ ‫صحت‬ ‫حفظ‬ ‫و‬ ‫داده‬ ‫ها‬ ‫می‬ ‫نمایش‬ ‫خود‬ ‫از‬ .‫دهند‬ ‫نوع‬ ‫این‬ ‫داده‬ ‫پایگاه‬ ‫به‬ ‫اصالح‬ ‫به‬ ‫که‬ ‫خواصی‬ ‫اعمال‬ ‫با‬ ‫ها‬ ‫آنها‬ ACID ‫می‬ ‫گفته‬ ‫یکپارچکی‬ ،‫صحت‬ ‫شود‬ ‫می‬ ‫تضمین‬ ‫را‬ ‫اطالعات‬ ‫ثبات‬ ‫و‬ .‫کنند‬ ‫اما‬ ‫داده‬ ‫پایگاه‬ ‫رابطه‬ ‫های‬ ‫ای‬ ‫عمیق‬ ‫تحلیل‬ ‫در‬ ‫ضعیفی‬ ‫بسیار‬ ‫عملکرد‬ ( Deep Analysis ) .‫دارند‬ ‫راه‬ ‫مشکل‬ ‫این‬ ‫بر‬ ‫غلبه‬ ‫برای‬ ‫البته‬ ‫حل‬ ‫به‬ ‫که‬ ‫دارد‬ ‫وجود‬ ‫هایی‬ ‫کمک‬ ‫مانند‬ ‫روشهایی‬ OLAP ‫می‬ .‫کرد‬ ‫حل‬ ‫را‬ ‫آن‬ ‫شود‬
  • 25.
     ‫در‬ ‫پایگ‬ ‫ا‬ ‫داده‬ ‫ه‬ ‫کلید‬ ‫های‬ - ‫مقدار‬ ‫چارچوب‬‫و‬ ‫ساختار‬ ‫می‬ ‫گاهی‬ ‫که‬ ‫است‬ ‫سیال‬ ‫بقدری‬ ‫اطالعات‬ ‫ساختاری‬ ‫هیچ‬ ‫که‬ ‫گفت‬ ‫توان‬ ‫بی‬ .‫ندارند‬ ‫می‬ ‫که‬ ‫میزان‬ ‫همان‬ ‫به‬ ‫ساختاری‬ ‫در‬ ‫است‬ ‫ممکن‬ ‫شود‬ ‫محسوب‬ ‫مزیت‬ ‫تواند‬ ‫ثبات‬ ‫رفتن‬ ‫بین‬ ‫از‬ ‫موجب‬ ‫نهایت‬ ( Consistency ) ‫داده‬ ‫در‬ .‫شود‬ ‫ها‬ ‫صحت‬ ‫ما‬ ‫برای‬ ‫شاید‬ ‫یکپارچکی‬ ‫و‬ ‫لحظه‬ ‫ای‬ ‫کلی‬ ‫و‬ ‫داده‬ ‫نباشد‬ ‫مهم‬ ‫ها‬ ‫بدنبال‬ ‫مطمئنا‬ ‫اما‬ ‫ثبات‬ ‫نها‬ ‫یی‬ ( Eventual Consistency ) .‫بود‬ ‫خواهیم‬ ‫داده‬ ‫پایگاه‬ ‫این‬ ‫نیز‬ ‫ها‬ ‫عل‬ ‫ی‬ ‫ر‬ ‫غ‬ ‫تر‬ ‫در‬ ‫مناسب‬ ‫عملکرد‬ ‫م‬ ‫کوچک‬ ‫اکنشهای‬ ‫می‬ ‫دقت‬ ‫و‬ ‫سرعت‬ ‫عملکردی‬ ‫فراوان‬ ‫مشکالت‬ ‫دچار‬ ‫عمیق‬ ‫تحلیل‬ ‫بحث‬ ‫در‬ .‫باشند‬  ‫پایگاه‬ ‫داده‬ ‫ساختار‬ ‫و‬ ‫چارچوب‬ ‫یک‬ ‫داشتن‬ ‫بر‬ ‫عالوه‬ ‫نموداری‬ ‫های‬ ‫داده‬ ‫منعطف‬ ، ‫امکان‬ ‫داده‬ ‫صحت‬ ‫و‬ ‫ثبات‬ ‫ایجاد‬ ‫در‬ ‫ها‬ ‫تراکنشهای‬ ‫فراهم‬ ‫را‬ ‫محلی‬ ‫می‬ ‫آ‬ ‫تر‬ ‫در‬ ‫طرفی‬ ‫از‬ .‫ورند‬ ‫ا‬ ‫می‬ ‫نمایش‬ ‫خود‬ ‫از‬ ‫خوبی‬ ‫عملکرد‬ ‫پیچیده‬ ‫کنشهای‬ .‫دهند‬ ‫پایگاه‬ ‫این‬ ‫داده‬ ‫ها‬ ‫شرایط‬ ‫عمیق‬ ‫تحلیل‬ ‫برای‬ ‫مناسبی‬ ‫می‬ ‫میسر‬ .‫کنند‬ ‫جمع‬ ‫بندی‬ ‫سیستم‬ ‫های‬ ERP ‫داده‬ ‫دارای‬ ‫نیازمند‬ ‫و‬ ‫ساختارمند‬ ،‫حجیم‬ ‫های‬ ‫گزارش‬ ‫گیری‬ ‫فراوان‬ ‫های‬ .‫هستند‬ ‫پا‬ ‫ی‬ ‫گاه‬ ‫ها‬ ‫داده‬ ‫ی‬ ‫ا‬ ‫رابطه‬ ‫ی‬ ‫مد‬ ‫به‬ ‫قادر‬ ‫ی‬ ‫ر‬ ‫ی‬ ‫ت‬ ‫ها‬ ‫داده‬ ‫ی‬ ‫بس‬ ‫ی‬ ‫ار‬ ‫ساخت‬ ‫ی‬ ‫افته‬ ‫ا‬ ‫بر‬ ‫عالوه‬ .‫هستند‬ ‫ی‬ ‫ن‬ ‫صحت‬ ‫به‬ ‫تاکید‬ ‫با‬ ‫لحظه‬ ‫ای‬ ‫تراکنشها‬ ‫بهره‬ ‫داده‬ ‫همواره‬ ‫ای‬ ‫رابطه‬ ‫مدل‬ ‫از‬ ‫گیری‬ .‫کرد‬ ‫خواهد‬ ‫حاصل‬ ‫را‬ ‫استنادی‬ ‫قابل‬ ‫و‬ ‫صحیح‬ ‫های‬ ‫ا‬ ‫بر‬ ‫عالوه‬ ‫ی‬ ،‫ن‬ ‫پایگاه‬ ‫رابطه‬ ‫داده‬ ‫ای‬ ‫ش‬ ‫برای‬ ‫ر‬ ‫ایطی‬ ‫که‬ ‫داده‬ ‫س‬ ‫صورت‬ ‫به‬ ‫ها‬ .‫است‬ ‫مناسب‬ ‫بسیار‬ ‫هستند‬ ‫افزایش‬ ‫حال‬ ‫در‬ ‫لحظه‬ ‫هر‬ ‫اختارمند‬ ‫پیاده‬ ‫چگونه‬ ‫کنیم‬ ‫سازی‬ ‫پایگاه‬ ‫از‬ ‫داده‬ ‫های‬ ‫رابطه‬ ‫ی‬ ‫ای‬ ‫پرکاربرد‬ ‫می‬ ‫بهتری‬ ‫پشتیبانی‬ ‫دارای‬ ‫که‬ ‫می‬ ‫باشند‬ ‫داده‬ ‫پایگاه‬ ‫به‬ ‫توان‬ ‫ی‬ SQL Sever ‫و‬ ‫مایکروسات‬ ‫شرکت‬ Oracle ‫بحث‬ ‫که‬ ‫صورتی‬ ‫در‬ ‫البته‬ .‫نمود‬ ‫اشاره‬ ‫کپی‬ ‫های‬ ‫هزینه‬ ‫و‬ ‫رایت‬ ‫پایگاه‬ ‫این‬ ‫مجوزهای‬ ‫داده‬ ‫ها‬ ‫داده‬ ‫پایگاه‬ ،‫باشد‬ ‫پوشی‬ ‫چشم‬ ‫غیرقابل‬ ‫و‬ ‫مهم‬ ‫ی‬ Postgres ‫رتبه‬ ‫در‬ ‫و‬ ‫بعدی‬ ‫ی‬ MySQL ‫پیشن‬ ، ‫می‬ ‫داده‬ ‫هاد‬ .‫شود‬