কীভাবে বিভিন্ন এপিআই ভার্সন সমর্থন করবেন


15

আমি একটি রেস্ট এপিআই লিখছি এবং ভাবছি যে বিভিন্ন সংস্করণ সমর্থন করে কীভাবে সেরা পরিচালনা করা যায়। এর মাধ্যমে আমার অর্থ এই নয় যে কীভাবে কোনও ইউআরআইকে ভি 2 বা ভি 3 হিসাবে সংজ্ঞায়িত করা যায়, বরং কোডটি কীভাবে এটির প্রয়োজন হবে তার কাঠামো কীভাবে তৈরি করা যায়:

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

দেখে মনে হবে এমন কয়েকটি পন্থা নেওয়া যেতে পারে:

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

  • সদৃশ কোড যাতে প্রতিটি সংস্করণ একই অ্যাপ্লিকেশনটিতে পরিচালিত হয় এবং একটি সম্পূর্ণ পৃথক কোড পাথ থাকে তবে এর অর্থ হ'ল অনেকগুলি সদৃশ

  • সংস্করণগুলি জুড়ে প্রচুর কোড পুনরায় ব্যবহার করুন, তবে এটির পক্ষে এটি সংরক্ষণ করা আরও শক্ত হবে কারণ একটি সংস্করণ পরিবর্তন করা পূর্ববর্তী সংস্করণে প্রভাবিত হওয়ার সম্ভাবনা বেশি

সমস্ত বিকল্পের নিজস্ব সমস্যা আছে বলে মনে হচ্ছে এই সমস্যাটি মোকাবেলার জন্য কি কোনও সেরা অনুশীলন রয়েছে?


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

উত্তর:


5

এটা কর:

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

তবে পূর্ববর্তী সংস্করণগুলি ভাঙবেন না।

আপনার পরীক্ষাগুলি থাকা উচিত যা যাচাই করে যে সমস্ত সমর্থিত সংস্করণ সঠিকভাবে কাজ করছে। আপনার যদি সেই পরীক্ষাগুলি না থাকে তবে প্রথমে আপনার পরিবর্তন করা কোনও কোড কভার করার জন্য এগুলি তৈরি করা উচিত।


2

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

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

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


0

আপনার এপিআই সংস্করণগুলি থেকে ফলাফলগুলি কতটা আলাদা তা আমি জানি না, তবে মাঝখানে আপনি একটি সামঞ্জস্যতা স্তর রাখতে পারেন যা সংস্করণগুলির মধ্যে টগল করতে পারে এবং ফাঁকগুলি পূরণ করতে পারে বা ডেটা অনুবাদ করতে পারে।

এটি বলা হচ্ছে - এটি সাধারণত কখনই একের সাথে কাজ করে না - তাই একটি সুইচ বা স্টেট মেশিনের ধরণের নকশা আমাকে এই সমস্যাটিতে সহায়তা করেছে।

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