রিএ্যাকটিভ কোকো বনাম আরএক্সসুইফ্ট - উপকারিতা এবং কনস?


256

তাই এখন সুইফ্টের সাথে, রিঅ্যাকটিভ কোকোয়ার লোকেরা এটিকে সুইফটের জন্য 3.0 সংস্করণে পুনরায় লিখেছেন

এছাড়াও, আরএসএসউইফ্ট নামে আরও একটি প্রকল্প তৈরি হয়েছে ।

আমি আশ্চর্য হই যে লোকেরা দুটি কাঠামোর নকশা / এপিআই / দর্শনের পার্থক্য কী তা সম্পর্কে তথ্য যুক্ত করতে পারত (দয়া করে, এসও-র অনুভূতিতে, "সেরা" কোন মতামত না দিয়ে সত্যগুলির সাথে আঁকড়ে থাকুন)

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

শুরু করার জন্য, তাদের রেডমী পড়ার থেকে আমার প্রাথমিক ধারণাটি হ'ল:

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

আপনার প্রশ্নটি বিশেষত "মতামত" চেয়েছে। আপনি অনুগ্রহ করে দয়া করে বলতে পারেন? আমি তখন সানন্দে আমার নিকট ভোট প্রত্যাহার করব।
সুলতান

2
আপনি "তাদের মতামত যুক্ত করুন" থেকে মুক্তি পেতে পারেন, কারণ পার্থক্যগুলি হ'ল মতামত নয় facts তারপরে আপনি আরএসি / আরএক্সএসউইফ্টের কয়েকটি বৈশিষ্ট্য পছন্দ বা অপছন্দ করতে পারেন তবে পার্থক্যগুলি স্ফটিক স্পষ্ট।
BontoJR

1
হাহাহা, "নোট টু মোডস" সম্পর্কিত ভাল পদক্ষেপ!
মিঃ ইয়ে

1
পুনঃনামকরণ প্রশ্ন: রিঅ্যাকটিভ কোকোয়া এবং আরএক্সসুইফ্টের মধ্যে পার্থক্য। আমি মনে করি সবকিছু "সত্য" হয়ে উঠবে, এবং এই প্রশ্নটি উত্তরাধিকার।
hqt

1
এমনকি সমাধানটি "এটি একটি খুব ভাল প্রশ্ন" দিয়ে শুরু হয়। : |
Iulian Onofrei

উত্তর:


419

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

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

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

আসুন সম্প্রদায় এবং মেটা-টেক স্টাফ সম্পর্কে কথা বলি :

  • আরএসি হ'ল একটি 3 বছরের পুরনো প্রকল্প, অবজেক্টিভ-সি-তে জন্মগ্রহণ করে পরে 3.0.০ রিলিজের জন্য সুইফটে (ব্রিজ সহ) পোর্ট করা হয়েছিল, অবজেক্টিভ-সি-তে চলমান কাজ পুরোপুরি বাদ দিয়ে ping
  • আরএক্সসুইফ্ট কয়েক মাস পুরানো প্রকল্প এবং এই মুহুর্তে সম্প্রদায়ের একটি গতি আছে বলে মনে হচ্ছে। আরএক্সসুইফ্টের জন্য একটি বিষয় গুরুত্বপূর্ণ যেটি রিঅ্যাকটিভএক্স সংস্থার অধীনে এবং অন্যান্য সমস্ত বাস্তবায়ন একই পদ্ধতিতে কাজ করছে, আরএক্সস্পিফটকে কীভাবে মোকাবেলা করতে হবে তা শিখতে Rx.Net, RxJava বা RxJS এর ​​সাথে কাজ করা সহজ কাজ এবং কেবল একটি বিষয় ভাষা বাক্য গঠন। আমি বলতে পারি যে দর্শনের উপর ভিত্তি করে একবার শিখুন, সর্বত্র প্রয়োগ করুন

টেক স্টাফের এখন সময়।

সত্তা উত্পাদন / পর্যবেক্ষণ

