ADR-001 - Seni Bina Modular
ADR-001: Seni Bina Modular> Rekod Keputusan Seni Bina untuk falsafah reka bentuk modular teras XOOPS.---
Section titled “ADR-001: Seni Bina Modular> Rekod Keputusan Seni Bina untuk falsafah reka bentuk modular teras XOOPS.---”StatusDiterima - Keputusan asas sejak XOOPS ditubuhkan---
Section titled “StatusDiterima - Keputusan asas sejak XOOPS ditubuhkan---”KonteksXOOPS (Sistem Portal Berorientasikan Objek eXtensible) memerlukan seni bina yang akan:1. Benarkan pembangun pihak ketiga melanjutkan fungsi
Section titled “KonteksXOOPS (Sistem Portal Berorientasikan Objek eXtensible) memerlukan seni bina yang akan:1. Benarkan pembangun pihak ketiga melanjutkan fungsi”- Membolehkan pentadbir tapak untuk menyesuaikan tanpa pengekodan
- Menyokong pembangunan bebas dan kemas kini
- Menyediakan pengasingan antara ciri yang berbeza
- Skala daripada blog mudah kepada portal yang kompleksLandskap CMS awal 2000-an menawarkan sistem monolitik yang sukar untuk disesuaikan dan dilanjutkan.---
Gambarajah Keputusan
Section titled “Gambarajah Keputusan”mermaidgraph TB subgraph "XOOPS Core" A[Kernel] B[Database Layer] C[User System] D[Template Engine] E[Security] end
subgraph "Module System" F[Module Loader] G[Module Registry] H[Module Permissions] end
subgraph "Installed Modules" I[News Module] J[Forum Module] K[Gallery Module] L[Custom Module] end
A --> F B --> F C --> H D --> F E --> H
F --> G G --> I G --> J G --> K G --> L
H --> I H --> J H --> K H --> LKeputusanKami akan melaksanakan seni bina modular di mana:### 1. Teras Menyediakan Infrastruktur
Section titled “KeputusanKami akan melaksanakan seni bina modular di mana:### 1. Teras Menyediakan Infrastruktur”- Abstraksi pangkalan data
- Pengesahan dan kebenaran pengguna
- Penyampaian templat (Smarty)
- Utiliti keselamatan
- Penjanaan bentuk
- Utiliti biasa### 2. Modul Berdikari Setiap modul:
- Mempunyai struktur direktori sendiri
- Mengandungi kelas, templat, SQL sendiri
- Mentakrifkan konfigurasinya sendiri
- Boleh installed/uninstalled secara bebas
- Mempunyai penjejakan versi### 3. Struktur Modul Standard
modules/modulename/├── admin/ # Admin interface│ ├── index.php│ └── menu.php├── class/ # PHP classes├── include/ # Include files├── language/ # Translations├── sql/ # Database schema├── templates/ # Smarty templates├── blocks/ # Block definitions├── xoops_version.php # Module manifest├── index.php # Entry point└── header.php # Module bootstrap4. Manifes Modul (xoops_version.php)
Section titled “4. Manifes Modul (xoops_version.php)”php<?php$modversion['name'] = 'Module Name';$modversion['version'] = '1.0.0';$modversion['description'] = 'Module description';$modversion['dirname'] = basename(__DIR__);$modversion['hasMain'] = 1;$modversion['hasAdmin'] = 1;$modversion['sqlfile']['mysql'] = 'sql/mysql.sql';$modversion['tables'] = ['modulename_table1'];$modversion['templates'] = [...];$modversion['config'] = [...];$modversion['blocks'] = [...];5. Komunikasi Modul
Section titled “5. Komunikasi Modul”- Melalui API teras (pengendali, acara)
- Hubungan pangkalan data
- Cangkuk pramuat
- Perkhidmatan berkongsi---
Kitaran Hayat Modul
Section titled “Kitaran Hayat Modul”mermaidstateDiagram-v2 [*] --> Available: Upload to modules/ Available --> Installing: Admin clicks Install Installing --> Installed: SQL executed, records created Installed --> Active: Admin activates
Active --> Updating: New version uploaded Updating --> Active: Update scripts run
Active --> Inactive: Admin deactivates Inactive --> Active: Admin reactivates Inactive --> Uninstalling: Admin uninstalls
Uninstalling --> Available: Keep files Uninstalling --> [*]: Remove filesAkibat### Positif1. Kebolehlanjutan: Beribu-ribu modul yang dicipta oleh komuniti
Section titled “Akibat### Positif1. Kebolehlanjutan: Beribu-ribu modul yang dicipta oleh komuniti”- Kemerdekaan: Modul boleh dibangunkan secara berasingan
- Fleksibiliti: Tapak boleh mencampur dan memadankan ciri
- Kebolehselenggaraan: Kemas kini tidak menjejaskan modul lain
- Pasaran: Ekosistem modul muncul
- Keluk pembelajaran: Pembangun mempelajari satu corak### Negatif1. Overhed: Setiap modul mempunyai kos bootstrap
- Penduaan: Kod biasa mungkin diulang
- Integrasi: Ciri merentas modul memerlukan reka bentuk yang teliti
- Versi: Pengurusan keserasian modul diperlukan
- Varian kualiti: Kualiti modul pihak ketiga berbeza-beza### Neutral1. Pangkalan Data: Setiap modul menguruskan jadualnya sendiri
- Templat: Tema mesti memuatkan pelbagai modul
- Kemas kini: Teras dan modul dikemas kini secara bebas---
Alternatif Dipertimbangkan### 1. Seni Bina Monolitik
Section titled “Alternatif Dipertimbangkan### 1. Seni Bina Monolitik”Ditolak - Terlalu tegar, sukar untuk disesuaikan### 2. Seni Bina Pemalam (gaya WordPress) Sebahagiannya diterima pakai - Blok dan pramuat menyediakan cangkuk seperti pemalam dalam modul### 3. Seni Bina Komponen (gaya Joomla) Ditolak - Lebih kompleks, kurang mesra pembangun### 4. Perkhidmatan mikro Tidak berkenaan - Terlalu kompleks untuk era pengehosan kongsi---
Keputusan Berkaitan- ADR-002: Akses Pangkalan Data Berorientasikan Objek
Section titled “Keputusan Berkaitan- ADR-002: Akses Pangkalan Data Berorientasikan Objek”- ADR-003: Enjin Templat Smarty
- ADR-005: Sistem Kebenaran---
Rujukan- Sejarah Projek XOOPS
Section titled “Rujukan- Sejarah Projek XOOPS”- Corak Seni Bina Aplikasi PHP
- Kajian Perbandingan CMS (2001-2005)---
#XOOPS #architecture #adr #modules #design-decision