সিগন্যালআর: কেন হাব বনাম স্থির সংযোগটি বেছে নিন?


150

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

উত্তর:


92

সংযোগ এবং হাবস বিভাগে আমি যা দেখছি তা থেকে মনে হয় হাবগুলি নিম্ন-স্তরের স্থির সংযোগগুলিকে ওভারলাইং করে একটি বিষয় সিস্টেম সরবরাহ করে।

নীচে অত্যন্ত আপ-মন্তব্য করা মন্তব্য থেকে:

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

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

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


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

1
গুড পয়েন্ট @ ডেভিডফাউল - আমি আপনার মন্তব্যটি উত্তরটিতে অনুলিপি করেছি কারণ আমি মনে করি এটি আরও বিশিষ্ট হওয়া উচিত।
কলিনি

63

মূল পার্থক্য হ'ল আপনি পারসিস্ট্যান্ট কানেকশন নিয়ে আরপিসি করতে পারবেন না, আপনি কেবল কাঁচা ডেটা প্রেরণ করতে পারবেন। সুতরাং সার্ভার থেকে বার্তা প্রেরণের পরিবর্তে এটি

Clients.All.addNewMessageToPage(name, message);

আপনার সাথে একটি বস্তু পাঠাতে হবে চাই Connection.Broadcast()বা Connection.Send()এবং তারপর ক্লায়েন্ট কি যে সঙ্গে কাজ করার সিদ্ধান্ত নেন করতে হবে। আপনি উদাহরণস্বরূপ কোনও বস্তু প্রেরণ করতে পারেন:

Connection.Broadcast(new {
    method: "addNewMessageToPage",
    name: "Albert",
    message: "Hello"
});

এবং ক্লায়েন্ট উপর, পরিবর্তে কেবল সংজ্ঞায়িত

yourHub.client.addNewMessageToPage = function(name, message) { 
    // things and stuff
};

সমস্ত আগত বার্তা হ্যান্ডেল করতে আপনাকে একটি কলব্যাক যোগ করতে হবে:

function addNewMessageToPage(name, message) {
    // things and stuff
}

connection.received(function (data) {
    var method = data.method;

    window[method](data.name, data.message);
});

পদ্ধতিতে আপনাকে একই ধরণের প্রেরণটি সার্ভার সাইডে করতে হবে OnReceived। আপনি হাব পদ্ধতিতে যেমন করেন তেমন দৃ strongly়ভাবে টাইপ করা অবজেক্টগুলি পাওয়ার পরিবর্তে আপনাকে সেখানে ডেটা স্ট্রিংকে ডিসিয়ালাইজ করতে হবে।

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

তা ছাড়া ডকুমেন্টেশন থেকে এই উদ্ধৃতিটি দেখুন :

একটি যোগাযোগের মডেল নির্বাচন করা

বেশিরভাগ অ্যাপ্লিকেশনগুলির হাবস API ব্যবহার করা উচিত। সংযোগগুলি API নিম্নলিখিত পরিস্থিতিতে ব্যবহার করা যেতে পারে:

  • প্রেরিত প্রকৃত বার্তার বিন্যাস নির্দিষ্ট করা দরকার।

  • বিকাশকারী রিমোট ইনভোকেশন মডেলের চেয়ে বার্তা এবং প্রেরণ মডেল নিয়ে কাজ করতে পছন্দ করেন।

  • একটি মেসেজিং মডেল ব্যবহার করে এমন একটি বিদ্যমান অ্যাপ্লিকেশন সিগন্যালআর ব্যবহার করতে পোর্ট করা হচ্ছে।

আপনার বার্তার কাঠামোর উপর নির্ভর করে আপনি পার্সিস্ট্যানস কানেকশন ব্যবহার করে ছোট ছোট পারফরম্যান্স সুবিধাও পেতে পারেন।

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


আমার একজন সহকর্মী আমাকে বলেছিলেন যে তিনি হাবসের উপর পার্সেন্টিস্ট সংযোগটি বেছে নেওয়ার কারণটি সুরক্ষা কারণ, হাবসে কোনও সুরক্ষা সমস্যা আছে বা কিছু আছে?
মেহদী দেহঘানি

24

সিগন্যালআর ব্যবহারের দুটি উপায় রয়েছে: আপনি এটির PersistentConnectionশ্রেণিটিকে ওভাররাইড করে নিম্ন স্তরে এটি অ্যাক্সেস করতে পারেন যা আপনাকে এটির উপর প্রচুর নিয়ন্ত্রণ দেয়; বা আপনি উচ্চতর স্তরের 'হাবস' ব্যবহার করে সিগন্যালআরকে আপনার জন্য ভারী উত্তোলনের সমস্ত কাজ করতে দিতে পারেন।


5

পার্সেন্ট্যান্ট সংযোগটি একটি নিম্ন স্তরের এপিআই, আপনি সংযোগটি খোলা বা বন্ধ হওয়ার সময় আপনি আরও নির্দিষ্ট সময়ে ক্রিয়া সম্পাদন করতে পারেন, বেশিরভাগ অ্যাপ্লিকেশনে হাবই সেরা পছন্দ


4

এই দুটিয়ের তুলনা করার সময় তিনটি প্রধান বিষয় বিবেচনা করতে হবে:

  • বার্তা বিন্যাস
  • যোগাযোগের মডেল
  • সিগন্যালআর কাস্টমাইজেশন

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

যখন যোগাযোগের মডেলটির কথা আসে তবে ধ্রুব সংযোগগুলি মেসেজিং প্রেরণ এবং গ্রহণের জন্য মূলত ফাংশন রাখে যখন হাবগুলি প্রয়োজন অনুযায়ী অনন্য ফাংশন সহ একটি দূরবর্তী প্রক্রিয়া কল মডেল গ্রহণ করে take

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

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