আরএসি 3.0 এর 2 টি প্রধান সত্ত্বা রয়েছে Signalএবং SignalProducerগ্রাহক সংযুক্ত থাকুক বা না থাকুক না কেন প্রথমটি ইভেন্ট প্রকাশ করে, দ্বিতীয়টির startআসলে সংকেত / ইভেন্ট উত্পন্ন হওয়ার প্রয়োজন হয় requires গরম এবং ঠান্ডা পর্যবেক্ষণযোগ্যদের ক্লান্তিকর ধারণাটি পৃথক করতে এই নকশা তৈরি করা হয়েছে, এটি অনেক বিকাশকারীদের বিভ্রান্তির কারণ হয়ে দাঁড়িয়েছে। এই কারণেই পার্থক্যগুলি কীভাবে তারা পার্শ্ব প্রতিক্রিয়া পরিচালনা করে তা হ্রাস করা যায়

আরএক্সসুইফ্টে Signalএবং SignalProducerঅনুবাদ করে Observableএটি বিভ্রান্তিকর লাগতে পারে তবে এই 2 টি সত্তা আসলে আরএক্স বিশ্বের একই জিনিস। সঙ্গে একটি নকশা ObservableRxSwift মধ্যে গুলি যদি তারা গরম বা ঠান্ডা হয়, এটা অপ্রয়োজনীয় জটিলতা যেমন শব্দ হতে পারে বিবেচনা তৈরি করা আছে, কিন্তু একবার আপনি বুঝতে কিভাবে তারা কাজ (এবং আবার গরম / ঠান্ডা / গরম মাত্র পার্শ্ব প্রতিক্রিয়া যখন সাবস্ক্রাইব / দেখে সম্পর্কে ) তারা কৃত্রিম হতে পারে।

উভয় দুনিয়ায়, সাবস্ক্রিপশন ধারণাটি মূলত একই, আরএসি যে সামান্য পার্থক্যটি চালু করেছিল তা হল এবং এটি interruptionযখন Signalইভেন্টটি প্রেরণের ইভেন্ট প্রেরণের আগে নিষ্পত্তি করা হয়। উভয়কেই পুনরায় কাটাতে নিম্নলিখিত ধরণের ইভেন্ট রয়েছে:

  • Next, নতুন প্রাপ্ত মান গণনা করতে
  • Error, একটি ত্রুটি গণনা এবং স্ট্রিম সম্পূর্ণ করতে, সমস্ত পর্যবেক্ষককে সদস্যতা ছাড়াই
  • Complete, সমস্ত পর্যবেক্ষককে সদস্যতা বাতিল করে সম্পূর্ণ হিসাবে চিহ্নিত করা

আরএসি ছাড়াও এটি interruptedপ্রেরণ করা হয় যখন Signalকোনওটি সঠিকভাবে বা ত্রুটির সাথে সম্পন্ন করার আগে নিষ্পত্তি করা হয়।

ম্যানুয়ালি লিখন

আরএসি-তে, Signal/ SignalProducerকেবল পঠনযোগ্য সত্তা, সেগুলি বাইরে থেকে পরিচালনা করা যায় না, একই জিনিসটি Observableআরএক্সউইফ্টে রয়েছে। একটি Signal/ SignalProducerলেখার যোগ্য সত্তায় রূপান্তর করতে, আপনাকে pipe()ম্যানুয়ালি নিয়ন্ত্রিত আইটেমটি ফিরিয়ে দিতে ফাংশনটি ব্যবহার করতে হবে। আরএক্স স্পেসে, এটি একটি আলাদা ধরণের বলে Subject

যদি পঠন / লেখার ধারণাটি অপরিচিত মনে হয় তবে Future/ এর সাথে একটি দুর্দান্ত উপমা Promiseতৈরি করা যায়। এ Futureহ'ল কেবল পঠিত স্থানধারক, যেমন Signal/ SignalProducerএবং Observable, অন্যদিকে, এPromise নিজে পূর্ণ করা যেতে পারে, মত pipe()এবং Subject

