ADR-001 - Modüler Mimari
ADR-001: Modüler Mimari
Section titled “ADR-001: Modüler Mimari”XOOPS’nin temel modüler tasarım felsefesi için Mimari Karar Kaydı.
Kabul edildi - XOOPS kuruluşundan bu yana temel karar
Bağlam
Section titled “Bağlam”XOOPS (Genişletilebilir Nesne Yönelimli Portal Sistemi) şunları yapabilecek bir mimariye ihtiyaç duyuyordu:
- Üçüncü taraf geliştiricilerin işlevselliği genişletmesine izin verin
- Site yöneticilerinin kodlamadan özelleştirme yapmasına olanak sağlayın
- Bağımsız gelişimi ve güncellemeleri destekleyin
- Farklı özellikler arasında izolasyon sağlayın
- Basit bloglardan karmaşık portallara kadar ölçeklendirin
2000’li yılların başlarındaki CMS ortamı, özelleştirilmesi ve genişletilmesi zor olan yekpare sistemler sunuyordu.
Karar Diyagramı
Section titled “Karar Diyagramı”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 --> LModüler bir mimari uygulayacağız:
1. Core Altyapı Sağlar
Section titled “1. Core Altyapı Sağlar”- database soyutlaması
- user kimlik doğrulaması ve izinleri
- template oluşturma (Smarty)
- Güvenlik hizmetleri
- Form oluşturma
- Ortak yardımcı programlar
2. modules Bağımsızdır
Section titled “2. modules Bağımsızdır”Her module:
- Kendi dizin yapısına sahiptir
- Kendi sınıflarını, şablonlarını içerir, SQL
- Kendi konfigürasyonunu tanımlar
- Bağımsız olarak installed/uninstalled olabilir
- Sürüm takibi var
3. Standart module Yapısı
Section titled “3. Standart module Yapısı”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. module Bildirimi (xoops_version.php)
Section titled “4. module Bildirimi (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. module İletişimi
Section titled “5. module İletişimi”- Core APIs aracılığıyla (işleyiciler, events)
- database ilişkileri
- Ön yükleme kancaları
- Paylaşılan hizmetler
module Yaşam Döngüsü
Section titled “module Yaşam Döngüsü”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 filesSonuçlar
Section titled “Sonuçlar”Olumlu
Section titled “Olumlu”- Genişletilebilirlik: Topluluk tarafından oluşturulan binlerce module
- Bağımsızlık: modules ayrı ayrı geliştirilebilir
- Esneklik: Siteler özellikleri karıştırıp eşleştirebilir
- Bakım Kolaylığı: Güncellemeler diğer modülleri etkilemez
- Pazar Yeri: module ekosistemi ortaya çıktı
- Öğrenme eğrisi: Geliştiriciler tek bir modeli öğrenir
Negatif
Section titled “Negatif”- Genel Gider: Her modülün önyükleme maliyeti vardır
- Çoğaltma: Ortak kod tekrarlanabilir
- Entegrasyon: modules arası özellikler dikkatli tasarım gerektirir
- Sürüm oluşturma: module uyumluluk yönetimi gereklidir
- Kalite farkı: Üçüncü taraf module kalitesi değişiklik gösterir
- database: Her module kendi tablolarını yönetir
- templates: theme çeşitli modülleri barındırmalıdır
- Güncellemeler: Core ve modules bağımsız olarak güncellenir
Alternatifler Değerlendirildi
Section titled “Alternatifler Değerlendirildi”1. Monolitik Mimari
Section titled “1. Monolitik Mimari”Reddedildi - Çok katı, özelleştirilmesi zor
2. Eklenti Mimarisi (WordPress tarzı)
Section titled “2. Eklenti Mimarisi (WordPress tarzı)”Kısmen benimsenmiştir - Bloklar ve ön yüklemeler, modules içinde eklenti benzeri hooks sağlar
3. Bileşen Mimarisi (Joomla tarzı)
Section titled “3. Bileşen Mimarisi (Joomla tarzı)”Reddedildi - Daha karmaşık, daha az geliştirici dostu
4. Mikro hizmetler
Section titled “4. Mikro hizmetler”Geçerli değil - Paylaşımlı barındırma dönemi için fazla karmaşık
İlgili Kararlar
Section titled “İlgili Kararlar”- ADR-002: Nesneye Yönelik database Erişimi
- ADR-003: Smarty template Motoru
- ADR-005: İzin Sistemi
Referanslar
Section titled “Referanslar”- XOOPS Proje Geçmişi
- PHP Uygulama Mimarisi Desenleri
- CMS Karşılaştırma Çalışmaları (2001-2005)
#xoops #architecture #adr #modules #tasarım-karar