ওএসজি কী সমাধান করে?


279

আমি ওএসজিআই সম্পর্কে উইকিপিডিয়া এবং অন্যান্য সাইটে পড়েছি , তবে আমি সত্যিই বড় চিত্রটি দেখতে পাচ্ছি না। এটি বলে যে এটি একটি উপাদান-ভিত্তিক প্ল্যাটফর্ম এবং আপনি রানটাইমে মডিউলগুলি পুনরায় লোড করতে পারেন। এছাড়াও সর্বত্র দেওয়া "ব্যবহারিক উদাহরণ" হ'ল গ্রহগ্রহ প্লাগইন ফ্রেমওয়ার্ক।

আমার প্রশ্নগুলি হ'ল:

  1. ওএসজিআইয়ের পরিষ্কার ও সরল সংজ্ঞা কী?

  2. এটি কোন সাধারণ সমস্যাগুলি সমাধান করে?

"সাধারণ সমস্যা" বলতে বোঝায় যে সমস্যাগুলি আমরা প্রতিদিন মুখোমুখি হই, যেমন "ওএসজি আমাদের কাজগুলি আরও দক্ষ / মজা / সহজ করার জন্য কী করতে পারে?"

উত্তর:


95

ওএসজি এর উপাদান সিস্টেম আপনাকে কী সুবিধা দেয়?
ঠিক আছে, এখানে বেশ কয়েকটি তালিকা রয়েছে:

হ্রাস জটিলতা - ওএসজিআই প্রযুক্তির বিকাশ মানে বান্ডিলগুলি বিকাশ করা: ওএসজি উপাদানগুলি। বান্ডিলগুলি মডিউল। তারা তাদের গোপনীয়তাগুলি অন্য বান্ডিল থেকে আড়াল করে এবং সংজ্ঞায়িত পরিষেবার মাধ্যমে যোগাযোগ করে। ইন্টার্নাল লুকানো মানে পরে পরিবর্তনের আরও স্বাধীনতা। এটি কেবল ত্রুটির সংখ্যা হ্রাস করে না, এটি বান্ডিলগুলি বিকাশকে আরও সহজ করে তোলে কারণ সঠিক আকারের আকারের বান্ডিলগুলি সুস্পষ্ট সংজ্ঞায়িত ইন্টারফেসের মাধ্যমে কার্যকারিতার একটি অংশ প্রয়োগ করে। একটি আকর্ষণীয় ব্লগ রয়েছে যা ওএসজিআই প্রযুক্তি তাদের বিকাশের প্রক্রিয়াটির জন্য কী করেছিল তা বর্ণনা করে।

পুনঃব্যবহার - ওএসজিআই উপাদান মডেলটি একটি অ্যাপ্লিকেশনটিতে তৃতীয় পক্ষের অনেকগুলি উপাদান ব্যবহার করা খুব সহজ করে। ওপেন সোর্স প্রকল্পগুলির একটি ক্রমবর্ধমান সংখ্যক ওএসজিআইয়ের জন্য প্রস্তুত তাদের জেআর সরবরাহ করে। তবে বাণিজ্যিক গ্রন্থাগারগুলি প্রস্তুত বান্ডিল হিসাবেও উপলব্ধ হয়ে উঠছে।

বাস্তব জগতে -ওএসজি কাঠামোটি গতিশীল। এটি ফ্লাইতে বান্ডিলগুলি আপডেট করতে পারে এবং পরিষেবাগুলি আসতে এবং যেতে পারে। আরও traditionalতিহ্যবাহী জাভা ব্যবহার করে বিকাশকারীরা এটিকে একটি খুব সমস্যাযুক্ত বৈশিষ্ট্য হিসাবে দেখেন এবং সুবিধাটি দেখতে ব্যর্থ হন। তবে, দেখা যাচ্ছে যে আসল বিশ্বটি অত্যন্ত গতিশীল এবং গতিশীল পরিষেবাদি রয়েছে যা আসতে এবং যেতে পারে সেগুলি পরিষেবাগুলিকে অনেকগুলি বাস্তব বিশ্বের পরিস্থিতিগুলির জন্য এক নিখুঁত ম্যাচ করে তোলে। উদাহরণস্বরূপ, কোনও পরিষেবা নেটওয়ার্কের কোনও ডিভাইসকে মডেল করতে পারে। ডিভাইসটি সনাক্ত করা থাকলে পরিষেবাটি নিবন্ধভুক্ত। যদি ডিভাইসটি চলে যায় তবে পরিষেবাটি নিবন্ধভুক্ত। এই গতিশীল পরিষেবাদির মডেলটির সাথে মেলে এমন এক বিস্ময়কর বাস্তব বিশ্বের পরিস্থিতি। অ্যাপ্লিকেশনগুলি তাই তাদের নিজস্ব ডোমেনে পরিষেবা নিবন্ধের শক্তিশালী আদিমগুলিকে পুনরায় ব্যবহার করতে পারে (নিবন্ধভুক্ত করুন, পাবেন, একটি অভিব্যক্তিপূর্ণ ফিল্টার ভাষার সাথে তালিকা তৈরি করুন, এবং পরিষেবাগুলি প্রদর্শিত হবে এবং অদৃশ্য হওয়ার জন্য অপেক্ষা করুন) domain এটি কেবল লেখার কোড সংরক্ষণ করে না, এটি একটি উত্সর্গীকৃত সমাধানের জন্য কার্যকর করার চেয়ে বিশ্বব্যাপী দৃশ্যমানতা, ডিবাগিং সরঞ্জামগুলি এবং আরও কার্যকারিতাও সরবরাহ করে। এই জাতীয় গতিশীল পরিবেশে রাইটিং কোডগুলি দুঃস্বপ্নের মতো শোনাচ্ছে তবে ভাগ্যক্রমে এমন কিছু সমর্থন ক্লাস এবং ফ্রেমওয়ার্ক রয়েছে যা এখানকার ব্যথা সর্বাধিক গ্রহণ করে না if

