

️ التنبيه: تم نقل أضلاع iOS إلى ريبو منفصل
Ribs هو إطار الهندسة المعمارية عبر المنصات وراء العديد من تطبيقات الهاتف المحمول في Uber. اسم الأضلاع قصيرة لجهاز التوجيه والتفاعل والبناء ، وهي مكونات أساسية لهذه البنية. تم تصميم هذا الإطار لتطبيقات الأجهزة المحمولة مع عدد كبير من المهندسين والولايات المتداخلة.
يوفر بنية الأضلاع:
- الهندسة المعمارية المشتركة عبر iOS و Android. قم ببناء تطبيقات منصة عبر المنصات التي لها بنية مماثلة ، مما يتيح فرق iOS و Android من رمز منطق الأعمال عبر المراجعة.
- قابلية الاختبار والعزلة. يجب أن يكون الفصول الدراسية سهلة اختبار الوحدة والعقل حول العزلة. فصول الأضلاع الفردية لها مسؤوليات متميزة مثل: التوجيه ، والأعمال ، وعرض المنطق ، والإنشاء. بالإضافة إلى ذلك ، فإن معظم منطق الأضلاع منفصل عن منطق ضلع الطفل. هذا يجعل فصول الأضلاع سهلة الاختبار والعقل بشكل مستقل.
- أدوات لإنتاجية المطور. تأتي الأضلاع مع أدوات IDE حول توليد الكود ، واكتشاف تسرب الذاكرة ، والتحليل الثابت ، وتكامل وقت التشغيل - كل ما يحسن إنتاجية المطورين للفرق الكبيرة أو الصغيرة.
- الهندسة المعمارية التي تتراوح. لقد أثبتت هذه الهندسة المعمارية توسيع نطاقها إلى مئات المهندسين الذين يعملون على نفس قاعدة الكود والتطبيقات مع مئات الأضلاع.
الوثائق
للبدء مع الأضلاع ، يرجى الرجوع إلى وثائق الأضلاع. هذا يصف المفاهيم الرئيسية على الأضلاع ، من ما هي عليه ، هيكلها وحالات الاستخدام الشائعة.
للحصول على المزيد من الأضلاع ، كتبنا سلسلة من البرامج التعليمية التي تديرك من خلال الجوانب الرئيسية للهندسة المعمارية بأمثلة عملية.
لقراءة عن القصة الخلفية حول سبب إنشاء الأضلاع ، راجع منشور المدونة هذا الذي كتبناه عند إطلاق الأضلاع في الإنتاج في المرة الأولى ورؤية هذا الفيديو القصير حيث ناقشنا كيفية عمل بنية الأضلاع.
ما هو الفرق بين الأضلاع و MV*/Viper؟
MVC ، MVP ، MVI ، MVVM و VIPER هي أنماط الهندسة المعمارية. الضلوع هو إطار. ما يميز الأضلاع عن الأطر القائمة على MV*/Viper هو:
- منطق العمل يدفع التطبيق ، وليس شجرة العرض . على عكس MV*/Viper ، لا يجب أن يكون لدى الضلع وجهة نظر. هذا يعني أن التسلسل الهرمي للتطبيق مدفوع بمنطق العمل ، وليس شجرة العرض.
- منطق الأعمال المستقل وعرض الأشجار . أضلّر يفصل كيف يتم تنظيم نطاقات منطق الأعمال من التسلسل الهرمي. يتيح ذلك للتطبيق أن يكون له شجرة منطق أعمال عميقة ، وعزل العقد المنطقية التجارية ، مع الحفاظ على التسلسل الهرمي للمساواة الضحلة التي تجعل التخطيطات والرسوم المتحركة والتحولات سهلة.
هناك بعض الأشياء الجديدة عن الأضلاع. ومع ذلك ، يمكن أيضًا تنفيذها باستخدام أطر عمل MV*/Viper الأخرى. هذه هي:
- النهج عبر المنصات ، مما يسمح لعمارة iOS و Android بالبقاء متزامن.
- الأدوات لتسهيل التبني على تطبيقات أو فرق أكبر. الأدوات التي نحن مفتوحة المصادر تتضمن الإضافات IDE لتوليد الكود وتحليل الكود الثابت.
- آراء قوية حول كيفية توصيل الدولة ، باستخدام DI و RX. يحدد كل ضلع تبعياته وما هي التبعيات التي يحتاجها من والدها. يتم توفير مكونات أولياء الأمور التي تفي تبعيات الوالدين للطفل ببناة الأطفال كاعتماد على مُنشئ للسماح بتسلسل التسلسل الهرمي. هذا يعني أن المعلومات يتم توصيلها عبر هذه التبعيات لأعلى ولأسفل الشجرة.
الاستخدام
- استنساخ هذا المستودع
- دمج باستخدام آلية التثبيت المفضلة لديك
لاستخدام الأدوات المبنية حول الأضلاع ، يرجى الاطلاع على قسم الأدوات في وثائقنا.
تثبيت Android
لدمج الحد الأدنى الموصى به للإعداد للأضلاع ، أضف ما يلي إلى build.gradle :
dependencies {
annotationProcessor ' com.uber.rib:rib-compiler-test:0.16.3 '
implementation ' com.uber.rib:rib-android:0.16.3 '
testImplementation ' com.uber.rib:rib-test:0.16.3 '
} هناك عدد من حزم التمديد المتاحة أيضًا بما في ذلك امتدادات Kotlin و JetPack دعمًا ودعم Coroutines
المشاريع ذات الصلة
إذا كنت تحب الأضلاع ، تحقق من مشاريع المصدر المفتوح الأخرى ذات الصلة من فريقنا:
- أضلاع IOS: إصدار iOS من الأضلاع
- الإبرة: إطار حقن التبعية الآمن في وقت الترجمة.
- الحافز: ملخص على رأس الخنجر يقدم واجهات برمجة تطبيقات أبسط للنطاقات المتداخلة.
- Swift Concurrency: مجموعة من فئات أدوات التزامن التي يستخدمها Uber ، مستوحاة من فئات الحزمة Java.Util.Concurrent المكافئة.
- فئة Swift Abstract: مكتبة خفيفة الوزن جنبًا إلى جنب مع قابلة للتنفيذ تتيح تطوير فئة التجديد الآمنة للوقت للمشاريع السريعة.
- Swift Common: المكتبات الشائعة التي تستخدمها هذه المجموعة من مشاريع Swift Open Source.
رخصة
Copyright (C) 2017 Uber Technologies
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.