প্লাগেবল সফ্টওয়্যার তৈরির ক্ষেত্রে কেউ কীভাবে যেতে পারে?


20

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

আপনার কী বিবেচনায় নিতে হবে, এগুলির জন্য কী নকশার নিদর্শন রয়েছে?


পর্যবেক্ষক, মধ্যস্থতা, দায়বদ্ধতার কমান্ড বিজ্ঞাপন চেইনের মতো
ধরণগুলি মাথায়

3
@ এমচএল: দয়া করে আপনার উত্তরটি কোনও মন্তব্য হিসাবে নয়, উত্তর হিসাবে পোস্ট করুন।
এস .লট


আমি এটির পক্ষে যথেষ্ট পরিমাণে বিশদ না বলে মনে করি
Mchl

@ এমচএল: "যথেষ্ট বিশদ নয়"? তাহলে কেন এলোরে মন্তব্য? এটি পরিষ্কারভাবে একটি উত্তর। উত্তর হিসাবে উত্তর পোস্ট করুন।
এসলট

উত্তর:


13

এটি আপনার প্ল্যাটফর্মের উপর নির্ভর করে তবে কিছু সাধারণ বিষয় মনে রাখবেন

সংস্করণ আপনি যদি আপনার অ্যাপ্লিকেশন আপডেট করেন তবে কী হয় সমস্ত পুরানো প্লাগইনগুলি অপ্রচলিত হয়ে যায় (ফায়ারফক্স সমস্যা)

বিচ্ছিন্নতা প্লাগইনগুলি তারা যা খুশি করতে পারে? আপনি কি সবসময় তাদের বিশ্বাস করেন? অথবা আপনার কোনও ধরণের স্যান্ডবক্সে চালানোর দরকার রয়েছে এবং অনুমতিগুলির জন্য অনুরোধ করুন।

আপডেটগুলি কীভাবে আপনি প্লাগইন-আপডেটগুলি পরিচালনা করবেন?

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

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

এক্সটেনসিবিলিটি আপনার কোন দিকগুলি প্রসারিত করতে হবে? আপনি কীভাবে প্লাগিনগুলির সম্ভাব্যতা সর্বাধিক করবেন না এপিআই অস্বস্তিকর হয়ে ওঠে।

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

আর একটি ভাল মানসিকতা "প্লাগইন এই সমস্ত জিনিস (কোডে) করবে না বরং এটির পরিবর্তে" প্লাগইনটিকে এই তথ্য সরবরাহ করা দরকার "এমনটি ভাবার নয় That এইভাবে অ্যাপ্লিকেশনটি প্রয়োজনীয় তথ্য গ্রহণ করতে পারে এবং প্রকৃত প্রক্রিয়াকরণ করতে পারে যা সহজ করবে প্লাগইন।

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


1
+1 এটি সরাসরি প্রশ্নের উত্তর দেয় না, তবে এটি মনে রাখা গুরুত্বপূর্ণ বিষয়গুলি
অ্যাড্রিয়ানো কার্নেরিও

আমি বিশ্বাস করি যে কেউ প্রকৃত এক্সটেনসিবিলিটি মেকানিজম বিকাশ করার আগে এই বিষয়গুলি আচ্ছাদিত রয়েছে
গাস

9

আমি নেট কোডের এক্সটেনসিবিলিটির জন্য এমইএফ ব্যবহার সম্পর্কে এই কোড প্রকল্প নিবন্ধটি লিখেছিলাম । এটি একটি ভাল ভূমিকা।

সেখানে যেমন .NET জন্য অন্যান্য extensibility অবকাঠামো হয় SharpDevelop এর অ্যাড-স্থাপত্য , Mono.Addins এবং System.AddIn

জাভা জন্য, আছে Elpipse প্লাগ-ইন আর্কিটেকচার

সাধারণ প্যাটার্নটি হ'ল:

  • আপনি হোস্ট এবং এক্সটেনশনের মধ্যে একটি চুক্তি (সাধারণত একটি ইন্টারফেস) সংজ্ঞায়িত করেন
  • আপনার একটি আবিষ্কার প্রক্রিয়া দরকার যা বাইরে গিয়ে ইনস্টলড এক্সটেনশানগুলির সন্ধান করে
  • আপনাকে এক্সটেনশানগুলি গতিশীলভাবে লোড করতে এবং হোস্টকে সে সম্পর্কে সচেতন করতে সক্ষম হতে হবে

অনুশীলনে এটি নির্ভরতা ইনজেকশন এবং কৌশল প্যাটার্নের সাথে অনেক ভাগ করে shares


+1 এমইএফ এবং সিস্টেম.এডডইন দুটি দেখতে ভাল জিনিস। এমনকি যদি আপনি এগুলি ব্যবহার না করে তবে তারা উভয়ই ভাল ধারণাটি দেখায়।
যৌক্তিকগীত

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

3

প্লাগইনগুলির জন্য আপনাকে কেবল একটি ইন্টারফেস সরবরাহ করতে হবে।

এটিতে কমপক্ষে একটি অ্যাক্টিভেট-মেথোড (একটি এন্ট্রি পয়েন্ট) থাকা উচিত তবে আপনি ইনিশিয়াল ইত্যাদির মতো জিনিসও চাইবেন।

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

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

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

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