সহজ স্থাপনা - ওএসজিআই প্রযুক্তি উপাদানগুলির জন্য কেবল একটি মান নয়। এটি কীভাবে উপাদানগুলি ইনস্টল এবং পরিচালনা করা হয় তাও নির্দিষ্ট করে। এই এপিআই ম্যানেজমেন্ট এজেন্ট সরবরাহ করতে অনেকগুলি বান্ডিল ব্যবহার করেছে। এই ম্যানেজমেন্ট এজেন্টটি কমান্ড শেল, একটি টিআর -69 ম্যানেজমেন্ট প্রোটোকল ড্রাইভার, ওএমএ ডিএম প্রোটোকল ড্রাইভার, অ্যামাজনের ইসি 2 এর জন্য ক্লাউড কম্পিউটিং ইন্টারফেস, বা আইবিএম টিভোলি ম্যানেজমেন্ট সিস্টেমের মতো সহজ হতে পারে। স্ট্যান্ডার্ডাইজড ম্যানেজমেন্ট এপিআই বিদ্যমান এবং ভবিষ্যতের সিস্টেমে ওএসজিআই প্রযুক্তি সংহত করতে খুব সহজ করে তোলে।

গতিশীল আপডেট - ওএসজিআই উপাদান মডেল একটি গতিশীল মডেল। পুরো সিস্টেমটি নামিয়ে না দিয়ে বান্ডিলগুলি ইনস্টল করা, শুরু, থামানো, আপডেট এবং আনইনস্টল করা যায়। অনেক জাভা বিকাশকারী বিশ্বাস করেন না এটি নির্ভরযোগ্যভাবে করা যেতে পারে এবং তাই প্রাথমিকভাবে এটি উত্পাদনে ব্যবহার করবেন না। যাইহোক, কিছু সময়ের জন্য এটি বিকাশে এটি ব্যবহার করার পরে, বেশিরভাগই বুঝতে শুরু করে যে এটি কার্যত কার্যকারী সময়কে উল্লেখযোগ্যভাবে হ্রাস করে।

অভিযোজিত - ওএসজিআই উপাদানটি মডেলগুলি উপাদানগুলির মিশ্রণ এবং মেলানোর জন্য গ্রাউন্ড আপ থেকে ডিজাইন করা হয়েছে। এটির জন্য প্রয়োজনীয় উপাদানগুলির নির্ভরতা নির্দিষ্ট করা দরকার এবং এমন পরিবেশে বাস করার জন্য উপাদানগুলির প্রয়োজন যেখানে তাদের alচ্ছিক নির্ভরতা সবসময় পাওয়া যায় না। ওএসজিআই সার্ভিস রেজিস্ট্রি হ'ল একটি গতিশীল রেজিস্ট্রি যেখানে বান্ডিলগুলি পরিষেবাগুলি নিবন্ধন করতে, পেতে এবং শুনতে পারে। এই গতিশীল পরিষেবা মডেলটি বান্ডিলগুলিকে সিস্টেমে কী ক্ষমতা উপলব্ধ তা নির্ধারণ করতে এবং তারা যে কার্যকারিতা সরবরাহ করতে পারে তা খাপ খাইয়ে নিতে সহায়তা করে। এটি কোডকে আরও নমনীয় এবং পরিবর্তনগুলিতে স্থিতিস্থাপক করে তোলে।

স্বচ্ছতা - বান্ডিল এবং পরিষেবাগুলি ওএসজি পরিবেশে প্রথম শ্রেণির নাগরিক। পরিচালনা এপিআই একটি বান্ডিলের অভ্যন্তরীণ অবস্থার পাশাপাশি এটি অন্যান্য বান্ডেলের সাথে কীভাবে সংযুক্ত তা অ্যাক্সেস সরবরাহ করে। উদাহরণস্বরূপ, বেশিরভাগ ফ্রেমওয়ার্কগুলি একটি কমান্ড শেল সরবরাহ করে যা এই অভ্যন্তরীণ অবস্থাটি দেখায়। অ্যাপ্লিকেশনগুলির অংশগুলি একটি নির্দিষ্ট সমস্যা ডিবাগ করার জন্য বন্ধ করা যেতে পারে, বা ডায়াগনস্টিক বান্ডিলগুলি আনা যেতে পারে millions লগিং আউটপুট এবং লম্বা পুনরায় বুটবারের কয়েক মিলিয়ন লাইনের দিকে না তাকানোর পরিবর্তে ওএসজিআই অ্যাপ্লিকেশনগুলি প্রায়শই একটি লাইভ কমান্ড শেল দিয়ে ডিবাগ করা যায়।

সংস্করণ - ওএসজিআই প্রযুক্তি জার নরকে সমাধান করে। জেআর হেল একটি সমস্যা যা লাইব্রেরি এ লাইব্রেরি বি; সংস্করণ = 2 নিয়ে কাজ করে তবে লাইব্রেরি সি কেবল বি; সংস্করণ = 3 নিয়ে কাজ করতে পারে। স্ট্যান্ডার্ড জাভাতে আপনি ভাগ্যের বাইরে রয়েছেন। ওএসজিআই পরিবেশে, সমস্ত বান্ডিলগুলি সাবধানে সংস্করণযুক্ত এবং কেবলমাত্র বান্ডিলগুলি যা সহযোগীতা করতে পারে একই শ্রেণীর জায়গাতে একসাথে তারযুক্ত হয়। এটি উভয় বান্ডিল এ এবং সি তাদের নিজস্ব লাইব্রেরির সাথে কাজ করতে দেয়। যদিও এই সংস্করণ ইস্যু সহ সিস্টেমগুলি ডিজাইন করার পরামর্শ দেওয়া হয়নি তবে এটি কিছু ক্ষেত্রে জীবন রক্ষাকারী হতে পারে।

সরল - ওএসজিআই এপিআই আশ্চর্যজনকভাবে সহজ। মূল এপিআই হ'ল একটি প্যাকেজ এবং 30 টিরও কম ক্লাস / ইন্টারফেস। এই মূল APIটি বান্ডিলগুলি লিখতে, সেগুলি ইনস্টল করতে, শুরু করতে, থামাতে, আপডেট করতে এবং আনইনস্টল করার জন্য যথেষ্ট এবং এতে সমস্ত শ্রোতা এবং সুরক্ষা শ্রেণি অন্তর্ভুক্ত। খুব কম এপিআই রয়েছে যে এত কম এপিআইয়ের জন্য এত কার্যকারিতা সরবরাহ করে।

