রাষ্ট্রীয় এবং রাষ্ট্রহীন মধ্যে পার্থক্য কী?


86

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

একটি সাধারণ এবং সংক্ষিপ্ত উদাহরণ যা বোতাম বা পাঠ্যবাক্সের মতো নিয়ন্ত্রণের বিষয়ে কথা বলে আমার ধারণাটি বোঝার সহজতর করা যেতে পারে।

উত্তর:


40

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

সর্বাধিক সাধারণ সমাধান হ'ল সমস্যাটি কাটিয়ে উঠতে সেশনগুলি ব্যবহার করা। এর অর্থ হ'ল প্রতিটি প্রতিক্রিয়া বা অনুরোধে আপনাকে একটি সেশন শনাক্তকারী অন্তর্ভুক্ত করতে সক্ষম হতে হবে। এটি হয় একটি সেশন কুকি তৈরি করে বা সমস্ত লিঙ্কে সেশন সনাক্তকারীকে অন্তর্ভুক্ত করে।

এমভিসি আপনাকে ম্যানুয়ালি হ্যান্ডেল করতে বাধ্য করে, ওয়েব ফোরামগুলি সেগুলি সমস্ত স্বচ্ছ (ভিউস্টেট ব্যবহার করে) করার চেষ্টা করে।

আপনার উদাহরণে আপনি বাটন এবং পাঠ্যবক্স উল্লেখ করেছেন mentioned তাদের রাজ্য বজায় রাখার সবচেয়ে সহজ উপায় হ'ল পুরো পৃষ্ঠাটি পোস্ট করা বন্ধ করা। এমভিসি অ্যাজ্যাক্সের জন্য (জিউকিউরির মাধ্যমে) দুর্দান্ত সমর্থন পেয়েছে এবং আমি প্রস্তাব দিচ্ছি যে আপনি যদি বর্তমান পৃষ্ঠায় কিছু করতে চান তবে আপনি এজ্যাক্স ব্যবহার করুন।


3
এর অর্থ যদি আমি কোনও ওয়েবসাইটে লগইন হয়ে থাকি তবে প্রতিটি পৃষ্ঠাগুলি সেশন সনাক্তকারী বা একটি সেশন কুকির মাধ্যমে সামগ্রী রেন্ডার করার আগে কেবল প্রমাণীকরণের জন্য পরীক্ষা করে দেখি ??
পঙ্কজ উপাধ্যায়

3
হ্যাঁ, এটা ঠিক
jgauffin

রাষ্ট্রহীন কি ভাল বা খারাপ?
লুকাস - ভাল কোডিং একাডেমি

1
@ থিংক 123: আপনার রাষ্ট্র পরিচালনার দরকার নেই বলে এটি আরও পারফরম্যান্স (যেমন লোড ব্যালেন্সিং ইত্যাদি অনেক সহজ)। আপনি কৃত্রিম অবস্থা পরিচালনা করতে হবে যেহেতু এটি আরও জটিল।
jgauffin

5
@ জাগাফিন: পারফরম্যান্ট এখানে ভুল শব্দ। স্টেটলেস কম পারফর্মেন্ট কারণ আপনার কাছে রাষ্ট্রকে ক্যাশে দেওয়ার সুযোগ নেই এবং বারবার এটি সন্ধান করতে হবে। এটি কি আরও স্কেলযোগ্য হয় ; এদিকেই ভারসাম্য ভারসাম্য আসে এবং আপনার সিস্টেম পর্যাপ্ত পরিমাণে বড় হয়ে গেলে স্কেলাবিলিটি থেকে প্রাপ্ত ক্ষতিগুলি কার্যকারিতাতে ক্ষতি পূরণ করতে পারে।
ম্যাসন হুইলার 19

108

স্টেটলেস - প্রোগ্রামের দ্বারা রক্ষণাবেক্ষণের কোনও স্মৃতি (রাষ্ট্র) নেই

রাষ্ট্রীয় - প্রোগ্রামটির একটি স্মৃতি রয়েছে (রাষ্ট্র)

রাষ্ট্রের ধারণা চিত্রিত আমি একটি ফাংশন যা সংজ্ঞায়িত করব stateful এবং এক যা আড়ম্বরহীন

আড়ম্বরহীন

//The state is derived by what is passed into the function

function int addOne(int number)
{
    return number + 1;
}

Stateful

//The state is maintained by the function

private int _number = 0; //initially zero 

function int addOne()
{
    _number++;
    return _number;
}

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

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

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


তাত্ক্ষণিক প্রশ্ন: সুতরাং যদি সেশন আইডি অন্য ব্যবহারকারীর দ্বারা ব্যবহার করা হয় (অর্থাত্ চুরি হয়), সার্ভারের কোনও ধারণা নেই যে এটি অন্য কেউ?
মিহাই

4
এটাই সঠিক. কোনও ব্যবহারকারীর পরিচয় রক্ষা করার উপায় আছে যেমন https বা httponly কুকিজ ব্যবহার করা। তবে যদি কোনও ব্যবহারকারীর কম্পিউটার আপস করা হয় তবে কোনও আক্রমণকারী সার্ভারকে তারা ব্যবহারকারী মনে করে বোকা বানাতে পারে।
কোডার

2
একটি স্পষ্ট এবং খালাসি কোড উদাহরণের জন্য +1। আমি আরও বেশি নিশ্চিত যে বেশিরভাগ জটিল আইটি শর্তাদি কেবল প্রসঙ্গেই বোঝা যায়।
সেবাস্তিয়ান

