Extension — dastur yoki frameworkning asosiy kodini bevosita o‘zgartirmasdan yangi xatti-harakat qo‘shadigan kengaytma komponentidir. U belgilangan API, hook, event yoki service-provider shartnomasi orqali host tizimga ulanadi. Extension atamasi browser, IDE, test framework va server platformalarida turli packaging modeliga ega.
Kengaytma nuqtasi
Host qaysi lifecycle nuqtalariga ulanish mumkinligini belgilaydi. Masalan, test framework extensioni testdan oldin dependency yaratishi, parameter resolve qilishi yoki natijani kuzatishi mumkin. Browser extension esa sahifa content scripti, background worker va permission manifestidan foydalanadi.
Extension faqat public contractga tayanishi kerak. Ichki class yoki undocumented fayl formatiga ulanish host yangilanganda buziladi. API version, capability negotiation va deprecation davri compatibilityni boshqaradi.
Discovery va yuklash
Extension manifest, package metadata, service loader yoki konfiguratsiya orqali topiladi. Discovery va activation alohida bosqich bo‘lishi mumkin: tizim komponent mavjudligini biladi, lekin kerakli feature ishlatilmaguncha kodni yuklamaydi. Lazy activation startup vaqtini va xotirani kamaytiradi.
Yuklash paytida ID, versiya, dependency va host compatibility tekshiriladi. Ikki extension bir xil command yoki route nomini egallasa conflict policy kerak. Deterministik tartib bo‘lmasa bir xil konfiguratsiya turli natija berishi mumkin.
Izolyatsiya
Process ichidagi extension host xotirasi va huquqlariga yaqin bo‘ladi; xatosi butun dasturni yiqitishi mumkin. Classloader, sandbox, worker process yoki WebAssembly kabi chegaralar izolatsiyani kuchaytiradi. Ammo IPC va serialization performance xarajati qo‘shadi.
Resource limit CPU, memory, network va storage ishlatilishini cheklaydi. Extension event handlerda uzoq bloklasa UI yoki test runner sekinlashadi. Host timeout, cancellation va circuit breaker bilan zarar doirasini kamaytiradi.
Permission va ta’minot zanjiri
Extension minimal permission so‘rashi kerak. File system, clipboard, barcha saytlar yoki secret storage huquqi katta xavf yuzasini yaratadi. Foydalanuvchiga permission maqsadi ko‘rsatiladi va runtime’da capability asosida tekshiriladi.
Package imzosi muallif yoki tarqatish manbasini tekshirishga yordam beradi, lekin kodning xavfsizligini o‘zi kafolatlamaydi. Dependencylar, update kanali va publisher account ta’minot zanjiri xavfining bir qismidir. Auto-update rollback va version pin siyosati bilan boshqariladi.
Konfiguratsiya va state
Extension konfiguratsiyasi schema bilan tekshiriladi. Noma’lum field warning yoki error berishi mumkin; default qiymatlar versiyalar oralig‘ida o‘zgarishi ehtiyotkor boshqariladi. Secret oddiy konfiguratsiya fayliga emas, host secret store’iga reference orqali joylanadi.
State host upgrade va extension reinstall davrida migration talab qilishi mumkin. Oldingi versiyaga rollback yangi state formatini o‘qiy olmasligi ehtimoli mavjud. Migration backup va version marker bilan bajariladi.
Nosozlik va kuzatuv
Host log va metricda extension ID hamda versiyasini qayd etadi. Failure core tizimdan ajratilishi uchun extension-specific error boundary ishlatiladi. Safe mode uchinchi tomon kengaytmalarini vaqtincha o‘chirib, nosozlik manbasini aniqlashga yordam beradi.
Extension testlari hostning qo‘llab-quvvatlangan versiyalarida contractni tekshiradi. Integration test real lifecycle, permission va packagingni qamrab oladi. Uninstall command, hook va background resurslarni olib tashlashi, foydalanuvchi data’si esa belgilangan retention qoidasi bo‘yicha saqlanishi yoki o‘chirilishi kerak.
Extensionlar o‘rtasidagi aloqa
Bir extension boshqasining ichki obyektiga bevosita murojaat qilsa load order va versiya bog‘liqligi paydo bo‘ladi. Host message bus yoki declared service contract orqali vositachilik qilishi mumkin. Optional dependency mavjud bo‘lmasa feature o‘chadi, extensionning o‘zi esa ishlashda davom etadi. Circular dependency activationni to‘xtatadi va manifest tekshiruvida aniqlanadi. Shared event payload ham versionlangan schema bo‘yicha uzatiladi; noma’lum field compatibility qoidasi asosida qayta ishlanadi.
Bog‘liq tushunchalar
Plugin, Hook, API contract, Sandbox, Permission, Service loader, Compatibility