ছোট - ওএসজিআই রিলিজ 4 ফ্রেমওয়ার্ক প্রায় 300KB জার ফাইলটিতে প্রয়োগ করা যেতে পারে। ওএসজি অন্তর্ভুক্ত করে কোনও অ্যাপ্লিকেশনটিতে যুক্ত কার্যকারিতার পরিমাণের জন্য এটি একটি ছোট ওভারহেড। OSGi অতএব ডিভাইসগুলির একটি বিশাল পরিসরে চালিত করে: খুব ছোট থেকে ছোট থেকে মেনফ্রেমে। এটি কেবলমাত্র একটি সর্বনিম্ন জাভা ভিএম চালানোর জন্য বলে এবং এর উপরে খুব সামান্য যোগ করে।

দ্রুত - ওএসজিআই কাঠামোর একটি প্রাথমিক দায়িত্ব বান্ডিল থেকে ক্লাসগুলি লোড করা। Traditionalতিহ্যগত জাভাতে, জারগুলি সম্পূর্ণরূপে দৃশ্যমান হয় এবং একটি রৈখিক তালিকায় থাকে। শ্রেণি অনুসন্ধানের জন্য এই (সাধারণত খুব দীর্ঘ, 150 টি অস্বাভাবিক নয়) তালিকার মাধ্যমে অনুসন্ধান করা প্রয়োজন। বিপরীতে, ওএসজি প্রি-ওয়্যারগুলি বান্ডিল দেয় এবং প্রতিটি বান্ডিলের জন্য জানে যে কোন বান্ডিলটি ক্লাস সরবরাহ করে। অনুসন্ধানের এই অভাবটি প্রারম্ভকালে একটি উল্লেখযোগ্য গতি বাড়ানোর কারণ।

অলস - সফ্টওয়্যারটিতে অলস ভাল এবং ওএসজিআই প্রযুক্তির কেবল তখনই প্রয়োজন হয় যখন জিনিসগুলি প্রয়োজন হয় কেবল তখন করার জন্য অনেকগুলি প্রক্রিয়া রয়েছে। উদাহরণস্বরূপ, বান্ডিলগুলি আগ্রহের সাথে শুরু করা যেতে পারে, তবে অন্যান্য বান্ডিলগুলি সেগুলি ব্যবহার করা হয় তখনই সেগুলি শুরু করতে কনফিগার করা যায়। পরিষেবাগুলি নিবন্ধভুক্ত করা যেতে পারে, তবে কেবলমাত্র সেগুলি ব্যবহৃত হয় তখনই তৈরি হয়। এই ধরণের অলস পরিস্থিতিতে যে অসাধারণ রানটাইম ব্যয় বাঁচাতে পারে তার জন্য বিশেষত্বগুলি বেশ কয়েকবার অনুকূলিত করা হয়েছে।

সুরক্ষিত - জাভার নীচে একটি খুব শক্তিশালী সূক্ষ্ম দানযুক্ত সুরক্ষা মডেল রয়েছে তবে এটি অনুশীলনে কনফিগার করতে খুব শক্ত হয়ে গেছে। ফলস্বরূপ যে সর্বাধিক সুরক্ষিত জাভা অ্যাপ্লিকেশনগুলি বাইনারি পছন্দ নিয়ে চলছে: কোনও সুরক্ষা বা খুব সীমাবদ্ধ ক্ষমতা নেই। ওএসজিআই সুরক্ষা মডেল সূক্ষ্ম দানাযুক্ত সুরক্ষা মডেলটিকে উপস্থাপন করে তবে বান্ডেল বিকাশকারীকে সহজেই অডিট করা ফর্মের মধ্যে অনুরোধ করা সুরক্ষা বিবরণ নির্দিষ্ট করে যখন পরিবেশের অপারেটর পুরোপুরি দায়িত্বে থাকে তার ব্যবহারযোগ্যতা উন্নত করে। সামগ্রিকভাবে, ওএসজি সম্ভবত সর্বাধিক সুরক্ষিত অ্যাপ্লিকেশন পরিবেশ সরবরাহ করে যা এখনও হার্ডওয়্যার সুরক্ষিত কম্পিউটিং প্ল্যাটফর্মের অল্প ব্যবহারযোগ্য।

ওএসজিআই পরিবেশে নন ইন্ট্র্রুসিভ - অ্যাপ্লিকেশন (বান্ডিলগুলি) তাদের নিজস্ব ছেড়ে দেওয়া হয়েছে। ওএসজিআইকে সীমাবদ্ধ না করে তারা ভিএমের কার্যত কোনও সুবিধা ব্যবহার করতে পারে। ওএসজির সেরা অনুশীলন হ'ল প্লেইন ওল্ড জাভা অবজেক্ট লিখতে এবং এই কারণে ওএসজি পরিষেবাগুলির জন্য কোনও বিশেষ ইন্টারফেসের প্রয়োজন নেই, এমনকি জাভা স্ট্রিং অবজেক্ট ওএসজি পরিষেবা হিসাবে কাজ করতে পারে। এই কৌশলটি অ্যাপ্লিকেশন কোডটিকে অন্য একটি পরিবেশে পোর্ট করা সহজ করে।

সর্বত্র চালায় - ঠিক আছে, এটি নির্ভর করে। জাভার মূল লক্ষ্য ছিল যে কোনও জায়গায় চালানো। স্পষ্টতই, সব জায়গাতেই সমস্ত কোড চালানো সম্ভব নয় কারণ জাভা ভিএম এর ক্ষমতা পৃথক। একটি মোবাইল ফোনের একটি ভিএম সম্ভবত কোনও ব্যাংকিং অ্যাপ্লিকেশন চালিত আইবিএম মেইনফ্রেমের মতো একই লাইব্রেরিগুলিকে সমর্থন করবে না। যত্ন নিতে দুটি সমস্যা আছে। প্রথমত, ওএসজিআই এপিআইগুলিতে এমন ক্লাস ব্যবহার করা উচিত নয় যা সমস্ত পরিবেশে উপলব্ধ নয়। দ্বিতীয়ত, যদি একটি বান্ডেলটি কোড থাকে যা কার্যকর করা পরিবেশে উপলব্ধ না হয় তবে এটি আরম্ভ করা উচিত নয়। ওএসজি স্পেসিফিকেশনগুলিতে এই দুটি বিষয়ই যত্ন নেওয়া হয়েছে।

সূত্র: www.osgi.org/ প্রযুক্তিবিদ / WYOSGi


