কীভাবে সিগন্যালআর অভ্যন্তরীণভাবে কাজ করে?


160

উচ্চ স্তরের উপায়ে সিগন্যালআর কীভাবে অভ্যন্তরীণভাবে কাজ করে তা আমাকে কী কেউ জানতে দিতে পারে?

আমি অনুমান করছি যে এটি ব্যবহার করে ডেটা ফ্লাশ করছে Response.Flushএবং ক্লায়েন্টের পাশে এটি নির্দিষ্ট বিরতিতে অ্যাজাক্স অনুরোধগুলি প্রেরণ করছে। এটা কি ঠিক?


13
@ ড্যাফোলার সম্প্রতি স্কট হ্যান্সেলম্যানের সাথে একটি সাক্ষাত্কার করেছিলেন যা খুব তথ্যবহুল hanselminutes.com/291/…
সারিবদ্ধ

1
সিগন্যাল আর আর্কিটেকচার সম্পর্কে ভাল নিবন্ধ এবং এটি কীভাবে কাজ করে লস্টেচিজ. com
মহেশ

আমি এটির অনেক আগে জানি কিন্তু মাইক্রোসফ্টওয়াইরটুআলাকাদেমি.
com

1
এনসিডির 2013 এ এই উপস্থাপনাটি দেখুন ডেভিড ফোলার এবং ড্যামিয়ান এডওয়ার্ডস "এএসপি.এনইটি সিগন্যালআর উইন্ডোজ কভারস" নামে পরিচিত যেখানে তারা সিগন্যালআর লাইভ সংস্করণটি মঞ্চে লাইভ করে। এটা খুব তথ্যপূর্ণ। এটি 2.0 পূর্বের তবে এটি খুব বেশি গুরুত্বপূর্ণ নয়। vimeo.com/68383353
জোহান বি

উত্তর:


241

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

সিগন্যালআর ট্রান্সপোর্টে কিছু বিল্ট রয়েছে:

  1. ওয়েবসকেট
  2. সার্ভার প্রেরিত ইভেন্টস
  3. চিরকালীন ফ্রেম
  4. দীর্ঘ ভোটগ্রহণ

সিগন্যালআর সার্ভার এবং ক্লায়েন্ট দ্বারা সমর্থিত "সেরা" সংযোগটি বেছে নেওয়ার চেষ্টা করে (আপনি এটি কোনও নির্দিষ্ট পরিবহন ব্যবহার করতে বাধ্যও করতে পারেন)।

এটা উচ্চ স্তর। আপনি যদি প্রতিটি পরিবহন কীভাবে প্রয়োগ করা হয় তা দেখতে চান তবে আপনি উত্স কোডটি দেখতে পারেন ।

প্রতিটি পরিবহণের জন্য ক্লায়েন্ট কোডও রয়েছে: https://github.com/SignalR/SignalR/tree/master/src/Mic Microsoft.AspNet.SignalR.Client.JS

আপনি যদি দীর্ঘ পোলিং ট্রান্সপোর্ট বিশেষত কীভাবে কাজ করে সে সম্পর্কে জিজ্ঞাসা করছেন:

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

আশা করি এটি আপনার বেশিরভাগ প্রশ্নের উত্তর দিয়েছে।


3
আপনি কি আমাকে বলতে পারেন যে এটি একবারে কত সংযোগ সমর্থন করতে সক্ষম?
ফরহাদ-তারান

1
সিগন্যালার কত সংযোগ সমর্থন করতে চলেছে সে সম্পর্কিত আইআইএসের অনুরোধ সীমাটির উপর নির্ভর করে। এটি কনফিগার এন্ট্রি বা শেল স্ক্রিপ্ট ব্যবহার করে বাড়ানো যেতে পারে। সাধারণত সিগন্যাল 1000 মেমরিতে সংযোগযুক্ত করে।
থানিগেইনাথন

1
ইতিমধ্যে উল্লিখিত হিসাবে, সীমা সমাবেশটি সার্ভার স্তরে। ড্যামনিয়ান এডওয়ার্ডস (সিগন্যালআরের সহ-নির্মাতা) একক 10 জিবি সার্ভার থেকে 150,000 সংযোগ পেয়েছে যদিও: twitter.com/DamianEdwards/status/486642486350061568
LDJ

এই প্রশ্নের কোনও উত্তর stackoverflow.com/q/40906789/3565879
টেকনক্রন

@davidfowl দয়া করে উত্তর দিন এই জন্য দিতে stackoverflow.com/questions/47504489/...
Hitesh Thakor

5

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

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