Ahmed Aljaberi
Ahmed Aljaberi

@ahmed_aljabri

11 تغريدة 8 قراءة Jan 14, 2023
كثير شركات بنت انظمتها او نسخها الاولى على انظمة مثل Wordpress او drupal او Joomla اللي في الاصل هي CMS اي Content Management System لكن بنت عليها انظمة تجارة الكترونية و شحن و فواتير او تعليم و ارشفة وغيرها . التعليم و الارشفة هنا اوكي , لكن البقية هناك وجهة نظر اخرى ..
(سلسلة)
دروبال او اووردبرس في اصل بنائه يبدأ بنظام بسيط جداً يسمى الKernel او الCore و كون ان النظام في الاصل CMS فعادة يبدأون بشيء مثل Document يكون جداً بسيط Abstract و تكون عليه عمليات اساسية مثل الحفظ و الاسترجاع و التعديل بالاضافة الى الStorage المخصص له .
بعدها يبدأون باضافة الsubsystems او بلغة الddd ( الSub domain ) مثل ادارة المستخدمين و الصلاحيات , ادارة النماذج او الTemplating , الTheming و تكون على هيئة Modules او ممكن نسميها هنا core modules. طبعاً كل منتج من هذه المنتجات له الاركيتكشر الخاصه فيه.
لو اخذنا دروبال بنلاقي انه اعتمد على اطار Symfony لكن ما اضافوا على كيرنل سيمفوني اللي كان عبارة عن HTTP kernel كيرنل خاص بهم DrupalKernel كون الاول غير مناسب للCMS و تركوا جزئية الHTTP لسيمفوني. بما ان هذه السلسلة ليست عن دروبال لكن ذكرته لنقطة مهمة وهي:
ان هذه الانظمة اساسها document لكن النظام المحاسبي مختلف ممكن يكون اساسه قيد Entry و بالنسبة للشحن ممكن يكون Parcel حتى قبل ما يصير Shipment و للتأمين يكون Claim و ممكن Request عام ويبنى عليه اشياء لها علاقة في المجال Domain بدل تحوير الCMS الى اشياء اخرى مختلفة تماماً.
كثير جهات حكومية او غيرها لو نظرنا لانظمتها سنجد انها تدور في Domain واحد او Core domain اما بقية الاشياء فهي Sub domains يمكن حتى شراء برامج جاهزة لها وربطها مع الCore. لكن الCore يجب ان يصمم بطريقة صحيحة لأي اضافة لاحقة وهذا يتطلب Domain Expert يحدد بعمق ماهو اصل و ماهو فرع.
الاصل يبقى في الCore و الفرع يكون في Module مستقل. هذا بالنسبة للاشياء الFunctional اما الNon-Functional فايضاً يكون لها الModule الخاصة بها. و يمكن بناء Modules فوق Modules اخرى. لكن على الاقل الامور واضحة هنا.
هناك Architecture منسية تقريباً تسمى الMicrokernal اتت من تصميم انظمة التشغيل من الستينيات لكن يونكس شهرها فلا يكاد يخلوا نظام تشغيل من وجود Kernel. برامج الاوفس بنيت بنفس الطريقة لذا تجد الPlugins متوفرة , فوتوشوب , Google Drive و الIDE المختلفة او الBrowsers Extenstions
لاحظ ان اهم ميزة هنا ان اي Feature سيتحول الى Plugin و هذا الPlugin يُبنى كمشروع مستقل لا يؤثر ابدا على الCore ويمكن اضافته وتحديثه مستقلا وحتى حذفه في اي وقت. اذا احتجت لتغيير شيء في الCore فمعناه انك لم تصممه بشكل جيد.
في الدوت نت مثلا كان هناك اطار عمل MEF يمكنك مثلا من اضافة جزء كبير من البرنامج ورميه كـDLL وعندها يغير النظام سلوكه و كان قبله اسمه MAF حاليا اصبح جزء من .net تحت System.Composition لكن ليس بالضرورة استخدامه و يمكن الاستفادة من طريقة اطار عمل ABP.
هذه كانت سلسلة سريعة عن الMicrokernel Architecture و الذي ارى انها كما ذكرت لم تأخذ حقها في التسويق و الاعلام التقني لكنها توفر حلول لمشاكل كثيرة في جميع مراحل بناء الانظمة من التخطيط حتى الاطلاق.
هذا ودمتم.

جاري تحميل الاقتراحات...