2
আমার কাছে মনে হয় যেন কেউ কেবল এসওএ (রাষ্ট্রবিহীন / রাষ্ট্রীয়) ব্যবহার করে কমপক্ষে কিছু সুবিধা অর্জন করতে পারে। আমি যখন কোনও উপাদানটির একটি প্যাচড / আপডেট হওয়া সংস্করণটি কোনও আলাদা (সংস্করণযুক্ত) শেষ-পয়েন্টে স্থাপন করি তখন আমি কেবল নির্ভরযোগ্য উপাদানটি রাখতে পারি, নতুন প্রান্তে প্যাচড পরিষেবাটি ব্যবহার করতে পারি। যেহেতু আমি একই সাথে পুরানো সংস্করণ এবং নতুন সংস্করণ স্থাপন এবং চলমান উভয়ই রাখতে পারি, তাই নির্ভরযোগ্য উপাদানটি পুরানো সংস্করণ এবং প্রয়োজন মতো নতুন সংস্করণ উভয়ের বিভিন্ন অংশ ব্যবহার করতে পারি।
মাইক এম

1
দেখে মনে হচ্ছে যে লোকেরা মাইক্রোসার্ফেসগুলি করতে এবং এসওএ (আশা করি) ওএসজি-এর চেয়ে 20% বেশি কার্যকারিতা পাওয়ার জন্য অনেক সমস্যায় পড়েছে। সংস্থাগুলি দু'বার ভাবা উচিত ওএসজি এত অল্প অতিরিক্ত কাজের জন্য কতটা দেয়। একক প্রক্রিয়াতে একই জেভিএমের সমস্ত পরিষেবা, যেখানে একাধিক পরিষেবা অফলাইনে নেওয়া যেতে পারে বা প্রয়োজন অনুযায়ী আপগ্রেড করা যেতে পারে।
টেডি

ওএসজি বান্ডিলগুলি লোকেদের যুগে যুগে খুঁজছিল এমন অধরা 'উপাদান' এর নিকটতম বিমূর্ততা হতে পারে!
টেডি

এসওএ এবং মাইক্রোসার্ভেসিসগুলি কিছু সুবিধাগুলি সরবরাহ করতে পারে তবে অনেক বড় ব্যয়ে। উভয় ক্ষেত্রেই সমস্ত যোগাযোগ নেটওয়ার্কের মাধ্যমে ঘটে যা স্থানীয় কলগুলির তুলনায় খুব ব্যয়বহুল। এসওএ এবং মাইক্রোসার্ভিসেসে সংস্করণগুলি পরিচালনা করাও বেশ দুঃস্বপ্ন। তুলনামূলকভাবে একটি ওএসজিআই পরিষেবা কল করা কোনও জাভা পদ্ধতির কলের মতো সস্তা।
খ্রিস্টান স্নাইডার

90

আমি ওএসজি থেকে নিম্নলিখিত সুবিধা পেয়েছি:

  • প্রতিটি প্লাগইন হ'ল সংস্করণযুক্ত আর্টিক্ট যার নিজস্ব ক্লাসলোডার রয়েছে।
  • প্রতিটি প্লাগইন এতে থাকা নির্দিষ্ট জার এবং অন্যান্য নির্দিষ্ট সংস্করণযুক্ত প্লাগ-ইন উভয়ের উপরই নির্ভর করে।
  • সংস্করণ এবং বিচ্ছিন্ন শ্রেণি লোডারগুলির কারণে, একই শিল্পকর্মের বিভিন্ন সংস্করণ একই সাথে লোড করা যায়। আপনার অ্যাপ্লিকেশনটির একটি উপাদান যদি প্লাগইনটির একটি সংস্করণে নির্ভর করে এবং অন্যটি অন্য সংস্করণের উপর নির্ভর করে তবে সেগুলি উভয় একই সময়ে লোড হতে পারে।

এটির সাহায্যে, আপনি চাহিদার উপরে লোড হওয়া সংস্করণযুক্ত প্লাগইন শিল্পকর্মগুলির সেট হিসাবে আপনার অ্যাপ্লিকেশনটি কাঠামো করতে পারেন। প্রতিটি প্লাগইন একটি স্বতন্ত্র উপাদান। মাভেন আপনাকে যেমন আপনার বিল্ড গঠনে সহায়তা করে তাই এটি পুনর্বারযোগ্য এবং এটির দ্বারা নির্মিত শিল্পকর্মগুলির নির্দিষ্ট সংস্করণগুলির একটি সেট দ্বারা সংজ্ঞায়িত করা হয়েছে, ওএসজি আপনাকে রানটাইমে এটি করতে সহায়তা করে।


14
এই শক্তিশালী ভার্সন মেকানিজমের বৃহত্তম সুবিধাগুলির মধ্যে একটি হ'ল নির্ভরতা মোতায়েনের সময় যাচাই করা হয়, যার অর্থ আপনি রান সময় কোনও ক্লাসডেফফাউন্ডআরিয়ার পরিবর্তে স্থাপনার সময়ে অমীমাংসিত নির্ভরতা ত্রুটি পেয়ে যান। মডিউল সিস্টেমটি বাদে ওএসজি সার্ভিস স্তরটি উল্লেখযোগ্য। এটি শুরু করা তত সহজ নয় কারণ এটি আপনার আর্কিটেকচারকে প্রভাবিত করে (এবং এটি ব্যবহার করা সর্বদা যথাযথ নয়) তবে আপনি এটি গ্রহণ করার পরে এটি একটি খুব শক্তিশালী সিস্টেম।
বেরেন্ড

58

আমি ওএসজিআই মডিউলগুলির হটপ্লাগ্যাবিলিটি (কমপক্ষে বর্তমানে) সম্পর্কে খুব বেশি চিন্তা করি না। এটি আরও প্রয়োগযোগ্য মডুলারিটি ক্লাসপথে কোনও সময়ে লক্ষ লক্ষ "পাবলিক" ক্লাস উপলভ্য না হওয়া বিজ্ঞপ্তি নির্ভরতা থেকে ভাল রক্ষা করে: আপনার জাভা ভাষাগুলি "পাবলিক" নির্মাণের ক্ষেত্রে নয়, আপনার লাইব্রেরির ক্ষেত্রেও আপনাকে আপনার পাবলিক ইন্টারফেস সম্পর্কে সত্যই ভাবতে হবে / মডিউল: আপনি অন্যদের জন্য উপলব্ধ করতে চান যে উপাদানগুলি (ঠিক)? আপনার কার্যকারিতা বাস্তবায়নের জন্য ইন্টারফেসগুলি (অন্যান্য মডিউলগুলির) কী (ঠিক)?

