برنامه نویس محیط های مختلف از تحت داس، ویندوز، وب و دیتابیس هستم. مولف دو کتاب تخصصی و مبتکر فریمورکی مبتنی بر استور پروسیجر که هدفش حداقل کردن کدنویسی و هزینه توسعه و پشتیبانی می باشد.
ارزیابی فریمورک SP-Based (مبتنی بر استور پروسیجر)
یکی از جذابترین مقاله های مربوط به فریمورک بی شک این مقاله است که توسعه دهندگان مختلف را درگیر خود خواهد کرد و با توجه به اکوسیستمی که در آن کار میکنند می توانند قیاس مناسبی بر فریمورک SP-Based داشته باشند. در آخر نیز از ارزیابی های صورت گرفته نتیجه گیری کرده که می تواند تصمیم گیری را برای مخاطبین ساده کند.
با توسعه هر چه بیشتر فریمورکهای ORM بشدت نگرش انتقال بیزینس پروژه به داخل DB منسوخ شده است. علت آن سهولت اعمال تغییرات در منطق برنامه و ساختار DB در یک محیط میباشد. در این بخش سعی داریم یک ارزیابی دقیق، شفاف و روشن برای مخاطبین ارائه دهیم. نقاط ضعف و قوت فریمورکهای مختلف را بررسی کنیم و در نهایت نتیجه گیری مناسبی بگیریم.
1- چالشهای مطرح در فریمورک SP-Based
در این بخش چالشهای مطرح در رابطه با انتقال منطق کسب و کار در داخل DB را بررسی مینماییم. چالشهای مطرح شده در کدنویسی معمول که بخشی از کدها در لایه میانی قرار دارند و بخشی را نیز به SP منطق میکنند درست است اما این فریمورک مکانیزمی انتخاب کرده که اکثر کدهای کلیدی در SP قرار میگیرد در نتیجه بسیاری از چالشها، حل یا اثر سوء آنها به حداقل رسیده است.
2- مدل توسعه Database First در SP-Based
در قبال توسعه برنامه ها مبتنی بر ORM دو رویکرد اصلی وجود دارد. عده ای قائل به مقدم بودن پیاده سازی DB هستند. عده ای مدلها و کلاسها را مقدم میدانند و DB را بر اساس آن ایجاد میکنند. رویکردی که اصرار دارد بگوید DB تنها یک مخزن داده بوده و نباید توسعه دهنده درگیر آن محیط شود. اگر این دیدگاه به صورت افراطی دنبال شود قطعا نتیجه مناسبی نخواهد داشت.
فریمورک SP-Based، ORM نیست اما با مکانیزم لوکاپی که دارد مدل Database First را دنبال میکند. به دنبال افزایش بار روی DB نیست، بلکه با تفکیک منطق کسب و کار به بخشهای مختلف تنها آن بخشی که مربوط به اجرای اسکریپتهای اسکیول است را وارد SP مینماید. به نحوی که حتی یک خط اسکریپت در لایه میانی وجود ندارد، این باعث شده تا توسعه سامانه به صورت ساختار مند پیش برود. در قیاس روشهای معمول که سعی دارد دستورات SQL را با کمک روشهای مختلف مثل LINQ در دل کدهای لایه میانی هضم کند، غافل از اینکه این کار باعث افزایش پیچیدگی و حجیم شدن کدنویسی میگردد.
3- معماری میکرو سرویس در SP-Based
برنامه هایmonolithic کل اجزاء برنامه را در یک جا قرارداده و پیاده سازی را ساده و سریع می کنند اما چالشهای زیادی در توسعه و پشتیبانی دارند. برنامه های مایکروسرویس با راه اندازی یک API Gateway عملیات ارسال درخواستها به سرویسها را انجام میدهند، سرویسها می توانند با انواع فناوریها پیاده سازی شوند. برنامه های SP-Based می توانند به صورت مونولیتیک با حفظ مزایای مایکروسرویسی تحت یک DB، هم به صورت مایکروسرویسی با تعداد نامحدودی DB میتوانند پیاده سازی شوند. سرویسها در این معماری به صورت SP پیاده سازی می شوند. مزیت این روش فاکتور گرفتن و اجرای خودکار بخش زیادی از کدهای سرویس مثل اعتیارسنجی مقادیر ورودی، اعمال شرطها و تغییر فرمت پارامتر ورودی و ... میباشد. مهاجرت دادن یک برنامه مونولیتیک بخاطر وابستگی زیاد اجزاء به مایکروسرویس بسیار دشوار است اما راحتر میتوان به SP-Based مهاجرت داد چون هر جزء در قالب SP سادتر پیاده سازی میشود.
4- رستوران داری ایده آل قیاسی برای کارکرد فریمورکSP-Based
بسیاری از مساائلی که در حوزه رستوران داری مطرح است در یک برنامه تحت وب ایده ال هم به شکل دیگری مطرح است. جدول زیر به بررسی برخی از این مسائل میپردازد و نقش فریمورک SP-Based در رسیدن به چنین برنامه ای بیان میکند. در بخش نتیجه گیری میتوانید به صورت کاملتری علت این مزیتها را مشاهده کنید.
-مقایسه فریمورک SP-Based با EF Core
در این بخش دو نوع ارزیابی روی فریمورک EF Core انجام داده ایم. ارزیابی اول از لحاظ حجم پروژه و هزینه اجرا و ارزیابی دوم پارامترهای کیفی بررسی شده است. در جدول زیر ارزیابی اول، سامانه ای با 300 ماژول و 1600 عملیات فرض شده است. برای محاسبه هزینه اجرا میانگین حقوق دریافتی هر فرد در ماه 5 میلیون در نظر گرفته شده است. فایلهای سیستمی در نظر گرفته نشده است.
فریمورک SP-Based در چنین پروژه ای هزینه اجرای پروژه را یک ششم کرد و زمان اجرا را هم به یک سوم کاهش داد. مهمترین علت این بهره وری بخاطر عدم نیاز به پیاده سازی مفاهیم مفاهیم شی گرایی برای پاسخگویی به درخواستها می باشد. بدین ترتیب توسعه دهنده بدون ورود به مسائل حاشیه ای، تمرکز خود را بیشتر روی پیاده سازی اصل منطق کسب و کار میگذارد.
اجرای دستورات کار با DB در EFشامل 3 بخش شی مربوط به اتصال DbContext، دوم عبارت LINQ و سوم متد و دستور تبدیل خروجی مناسب است، اما در SP-Basedدستورات ثابت و اختصاصی در لایه میانی مطرح نیست. از طرف دیگر دسترسی غیرمستقیم به موجودیتهای DB است که در SP-Based به صورت مستقیم با دستورات SQL انجام میشود. در ارزیابی دوم از لحاظ پارامترهای کارکردی این دو فریمورک بررسی شده اند. میتوان گفت در همه پارامترها SP-Based بهتر عمل کرده است. اما این به این معنا نیست که ما کارآمدی EF را زیر سوال ببریم بلکه در رویکرد انتخابی بهترین عملکرد را داشته است.
5-مقایسه فریمورک SP-Based با Spring
اسپرینگ یک فریمورک full stack است که همه لایه های درگیر پردازش درخواست را پوشش داده و به عنوان یک ORM کم و بیش همان مشکلات EF Core را دارد که در بخش قبل مطرح شد، اما یکی از موارد جالب این فریمورک که بسیار کارگشاست و باعث کوچک شدن پروژه میگردد Dependency Lookup است. این مورد خیلی به کارکرد HTTP هندلر فریمورک SP-Based شباهت دارد.
یکی از مفاهیم مهم اسپرینگIoC که به بحث خارج کردن وابستگی از کامپوننت به داخل کانتینر اشاره دارد. هدف آن توسعه راحتر و هارد کدنویسی کمتر است. یکی از محبوبترین راهکاری آن در اسپرینگ Dependency Lookup است. در این روش اشیاء کامپوننتها سعی میکنند خود، وابستگیهای موردنیازشان را تامین کنند. برای این منظور ابتدا یک کانتینر ApplicationContext طبق یک فایل XML ایجاد میشود. سپس شی موردنیاز برنامه طبق تنظیمات موجود در آن فایل به صورت پویا ایجاد میشود. در زیر شی Bean از روی شی MainBean ایجاد شده است. به این فرآیند Lookup گفته میشود.
در فریمورک SP-Based هم مکانیزم HTTPهندلر مشابه Dependency Lookup است. وابستگیهای و نیازهای درخواست کلاینت خیلی بیشتر و جزئی تر توسط خود هندلر تامین میشود.این جزئیات بجای جستجو درXML به صورت پیشرفته از ردیس (بانک اطلاعاتی in-memory) واکشی میشود.
6- مقایسه فریمورک SP-Based با Oracle Apex
ما در این بخش به بررسی فریمورک Oracle Apex خواهیم پرداخت که هدفش توسعه برنامه های تحت وب مبتنی بر اوراکل است. البته بواسطه این مقایسه با معایب و مزایای فریمورکها Web Based IDE در قیاس با فریمورک SP-Based بیشتر آشنا میشویم. با کمک این فریمورکها بدون داشتن محیط توسعه تنها با کمک مرورگر میتوان سامانه وب موردنظر را با کلی صفحات، گزارشات، فرمها و ... پیاده سازی کرد.
اگر بخواهیم مثالی از تفاوت فریمورکهای Web based IDE را با SP-Based بیان کنیم باید تفاوت بین سیستم عامل گرافیک محور و تکس محور را بررسی کنیم. سیستم عاملهای تکس محور برای حرفه ای ها راحتر و سریعتر است و قابلیتهای بیشتری را ارائه میدهند اما سیستم عاملهای گرافیک محور برای انواع افراد قابل استفاده بوده اما برای حرفه ای ها مناسب نیست چون انعطاف حداکثری و استفاده از حداکثر مزایای پلتفرم را ارائه نمی دهند. فریمورک SP-Based هم طرفدار رویکرد تکس محور است هر چند در فصل 9 روش پیاده سازی Web based IDE را ارائه می دهیم. در جدول زیر مقایسه ای بین فریمورکهای Apex و SP-Based صورت گرفته است.
به طور خلاصه فریمورک Apex به نسبت SP-Based چند اشکال مهم دارد:
- تعیین رفتار و ظاهر المانها خیلی کلی است و نمی توان براحتی استایلها و رفتارهای دلخواه را اعمال کرد
- درگیری با مدیریت صفحات و چیدمان محتوای داخلی آن باعث شده اعمال تنظیمات ریز دشوار باشد
- وابستگی به یک نوع دیتابیس آن هم اوراکل
- عدم دسترسی به کدهای پشت پرده و دشوار بودن کدنویسی دقیق و پیچیده مربوط به عملیاتها
مزیتهای Apex نسبت به SP-Based به طور خلاصه به موارد زیر بر میگردد.
- ارائه انواع محتواها مثل چارتها، المانهای مختلف و ... به صورت خودکار با انجام تنظیمات گرافیکی
- امکان دسترسی مستقیم به بانک و اجرای دستورات مختلف روی آن با کمک محیط تحت وب
- حداقل نیاز به کدنویسی و کاربری راحتر برای مبتدی ها
به طور خلاصه درست است که فریمورکهای تحت وبی مثل Apex سهولت زیادی در ساخت صفحات و ایجاد سامانه های تحت وب دارند اما در ارائه یک سامانه حرفه ای با پیچیدگیهای زیاد سربار ایجاد میکنند که باعث میشود توسعه دهنده علاوه بر قواعد خود زبان SQL و کسب و کار، باید قواعد آن محیط را هم رعایت کند و یاد بگیرد. اما گزینه مناسبی است اگر سامانه موردنظر پیچیدگی پایینی دارد و توسعه دهندگان روحیه و تجربه کار با چنین فریمورکهایی را داشته باشند.
7- ارزیابی فریمورک SP-Based در انقلاب صنعتی چهارم صنعتی
روال مصنوعی سازی انسان از انقلاب صنعتی و تبدیل کردن نیروی ماهیچه ای به نیروی ماشینی شروع شد. بعد از آن با ظهور شبکه های مخابراتی توانست سیستمهای عصبی یک وی را شبیه سازی کند و انقلابی در ارتباطات ایجاد کند. انقلاب صنعتی چهارم با هوش مصنوعی سعی دارد، این انسان مصنوعی را کامل کند. به طوری که ماشینی هوشمند، دقیق و سریع ایجاد کند که بتواند به سرعت عملیاتهای موردنیازش را برطرف نماید.
در کلیه سیستمها سه مولفه اصلی باید در کنار هم باشند تا آن سیستم بتواند به درستی عمل کند این سه مولفه سوخت، زیر ساخت و محرک است. در وسایل نقلیه، خودرو، بنزین و راننده و در سامانه های نرم افزاری سخت افزارها، الگوریتم و دیتا است. الگوریتمها مانند محرکی هستند که با کمک دیتاها سخت افزار را به حرکت در می آوردند. در انقلاب صنعتی چهارم اپراتورهای انسانی جای خود را به دیوایسهایی میدهند که بوسیله الگوریتمهایی که از دیتا قدرت میگیرند هدایت میشوند.
دیتا نقش اساسی در این انقلاب دارد، تا حدود 10 سال پیش این حد دیتا در این سطح در دسترس نبود. اما امروزه آن چنان تولید دیتا بصورت نجومی گسترش یافته که الگوریتمهای هوش مصنوعی با دقت بالایی میتوانند هدایت سامانه های مختلف را به عهده بگیرند. مثل هدایت ماشین آلات، هدایت خریداران به سمت خرید محصولات بیشتر، پردازش زبان طبیعی، پردازش دقیق تصاویر، تولید محتوای هوشمندانه برای افزایش بازدید و ... از جمله خدماتی است که هوش مصنوعی با کمک دیتای تولید شده انجام میدهد. هر چه دیتای بیشتری در دسترس باشد ضریب دقت الگوریتمهای هوش مصنوعی هم بالاتر می رود.
فریمورک SP-Based یک فریمورک دیتاسنتریک است که با توجه به اهمیت دیتا در دنیای آینده یک گزینه اساسی برای استفاده جهت توسعه سامانه های نرم افزاری میباشد. در دنیای آینده هر سامانه ای که بهتر بتواند دیتاها را جذب، ذخیره و به طور مناسب عرضه کند موفق تر است. جذب سریع و آسان در منبع داده ای متناسب و ارائه سریع حجم بالای دیتای درخواستی در کمترین زمان با کمترین هزینه از مهمترین اهداف این سامانه های هستند. به دلایل زیر فریمورک SP-Based برای این منظور بسیار مناسب است:
- امکان متصل کردن الگوریتمهای پیاده سازی شده به تعداد نامحدودی منبع داده ای در بستر وب
- امکان دریافت سریع و آسان دیتای تولید شده از دیوایسهای مختلف به آسانی
- امکان ارائه خدمات مبتنی بر دیتا به سامانه های دیگر
- بهینه سازی هوشمند و دستی الگوریتمها حین اجرا برنامه بدون متوقف آن
- بهبود الگویتمها سامانه با کمک هوش مصنوعی به خاطر مجازی بودن کدها
نتیجه گیری
در ارزیابی های صورت گرفته کفه ترازو به نفع فریمورک SP-Based سنگینی کرد اما به این معنا نیست که فریمورکهای دیگر کارآمدی ندارند بله رویکرد انتخابی ما طوری بوده که این مزایا را به وجود آورده است. البته توسعه دهندگانی هستند که بسته به عادت و توانایی که دارند بشدت طرفدار رویکرد شی گرایی هستند قطعا به این افراد توصیه نمیشود سراغ فریمورک SP-Basedبیایند.
برخی از توسعه دهندگان هم هستند که توانایی های فریمورک SP-Based را پذیرفته اند اما بنا به دلایلی نمیخواهند بستر کدنویسی خود را براساس این فریمورک بنا کنند که پیشنهاد میشود از کامپوننتهای این فریمورک بسته به نیازشان در هر لایه ای که موردنظرشان هست با مشاوره ما استفاده کنند.
برخی نیز کاملا با رویکرد ما موافق هستند. ما این مژده را برای آنها داریم با کمک مستندات و مشاوره دقیق فارغ از اینکه با چه بانک اطلاعاتی کار می کنند و با چه زبانی کد نویسی می کنند می توانند از این فریمورک برای بستر کدنویسی و توسعه برنامه های خود استفاده کنند. مشاوره و مستندات ما اکثر رایگان بوده و در صورتی که توسعه دهنده مکانیزم یا کارکردی خارج از چهارچوبهای تعریف شده بخواهد به صورت منطقی هزینه ای دریافت میشود.
مطلبی دیگر از این انتشارات
حتما باید جاوااسکریپت یاد بگیریم؟
مطلبی دیگر از این انتشارات
چگونه فلان چیز رو یاد بگیرم؟
مطلبی دیگر از این انتشارات
آموزش استخراج API از اپلیکیشن ها