ما المقصود بالبرمجيات الوسيطة (Middleware)؟ وما هي استخداماتها؟

ربما سمعت أشخاصًا يستخدمون مُصطلح البرمجيات الوسيطة (Middleware) في سياقات مُختلفة وتساءلت عما يتحدثون عنه. اكتشف المجموعة الواسعة والغنية من التقنيات والعمليات التي يُمكن أن تُشير إليها هذه البرمجيات.

تُشكل البرمجيات الوسيطة (Middleware) أحد العناصر الرئيسية التي تُسهم في تحسين أداء التطبيقات وتكامل الأنظمة. حيث تُعتبر جزءًا لا يتجزأ من الهياكل التكنولوجية الحديثة، حيث تلعب دورًا حيويًا في تسهيل تبادل البيانات والتفاعل بين التطبيقات المُختلفة.

سنقوم بتوضيح مفهوم البرمجيات الوسيطة (Middleware) وكيف تعمل كوسيط بين التطبيقات والأنظمة. سنُلقي نظرة على الأهمية المُتزايدة لها في عالم البرمجة وتطوير البرمجيات. تحقق من تأمين تطبيقات Django: أفضل الممارسات والتقنيات.

البرمجيات الوسيطة (Middleware) تعني أشياء كثيرة

البرمجيات الوسيطة (Middleware) هي مُصطلح مرن يستخدمه الأشخاص للإشارة إلى أشياء مُختلفة. وبأوسع معنى مُمكن، يمكنك اعتبارها “برمجيات تعمل بين التطبيقات الأخرى”. بمعنى آخر، أيّ تطبيق يعتمد على كود برمجي مُنفصل لتوفير مُدخلاته ومعالجة مخرجاته.

تُوجد بعض البرمجيات الوسيطة (Middleware) كتطبيق كامل يُحوِّل البيانات من حالة إلى أخرى، باستخدام بروتوكولات وتنسيقات بيانات مُحددة جيدًا لاستخدام تعليمات برمجية أخرى. لكن يمكن للبرمجيات الوسيطة (Middleware) أيضًا أن تكون دقيقة من خلال توفير وظيفة واحدة، بحيث ترتبط بسلسلة من الوظائف الأخرى التي يشغلها إطار العمل.

مثل الكثير من البرمجيات، تستفيد البرمجيات الوسيطة (Middleware) من مفهوم النمطية: تقسيم العملية المُعقَّدة إلى أجزاء أصغر وأكثر قابلية للإدارة.

البرمجيات الوسيطة (Middleware) هو التعليمات البرمجية التي تستخدمها التطبيقات المُختلفة للتواصل مع بعضها. تُوفر هذه البرمجيات وظائف للربط والاتصال بين التطبيقات بطريقة ذكية وذات كفاءة وبالتالي يُمكنك الابتكار بشكل أسرع. تعمل البرمجيات الوسيطة (Middleware) كجسر بين مُختلف التقنيات والأدوات وقواعد البيانات بحيث يُمكنك دمجها بسلاسة في نظام واحد. وبعد ذلك يُوفر هذا النظام الواحد خدمةً مُوحدةً لمستخدميه. على سبيل المثال، يُرسل أحد تطبيقات الواجهة الأمامية بنظام Windows البيانات ويستقبلها من خادم Linux بالواجهة الخلفية، ولكن لا يُدرك مستخدمو التطبيق الاختلاف.

مثال آخر هو Message-Oriented Middleware (MOM) الذي يستخدم لتبادل الرسائل بين تطبيقات مُختلفة عبر الشبكة. وهناك أيضًا البرمجيات الوسيطة (Middleware) الخاصة بقواعد البيانات، والبرمجيات الوسيطة (Middleware) لإدارة الاتصال بالشبكات، والعديد من الأنواع الأخرى التي تُقدم وظائف مُحددة لتحسين تكامل البرمجيات وتسهيل تبادل البيانات

كيف تعمل البرمجيات الوسيطة (Middleware)؟

عادةً ما تكون البرمجيات الوسيطة قوية مثل بُروتوكولاتها وسلوكها المحدد علنًا. تسمح بروتوكولات الاتصال الصارمة للمُبرمجين بكتابة تطبيقات تلتزم بالمعايير لتعمل بشكل صحيح.