এটি দুর্দান্ত, হটপ্লাগটি এটির সাথে আসে তবে আমি হটপ্লাগ্যাবিলিটির সমস্ত সংমিশ্রণের পরীক্ষার চেয়ে আমার সাধারণ অ্যাপ্লিকেশনগুলি পুনরায় চালু করতে চাই ...


9
গুইস এবং প্যাকেজগুলি ব্যবহার করে আপনি একই অর্জন করতে পারবেন, কেবলমাত্র ইন্টারফেস এবং মডিউলগুলি রফতানি করে এবং সমস্ত কিছু প্যাকেজ-ব্যক্তিগত হিসাবে চিহ্নিত করতে পারেন
পাবলো ফার্নান্দেজ

20
  • আপনি, অ্যানালগিকভাবে বলতে গেলে, আপনার গাড়ির মোটরটি এটি বন্ধ না করেই পরিবর্তন করতে পারবেন।
  • আপনি গ্রাহকদের জন্য জটিল সিস্টেমগুলি কাস্টমাইজ করতে পারেন। গ্রহণের শক্তি দেখুন।
  • আপনি সম্পূর্ণ উপাদান পুনরায় ব্যবহার করতে পারেন। শুধু অবজেক্টের চেয়ে ভাল।
  • আপনি উপাদান ভিত্তিক অ্যাপ্লিকেশন বিকাশ করতে একটি স্থিতিশীল প্ল্যাটফর্ম ব্যবহার করুন। এর সুবিধাগুলি বিশাল।
  • আপনি ব্ল্যাক বক্স ধারণার সাথে উপাদানগুলি তৈরি করতে পারেন। অন্যান্য উপাদানগুলিকে লুকানো ইন্টারফেস সম্পর্কে জানতে হবে না, সেগুলি কেবল প্রকাশিত ইন্টারফেসগুলি দেখতে পারে।
  • আপনি একই সিস্টেমে বেশ কয়েকটি সমান উপাদান ব্যবহার করতে পারেন, তবে অ্যাপ্লিকেশনকে আপস না করে বিভিন্ন প্রকাশে in ওএসজি জার হেল সমস্যা সমাধান করে।
  • ওএসজিআই দিয়ে আপনি সিবিডি সহ আর্কিটেক্ট সিস্টেমগুলিতে চিন্তাভাবনা তৈরি করেন

জাভা ব্যবহার করে এমন প্রত্যেকের জন্য উপলব্ধ অনেকগুলি সুবিধা রয়েছে (আমি এখনই এগুলি স্মরণ করিয়ে দিয়েছি)।


15

স্বচ্ছতার জন্য সম্পাদিত। আমার চেয়ে ওএসজি পৃষ্ঠা একটি আরও সহজ সরল উত্তর দিয়েছে

একটি সহজ উত্তর: একটি ওএসজিআই পরিষেবা প্ল্যাটফর্ম নেটওয়ার্কযুক্ত পরিষেবাদিগুলির সহযোগিতা করার জন্য একটি প্রমিত, উপাদান-ভিত্তিক কম্পিউটিং পরিবেশ সরবরাহ করে। এই স্থাপত্যটি বিল্ডিং, রক্ষণাবেক্ষণ এবং অ্যাপ্লিকেশন স্থাপনের সামগ্রিক জটিলতাকে উল্লেখযোগ্যভাবে হ্রাস করে। ওএসজিআই সার্ভিস প্ল্যাটফর্মটি পুনরায় আরম্ভের প্রয়োজন ছাড়াই বিভিন্ন নেটওয়ার্কের ডিভাইসে রচনাটি পরিবর্তনশীলভাবে পরিবর্তন করতে ফাংশন সরবরাহ করে।

একটি একক অ্যাপ্লিকেশন কাঠামোতে, Eclipse IDE বলুন, আপনি যখন নতুন প্লাগইন ইনস্টল করেন তখন পুনরায় চালু করা কোনও বড় বিষয় নয়। ওএসজিআই বাস্তবায়ন সম্পূর্ণরূপে ব্যবহার করে আপনার রানটাইমের সময় প্লাগইন যুক্ত করতে, নতুন কার্যকারিতা পেতে সক্ষম হওয়া উচিত, তবে একেবারে গ্রহনটি পুনরায় আরম্ভ করতে হবে না।

আবার, প্রতিদিনের জন্য কোনও বড় বিষয় নয়, ছোট অ্যাপ্লিকেশন ব্যবহার।

তবে, আপনি যখন মাল্টি কম্পিউটার, বিতরণ অ্যাপ্লিকেশন ফ্রেমওয়ার্কগুলিতে সন্ধান শুরু করেন, তখনই এটি আকর্ষণীয় হতে শুরু করে। সমালোচনামূলক সিস্টেমগুলির জন্য আপনার যখন 100% আপটাইম থাকতে হয় তখন রানটাইমের অংশগুলিতে হটসপ পরিবর্তন বা নতুন কার্যকারিতা যুক্ত করার ক্ষমতাটি কার্যকর। মঞ্জুর, বেশিরভাগ অংশে এখন এটি করার ক্ষমতা রয়েছে তবে ওএসজি সাধারণ ইন্টারফেসের সাহায্যে সবকিছুকে একটি সুন্দর ছোট ফ্রেমওয়ার্কে বান্ডিল করার চেষ্টা করছে।

ওএসজিআই কি সাধারণ সমস্যাগুলি সমাধান করে, আমি সে সম্পর্কে নিশ্চিত নই। আমি বলতে চাইছি, এটি পারে তবে সহজ সমস্যাগুলির জন্য ওভারহেড এটি উপযুক্ত নাও হতে পারে। আপনি যখন বৃহত্তর, নেটওয়ার্কযুক্ত, অ্যাপ্লিকেশনগুলির সাথে ডিল করতে শুরু করছেন তখন এটি বিবেচনার বিষয়।


আপনি কি বলছেন যে ওএসজিআই বিতরণ করা পরিবেশে পরিষেবা আবিষ্কারের জন্য একটি আন্তঃআভাভিএম প্রক্রিয়া সরবরাহ করে? আমার নিজের প্রশ্ন ( stackoverflow.com/questions/375725/... ) উত্তর দেওয়া হয়েছে যেন OSGi একক VM- র হয়
oxbow_lakes

