Window.pipedriveLeadboosterConfig = { القاعدة: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', الإصدار: 2, } ؛(الدالة () { var w = نافذة إذا كان (w.LeadBooster) { console.warn('LeadBooster موجود بالفعل') } وإلا { { w.LeadBooster = { q: [], على: دالة (ن، ح) { { هذا.q.push({ t: 'o'، n: n، n: n، h: h }) }, الزناد: الدالة (n) { هذا.q.push({ t: 't'، n: n: n }) }, } } })() تعرف على المزيد حول Ruby on Rails مع حانة/فرعية - The Codest
The Codest
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • الصناعات
    • التكنولوجيا المالية والمصرفية
    • E-commerce
    • أدتك
    • التكنولوجيا الصحية
    • التصنيع
    • الخدمات اللوجستية
    • السيارات
    • إنترنت الأشياء
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
  • نبذة عنا
  • الخدمات
    • تطوير البرمجيات
      • تطوير الواجهة الأمامية
      • تطوير الواجهة الخلفية
    • Staff Augmentation
      • مطورو الواجهة الأمامية
      • مطورو الواجهة الخلفية
      • مهندسو البيانات
      • مهندسو السحابة
      • مهندسو ضمان الجودة
      • أخرى
    • استشاري
      • التدقيق والاستشارات
  • القيمة مقابل
    • CEO
    • CTO
    • مدير التوصيل
  • فريقنا
  • دراسات الحالة
  • اعرف كيف
    • المدونة
    • اللقاءات
    • ندوات عبر الإنترنت
    • الموارد
الوظائف تواصل معنا
السهم الخلفي العودة إلى الوراء
2022-12-07
تطوير البرمجيات

اعرف المزيد عن Ruby on Rails مع حانة/فرع

The Codest

ميشال بافلاك

مطور روبي أول

يمكن أن تجلب Pub/Sub العديد من الفوائد للمشروع - يمكنها أن تجعل الشيفرة نظيفة وتفصل الخدمات وتجعلها قابلة للتطوير بسهولة. تعرّف على المزيد حول Pub/Sub في المقالة التالية وارفع مستوى مشروعك!

Ruby on Rails (Rails، RoR) هو إطار عمل معروف لتطبيقات الويب مكتوب بلغة روبي لغة البرمجة. حانة/فرعية هو اسم مختصر لأنماط تصميم البرمجيات يسمى نشر-اشتراك-اشتراك. سأشرح كيف يمكن التعامل مع الاتصال بين مكونات البرامج في Rails بواسطة Pub/Sub.

ما هي الحانة/الفرعية؟

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

وللتعبير عن مصالحهما المشتركة، يجب أن يكون هناك تفاهم مشترك بينهما. ولذلك,
وكلا الدورين له آلية ضمنية للعصا حيث يقوم منتج الرسالة و
مستهلك الرسالة يلتقي. تسمى هذه الآلية بالموضوع أو الاشتراك أو الموضوع. وهي
مسؤول عن تصنيف الرسائل إلى موضوعات، فهو في الأساس عامل تصفية للرسائل بدون حالة.
تعمل المواضيع كمحطات بث. يقوم الناشر بإنتاج الرسالة إلى الموضوع,
يتلقى المشتركون الرسالة على الفور من الموضوع. بسبب فصل
الخدمات، فإن الطريقة الأكثر فعالية لتبادل الرسائل هي التعامل معها بشكل غير متزامن.

القضبان بدون حانة/فرعية

بشكل افتراضي، لا يوجد في Rails أي نفقات عامة لأنماط تصميم البرامج لتمرير الرسائل بين المكونات. يستخدم المطورون المعيار البرمجة الموجهة للكائنات نموذج (OOP): تمرير المعلمات إلى الدوال، وطلب فئات عن القيم.

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

مزايا الحانة/فرعية مع القضبان

  • تجنب عمليات استدعاء السجل النشط.
  • من خلال إضافة المعالجة المتوازية غير المتزامنة إلى النظام، يتم تحسين الأداء والموثوقية وقابلية التوسع.
  • يمكن بث الرسائل بشكل غير متزامن إلى أجزاء مختلفة من النظام.
  • يسمح ببث الرسائل بشكل غير متزامن إلى أجزاء مختلفة من النظام.
  • الفصل - إضافة وظيفة أو تغييرها لن يؤثر على أي شيء لأن Pub/Sub
    يسمح لك بتعديل كيفية تفاعل كل شيء.
  • لن يحتاج مستهلك الرسالة بعد الآن إلى التحقق بشكل دوري من وجود تحديثات أو جديد
    المعلومات. فهو يقلل من وقت استجابة التسليم الذي يمكن أن يكون إشكالية بشكل خاص في الأنظمة
    مع عدم التسامح مع التأخير.
  • لا يوجد حد لعدد المشتركين الذين يمكن للنظام التعامل معهم لأنه يمكن أن يتغير,
    الترقية أو التضاعف أو الاختفاء في أي وقت.

سلبيات الحانة/الفرعية مع القضبان

  • يتمثل العيب الرئيسي لأنظمة Pub/sub في فصلها بين الناشر و
    المشترك.

تقديم حانة ريلز/فرعية

تمت كتابة أمثلة من المصدر في Rails باستخدام مكتبة
حانة/فرعية على القضبان (في تسمية روبي، تسمى المكتبة جوهرة): ستجد المزيد من التفاصيل في الملف التعريفي للأحجار الكريمة. يتكون التنفيذ من وحدات نمطية:

  1. المجال,
  2. الحدث,
  3. معالج الأحداث,
  4. ناشر الحدث,
  5. الاشتراك.

المجال

يصف منطق العمل من أجل توفير سياق لـ Pub/Sub، وبالتالي جعل الكود.

 الوحدة النمطية الإشعارات
   تمديد PubSub::المجال
 نهاية
 تقارير الوحدة النمطية
   تمديد PubSub::المجال
 نهاية

الحدث

إنها فئة تصف ما حدث. أعلن عن اسم الفئة على أنه وصف ذاتي لما حدث قدر الإمكان، على سبيل المثال: ألغيت، تغيرت، تم إنشاؤها، تم تدميرها، تم إرسالها، تم تحديثها. يمكن أن تبدو أسماء الأحداث مثل ProfitAndLossStatementCreatedEvent، وهو ما يعني أنه تم إنشاء بيان مالي.

 صنف التقارير:::بيان الربح والخسارة تم إنشاؤه حدث < PubSub::DomainEvent
   السمة:profit_and_loss_statement_id، أنواع::صارم::عدد صحيح
 نهاية

ناشر الحدث

فئة قادرة على إصدار الأحداث. يوضح المثال إنشاء تقرير خدمة. عندما يتم إنشاء التقرير بنجاح، قم بإصدار حدث إنشاء ذلك التقرير.

صنف التقارير:::خدمة بيان الأرباح والخسائر
   تضمين PubSub::Emit
    تعريف تنفيذ
     emit(:report_ring_and_loss_statement_statement_created, profit_and_loss_statement_statement_id: id) إذا كانت النتيجة.ok؟
   نهاية
 نهاية

معالج الأحداث

يجب تنفيذ هذه الفئة استجابةً للتعامل مع حدث ما.

وحدة الإشعارات
 صنف ReportsProfitAndLossAndLossStatementCreatedHandler < PubSub:::DomainEventEnventHandler
   تعريف الاستدعاء
     ReportMailer.profit_and_loss_statement(بيان الربح والخسارة).deliver_now
   إنهاء

   خاص

   تعريف بيان_الربح_الخسارة_الربح_الخسارة
     ProfitAndLossStatement.find(event_data.profit_and_loss_statement_statement_id)
   نهاية
 النهاية
النهاية

الاشتراك

ترتبط الأحداث بمعالجاتها من خلال الاشتراكات.

الإشعارات:
 التقارير_ربح_و_خسارة_تقارير_مُنشأة: غير متزامن

مثال على حالات الاستخدام:

  • ميزة "المتابعة" في الشبكات الاجتماعية,
  • إنترنت الأشياء,
  • البريد
  • إشعار حول الملفات التي تم إنشاؤها.

الأنماط المتشابهة

  1. EventBus - يمكن للمكونات إرسال أحداث إلى EventBus دون معرفة من سيلتقطها أو عدد المستجيبين الذين سيتفاعلون معها,
  2. مراقب - يحتفظ الموضوع بقائمة من التابعين الذين يُطلق عليهم اسم المراقبين، ويُعلمهم كلما تغيرت حالتهم,
  3. التجميع - عند الاستطلاع، يسأل العملاء النظام بشكل دوري عما إذا كان هناك أي أحداث أو بيانات جديدة.

الأحجار الكريمة

  • https://github.com/edisonywh/rocketman

  • https://github.com/krisleech/wisper

  • https://github.com/stevo/pubsubعلىالقضبان

الملخص

Pub / sub ليس نهجًا شائعًا في Ruby in Rails. كما تم تقديمه في المقالة، يمكن لهذا النمط أن يجلب العديد من الفوائد للمشروع - يمكن أن يجعل الشيفرة نظيفة ويفصل الخدمات ويجعلها قابلة للتطوير بسهولة.

راية التعاون

مقالات ذات صلة

التكنولوجيا المالية

5 أمثلة على أفضل استخدامات روبي

هل تساءلت يومًا ما الذي يمكننا فعله مع روبي؟ حسناً، ربما تكون السماء هي الحد الأقصى، ولكن يسعدنا أن نتحدث عن بعض الحالات المعروفة بشكل أو بآخر...

The Codest
بافيل موسزينسكي Software Engineer
تطوير البرمجيات

تطوير القضبان باستخدام TMUX و Vim و Fzf + Ripgrep

قبل بضع سنوات، كنت أستجوب بعض أصدقائي، وجميعهم مطورو جافا. لست متأكدًا من كيفية حدوث ذلك، لكننا بدأنا الحديث عن بيئات البرمجة لدينا. I...

The Codest
مارسين دوليوا Software Engineer
تطوير البرمجيات

تطوير المنتج: Python مقابل روبي

Python وروبي كلاهما أكثر لغات البرمجة الخلفية استخدامًا. Python أكثر شيوعًا بعض الشيء ولها تطبيق أوسع. ومع ذلك، فإن روبي تجلب أيضًا العديد من الفوائد و...

The Codest
كامل فيرينز رئيس قسم النمو
تطوير البرمجيات

Ruby on Rails نمذجة Ruby on Rails مع Packwerk الحلقة الأولى

يجد البشر صعوبة في رؤية الصورة الكبيرة للمشكلة دون تكريس الكثير من الوقت والجهد. ويحدث هذا خاصة أثناء العمل مع التطبيقات الكبيرة والمعقدة....

نيكولاس نيسوريا
تطوير البرمجيات

دور الرف في منظومة روبي البيئية

تعرّف على المزيد حول دور الحامل في نظام روبي البيئي من خبيرنا وارتقِ بمهاراتك في الروبي.

نيكولاس نيسوريا

اشترك في قاعدة معارفنا وابقَ على اطلاع على آخر المستجدات في قطاع تكنولوجيا المعلومات.

    نبذة عنا

    The Codest - شركة دولية لتطوير البرمجيات لها مراكز تقنية في بولندا.

    المملكة المتحدة - المقر الرئيسي

    • المكتب 303 ب، 182-184 شارع هاي ستريت نورث E6 2JA
      لندن، إنجلترا

    بولندا - مراكز التكنولوجيا المحلية

    • مجمع مكاتب فابريتشنا المكتبي، أليجا
      بوكوجو 18، 31-564 كراكوف
    • سفارة الأدمغة، كونستروكتورسكا
      11, 02-673 02-673 وارسو، بولندا

      The Codest

    • الصفحة الرئيسية
    • نبذة عنا
    • الخدمات
    • دراسات الحالة
    • اعرف كيف
    • الوظائف
    • القاموس

      الخدمات

    • استشاري
    • تطوير البرمجيات
    • تطوير الواجهة الخلفية
    • تطوير الواجهة الأمامية
    • Staff Augmentation
    • مطورو الواجهة الخلفية
    • مهندسو السحابة
    • مهندسو البيانات
    • أخرى
    • مهندسو ضمان الجودة

      الموارد

    • حقائق وأساطير حول التعاون مع شريك خارجي لتطوير البرمجيات
    • من الولايات المتحدة الأمريكية إلى أوروبا: لماذا تقرر الشركات الأمريكية الناشئة الانتقال إلى أوروبا؟
    • مقارنة مراكز تطوير التكنولوجيا في الخارج: تك أوفشور أوروبا (بولندا)، آسيان (الفلبين)، أوراسيا (تركيا)
    • ما هي أهم التحديات التي تواجه CTOs ومديري تكنولوجيا المعلومات؟
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • شروط استخدام الموقع الإلكتروني

    جميع الحقوق محفوظة © 2025 بواسطة The Codest. جميع الحقوق محفوظة.

    arArabic
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek arArabic