সিএসপি বনাম আরএক্সজেএস: আপনি কী জানেন না।

সিএসপির কী হল?

আনপ্লেশ-এ জেমস পন্ডের ছবি

আপনি সম্ভবত "এই সিএসপি কি?" ভেবে এই নিবন্ধটি ক্লিক করেছেন এটি ক্রমিক ক্রিয়াকলাপের যোগাযোগ করছে commun তবুও হতবাক?

সিএসপি হ'ল একটি ভাগ করা চ্যানেল ব্যবহার করে আপনার কোডে বিভিন্ন ফাংশন (জেনারেটর) এর মধ্যে যোগাযোগ করার একটি পদ্ধতি।

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

সুতরাং দুটি ফাংশন সহ, আপনার একটিতে চ্যানেলে অ্যাডিং স্টাফ থাকতে পারে (প্রযোজক) এবং অন্যটি জিনিস টানতে এবং কিছু কাজ করে (গ্রাহক)।

একটি সাধারণ উন্নত ব্যবহারের ক্ষেত্রে একাধিক উত্পাদক এবং একজন ভোক্তা হতে পারে। এই উপায়ে আপনি যে ডেটা পাচ্ছেন তা নিয়ন্ত্রণ করতে পারেন তবে আপনাকে এটি দেওয়ার জন্য একাধিক জিনিস থাকতে পারে।

আরএক্সজেএস থেকে আলাদা এই চ্যানেলগুলি স্বয়ংক্রিয়। আপনি উইলি-নিলির মান পাবেন না, তাদের জন্য আপনাকে জিজ্ঞাসা করতে হবে।

সিএসপি ব্যবহার করে

সুপার সিম্পল (এবং মৃত) লাইব্রেরি চ্যানেল 4 ব্যবহার করে এখানে একটি ছোট সিএসপি উদাহরণ রয়েছে:

সিএসপি চ্যানেলগুলি অবিচ্ছিন্নভাবে চালিত হয়। সুতরাং এটি চালানোর সাথে সাথেই সিঙ্ক্রোনাস "ডোন" বার্তাটি প্রথমে লগ হয়। তারপরে আমাদের চ্যানেল গ্রহণকারীদের যথাযথভাবে কার্যকর করা হবে।

আমার কাছে সবচেয়ে মজার বিষয় হ'ল সিএসপি-র ব্লকিং (তবে অ্যাসিঙ্ক) প্রকৃতি। চ্যানেলটিতে "সি" লাগানোর আগে আমরা কীভাবে তৃতীয় গ্রহণটি তৈরি করেছি তা লক্ষ্য করুন। প্রথম দুটি গ্রহণের ফাংশনগুলির মতো নয়, তৃতীয়টির কাছে গ্রহণ করার মতো কিছুই নেই। একবার চ্যানেলে কিছু এলে তা তাৎক্ষণিকভাবে তা গ্রহণ করে।

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

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

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

সিএসপি মারা গেছে !?

আপনি গো এবং বন্ধে সিএসপি বাস্তবায়নগুলি পেতে পারেন। জাভাস্ক্রিপ্টে, দু'টি সিএসপি লাইব্রেরি ব্যতীত সমস্ত মারা গেছে এবং তারপরেও, তাদের শ্রোতাগুলি ছোট

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

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

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

ভিন্সনজো লক্ষ্য করেছিলেন যে কীভাবে সিএসপি পুরো ‘প্রতিশ্রুতির notর্ধ্বে স্তরের স্তর’ is সে সঠিক. একত্রীকরণের সাথে ইন্টারঅ্যাক্ট করার একাধিক ফাংশন থাকার পাওয়ারটি অবিশ্বাস্য।

প্রতিশ্রুতি, তাদের আগ্রহী প্রকৃতির দ্বারা, এমনকি একই বলপার্কে নেই। তিনি খুব কমই জানতেন যে শেষ কয়েকটি সিএসপি গ্রন্থাগারগুলি হুডের নীচে প্রতিশ্রুতিগুলি সমর্থন করবে

সিএসপি বিকল্প: রেডাক্স-সাগা

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

এমনকি রেডাক্স-সাগাসে "চ্যানেল" এর ধারণাটি রয়েছে:
https://github.com/redux-saga/redux-saga/blob/master/docs/advanced/Channels.md

চ্যানেলগুলি বাহ্যিক ইভেন্টগুলি থেকে রেডাক্স স্টোরের বাফার ক্রিয়াকলাপ এবং দুটি সাগের মধ্যে যোগাযোগ করে receive এটি একই পদ্ধতিতে সিএসপিতে একইভাবে গ্রহণ এবং ফাংশনগুলি ব্যবহার করে।

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

সিএসপি বিকল্প: রেডাক্স-পর্যবেক্ষণযোগ্য

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

রেডাক্স-অবজারভেবলিতে, সবকিছু দুটি বিষয়ের মাধ্যমে ঘটে: ক্রিয়া $ এবং রাষ্ট্র $ সেগুলি আপনার চ্যানেল।

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

আপনি যদি সিএসপির মতোই রেডাক্স-অবজারভেবলে একটি সারি তৈরি করতে চান তবে এই উদ্দেশ্যে কোনও অপারেটর উপলব্ধ না হওয়ায় এটি আরও জটিল complicated তবে এটি সম্পূর্ণ সম্ভব।

আমি একটি প্রতিস্থাপন তৈরি করেছি যা কেবল এটি করে:

আমাদের আগের সিএসপি উদাহরণের সাথে তুলনা করে, আপনি এটি দেখতে আশা করতে পারেন:

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

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

উপসংহার

সিএসপি একটি দুর্দান্ত ধারণা ছিল তবে এটি জাভাস্ক্রিপ্টে মারা গেছে। রেডাক্স-সাগা এবং রেডাক্স-পর্যবেক্ষণযোগ্য উপযুক্ত বিকল্প।

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

এ কারণেই আমি মনে করি জাভাস্ক্রিপ্টে সিএসপি মারা গেছে।

আরও পড়ুন

আপনি যা পড়েন তা যদি পছন্দ করে থাকেন তবে দয়া করে অনুরূপ চোখ খোলার বিষয়ে আমার অন্যান্য নিবন্ধগুলি দেখুন:

  • Redux- পর্যবেক্ষণযোগ্য আপনার রাজ্যের সমস্যাগুলি সমাধান করতে পারে
  • রেডাক্স-রেডাক্স ছাড়াই পর্যবেক্ষণযোগ্য
  • কলব্যাকস: সংজ্ঞা নির্দেশিকা
  • প্রতিশ্রুতি: সংজ্ঞা গাইড