"বিভিন্ন নেটওয়ার্কের ডিভাইসে রচনাটি পরিবর্তনশীলভাবে পরিবর্তন" এর মধ্যে "নেটওয়ার্ক" বলতে আপনার অর্থ কী?
থিলো

মাইক্রোসার্ভেসিস কি একই সমস্যাগুলি সমাধান করছে না?
বিভা

12

ওএসজি-তে আমার বাদাম চালানো কয়েকটি জিনিস:

1) ইমপিলিটিশনগুলি এবং তাদের প্রসঙ্গের লোডারগুলির কাছে তাদের প্রচুর পরিমাণে কৌতুহল রয়েছে এবং কিছুটা অ্যাসিঙ্ক হতে পারে (আমরা সঙ্গমের অভ্যন্তরে ফেলিক্স ব্যবহার করি)। একটি খাঁটি বসন্তের তুলনায় (কোনও ডিএম নয়) যেখানে [মূল] সমস্ত কিছু সিঙ্কের মধ্য দিয়ে চলছে।

2) গরম লোডের পরে ক্লাসগুলি সমান নয়। বলুন, উদাহরণস্বরূপ আপনার হাইবারনেটে একটি ট্যাঙ্গোসোল ক্যাশে স্তর রয়েছে। এটি ওএসজি স্কোপের বাইরে ফোরক.ক্লাসে পূর্ণ। আপনি একটি নতুন বয়ামকে হটলোড করুন, এবং কাঁটাচোচ পরিবর্তন হয়নি। শ্রেণি [কাঁটাচামচ]! = শ্রেণি [কাঁটাচামচ]। এটি একই অন্তর্নিহিত কারণে সিরিয়ালাইজেশনের সময় উপস্থিত হয়।

3) ক্লাস্টার।

আপনি এই জিনিসগুলি ঘিরে কাজ করতে পারেন তবে এটি একটি প্রধান প্রধান ব্যথা এবং আপনার আর্কিটেকচারকে ত্রুটিযুক্ত দেখায়।

এবং আপনারা যারা হটপ্লাগিংয়ের বিজ্ঞাপন দিচ্ছেন .. ওএসজি'র # 1 ক্লায়েন্ট? অন্ধকার। বান্ডিলটি লোড করার পরেগ্রহণ কী করে?

এটি আবার চালু হয়।


ওএসজিআই নির্ভরতা গ্রাফ সেই নতুন বান্ডেলের দ্বারা ভেঙে যাওয়ার কারণে অলিপসটি বুট নাও হতে পারে তা উল্লেখ করতে ভুলবেন না।
মার্টিন ভিসনি

6

ওএসজি আপনার কোড নিক্ষেপ করে NoClassDefFoundErrorএবং ClassNotFoundExceptionকোনও আপাত কারণ ছাড়াই (সম্ভবত সম্ভবত আপনি ওএসজিআই কনফিগারেশন ফাইলে কোনও প্যাকেজ রফতানি করতে ভুলে গেছেন); এটি ক্লাসলয়েডারস রয়েছে বলে এটি আপনার শ্রেণিকে com.example.Fooকাস্ট করা হতে ব্যর্থ করতে পারে com.example.Fooযেহেতু এটি দুটি পৃথক ক্লাস লোডার দ্বারা লোড হওয়া দুটি ভিন্ন শ্রেণি। এটি Eclipse প্লাগইন ইনস্টল করার পরে আপনার Eclipse বুটটিকে OSGi কনসোল হিসাবে তৈরি করতে পারে।

আমার জন্য, ওএসজি কেবল জটিলতা যুক্ত করেছে (কারণ এটি আমার জন্য আরও একটি মানসিক মডেল যুক্ত করেছে), ব্যতিক্রমের কারণে বিরক্তি যোগ করেছে; গতিশীলতার এটি "অফারগুলি" এর জন্য আমার সত্যিই প্রয়োজন ছিল না। এটি অসাধারণ ছিল যেহেতু এটিতে সমস্ত মডিউলগুলির জন্য ওএসজিআই বান্ডিল কনফিগারেশন প্রয়োজন; এটি অবশ্যই সহজ ছিল না (বৃহত্তর প্রকল্পে)।

আমার খারাপ অভিজ্ঞতার কারণে, আমি সেই দৈত্য থেকে দূরে থাকি, আপনাকে অনেক ধন্যবাদ। আমি বরং জার নির্ভরতা জাহান্নামে ভুগব, যেহেতু ক্লাসলোডার নরক ওএসজি পরিচয় করিয়ে দেওয়ার চেয়ে সেই পথটি আরও সহজেই বোধগম্য।


5

আমি এখনও ওএসজিআইয়ের "ফ্যান" হতে পারি না ...

আমি ফরচুন 100 সংস্থায় একটি এন্টারপ্রাইজ অ্যাপ্লিকেশন নিয়ে কাজ করছি। সম্প্রতি, আমরা যে পণ্যটি ব্যবহার করি এটি একটি ওএসজি বাস্তবায়নে "আপগ্রেড" হয়েছে।

স্থানীয় সিবিএ মোতায়েন শুরু করা হচ্ছে ... [2/18/14 8: 47: 23: 727 EST] 00000347 চেকফোর্স ওসিস

অবশেষে মোতায়েন করা হয়েছে এবং "নিম্নলিখিত বান্ডিলগুলি শান্ত করে আবার পুনঃসূচনা করা হবে" [2/18/14 9: 38: 33: 108 EST] 00000143 AriesApplicat I CWSAI0054I: আবেদনের জন্য আপডেট অপারেশনের অংশ হিসাবে

৫১ মিনিট ... প্রতিটি সময় কোড পরিবর্তন হয় ... পূর্ববর্তী সংস্করণ (নন-ওএসজিআই) পুরানো বিকাশ মেশিনে 5 মিনিটেরও কম সময়ে স্থাপন করা হবে।

16 গিগ র‌্যাম এবং 40 ফ্রি জিগ ডিস্ক এবং ইন্টেল i5-3437U 1.9 গিগাহার্টজ সিপিইউ সহ একটি মেশিনে

