

การแจ้งเตือน: ซี่โครงสำหรับ iOS ได้ถูกย้ายไปที่ repo แยกต่างหาก
Ribs เป็นกรอบสถาปัตยกรรมข้ามแพลตฟอร์มที่อยู่เบื้องหลังแอพมือถือจำนวนมากที่ Uber ชื่อซี่โครงนั้นสั้นสำหรับเราเตอร์, Interactor และ Builder ซึ่งเป็นองค์ประกอบหลักของสถาปัตยกรรมนี้ เฟรมเวิร์กนี้ออกแบบมาสำหรับแอพมือถือที่มีวิศวกรจำนวนมากและรัฐซ้อนกัน
สถาปัตยกรรมซี่โครงให้:
- สถาปัตยกรรมที่ใช้ร่วมกันใน iOS และ Android สร้างแอพข้ามแพลตฟอร์มที่มีสถาปัตยกรรมที่คล้ายกันทำให้ทีม iOS และ Android สามารถตรวจสอบรหัสตรรกะทางธุรกิจข้าม
- ความสามารถในการทดสอบและการแยก ชั้นเรียนจะต้องง่ายต่อการทดสอบหน่วยและเหตุผลเกี่ยวกับการแยก ชั้นเรียนซี่โครงส่วนบุคคลมีความรับผิดชอบที่แตกต่างเช่น: การกำหนดเส้นทางธุรกิจดูตรรกะการสร้าง นอกจากนี้ตรรกะซี่โครงส่วนใหญ่จะถูกแยกออกจากตรรกะซี่โครงเด็ก สิ่งนี้ทำให้ชั้นเรียนซี่โครงทดสอบง่ายและมีเหตุผลเกี่ยวกับการเป็นอิสระ
- เครื่องมือสำหรับผลผลิตนักพัฒนา ซี่โครงมาพร้อมกับเครื่องมือ IDE รอบการสร้างรหัสการตรวจจับการรั่วไหลของหน่วยความจำการวิเคราะห์แบบคงที่และการรวมรันไทม์ - ทั้งหมดที่ปรับปรุงประสิทธิภาพการทำงานของนักพัฒนาสำหรับทีมขนาดใหญ่หรือขนาดเล็ก
- สถาปัตยกรรมที่ปรับขนาด สถาปัตยกรรมนี้ได้พิสูจน์แล้วว่ามีวิศวกรหลายร้อยคนที่ทำงานบนรหัสฐานและแอพเดียวกันที่มีซี่โครงหลายร้อยซี่
เอกสาร
ในการเริ่มต้นด้วยซี่โครงโปรดดูเอกสารของ RIBS สิ่งนี้อธิบายแนวคิดหลักเกี่ยวกับซี่โครงจากสิ่งที่พวกเขามีไว้สำหรับโครงสร้างและกรณีการใช้งานทั่วไป
เพื่อให้ได้งานมากขึ้นด้วยซี่โครงเราได้เขียนชุดของบทเรียนที่ทำให้คุณผ่านประเด็นหลักของสถาปัตยกรรมพร้อมตัวอย่าง
หากต้องการอ่านเกี่ยวกับ backstory ว่าทำไมเราถึงสร้างซี่โครงดูโพสต์บล็อกนี้ที่เราเขียนเมื่อปล่อยซี่โครงในการผลิตครั้งแรกและดูวิดีโอสั้น ๆ นี้ที่เราพูดถึงวิธีการทำงานของ Ribs Architecture
ความแตกต่างระหว่างซี่โครงและ 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
โครงการที่เกี่ยวข้อง
หากคุณชอบซี่โครงลองดูโครงการโอเพนซอร์สอื่น ๆ ที่เกี่ยวข้องจากทีมงานของเรา:
- RIBS-IOS: ซี่โครงเวอร์ชัน iOS
- เข็ม: กรอบการฉีดพึ่งพาการพึ่งพาอย่างปลอดภัยเวลาคอมไพล์
- MOTIF: บทคัดย่อที่ด้านบนของกริชที่ให้ API ที่ง่ายกว่าสำหรับขอบเขตซ้อน
- Swift Concurrency: ชุดของคลาสยูทิลิตี้พร้อมกันที่ใช้โดย Uber ซึ่งได้รับแรงบันดาลใจจากคลาสแพ็คเกจ Java.util.concurrent เทียบเท่า
- Swift Abstract Class: ไลบรารีน้ำหนักเบาพร้อมกับปฏิบัติการที่ช่วยให้การพัฒนาคลาสนามธรรมที่ปลอดภัยในการคอมไพล์เวลาสำหรับโครงการ Swift
- Swift Common: ไลบรารีทั่วไปที่ใช้โดยชุดของโครงการโอเพ่นซอร์ส Swift นี้
ใบอนุญาต
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.