নির্ধারণ

এই সত্তা উভয় বিশ্বের একই ধারণা, একই ধারণা, কিন্তু আরএসি কেবলমাত্র সিরিয়াল-এর পরিবর্তে, আরএক্সসুইফ্টের বৈশিষ্ট্যগুলি একই সাথে একসাথে শিডিয়ুলারও রাখে।

গঠন

কম্পোজিশন রিঅ্যাকটিভ প্রোগ্রামিংয়ের মূল বৈশিষ্ট্য। স্ট্রোকগুলি রচনা হ'ল উভয় ফ্রেমের কাঠামোর সংমিশ্রণ, আরএক্সউইফ্টে এগুলিকে সিকোয়েন্সও বলা হয়

RxSwift সকল পর্যবেক্ষণযোগ্য সত্ত্বা ধরনের ObservableType, তাই আমরা দৃষ্টান্ত রচনা SubjectএবংObservable একই অপারেটার সঙ্গে, কোনো অতিরিক্ত উদ্বেগ ছাড়া।

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

এই অংশটি সম্পর্কে, কলিন ইবারহার্ট এটিকে সুন্দরভাবে সংক্ষেপে বলেছিলেন:

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

অতিরিক্ত

আরএসি-র ধারণাও রয়েছে Action এবং Propertyপ্রাক্তনটি এক ধরণের পার্শ্ব প্রতিক্রিয়া গণনা করার জন্য যা মূলত ব্যবহারকারীর মিথস্ক্রিয়া সম্পর্কিত, পরে মানটি পরিবর্তনের সাথে সাথে কোনও কার্য সম্পাদন করার জন্য একটি মান পর্যবেক্ষণ করার সময় আকর্ষণীয়। আরএক্সউইফ্টে Actionআবার অনুবাদ করে একটিতে, এটি আইওএস এবং ম্যাক উভয়ের জন্য আরএক্স আদিমদের একীকরণের Observableসুন্দরভাবে দেখানো হয়েছে RxCocoa। আরএসি এর Propertyঅনুবাদ করা যেতে পারে Variable(বাBehaviourSubject RxSwift মধ্যে)।

এটা বুঝতে গুরুত্বপূর্ণ যে Property/Variable আমাদের যেভাবে অপ্রয়োজনীয় বিশ্বকে প্রতিক্রিয়াশীল প্রোগ্রামিংয়ের ঘোষণামূলক প্রকৃতির সাথে সংযুক্ত করতে হবে, তাই তৃতীয় পক্ষের লাইব্রেরিগুলি বা আইওএস / ম্যাক স্পেসের মূল কার্যকারিতা নিয়ে কাজ করার সময় কখনও কখনও এটি একটি মৌলিক উপাদান হয়।

উপসংহার

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

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

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

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


24
এটি একটি দুর্দান্ত ব্যাখ্যা, @ জুনিয়র-বি! তবে এটি উল্লেখ করার মতোও যে, আরএসি NoErrorপ্রবাহের প্রকারভেদে টাইপ তথ্য (ত্রুটির জন্য ধন্যবাদ সহ ) এনকোড করে: Signal<T, E: ErrorType>বনাম Observable<T>। এটি, পাশাপাশি গরম / ঠান্ডা পৃথকীকরণ, সংকলনের সময় বর্ধিত পরিমাণে তথ্য সরবরাহ করে যা আপনার সবেমাত্র নেই RxSwift
NachoSoto

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

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

1
রিঅ্যাকটিভ কোকোয়া ভাল ছিল, যতক্ষণ না তারা ত্রুটি সহ জেনেরিক, ফাংশন সিগন্যালপ্রডুসার চালু করে। আমি আরএক্সসুইফট শিখেছি এবং আরএক্সকোটলিন, আরএক্সজেএস-এর সাথে কাজ করার সময় আমি একই অভিজ্ঞতা পেয়েছি
onwayway133
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.