

️ Peringatan: Rusuk untuk iOS telah dipindahkan ke repo terpisah
Ribs adalah kerangka arsitektur lintas platform di balik banyak aplikasi seluler di Uber. Nama Ribs adalah kependekan dari router, interaktor dan pembangun, yang merupakan komponen inti dari arsitektur ini. Kerangka kerja ini dirancang untuk aplikasi seluler dengan sejumlah besar insinyur dan negara bagian bersarang.
Arsitektur tulang rusuk menyediakan:
- Arsitektur berbagi di seluruh iOS dan Android. Bangun aplikasi lintas platform yang memiliki arsitektur serupa, memungkinkan tim iOS dan Android untuk kode logika bisnis cross-review.
- Testabilitas dan isolasi. Kelas harus mudah untuk unit test dan alasan tentang isolasi. Kelas iga individu memiliki tanggung jawab yang berbeda seperti: routing, bisnis, lihat logika, kreasi. Plus, sebagian besar logika tulang rusuk dipisahkan dari logika tulang rusuk anak. Ini membuat kelas tulang rusuk mudah diuji dan bernalar tentang secara mandiri.
- Perkakas untuk produktivitas pengembang. Ribs dilengkapi dengan perkakas IDE di sekitar pembuatan kode, deteksi kebocoran memori, analisis statis dan integrasi runtime - semuanya meningkatkan produktivitas pengembang untuk tim besar atau kecil.
- Arsitektur yang berskala. Arsitektur ini telah terbukti skala kepada ratusan insinyur yang bekerja pada basis kode dan aplikasi yang sama dengan ratusan tulang rusuk.
Dokumentasi
Untuk memulai dengan tulang rusuk, silakan merujuk ke dokumentasi tulang rusuk. Ini menggambarkan konsep -konsep utama pada tulang rusuk, dari apa mereka, strukturnya dan kasus penggunaan umum.
Untuk mendapatkan lebih banyak tangan dengan tulang rusuk, kami telah menulis serangkaian tutorial yang menjalankan Anda melalui aspek utama arsitektur dengan contoh langsung.
Untuk membaca tentang latar belakang mengapa kami membuat tulang rusuk, melihat posting blog ini yang kami tulis saat merilis iga dalam produksi pertama kali dan melihat video pendek ini di mana kami membahas cara kerja arsitektur tulang rusuk.
Apa perbedaan antara tulang rusuk dan mv*/viper?
MVC, MVP, MVI, MVVM dan Viper adalah pola arsitektur. Ribs adalah kerangka kerja. Apa yang membedakan tulang rusuk dari kerangka kerja berdasarkan MV*/Viper adalah:
- Logika bisnis menggerakkan aplikasi, bukan pohon tampilan . Berbeda dengan MV*/Viper, tulang rusuk tidak harus memiliki tampilan. Ini berarti bahwa hierarki aplikasi didorong oleh logika bisnis, bukan pohon tampilan.
- Logika bisnis independen dan melihat pohon . Ribs Decouple Bagaimana Lingkup Logika Bisnis disusun dari hierarki view. Ini memungkinkan aplikasi untuk memiliki pohon logika bisnis yang mendalam, mengisolasi node logika bisnis, sambil mempertahankan hierarki tampilan yang dangkal membuat tata letak, animasi, dan transisi mudah.
Ada beberapa hal baru tentang tulang rusuk. Namun, ini juga dapat diimplementasikan dengan kerangka kerja MV*/Viper lainnya. Ini adalah:
- Pendekatan lintas platform , memungkinkan arsitektur iOS dan Android tetap sinkron.
- Perkakas untuk adopsi yang lebih mudah pada aplikasi atau tim yang lebih besar. Tooling Kami adalah sumber terbuka termasuk plugin IDE untuk pembuatan kode dan analisis kode statis.
- Pendapat yang kuat tentang bagaimana keadaan harus dikomunikasikan , menggunakan DI dan RX. Setiap tulang rusuk mendefinisikan ketergantungannya dan dependensi apa yang dibutuhkan dari induknya. Komponen orang tua yang memenuhi dependensi orang tua anak diberikan kepada pembangun anak sebagai dependensi konstruktor untuk memungkinkan pelingkupan di hirarkis. Ini berarti bahwa informasi dikomunikasikan melalui ketergantungan ini di atas dan ke bawah pohon.
Penggunaan
- Kloning repositori ini
- Integrasi menggunakan mekanisme instalasi pilihan Anda
Untuk penggunaan perkakas yang dibangun di sekitar tulang rusuk, silakan lihat bagian perkakas dalam dokumentasi kami.
Instalasi untuk Android
Untuk mengintegrasikan pengaturan minimum yang disarankan untuk iga, tambahkan yang berikut ini ke build.gradle Anda.
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 '
} Ada sejumlah paket ekstensi yang tersedia juga termasuk ekstensi Kotlin, dukungan Jetpack Compose, Dukungan Coroutine
Proyek terkait
Jika Anda suka tulang rusuk, lihat proyek sumber terbuka terkait lainnya dari tim kami:
- Ribs-IOS: versi iga iOS
- Jarum: Kerangka injeksi ketergantungan cepat yang aman waktu.
- Motif: Abstrak di atas belati menawarkan API yang lebih sederhana untuk lingkup bersarang.
- SWIFT CONCURRENCY: Satu set kelas utilitas konkurensi yang digunakan oleh Uber, terinspirasi oleh kelas paket java.util.util.concurrent yang setara.
- Kelas abstrak Swift: Perpustakaan berat ringan bersama dengan yang dapat dieksekusi yang memungkinkan pengembangan kelas abstrak yang aman untuk proyek-proyek Swift.
- Swift Common: Perpustakaan umum yang digunakan oleh set proyek sumber terbuka yang cepat ini.
Lisensi
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.