একটি সেশন আইডি চুরি হওয়ার সম্ভাবনা হ'ল একটি কারণ যা আপনাকে সতর্কতা অবলম্বন করতে হবে এবং সিএমএসের মতো অ্যাপ্লিকেশন বা ওআউথের মতো অ্যাপ্লিকেশনটিকে আরও শক্ত করে তোলার উপায় তৈরি করা উচিত।
এলিন

4
প্রতিটি অনুরোধের জন্য সার্ভারটি "আহ, এটি এই লোক" এর মতো হবে - আরও ভালভাবে বলেছে যে আমি দেখেছি প্রতিটি উদাহরণে
রাফায়েল আইং

69

রাষ্ট্রহীন মানে অতীতের কোনও স্মৃতি নেই। প্রতিটি লেনদেন এমনভাবে করা হয় যেন এটি প্রথমবারের জন্য করা হচ্ছে।

স্টেটফুল মানে অতীতের স্মৃতি রয়েছে। পূর্ববর্তী লেনদেনগুলি মনে রাখা হয় এবং বর্তমান লেনদেনকে প্রভাবিত করতে পারে।


9
এটি উত্তর দেওয়া উচিত ছিল। এটি এখানে এখন পর্যন্ত সবচেয়ে স্পষ্ট এবং সুনির্দিষ্ট উত্তর is
মগ

3
সহজ এবং নির্ভুল
ইভান ইভভকুইć

2
এটি ইতিমধ্যে যে পার্থক্যটি জানেন তাদের ক্ষেত্রে এটি সঠিক।
রাফায়েল আইং

3

আমার সাধারণ মতে ASP.NET (stateful) এবং ASP.NET-MVC (stateless) এর মধ্যে পার্থক্যটি এই বিষয়টি থেকে পৃথক করা যেতে পারে যে প্রথমটি সার্ভার-সাইড নিয়ন্ত্রণ সরবরাহ করে এবং অন্যটি দেয় না।

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

এএসপি.নেট-এমভিসি তবে সার্ভার-সাইড নিয়ন্ত্রণগুলি ব্যবহার করে না তাই এটির অবস্থা বজায় রাখতে হবে না। এমভিসি মডেল সমস্যা ডোমেনটিকে তিনটি পার্টিশনে বিভক্ত করে যাতে ক্লায়েন্টের কাছে ডেটা প্রবাহিত পদ্ধতিতে সরবরাহ করা হয়।

সংক্ষেপে, সার্ভার-সাইড কন্ট্রোলগুলি হ'ল রাষ্ট্র এবং রাষ্ট্রবিহীন হওয়াতে এগুলিকে আলাদা করে তোলে।


1

@ কোডার সঠিক উত্তর যোগ করুন।

রাষ্ট্রের ধারণাটি পূর্ববর্তী ডেটাগুলি মনে রাখা
উদাহরণস্বরূপ, "A, B, C" এবং "A" মান সহ সার্ভারে আপনার একটি তালিকা নিয়ন্ত্রণ রয়েছে। তালিকাটি ক্লায়েন্ট ব্রাউজারে যায়। আপনি "বি" নির্বাচন করুন। এবং সার্ভারে ফিরে পোস্ট করুন। আপনি কীভাবে জানবেন যে মানটি পরিবর্তিত হয়েছে?

  • ASP.NET
    মাইক্রোসফ্ট ASP.NET এ ভিউস্টেট শব্দটি ব্যবহার করে । এটি সম্পর্কে বিকাশকারীদের মধ্যে একটি বিশাল ভুল ধারণা রয়েছে।
    ভিউস্টেট তালিকার সমস্ত প্রাথমিক অবস্থা এতে ধারণ করে <input type="hidden" value="base64 encoded" />: মান "এ, বি, সি" এবং "এ নির্বাচন করা হয়েছে" চিহ্নিত করে।
    তারপরে পোস্ট ব্যাক ব্রাউজারের সাথে ভিউস্টেট প্রেরণ করা হয় এবং সার্ভারে "বি নির্বাচিত হয়"। এএসপি.এনইটি তালিকার প্রাথমিক অবস্থা পুনরুদ্ধার করে এবং নতুন "বি" নির্বাচন প্রয়োগ করে। এটি উইনফোর্ডস বিকাশকারীদের (@ রোনাল্ড দ্বারা উল্লিখিত) প্রলুব্ধ করার জন্য করা হয়েছিল। ওয়েব সার্ভারে আপনি তালিকা পরিবর্তনের জন্য সাবস্ক্রাইব করতে পারেন listObject.Changed += OnChanged


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

  • ASP.NET MVC এবং ASP.NET প্রমাণীকরণ এবং নগদকরণের জন্য রাষ্ট্র প্রয়োগ করে। সুতরাং এএসপি.এনইটি এমভিসি পুরোপুরি স্টেটলেস বলা ঠিক হবে না।
  • উত্তরে বর্ণিত স্মৃতিটির অর্থ কম্পিউটারের স্মৃতি নয়, "স্মরণ"। ফাইল সিস্টেম, এসকিউএল সার্ভার বা কম্পিউটার মেমোরিতে ডেটা সঞ্চয় করে স্টেট প্রয়োগ করা যেতে পারে।

দয়া করে গঠনমূলক
বিয়োগের

0

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

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

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


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