এই আপগ্রেডের "বেনিফিট" উন্নত (উত্পাদন) মোতায়েন উন্নত হিসাবে বিক্রি হয়েছিল - এমন একটি ক্রিয়াকলাপ যা আমরা বছরে প্রায় 2-4 ছোট ফিক্স মোতায়েনের সাথে বছরে প্রায় 4 বার করি। 15 জন ব্যক্তির জন্য প্রতিদিন 45 মিনিট যুক্ত করা (কিউএ এবং বিকাশকারী) আমি কখনও ন্যায়সঙ্গত হওয়ার কথা ভাবতে পারি না। বড় এন্টারপ্রাইজ অ্যাপ্লিকেশনগুলিতে, যদি আপনার অ্যাপ্লিকেশনটি মূল অ্যাপ্লিকেশন হয়, তবে তা পরিবর্তন করা ঠিক ঠিক তাই (ছোট পরিবর্তনগুলি সুদূরপ্রসারী প্রভাবগুলির সম্ভাবনা রয়েছে - অবশ্যই পুরো উদ্যোগের গ্রাহকদের সাথে যোগাযোগ করা এবং পরিকল্পনা করা উচিত), একটি স্মৃতিসৌধ ক্রিয়াকলাপ - এর জন্য ভুল স্থাপত্যের জন্য OSGi। যদি আপনার অ্যাপ্লিকেশনটি কোনও এন্টারপ্রাইজ অ্যাপ্লিকেশন না হয় - অর্থাত্ প্রতিটি গ্রাহকের নিজস্ব নিজস্ব তৈরি সিডিউল মডিউল থাকতে পারে তাদের নিজস্ব সিলোড ডাটাবেসে ডেটা সিল মারতে এবং অনেকগুলি অ্যাপ্লিকেশন হোস্ট করে এমন একটি সার্ভারে চলমান, তবে সম্ভবত ওএসজি দেখুন look অন্তত,


4
কার্যত কোনও ওভারহেড না থাকায় ওএসজিআই 5 থেকে 51 মিনিটের মধ্যে কোনও স্থাপনার কারণ হতে পারে না। প্রারম্ভকালীন সময়ের এই বৃদ্ধি অবশ্যই অন্য কোনও কারণে বা অ্যাক্টিভেটরগুলি সিঙ্ক্রোনালিভাবে আরম্ভ করে সিরিয়ালাইজেশন করার মাধ্যমে ঘটতে পারে। এটি ওএসজির দোষ নয় কারণ সাধারণ লোকেরা খুব কম সময় শুরু করে get
পিটার ক্রিয়েন্স

আকর্ষণীয় উত্তর। আমি এখন ওএসজিআই সম্পর্কে পড়ছি ... হ্যাঁ দেরী আগত। তবে আমার উদ্বেগ একটি এন্টারপ্রাইজ প্রসঙ্গে ডেটা সম্পর্কে। অনুরূপ ইস্যুটি আমারও মাইক্রোসার্ভেসিসের সাথে আছে।
বিল রোজমাস

4

যদি জাভা ভিত্তিক অ্যাপ্লিকেশনটির জেভিএম বন্ধ না করে মডিউলগুলি (অ্যাপ্লিকেশনের বেস কার্যকারিতা বাড়ানো) যোগ করা বা অপসারণের প্রয়োজন হয়, ওএসজিআই নিযুক্ত করা যেতে পারে। সাধারণত যদি জেভিএম বন্ধ করার ব্যয় বেশি হয় কেবল আপডেট বা কার্যকারিতা বাড়ানোর জন্য।

উদাহরণ :

  1. গ্রহন : প্লাগইনগুলি ইনস্টল, আনইনস্টল, আপডেট এবং আন্তঃনির্ভরশীলতার জন্য প্ল্যাটফর্ম সরবরাহ করে।
  2. এইএম : ডাব্লুসিএম অ্যাপ্লিকেশন, যেখানে কার্যকারিতা পরিবর্তনটি ব্যবসায় পরিচালিত হবে, যা রক্ষণাবেক্ষণের জন্য সময় সাশ্রয় করতে পারে না।

দ্রষ্টব্য : স্প্রিং ফ্রেমওয়ার্কটি লেনদেন ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য বা এই লাইনের কোনও বিনয়ের জন্য অপ্রয়োজনীয় জটিলতা হিসাবে বিবেচনা করে ওএসজিআই স্প্রিং বান্ডিলগুলিকে সমর্থন করা বন্ধ করে দিয়েছে। প্ল্যাটফর্ম তৈরির মতো বড় কিছুতে একেবারে প্রয়োজনীয় না হলে আমি ব্যক্তিগতভাবে ওএসজিআইকে বিবেচনা করি না।


3

আমি প্রায় 8 বা তত বছর ধরে ওএসজিআইয়ের সাথে কাজ করছি এবং আমার বলতে হবে যে আপনার যদি ব্যবসায়ের প্রয়োজন হয় তবেই রানটাইমে কোনও উপাদান আপডেট করতে, অপসারণ করতে, ইনস্টল করতে বা প্রতিস্থাপন করতে হবে। এর অর্থ হ'ল আপনার একটি মডুলার মানসিকতা থাকা উচিত এবং বোঝা উচিত যে মডুলারিটির অর্থ। কিছু যুক্তি রয়েছে যে ওএসজি হালকা ওজনের - হ্যাঁ এটি সত্য তবে আরও কিছু ফ্রেমওয়ার্ক রয়েছে যা হালকা এবং বজায় রাখা এবং বিকাশ করা সহজ। একই জাভা ব্লাহ ব্লাহ নিরাপদে যায়।

ওএসজিআইকে সঠিকভাবে ব্যবহারের জন্য একটি দৃ architect় আর্কিটেকচারের প্রয়োজন এবং ওএসজি-সিস্টেমটি তৈরি করা বেশ সহজ যে কোনও ওএসজি জড়িত না হয়ে কেবল স্বতন্ত্রভাবে চালিত-জার হতে পারে।


2

ওএসজিআই নিম্নলিখিত সুবিধা প্রদান করে:

Java জাভা ভিত্তিক একটি বহনযোগ্য এবং সুরক্ষিত কার্যকর পরিবেশ environment

Service একটি পরিষেবা পরিচালন ব্যবস্থা, যা পরিষেবা গ্রাহকরা থেকে ডান্ডল পরিষেবা পরিষেবা সরবরাহকারীকে বান্ডিল জুড়ে এবং পরিষেবাগুলি ভাগ করে নেওয়ার জন্য ব্যবহার করা যেতে পারে