يعمل خادم تطبيقات الويب كبرمجيات وسيطة لتوصيل تجربة الواجهة الأمامية للمستخدم لموقع الويب مع نموذج المنطق والبيانات الذي تُوفره الواجهة الخلفية وقاعدة البيانات. نظرًا لأنها لا ترتبط ارتباطًا وثيقًا بالأنظمة التي تتواصل معها، يُمكنك — على الأقل من الناحية النظرية — استبدال خادم التطبيق بخادم متوافق دون الحاجة إلى إعادة كتابة كود التطبيق أو إعادة هيكلة قاعدة البيانات الخاصة بك.

غالبًا ما تستخدم مُكوِّنات البرمجيات الوسيطة تقنيات مثل JSON و REST و XML و SOAP. هذه كلها ناضجة وشائعة ومُعتمدة على النص، مما يجعل من الأسهل بكثير تبديل المُكوِّنات أو إعادة ترتيبها. كما يُتيح تنسيقها المستند إلى النص ومجموعة واسعة من مجموعات الأدوات إمكانية تصحيح الأخطاء بشكل أسهل وأكثر موثوقية.

أنواع مختلفة من البرمجيات الوسيطة (Middleware)

نظرًا لأنَّ المُصطلح واسع جدًا، فهناك العديد من الأمثلة المختلفة والاستخدامات المُتعددة للبرمجيات الوسيطة. بعض من الأكثر شيوعا ما يلي:

  1. وسطاء الرسائل، الذين يضيفون هيكلًا للاتصالات بين العمليات.
  2. خادم تطبيقات الويب وأطر الويب.
  3. محركات الألعاب، التي تُوفر السلوك الافتراضي الذي يمكنك استخدامه أو توسيعه أو استبداله.
  4. منصات بث الأحداث مثل Apache Kafka.

استخدام البرمجيات الوسيطة (Middleware) في تطوير البرمجيات

أحد أكثر الاستخدامات الملموسة للبرمجيات الوسيطة هو عبر أطر عمل الويب. تُوفر معظم أطر العمل بيئة أساسية يمكنك تخصيصها وتوسيع نطاقها وفقًا لمُتطلباتك الخاصة. يتضمن النموذج غالبًا تمرير طلبات HTTP من خلال سلسلة من الوظائف المُضمَّنة والمُخصصة، بترتيب محدد، وإرجاع استجابة HTTP في النهاية.

يستخدم إطار عمل Express.js هذا النموذج لدعم التخصيص. خذ هذا المثال لدالة برمجية وسيطة مكتوبة بلغة JavaScript:

app.use('/user/:id', (req, res, next) => {
  console.log('Request Type:', req.method)
  next()
})

الدالة بسيطة إلى أقصى الحدود:

  1. تقوم بمعالجة عناوين URL مُحددة تبدأ بـ “/user/”، متبوعة بمُعرِّف.
  2. تقوم بتسجيل نوع طريقة الطلب التي قد تكون GET أو POST وما إلى ذلك.
  3. تقوم بعد ذلك باستدعاء دالة مُقدمة لمواصلة معالجة سلسلة وظائف البرمجيات الوسيطة.

يُعد هذا النداء الأخير next خطوة حيوية في عملية البرمجيات الوسيطة ويُوضح مدى تنوع هذا النهج. وطالما أن كل وظيفة من وظائف البرمجيات الوسيطة تعمل بشكل مستقل، فيمكنك التبديل بينها، وإعادة ترتيب سلوك السلسلة بأكملها بسهولة.

يحتوي إطار عمل PHP، Laravel، على إعداد برمجي وسيط مُتطابق تقريبًا. لاحظ كيف تُحدد مساحة الاسم هذه الفئة بشكل صريح على أنها “برمجيات وسيطة”.

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
class EnsureTokenIsValid
{
    /**
     * Handle an incoming request.
     */
    public function handle(Request $request, Closure $next): Response
    {
        if ($request->input('token') !== 'my-secret-token') {
            return redirect('home');
        }
        return $next($request);
    }
}

