អ្នកមានកម្មវិធីរបស់អ្នករួចហើយ ប៉ុន្តែអ្នកនៅតែត្រូវការវិធីសាស្ត្រដែលមានប្រសិទ្ធភាពជាងមុនក្នុងការធ្វើឱ្យអ្នកប្រើប្រាស់បច្ចេកទេសរបស់អ្នកពង្រីកវេទិកា។
ទោះបីជា OSGi ត្រូវបានគេស្គាល់យ៉ាងច្បាស់ចំពោះអ្នកអភិវឌ្ឍន៍ Java ភាគច្រើនក៏ដោយ ការបញ្ចូលវាទៅក្នុងផលិតផលរបស់អ្នកអាចហាក់ដូចជាកិច្ចការដ៏គួរឱ្យខ្លាចមួយ។ ការខ្វះភាពច្បាស់លាស់អំពីការងារច្បាស់លាស់របស់ OSGi ធ្វើឱ្យផ្លូវឆ្ពោះទៅមុខកាន់តែច្របូកច្របល់។
ផ្ទុយពីអ្វីដែលពួកគេចង់ពិសោធជាមួយ OSGi មានអារម្មណ៍ដូចជាការព្យាយាមបើកទូកទៅសមុទ្រដ៏ធំទូលាយទៅកាន់អ្នកអភិវឌ្ឍន៍ Java ជាច្រើន។
អត្ថបទនេះនឹងណែនាំអ្នកអំពីការបង្រៀននិទាឃរដូវ OSGi Felix ដោយប្រើកម្មវិធីត្រង់ៗ ហើយឆ្លងកាត់ គុណសម្បត្តិរបស់វា និងព័ត៌មានលម្អិតសំខាន់ៗផ្សេងទៀត។
ដូច្នេះតើ OSGi ជាអ្វី?
ការបង្កើត និងចែកចាយម៉ូឌុល និងសមាសភាគគឺអាចធ្វើទៅបានដោយក្របខ័ណ្ឌ Java ដែលត្រូវបានគេស្គាល់ថាជា OSGi (Open Service Gateway Initiative) ។
វាសង្កត់ធ្ងន់ទៅលើមុខងារ encapsulation និងការ coupling រលុង ដែលផ្តល់នូវអត្ថប្រយោជន៍ជាច្រើនដល់អ្នកអភិវឌ្ឍន៍ រួមទាំងមុខងារម៉ូឌុលដែលអាចផ្ទេរបានយ៉ាងងាយស្រួលរវាងកូដប្រភព និងការធ្វើតេស្តដែលមិនត្រូវការភាពអាស្រ័យមិនចេះចប់។
តើ OSGi ដំណើរការយ៉ាងដូចម្តេច?
ប្រព័ន្ធសមាសភាគថាមវន្តសម្រាប់ Java ត្រូវបានកំណត់ដោយសំណុំជាក់លាក់មួយហៅថា OSGi ។ លក្ខណៈពិសេសទាំងនេះអនុញ្ញាតឱ្យមានវិធីសាស្ត្រអភិវឌ្ឍន៍ដែលកម្មវិធីត្រូវបានបង្កើតឡើងពីផ្នែកមួយចំនួនហើយបន្ទាប់មកខ្ចប់ជាបាច់។
សេវាកម្មមូលដ្ឋាន និងបណ្តាញត្រូវបានប្រើប្រាស់ដោយសមាសធាតុទាំងនេះដើម្បីទំនាក់ទំនង។ ការធ្វើឱ្យកូដស្នូលនៃកម្មវិធីបង្រួមតាមដែលអាចធ្វើបានគឺជាគោលបំណង។ ការភ្ជាប់គ្នាខ្ពស់រវាងកូដនេះ និងសមាសធាតុជាច្រើនគឺអាចធ្វើទៅបាន។
ធាតុអគារដែលអាចប្រើឡើងវិញបានរបស់កម្មវិធីត្រូវបានគេហៅថាសមាសធាតុ។ គិតអំពីលក្ខណៈពិសេសដូចជារទេះទិញទំនិញសម្រាប់គេហទំព័រពាណិជ្ជកម្មអេឡិចត្រូនិករបស់អ្នក ឬកម្មវិធីបើកប្រាក់បៀវត្សរ៍សម្រាប់ប្រព័ន្ធគ្រប់គ្រងបុគ្គលិករបស់អ្នក។
សមាសភាគអាចប្រើ OSGi ដើម្បីលាក់ការអនុវត្តរបស់ពួកគេពីសមាសភាគផ្សេងទៀត ហើយគ្រាន់តែផ្តល់ទិន្នន័យចាំបាច់ដល់ពួកគេតាមរយៈសេវាកម្មប៉ុណ្ណោះ។
វារារាំងសមាសធាតុពីការផ្លាស់ប្តូរទិន្នន័យដោយអចេតនាដែលពួកគេមិនគួរមានសិទ្ធិចូលប្រើ និងគ្រប់គ្រងភាពអាស្រ័យ។
ការតភ្ជាប់ទាំងអស់រវាងសមាសធាតុនៅក្នុងកម្មវិធី OSGi ត្រូវបានធ្វើឡើងតាមរយៈសេវាកម្មនៅក្នុងពិភពដ៏ល្អមួយ។ កញ្ចប់ Java មាន API ដែលត្រូវបានបញ្ជាក់សម្រាប់សេវាកម្ម។
ការសហការគ្នារវាងអ្នកផ្តល់សេវា និងអតិថិជនតម្រូវឱ្យប្រើប្រាស់ថ្នាក់ និង/ឬចំណុចប្រទាក់ ដែលបង្កើតជា API ។
សមាសធាតុ OSGi ទាំងអស់ត្រូវបានខ្ចប់ជាមួយគ្នាជាបណ្តុំ ដែលនីមួយៗរួមបញ្ចូលធនធានដែលពួកគេត្រូវការដើម្បីដំណើរការ។ កញ្ចប់គឺច្បាស់ណាស់អំពីអ្វីដែលពួកគេត្រូវការពីបរិស្ថាន និងអ្វីដែលពួកគេមានសមត្ថភាព។
អត្ថប្រយោជន៍
- កម្មវិធី OSGi មានសិទ្ធិចូលប្រើឃ្លាំងផ្ទុកកញ្ចប់ខាងក្រៅ។
- ក្របខ័ណ្ឌអនុញ្ញាតឱ្យការរចនាតម្រង់ទិសសេវាកម្មនៅកម្រិតម៉ូឌុល។
- វាធ្វើឱ្យវាអាចគ្រប់គ្រងកំណែ និងភាពអាស្រ័យនៃកញ្ចប់កម្មវិធី បន្ថែមពីលើការកំណត់ស្តង់ដារ និងធ្វើឱ្យវាកាន់តែងាយស្រួលក្នុងការរួមបញ្ចូលបណ្ណាល័យភាគីទីបី។
- កម្មវិធីគឺអាចសម្របខ្លួនបានកាន់តែច្រើនទៅនឹងតម្រូវការផ្លាស់ប្តូរ ងាយស្រួលចល័តជាងមុន និងលឿនជាងមុនក្នុងការវិស្វករឡើងវិញ។
- A កម្មវិធីបណ្ដាញ អាចត្រូវបានដាក់ពង្រាយជាក្រុមនៃកញ្ចប់ OSGi កំណែដែលមានអាយុកាលថាមវន្តដោយសារការរួមបញ្ចូលគ្នារបស់ក្របខ័ណ្ឌជាមួយនឹងគំរូកម្មវិធី Java EE ។
- ជំនួសឱ្យការត្រូវបានដំឡើងជាបណ្ណាល័យភាគីទីបីជាផ្នែកនៃកម្មវិធី ក្របខ័ណ្ឌផ្តល់នូវការជួបប្រជុំគ្នាប្រកាស និងការធ្វើតេស្តឯកតានៃ Spring Framework ក្នុងទម្រង់ស្តង់ដារដែលត្រូវបានផ្តល់ជាផ្នែកនៃដំណើរការម៉ាស៊ីនមេកម្មវិធី។
- សម្រាប់កម្មវិធីសាជីវកម្មដែលបង្កើតឡើងដោយបណ្តុំកំណែជាច្រើនជាមួយនឹងវដ្តជីវិតថាមវន្ត ក្របខ័ណ្ឌផ្តល់នូវភាពឯកោ។
- វាមានឃ្លាំងផ្ទុកបណ្តុំរួមបញ្ចូលគ្នាដែលអាចរក្សាទុកបណ្តុំទូទៅ និងកំណែដែលបានប្រើដោយកម្មវិធីជាច្រើន ដោយការពារកម្មវិធីនីមួយៗពីការដាក់ពង្រាយច្បាប់ចម្លងដាច់ដោយឡែកនៃបណ្ណាល័យដែលបានចែករំលែកនីមួយៗ។
ចាប់ផ្តើមជាមួយ OSGi Felix និទាឃរដូវ
ការទទួលបានធនធាន
ដោយទាញយកកំណែថ្មីបំផុតរបស់ Apache Karaf ពី គេហទំព័រនេះយើងអាចចាប់ផ្តើមដំណើរផ្សងព្រេង OSGi របស់យើង។
ដោយផ្អែកលើ Apache Felix ការអនុវត្ត Apache នៃការបញ្ជាក់ OSGi Apache Karaf ផ្តល់នូវវេទិកាសម្រាប់កម្មវិធីដែលមានមូលដ្ឋានលើ OSGi ។
Karaf ផ្តល់នូវមុខងារមានប្រយោជន៍ជាច្រើននៅលើកំពូល Felix ដែលនឹងជួយយើងក្នុងការស្គាល់ខ្លួនយើងជាមួយ OSGi ដូចជាចំណុចប្រទាក់បន្ទាត់ពាក្យបញ្ជាដែលនឹងអនុញ្ញាតឱ្យយើងទំនាក់ទំនងជាមួយវេទិកា។
ចំណុចចូលសម្រាប់បណ្តុំ
កម្មវិធីត្រូវតែត្រូវបានខ្ចប់ជាកញ្ចប់ OSGi មុនពេលដែលវាអាចដំណើរការក្នុងបរិស្ថាន OSGi ។ លើសពីនេះ ចំណុចចូលកម្មវិធីត្រូវតែបញ្ជាក់។ វាមិនមែនជាមុខងារស្តង់ដារ ឋិតិវន្តសាធារណៈ មេ (ខ្សែអក្សរ[] args) ទេ។
ដូច្នេះ ចូរចាប់ផ្តើមដោយបង្កើត "សួស្តីពិភពលោក"កម្មវិធីផ្អែកលើ OSGi ។
យើងចាប់ផ្តើមដោយបង្កើតភាពអាស្រ័យ OSGi API ជាមូលដ្ឋាន៖
ពេលដំណើរការ OSGi នឹងមានសិទ្ធិចូលប្រើភាពអាស្រ័យ ដូច្នេះកញ្ចប់មិនចាំបាច់មានវាទេ។ ដូច្នេះវាត្រូវបានសម្គាល់ថាបានផ្គត់ផ្គង់។
ឥឡូវនេះ ចូរយើងបង្កើតថ្នាក់ HelloWorld ត្រង់ៗ៖
ថ្នាក់ដែលដើរតួជាចំណុចចូលសម្រាប់បណ្តុំត្រូវតែអនុវត្តចំណុចប្រទាក់ BundleActivator ដែលផ្តល់ដោយ OSGi ។
នៅពេលដែលបណ្តុំដែលមានថ្នាក់នេះត្រូវបានបើកដំណើរការ វេទិកា OSGi ហៅមុខងារ start()។ នៅផ្នែកម្ខាងទៀត មិនយូរប៉ុន្មានមុនពេលបណ្តុំត្រូវបានបញ្ឈប់ មុខងារឈប់ () ត្រូវបានហៅ។
សូមកុំភ្លេចថា កញ្ចប់នីមួយៗអាចមាន BundleActivator តែមួយប៉ុណ្ណោះ។ វិធីទាំងពីរនេះអាចទាក់ទងជាមួយពេលវេលាដំណើរការ OSGi ដោយប្រើវត្ថុ BundleContext ដែលត្រូវបានផ្តល់ឱ្យ។
ការបង្កើតបណ្តុំ
ធ្វើឱ្យ pom.xml ក្លាយជាបណ្តុំ OSGi ពិតដោយធ្វើការផ្លាស់ប្តូរចាំបាច់។
ដំបូងយើងត្រូវបង្ហាញឱ្យច្បាស់ថា គោលដៅរបស់យើងគឺបង្កើតបាច់មួយ។
បន្ទាប់មក យើងប្រើកម្មវិធីជំនួយ maven-bundle-plugin ដើម្បីវេចខ្ចប់ថ្នាក់ HelloWorld ជាបណ្តុំ OSGi ដោយមានការអនុញ្ញាតពីសហគមន៍ Apache Felix៖
តម្លៃនៃបឋមកថា OSGi ដែលយើងចង់បញ្ចូលក្នុងឯកសារ MANIFEST របស់កញ្ចប់ត្រូវបានបញ្ជាក់នៅក្នុងផ្នែកការណែនាំ។
Bundle-Activator គឺពិតជាឈ្មោះដែលមានលក្ខណៈសម្បត្តិគ្រប់គ្រាន់នៃដំណោះស្រាយ BundleActivator ដែលនឹងត្រូវបានប្រើប្រាស់ដើម្បីចាប់ផ្តើម និងបញ្ឈប់បណ្តុំ។ វាឆបគ្នាជាមួយថ្នាក់ដែលទើបតែបង្កើត។
ខណៈពេលដែលវាមិនមែនជាបឋមកថា OSGi បឋមកថា Private-Package ណែនាំកម្មវិធីជំនួយឱ្យបន្ថែមកញ្ចប់ទៅកញ្ចប់ ប៉ុន្តែគ្រាន់តែមិនធ្វើឱ្យវាអាចចូលប្រើបានសម្រាប់កម្មវិធីជំនួយផ្សេងទៀត។ ពាក្យបញ្ជាដំឡើង mvn គួរតែត្រូវបានប្រើដើម្បីបង្កើតកញ្ចប់។
ការដំឡើងនិងដំណើរការកញ្ចប់
តោះចាប់ផ្តើម Karaf ដោយដំណើរការពាក្យបញ្ជានេះ៖
កន្លែងដែល “KARAF HOME” សំដៅលើថតឯកសារដែល Karaf ត្រូវបានតំឡើង។ យើងអាចប្រើពាក្យបញ្ជាខាងក្រោមដើម្បីដំឡើងបណ្តុំនៅពេលប្រអប់បញ្ចូលកុងសូល Karaf លេចឡើង៖
ការប្រើប្រាស់ឃ្លាំង Maven ក្នុងតំបន់គឺជារបៀបដែល Karaf ត្រូវបានប្រាប់ឱ្យផ្ទុកកញ្ចប់។
ការប្រគល់លេខសម្គាល់លេខរបស់បណ្តុំមកវិញ Karaf សរសេរវាចេញ។ លេខសម្គាល់នេះអាចខុសគ្នាអាស្រ័យលើចំនួនបណ្តុំដែលបានដំឡើងពីមុន។ ឥឡូវនេះកញ្ចប់ត្រូវបានដំឡើងដោយជោគជ័យ ហើយពាក្យបញ្ជាដើម្បីបើកដំណើរការវាមានដូចខាងក្រោម៖
នៅពេលអ្នកចាប់ផ្តើមកញ្ចប់ "Hello World by Jay" បង្ហាញ។ ឥឡូវនេះ យើងអាចបញ្ឈប់ និងដកកញ្ចប់ចេញដោយប្រើ៖
កុងសូលបង្ហាញ "លាហើយពិភពលោកដោយ Jay" ។
សន្និដ្ឋាន
អ្នកអភិវឌ្ឍន៍អាចបន្ថែមមុខងារថ្មីយ៉ាងងាយស្រួលទៅកម្មវិធីគេហទំព័រដែលមានស្រាប់ ខណៈពេលដែលរក្សាវាឱ្យមានសុវត្ថិភាព និងដាច់ដោយឡែកពីសមាសធាតុផ្សេងទៀតនៃកម្មវិធីចម្បងដោយប្រើ OSGi ។
យើងបានសិក្សាអំពី OSGi នៅក្នុងការប្រកាសនេះ រួមទាំងរបៀបដែលវាដំណើរការ គុណសម្បត្តិរបស់វា និងកម្មវិធីត្រង់។ វាមិនពិបាកក្នុងការបញ្ចូល OSGi ទៅក្នុងកម្មវិធីផ្ទាល់ខ្លួនរបស់អ្នកទេ។
រីករាយកូដ
សូមផ្ដល់យោបល់