Dyn একটি ডায়নামিক মডিউল সিস্টেম, যা জাভা মডিউলগুলি গতিশীলভাবে ইনস্টল এবং আনইনস্টল করতে ব্যবহার করা যেতে পারে, যা ওএসজিআইকে বান্ডিল বলে

Light একটি হালকা ও স্কেলযোগ্য সমাধান


1

এটি মোবাইলের মিডলওয়্যার এবং অ্যাপ্লিকেশনগুলির অতিরিক্ত বহনযোগ্যতা আনতেও ব্যবহৃত হচ্ছে। উদাহরণস্বরূপ উইনমো, সিম্বিয়ান, অ্যান্ড্রয়েডের জন্য মোবাইল সাইড উপলব্ধ। ডিভাইস বৈশিষ্ট্যগুলির সাথে সংহত হওয়ার সাথে সাথে খণ্ডিত হতে পারে।


1

খুব কমপক্ষে, ওএসজি আপনাকে মডুলারালিটি, কোড পুনরায় ব্যবহার, সংস্করণকরণ এবং সাধারণভাবে কোনও প্রকল্পের নদীর গভীরতানির্ণয় সম্পর্কে ভাবেন makes


এটি আপনাকে এটি সম্পর্কে ভাবতে বাধ্য করে না, এটি আপনাকে কেবল বিভ্রান্ত করতে পারে, এটি একটি মিথ্যা যে এটি সমস্ত সমস্যার সমাধান করে (কেবল আপনি তাদের সমাধান করতে পারেন), আপনার প্রকল্পটি ~ 50 প্লাগইনের চেয়ে বড় হলে এটি নির্ভরতা নরকে ডেকে আনে এবং সাধারণত আপনার অনেকগুলি ক্লাসলোডার কৌশল রয়েছে। সুতরাং আপনার কোডটি অনেক বেশি অগোছালো, কারণ আপনাকে কিছু অ্যাসি হ্যাকিং করতে হবে এবং কোডটি বুঝতে আপনার দলের সমস্ত ডিভসকে সেই হ্যাকগুলি বুঝতে হবে। এই প্রভাবটি এত বড় যে এটি আপনার আর্কিটেকচারকে এমনভাবে প্রভাবিত করে যে আপনি নিজের কোডটিতে খুব খারাপ কাজ করেন, এটি একটি নরক।
ক্রিজিসটফ সিচোকি

1

অন্যরা ইতিমধ্যে সুবিধাগুলির বিস্তারিতভাবে রূপরেখা জানিয়েছে, আমি এখানে ওএসজি দেখেছি বা ব্যবহার করেছি এমন ব্যবহারিক ব্যবহারের বিবরণগুলি ব্যাখ্যা করছি।

  1. আমাদের একটি অ্যাপ্লিকেশনটিতে, আমাদের ইভেন্ট ভিত্তিক প্রবাহ রয়েছে এবং ওএসজিআই প্ল্যাটফর্মের ভিত্তিতে প্লেনগুলি প্রবাহকে সংজ্ঞায়িত করা হয়েছে তাই আগামীকাল যদি কোনও ক্লায়েন্ট আলাদা / অতিরিক্ত প্রবাহ চায় তবে তাকে কেবল আরও একটি প্লাগইন স্থাপন করতে হবে, আমাদের কনসোল থেকে এটি কনফিগার করতে হবে এবং সে সম্পন্ন হয়েছে is ।
  2. এটি বিভিন্ন স্টোর সংযোজক মোতায়েনের জন্য ব্যবহৃত হয়, উদাহরণস্বরূপ, ধরুন আমাদের কাছে ইতিমধ্যে ওরাকল ডিবি সংযোগকারী রয়েছে এবং আগামীকাল মংডোড সংযোগের প্রয়োজন পরে একটি নতুন সংযোজক লিখুন এবং এটি স্থাপন করুন এবং কনসোলের মাধ্যমে বিশদটি কনফিগার করুন এবং আবার আপনার কাজ শেষ হয়েছে। সংযোগকারীদের স্থাপনা ওএসজিআই প্লাগইন ফ্রেমওয়ার্ক দ্বারা পরিচালিত হয়।

1

এর অফিসিয়াল সাইটে ইতিমধ্যে একটি বেশ দৃ conv়প্রত্যয়ী বক্তব্য রয়েছে, আমি উল্লেখ করতে পারি

ওএসজিআই প্রযুক্তিটি এতটা সফল হওয়ার মূল কারণটি হ'ল এটি একটি খুব পরিপক্ক উপাদান সিস্টেম সরবরাহ করে যা বাস্তবে একটি আশ্চর্যজনক পরিবেশে কাজ করে। ওএসজিআই কম্পোনেন্ট সিস্টেমটি আসলে আইডিই (এক্স্লিপস), অ্যাপ্লিকেশন সার্ভার (গ্লাস ফিশ, আইবিএম ওয়েবস্পিয়ার, ওরাকল / বিইএল্লোগিক, জোনাস, জেবস), অ্যাপ্লিকেশন ফ্রেমওয়ার্ক (স্প্রিং, গুইস), শিল্প অটোমেশন, আবাসিক গেটওয়েস, ইত্যাদির মতো অত্যন্ত জটিল অ্যাপ্লিকেশনগুলি তৈরি করতে ব্যবহৃত হয়, ফোন এবং আরও অনেক কিছু।

বিকাশকারী হিসাবে সুবিধা হিসাবে?

বিকাশকারী: ওএসজি আজকের বৃহত আকারের বিতরণ সিস্টেমগুলির পাশাপাশি ছোট, এম্বেড থাকা অ্যাপ্লিকেশনগুলির জন্য একটি মডুলার আর্কিটেকচার সরবরাহ করে জটিলতা হ্রাস করে। ইন-হাউস এবং অফ-শেল্ফ মডিউলগুলি থেকে বিল্ডিং সিস্টেমগুলি জটিলতা হ্রাস করে এবং এইভাবে উন্নয়ন এবং রক্ষণাবেক্ষণ ব্যয়। ওএসজিআই প্রোগ্রামিং মডেল উপাদান-ভিত্তিক সিস্টেমগুলির প্রতিশ্রুতি উপলব্ধি করে।

ওএসজিআই ব্যবহারের সুবিধাগুলিতে দয়া করে বিশদটি দেখুন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.