شما در حال حاضر نرم افزار خود را آماده کرده اید، اما همچنان به روش موثرتری نیاز دارید تا کاربران فنی خود را قادر به گسترش پلت فرم کنید.
اگرچه OSGi برای اکثر توسعه دهندگان جاوا به خوبی شناخته شده است، ادغام آن در محصول شما ممکن است کاری دلهره آور به نظر برسد. عدم شفافیت در مورد عملکرد دقیق OSGi مسیر رو به جلو را بیشتر درهم میزند.
برخلاف هر چیزی که مایلند با آن آزمایش کنند، OSGi بیشتر شبیه تلاش برای عبور از دریای وسیع برای بسیاری از توسعه دهندگان جاوا است.
این مقاله شما را با آموزش فنری OSGi Felix با استفاده از یک برنامه ساده، مزایا و سایر جزئیات مهم آشنا می کند.
بنابراین OSGi چیست؟
ایجاد و توزیع ماژول ها و کامپوننت ها توسط چارچوب جاوا معروف به OSGi (Open Service Gateway Initiative) امکان پذیر شده است.
این بر روی کپسولهسازی عملکرد و اتصال آزاد تأکید میکند، که مزایای متعددی را برای توسعهدهندگان ارائه میدهد، از جمله عملکرد ماژولار که به راحتی بین کدهای منبع قابل انتقال است و آزمایشی که نیازی به وابستگیهای بیپایان ندارد.
OSGi چگونه کار می کند؟
یک سیستم مؤلفه پویا برای جاوا با مجموعه ای از مشخصات به نام OSGi تعریف می شود. این مشخصات یک رویکرد توسعه را امکان پذیر می کند که در آن یک برنامه از تعدادی قسمت ساخته شده و سپس در بسته ها بسته بندی می شود.
خدمات محلی و مبتنی بر شبکه توسط این مؤلفه ها برای برقراری ارتباط استفاده می شود. ساختن کد اصلی برنامه تا حد امکان فشرده، هدف است. اتصال زیاد بین این کد و چندین مؤلفه امکان پذیر است.
عناصر ساختمانی قابل استفاده مجدد برنامه، اجزا نامیده می شوند. به ویژگی هایی مانند سبد خرید برای وب سایت تجارت الکترونیک خود یا برنامه حقوق و دستمزد برای سیستم مدیریت کارکنان خود فکر کنید.
کامپوننتها میتوانند از OSGi برای پنهان کردن پیادهسازیهای خود از سایر مؤلفهها استفاده کنند و فقط دادههای لازم را از طریق سرویسها در اختیار آنها قرار دهند.
این از تغییر ناخواسته مولفه ها در داده هایی که نباید به آنها دسترسی داشته باشند جلوگیری می کند و وابستگی ها را مدیریت می کند.
تمام اتصالات بین اجزای یک برنامه OSGi از طریق خدمات در دنیای ایده آل انجام می شود. یک بسته جاوا حاوی API است که برای خدمات مشخص شده است.
همکاری بین ارائه دهندگان خدمات و مشتریان نیاز به استفاده از کلاس ها و/یا رابط هایی دارد که API را تشکیل می دهند.
تمام اجزای OSGi در بستههایی با هم بستهبندی شدهاند که هر کدام شامل منابعی است که برای عملکرد نیاز دارند. بستههای نرمافزاری کاملاً مشخص هستند که چه چیزی از محیط نیاز دارند و چه تواناییهایی دارند.
مزایا
- برنامه های OSGi به مخازن بسته های خارجی دسترسی دارند.
- چارچوب اجازه طراحی سرویس گرا در سطح ماژول را می دهد.
- این امکان مدیریت نسخه ها و وابستگی های بسته نرم افزاری را علاوه بر استانداردسازی و ادغام کتابخانه های شخص ثالث آسان می کند.
- برنامهها با تغییر تقاضا سازگارتر، قابل حملتر هستند و مهندسی مجدد سریعتر هستند.
- A برنامه های تحت وب به لطف ادغام چارچوب با مدل برنامه نویسی Java EE، می توان به عنوان گروهی از بسته های OSGi نسخه شده با طول عمر پویا مستقر شد.
- این فریم ورک به جای اینکه به عنوان یک کتابخانه شخص ثالث به عنوان بخشی از برنامه نصب شود، مونتاژ اعلامی و آزمایش واحد کارآمد Spring Framework را در یک فرم استاندارد شده که به عنوان بخشی از زمان اجرا سرور برنامه ارائه می شود، ارائه می دهد.
- برای برنامههای شرکتی که از چندین بسته نسخهای با چرخه عمر پویا تشکیل شدهاند، این چارچوب انزوا را ارائه میکند.
- این شامل یک مخزن بسته یکپارچه است که میتواند بستههای مشترک مشترک و نسخهشدهای را که توسط چندین برنامه استفاده میشود، ذخیره کند و مانع از استقرار هر برنامه یک نسخه جداگانه از هر کتابخانه مشترک شود.
شروع کار با OSGi Felix Spring
دریافت منابع
با دانلود جدیدترین نسخه آپاچی کاراف از این سایت، می توانیم ماجراجویی OSGi خود را آغاز کنیم.
بر اساس Apache Felix، اجرای Apache از مشخصات OSGi، Apache Karaf بستری را برای برنامههای مبتنی بر OSGi فراهم میکند.
Karaf ویژگیهای مفید مختلفی را در بالای Felix ارائه میکند که به ما در آشنایی با OSGi کمک میکند، مانند یک رابط خط فرمان که ما را قادر میسازد با پلتفرم ارتباط برقرار کنیم.
نقطه ورود برای بسته ها
یک برنامه قبل از اجرا در یک محیط OSGi باید به عنوان یک بسته OSGi بسته بندی شود. علاوه بر این، نقطه ورود برنامه باید مشخص شود. این تابع استاندارد عمومی استاتیک void main (String[] args) نیست.
پس بیایید با ایجاد یک " شروع کنیمسلام جهان” برنامه مبتنی بر OSGi.
ما با ایجاد یک وابستگی پایه OSGi API شروع می کنیم:
زمان اجرا OSGi به وابستگی دسترسی خواهد داشت، بنابراین بسته نرم افزاری نیازی به آن ندارد. بنابراین، به عنوان عرضه شده مشخص می شود.
حالا بیایید کلاس ساده HelloWorld را ایجاد کنیم:
کلاس هایی که به عنوان نقاط ورودی برای بسته ها عمل می کنند باید رابط BundleActivator ارائه شده توسط OSGi را پیاده سازی کنند.
هنگامی که بسته حاوی این کلاس راه اندازی می شود، پلت فرم OSGi تابع start() را فراخوانی می کند. از طرف دیگر، کمی قبل از توقف بسته نرم افزاری، تابع stop() فراخوانی می شود.
فراموش نکنیم که هر باندل فقط می تواند یک BundleActivator داشته باشد. هر دو راه می توانند با استفاده از شی BundleContext ارائه شده با زمان اجرا OSGi ارتباط برقرار کنند.
ایجاد یک بسته نرم افزاری
با ایجاد تغییرات لازم، pom.xml را به یک بسته نرم افزاری OSGi واقعی تبدیل کنید.
ابتدا باید به وضوح بیان کنیم که هدف ما تولید یک بسته نرم افزاری است.
سپس، ما از پلاگین maven-bundle برای بسته بندی کلاس HelloWorld به عنوان یک بسته OSGi، توسط انجمن Apache Felix استفاده می کنیم:
مقادیر هدرهای OSGi که میخواهیم در فایل MANIFEST بسته قرار دهیم در بخش دستورالعملها مشخص شدهاند.
Bundle-Activator در واقع نام مناسب راه حل BundleActivator است که برای شروع و توقف بسته استفاده می شود. با کلاس تازه ایجاد شده سازگار است.
در حالی که هدر OSGi نیست، هدر Private-Package به افزونه دستور می دهد تا بسته را به بسته اضافه کند اما آن را برای سایر افزونه ها قابل دسترسی قرار ندهد. برای ایجاد بسته نرم افزاری باید از دستور نصب mvn استفاده شود.
نصب و اجرای باندل
بیایید کاراف را با اجرای این دستور شروع کنیم:
جایی که "KARAF HOME" به پوشه ای که کاراف در آن راه اندازی شده است اشاره دارد. هنگامی که فرمان Karaf console ظاهر می شود، می توانیم از دستور زیر برای نصب باندل استفاده کنیم:
با استفاده از مخزن محلی Maven به کاراف گفته می شود که بسته را بارگیری کند.
کرف با برگرداندن شناسه عددی بسته، آن را می نویسد. این شناسه ممکن است بسته به تعداد بستههایی که قبلاً نصب شدهاند متفاوت باشد. بسته نرم افزاری اکنون با موفقیت نصب شده است و دستور راه اندازی آن به شرح زیر است:
لحظه ای که بسته را راه اندازی می کنید، "Hello World by Jay" نمایش داده می شود. اکنون می توانیم باندل را متوقف کرده و با استفاده از:
کنسول "Goodbye World by Jay" را نمایش می دهد.
نتیجه
توسعه دهندگان به راحتی می توانند با استفاده از OSGi، عملکرد جدیدی را به یک برنامه وب موجود اضافه کنند و در عین حال آن را ایمن و جدا از سایر اجزای برنامه اصلی نگه دارند.
در این پست با OSGi از جمله نحوه عملکرد، مزایای آن و یک برنامه ساده آشنا شده ایم. گنجاندن OSGi در برنامه خود دشوار نیست.
کد نویسی مبارک!
پاسخ دهید