معماری نرمافزاری MVC - Monolithic - میکرو سرویس - وب سرویس RESTful Web API
MVC
یک الگوی معماری نرم افزار است که طبق آن باید نرم افزار را سه بخش کنیم:
Model هسته نرمافزار ما است. چیزی که نرمافزار بهخاطر آن بهوجود آمده است. کارهایی مانند ارتباط با دیتابیس در این بخش قرار دارند.
View واحد نمایش اطلاعات به کاربر UI است.
Controller واسط دو بخش دیگر است.
معماری Monolithic یا یکپارچه
یعنی تمام نرمافزار یکپارچه و یک قسمت باشد.
میکرو سرویسها
به جای داشتن هیولای غیرقابل کنترل (Monolithic) تعداد زیادی مینی اپلیکیشن داشته باشیم که خیلی خوب با هم تبادل اطلاعات میکنند و هر کدام از این مینی اپلیکیشنها یک وظیفه خاص و دقیق را به انجام میرسانند. هرکدام مستقل و بدون وابستگی به بخش دیگری.
معایب میکرو سرویسها
- در روش توسعه Monolith برای استفاده از امکانات یک زیرسیستم دیگر به راحتی از کلاسی نمونه سازی میکنیم و تابعی از آن کلاس را صدا می زنیم اما این کار را در یک سیستم توزیع شده نمیتوانیم انجام دهیم.
- هر میکرو سرویس دیتابیس اختصاصی خود و دادههای اختصاصی خود را خواهد داشت.
- بعضا ممکن است یک سیستم بزرگ به بیش از 100 سرویس کوچک تقسیم شود و نصب و راه اندازی و تنظیم ارتباطات این 100 سرویس میتواند بسیار زمانگیر و پیچیده و پرخطا باشد.
Loose coupling
طبق این توصیه، بخشهای مختلف نرمافزار باید به گونهای نوشته شوند که اگر بخش دیگر تغییر کرد برایشان فرقی نکند. به عبارت دیگر به ویژگیهای بخشهای دیگر (که با آنها در ارتباط هستند) وابسته نباشند. به عبارت دیگر یک سری استاندارد ارتباطی (مانند استفاده از xml - json) بین آنها باشد و هر بخش تنها خود را ملزم به رعایت آن استاندارد کند.
API
مخفف واژگان Application Programming Interface است
API همچون همان UI است با این تفاوت که به جای انسان، یک سیستم کامپیوتری قرار است با آن تعامل داشته باشد
ویندوز از چیزی تحت عنوان Windowing API برخوردار است که یک SDK است که این وظیفه را دارا است تا کلیهٔ مسائل مربوط به ظاهر یک پنجره همچون دکمهٔ بستن، ریسایز کردن پنجره و ... را هندل کند و دولوپرها صرفاً نیاز دارند تا چیزهایی همچون اندازهٔ اولیه، عنوان و محتویات داخل پنجره را مشخص کنند و الباقی تنظیمات را به API بسپارند. Windowing API به منزلهٔ لایهای انتزاعی (Layer of Abstraction) است که مابین دولوپر و سیستمعامل قرار میگیرد.
وب سرویس Web API
استاندارد و پروتکلی است که از طریق آن اپلیکیشنها تحت وب با هم در تعامل باشند.
انواع وبسرویسها:
- PRC - امروزه کاربرد چندانی ندارد.Programmable Remote Client
- SOAP: برای درگاههای بانکی است. Simple Object Access Protocol
- GraphQL
- REST
REST
Representational State Transfer یک معماری است (نه پروتکل) برای پیاده سازی API ها. و ساده است. روشی برای ایجاد، خوندن، آپدیت نمودن و یا حذف اطلاعات بر روی سرور. بر مبنای Server-Client (نه peer2peer). .مبتنی بر پروتکل HTTP است که پروتکلی بر اساس درخواست (Request) و پاسخ (Response) است.
RESTful API
RESTful API یک سرویس است که معماری REST را پیاده سازی کرده است.
ویژگیهای RESTful API:
- کلاینت-سرور (Client-Server): در این معماری کلاینت بهعنوان front-end و سرور بهعنوان back-end شناخته میشود. در این معماری حداقل وابستگی بین کلاینت و سرور وجود دارد، این اصل به توسعه دهنده ها اجازه میدهد تا بدون هیچگونه وابستگی به یکدیگر به توسعه اپلیکیشن بپردازند.
- بدون وضعیت (Stateless): هیچ دادهای نباید در زمان پردازش انتقال درخواست روی سرور ذخیره شود و session باید در سمت کلاینت ذخیره شود. به عبارت دیگر، سرور هرگز نسبت به وضعیت درخواستهای قبلی کلاینت اطلاعی ندارد. یکی از مزیتهای کلیدی Stateless آن است که تغییرات صورتگرفته روی سرور هرگز کلاینت را با مشکل مواجه نمیکنند.
- قابل کش شدن (Cacheable): کلاینت باید قادر باشد که Response را به صورت Cache ذخیره کند.
- یکپارچگی رابط (Uniform Interface): برای دستیابی به Method های مختلف میباید از یک URL منحصربهفرد استفاده کرد به علاوه اینکه در Response میبایست با استفاده از Status code ها اطلاعات شفافی در اختیار کلاینت قرار دهیم.