مرة أخرى، دور هذه الفئة المُحددة مُخصص للغاية: كل ما تفعله هو التحقق من الطلب لمعرفة ما إذا كان يحتوي على رمز مُميز. في هذه الحالة، يمكن لوظيفة البرمجية الوسيطة كسر السلسلة، ورفض استدعاء الدالة next، وبدلاً من ذلك، إرسال إعادة توجيه. ستُعيد وظيفة إعادة التوجيه كائن استجابة مناسبًا، والذي يجب أن تعيده وظيفة البرمجية الوسيطة كجزء من عقد التوقيع الخاص بها.

يوضح هذا المثال الأخير كيف يتعامل تطبيق Django، وهو إطار عمل ويب قائم على Python، مع البرمجيات الوسيطة. يستخدم Django المُصطلح “Plugin” لوصف بنية برمجياته الوسيطة، والتي تُشبه المصطلحات الأخرى ذات الصلة التي قد تسمعها مثل “hook” أو “callback”. في جوهرها، إنها مجرد حالة أخرى من إعداد البرمجيات الوسيطة التي تُوفر المرونة خلال عملية منظمة.

def simple_middleware(get_response):
    # One-time configuration and initialization.

def middleware(request):
        # Code to be executed for each request before
        # the view (and later middleware) are called.
        response = get_response(request)
        # Code to be executed for each request/response after
        # the view is called.
        return response
    return middleware

يمكنك بعد ذلك التحكم في تشغيل البرامج Middleware وبأي ترتيب باستخدام مصفوفة بسيطة:

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.middleware.csrf.CsrfViewMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
]

يُوفر Django السلوك الافتراضي مثل فئة CommonMiddleware التي ستستفيد منها معظم التطبيقات؛ فهو يمنع الوصول إلى بعض وكلاء المستخدم “السيئين” ويتعامل مع تسوية عنوان URL. من الشائع جدًا أن يتم تشغيل البرمجيات الوسيطة ذات المهام الحرجة والتي تُركز على الأمان في وقت مبكر، ولكن هذه المرونة تتيح لك تخصيص الترتيب وفقًا لاحتياجات تطبيقك. تحقق من إرشادات الأمان لتطوير مواقع التجارة الإلكترونية: تحسين الحماية باستخدام أفضل النصائح.

لماذا تُعتبر البرمجيات الوسيطة مفيدة؟

تسهل البرمجيات الوسيطة توصيل التطبيقات التي لم يتم تصميمها للاتصال. فهي تُوفر وظائف لدمجها، إلى جانب بروتوكولات قوية ومنظمة يمكنها التواصل من خلالها.

ونتيجة لذلك، تتمتع البرمجيات الوسيطة ببعض الفوائد المُهمة، بما في ذلك:

  1. تبسيط عملية تطوير التطبيقات وتقليل الوقت اللازم للوصول إلى السوق.
  2. اتصال فعَّال.
  3. انتقال أسرع للتغييرات.
  4. أدوات مكان العمل التي يمكن الوصول إليها بسهولة.

في النهاية، البرمجيات الوسيطة هي شكل من أشكال النمطية، وهو مفهوم مفيد عند تطبيقه على جميع أشكال البرمجة، من أعلى مستوى إلى أدنى مستوى. يُمكنك الإطلاع الآن على أفضل الخطوات لتصبح مطور ناجح للواجهات الخلفية كعامل مُستقل.

DzTech

أنا مهندس دولة مع خبرة واسعة في مجالات البرمجة وإنشاء مواقع الويب وتحسين محركات البحث والكتابة التقنية. أنا شغوف بالتكنولوجيا وأكرس نفسي لتقديم معلومات عالية الجودة للجمهور. يُمكنني أن أصبح موردًا أكثر قيمة للمُستخدمين الذين يبحثون عن معلومات دقيقة وموثوقة حول مُراجعات المُنتجات والتطبيقات المُتخصصة في مُختلف المجالات. إنَّ التزامي الثابت بالجودة والدقة يضمن أنَّ المعلومات المُقدمة جديرة بالثقة ومفيدة للجمهور. السعي المُستمر للمعرفة يدفعني إلى مواكبة أحدث التطورات التكنولوجية، مما يضمن نقل الأفكار المُشتركة بطريقة واضحة وسهلة المنال.
زر الذهاب إلى الأعلى