ADR-001 - Modularna arhitektura
ADR-001: Modularna arhitektura
Section titled “ADR-001: Modularna arhitektura”Zapis o arhitektonskim odlukama za temeljnu filozofiju modularnog dizajna XOOPS.
Status
Section titled “Status”Prihvaćeno - Temeljna odluka od početka XOOPS
Kontekst
Section titled “Kontekst”XOOPS (eXtensible Object-Oriented Portal System) trebao je arhitekturu koja bi:
- Dopustite programerima trećih strana da prošire funkcionalnost
- Omogućite stranicu administrators za prilagodbu bez kodiranja
- Podržavajte neovisni razvoj i ažuriranja
- Omogućite izolaciju između različitih značajki
- Skala od jednostavnih blogova do složenih portala
CMS krajolik ranih 2000-ih nudio je monolitne sustave koje je bilo teško prilagoditi i proširiti.
Dijagram odluke
Section titled “Dijagram odluke”graph 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 --> LOdluka
Section titled “Odluka”Implementirat ćemo modularnu arhitekturu gdje:
1. Jezgra pruža infrastrukturu
Section titled “1. Jezgra pruža infrastrukturu”- Apstrakcija baze podataka
- Autentikacija korisnika i dopuštenja
- Prikaz predloška (Smarty)
- Sigurnosni alati
- Generiranje obrazaca
- Zajedničke komunalije
2. moduli su samostalni
Section titled “2. moduli su samostalni”Svaki modul:
- Ima vlastitu strukturu imenika
- Sadrži vlastiti classes, templates, SQL
- Definira vlastitu konfiguraciju
- Može se samostalno instalirati/deinstalirati
- Ima praćenje verzija
3. Standardna struktura modula
Section titled “3. Standardna struktura modula”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. Manifest modula (xoops_version.php)
Section titled “4. Manifest modula (xoops_version.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. Komunikacija modula
Section titled “5. Komunikacija modula”- Kroz osnovne API-je (rukovatelji, događaji)
- Odnosi baze podataka
- Prednapregnute kuke
- Zajedničke usluge
Životni ciklus modula
Section titled “Životni ciklus modula”stateDiagram-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 filesPosljedice
Section titled “Posljedice”Pozitivno
Section titled “Pozitivno”- Proširljivost: Tisuće modules koje je stvorila zajednica
- Nezavisnost: moduli se mogu razvijati zasebno
- Fleksibilnost: web stranice mogu kombinirati i spajati značajke
- Pogodnost održavanja: ažuriranja ne utječu na druge modules
- Tržište: Pojavio se ekosustav modula
- Krivulja učenja: Programeri uče jedan obrazac
Negativno
Section titled “Negativno”- Opšte: Svaki modul ima trošak pokretanja
- Dupliciranje: Uobičajeni kod može se ponavljati
- Integracija: značajke više modula zahtijevaju pažljiv dizajn
- Određivanje verzija: Potrebno je upravljanje kompatibilnošću modula
- Odstupanje u kvaliteti: Kvaliteta modula treće strane varira
Neutralno
Section titled “Neutralno”- baza podataka: Svaki modul upravlja vlastitim tablicama
- predlošci: tema mora sadržavati razne modules
- Ažuriranja: Core i modules ažuriraju se neovisno
Razmotrene alternative
Section titled “Razmotrene alternative”1. Monolitna arhitektura
Section titled “1. Monolitna arhitektura”Odbijeno - Prestrogo, teško za prilagođavanje
2. Arhitektura dodataka (WordPress stil)
Section titled “2. Arhitektura dodataka (WordPress stil)”Djelomično usvojeno - Blokovi i predučitavanja pružaju zakačke nalik dodacima unutar modules
3. Komponentna arhitektura (Joomla stil)
Section titled “3. Komponentna arhitektura (Joomla stil)”Odbijeno - Složenije, manje prilagođeno programerima
4. Mikrousluge
Section titled “4. Mikrousluge”Nije primjenjivo - Previše složeno za eru zajedničkog hostinga
Povezane odluke
Section titled “Povezane odluke”- ADR-002: Objektno orijentirani pristup bazi podataka
- ADR-003: Smarty predložak
- ADR-005: Sustav dozvola
Reference
Section titled “Reference”- XOOPS Povijest projekta
- PHP Uzorci arhitekture aplikacija
- CMS usporedne studije (2001.-2005.)
#xoops #arhitektura #adr #modules #dizajn-odluka