কীভাবে অ্যাপ্লিকেশনগুলি রাষ্ট্রহীন রাখবেন


97

এটি একটি বিভ্রান্তিকর প্রশ্ন হতে পারে তবে আমি রাষ্ট্রহীনতার আরও ভাল বোঝার চেষ্টা করছি।

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

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

এবং তারপরে সম্পর্কিত প্রশ্ন হিসাবে বড় ওয়েবসাইটগুলি (অ্যামাজন, গুগল, ফেসবুক, টুইটার ইত্যাদি) আসলে কি রাষ্ট্রহীন? তারা কি টোকেন বা কুকিজ (বা উভয়) ব্যবহার করে?


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

4
নিবন্ধন করুন পুনরায় ব্যবহারযোগ্যতার সাথে রাষ্ট্রহীনতার কোনও যোগসূত্র নেই। এবং রাষ্ট্রবিহীন থাকার ফলে উচ্চতর প্রচেষ্টা বাড়ে না।
পল ওয়াসেলিউস্কি

3
@ পলওয়াসিলেউস্কি: এবং রাষ্ট্রহীন হয়ে ওঠার চেষ্টা বেশি হয় না। => এটি করে, একটি রাষ্ট্রীয় প্রয়োগের সাথে আপনি মেমরিতে সমস্ত কিছু সেশনের সাথে আবদ্ধ রাখেন। এটি ভাল স্কেল করে না, যদিও সেশন পিনিংয়ের সাথে কাজ করে তবে এটি খুব সহজ। যখন সার্ভারগুলির একে অপরের মধ্যে তথ্য বিনিময় শুরু করা দরকার তখন ঝামেলা শুরু হয়।
ম্যাথিউ এম।

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

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

উত্তর:


95

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

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

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

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

প্রধান ওয়েবসাইটগুলি (অ্যামাজন, গুগল, ফেসবুক, টুইটার, ইত্যাদি) আসলে রাষ্ট্রহীন? তারা কি টোকেন বা কুকিজ (বা উভয়) ব্যবহার করে?

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


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

16
"[...] তবে তারপরে আপনার আবার অবস্থা রয়েছে, কেবল সার্ভারের পরিবর্তে ক্লায়েন্টের কাছে।" এটি আরও ভাল স্কেলিবিলিটি এবং প্রাপ্যতা অর্জনের জন্য, সার্ভারের দিকে কোনও রাজ্য থাকার বিষয়ে নয়। কোনও রাষ্ট্র যদি ক্লায়েন্টের পাশে সঞ্চিত থাকে তবে তাতে কিছু আসে যায় না।
পল ওয়াসিলিউস্কি

5
@ njzk2 আপনি কি এতদ্বারা বিস্তারিত বলতে পারবেন যাতে এটি অযৌক্তিক মনে হয় না? ব্যবহারকারীরা আরও নাম কিনতে অ্যামাজনে যান না। এবং, তারা তাদের ক্রয় করার পরে, এমন কিছু অদৃশ্য হয়ে যায় যা কেবলমাত্র কেনাকাটা করার সময় বিদ্যমান ছিল ex যদি সেই কিছু "অ্যাপ্লিকেশনের অবস্থা" না হয় তবে এটি কী? অ্যাপ্লিকেশনগুলির স্টেট না থাকলে তাদের কী থাকে?

3
@ নোকমপ্রেডে: আমার মনে হয় এনজেজেকি 2 এর সাধারণ বক্তব্যটি হ'ল আপনার সম্পূর্ণ নামের মতো আপনার কার্টের সামগ্রীগুলি এমন একটি ডেটা যা কোনও ওয়েব অ্যাপ সার্ভারের পাশে অবিরত থাকে। লোকেরা যখন বলে যে "ওয়েব অ্যাপস স্টেটলেস হওয়া উচিত", তখন তারা সাধারণত "ওয়েব অ্যাপস এর থেকে আলাদা কিছু বোঝায় যে আপনার ব্যবহারকারীর নামের সাথে যুক্ত পুরো নাম সম্বলিত একটি ডাটাবেস অ্যাক্সেস করা উচিত নয়"। অবিকল কি তারা না করে "আড়ম্বরহীন" সম্ভবত জাভাস্ক্রিপ্টে গার্বেজ সংজ্ঞায়িত করা হয় না, একবার যেহেতু আপনি যে ডাটাবেসের আছে আজেবাজে কথা যে তুমি সেখানে মধ্যে জিদ পারে, মাত্রাতিরিক্ত জটিল অ্যাপ্লিকেশান স্থিতি সমর্থন করার জন্য সব ধরণের আছে, কিন্তু করা উচিত নয় ;-) মানে
স্টিভ Jessop

4
@ নোকমপ্রেন্ডে: ডাটাবেসটি ফিরিয়ে দিয়ে একটি ডিম ছাড়াই: আমাদের ওয়েব্যাপটি রাষ্ট্রহীন হওয়ায় এটি আগের মতোই আবার শুরু হতে পারে ;-)
স্টিভ জেসপ

56

এটি সত্য যে ওয়েব অ্যাপ্লিকেশনগুলি রাষ্ট্রহীন হওয়া উচিত। যাইহোক, সেশন ভেরিয়েবল, কুকিজ এবং টোকেনগুলি এগুলি লঙ্ঘন করে না যখন তারা সমস্ত ক্লায়েন্টে (ওয়েব ব্রাউজার) সঞ্চিত থাকে। তারা অনুরোধে পরামিতি হতে পারে।

এখানে একটি সরলীকৃত মডেল:

Web Browser (has state) <-> Web Server (stateless) <-> Database (has state)

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

রাষ্ট্রবিহীন মানে এটাই। সার্ভার এগুলির কোনও মনে রাখার জন্য দায়বদ্ধ নয়। এটা তার কাজ নয়।

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

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


8
আমি জানি না ... এই উত্তরটি কিছুটা বলার মতো শোনাচ্ছে: " এক্সেল আপনার স্প্রেডশিট সংরক্ষণ করে না, ডিস্ক ড্রাইভও করে!" হ্যাঁ, ওয়েব সার্ভারের ডাটাবেস অংশ না, যতদূর বেশিরভাগ লোকেরই চিন্তিত? স্পষ্টতই রাষ্ট্রের সিপিইউ বা সার্ভারের কোডে সঞ্চয় করা নেই এবং এগুলি মেমরির মধ্যে রাখা বেশ মূর্খ।

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

9
@ নোকমপ্রেন্ডে: ডাটাবেসটি ওয়েবসভারের অংশ নয় তা বলার বিষয়টি হ'ল আপনার 1, 2, 3, .... ওয়েবসভারগুলির জন্য একটি একক ডাটাবেস (বা ডাটাবেস ক্লাস্টার) থাকতে পারে। স্টেটলেস হওয়া মানে স্ক্যালাবিলিটি বাড়াতে বোঝা যায়: আপনি ডাটাবেস ক্লাস্টার এবং ওয়েবসার্ভারের সংখ্যা স্বাধীনভাবে স্কেল করতে পারেন।
ম্যাথিউ এম।

6
"এটি সত্য যে ওয়েব অ্যাপ্লিকেশনগুলি রাষ্ট্রহীন হওয়া উচিত" " না এটি সম্পূর্ণ আজেবাজে কথা।
এসভিডজেন

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

30

ওয়েব অ্যাপ্লিকেশনগুলি স্টেটলেস হওয়া উচিত

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

তবে, পুরো অ্যাপ্লিকেশন স্টেটলেস হওয়া উচিত তা সম্পূর্ণ বোকা।

প্রতিটি অনুরোধ একটি স্বাধীন লেনদেন হিসাবে বিবেচিত হয়।

হ্যাঁ, ঠিকবা আরও সঠিকভাবে, হ্যাঁ, অগত্যাএইচটিটিপি-র মাধ্যমে, প্রতিটি অনুরোধ অন্য সমস্ত অনুরোধগুলির থেকে সহজাতভাবে স্বতন্ত্র। এইচটিটিপিতে "রাষ্ট্রীয়তা" যুক্ত করার জন্য আপনি প্রতিটি "রাষ্ট্রীয়" অনুরোধের জন্য "স্পষ্টত" স্পষ্টভাবে চিহ্নিত, সংরক্ষণ এবং পুনরুদ্ধার করা প্রয়োজন। এবং এটি প্রচেষ্টা নেয়, কার্যকারিতা হ্রাস করে এবং জটিলতা যুক্ত করে।

এবং, এই কারণগুলির জন্য, প্রতিটি অনুরোধ যা রাষ্ট্রহীন হতে পারে "রাষ্ট্র" হওয়া উচিত।

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

কয়েকটি জিনিস: টোকেনগুলি সেশন স্টোরেজেও বেঁধে দেওয়া যেতে পারে। কুকিজের সেশন স্টোরেজে আবদ্ধ হওয়ার দরকার নেই । টোকেনগুলি প্রায়শই কুকিগুলিতে সঞ্চিত থাকে। এবং, কখনও কখনও একটি অধিবেশন কেবল কাজের সঠিক সরঞ্জাম।

তার মানে কমপক্ষে মাঝে মধ্যে , সেশন এবং কুকিজ টোকেনের মতো "" আরও ভাল "!

[টোকেন] রাষ্ট্রহীন কারণ কোনও কিছুই সার্ভারে সঞ্চিত নেই।

ঠিক আছে, এটা। এটা কি "statelessness" মতবাদ সম্পর্কে সত্যিই হয়। যদিও এটি স্পষ্ট করে বলা যায় যে এটি সার্ভারে "কিছুই না" সংরক্ষণ করার বিষয়ে নয়, এটি সার্ভারে সেশন স্টেট সংরক্ষণ না করার বিষয়ে ।

উদাহরণস্বরূপ, আমার জিমেইল ইনবক্সটি একটি অবস্থায় রয়েছে। এবং এটি আরও ভাল সার্ভারে সংরক্ষণ করা ভাল ! তবে এটি সেশন স্টেট নয়।

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

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

এবং তারপরে অবশ্যই কিছু জিনিস রয়েছে যা আমরা কেবল রাষ্ট্রীয় হওয়ার আশা করি ...

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

দুটি বিকল্প। হয় আপনার একটি সেশন আছে, বা আপনি অস্বীকার করছেন!

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

সত্যিকারের গুরুত্ব সহকারে: দু'জন যোগাযোগকারী এজেন্ট কোনও কথোপকথনে বার্তাগুলিকে প্রাসঙ্গিক করে তুলতে পারলে আমরা "স্টেটলফুলেন্স" কেবলমাত্র এটিই বলে থাকি's এবং একটি অধিবেশন, traditionতিহ্যগতভাবে বোঝা যায়, কেবলমাত্র আমরা সাধারণত যাকে বলি যার মাধ্যমে এটি ঘটে যায় call

আমি যুক্তি দিয়েছি যে, আপনি নিজের সার্ভার হ্যান্ডল করে এমন প্রতিটি অনুরোধের জন্য টোকেন বা "সেশন" ব্যবহার করুন না কেন, আপনাকে হয় অনুরোধটি পূরণের জন্য প্রাসঙ্গিক করা দরকার, বা আপনি তা করেন না। প্রসঙ্গটি প্রয়োজনীয় না হলে এটি আনবেন না। প্রসঙ্গটি যদি প্রয়োজনীয় হয় তবে আপনার কাছে এটি আরও ভাল হবে!

এবং তারপরে সম্পর্কিত প্রশ্ন হিসাবে বড় ওয়েবসাইটগুলি (অ্যামাজন, গুগল, ফেসবুক, টুইটার ইত্যাদি) আসলে কি রাষ্ট্রহীন? তারা কি টোকেন বা কুকিজ (বা উভয়) ব্যবহার করে?

সম্ভবত উভয়। তবে, সাধারণভাবে বলতে গেলে, তারা আপনি যা করেন ঠিক তেমন করে: তারা বিশাল "সেশন" ডাটাবেসে "স্টেট" রেকর্ড সনাক্ত করতে কুকিজ সেট করে।

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


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

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

4
@ নোকমপ্রেন্ডে: অপরিবর্তনীয় ডেটা স্ট্রাকচারগুলি আলাদা কিছু, এবং এটি একটি সরঞ্জাম যা মেমরি অবজেক্টের লাইফসাইকেলগুলি পরিচালনা করতে ব্যবহৃত হয়।
2

1
আপনার ব্যাখ্যা প্রথম পংক্তি পছন্দ। যখন আমরা কিছু আলোচনা করি তখন প্রতিটি মৌখিক বক্তব্য তাত্ক্ষণিকভাবে বিস্মৃত হয়ে মারা যায়। তবে একরকম, আমরা এখনও কোনও কথোপকথন চালিয়ে নিতে সক্ষম হয়েছি, তাই না? এটা ম্যাজিক!

1
@ নোকমপ্রেন্ডে এটি একটি আকর্ষণীয় আলোচনা, তবে আমি অনুমান করি আমাদের এখানে এটি চালিয়ে যাওয়া উচিত নয়।
পাব্রাম

14

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

Statelessness

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

সার্ভারে বিবৃতি

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

ক্লায়েন্টের উপর বক্তব্য

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

টোকেন বনাম কুকিজ

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

টোকনগুলি সাধারণত ব্যবহারকারী সম্পর্কে কিছু ধরণের শনাক্তকরণ তথ্য যা সার্ভারে উত্পন্ন হয় (তথ্য স্ক্র্যাম্বল করতে এনক্রিপশন ব্যবহার করে), ক্লায়েন্টের কাছে পৌঁছে যায় এবং পরবর্তী অনুরোধের সাথে সার্ভারে ফিরে আসে। তারা অনুরোধ এবং প্রতিক্রিয়া শিরোনামে পাস হতে পারে, যা একক পৃষ্ঠার অ্যাপ্লিকেশনগুলির মধ্যে একটি সাধারণ প্যাটার্ন। আদর্শভাবে, প্রতিটি অনুরোধ / প্রতিক্রিয়া ফলাফল একটি নতুন টোকেন তৈরি করে, সুতরাং টোকেনগুলি আক্রমণকারী দ্বারা বিরত এবং পরে ব্যবহার করা যায় না।

একক পৃষ্ঠা অ্যাপ্লিকেশন এবং ক্লায়েন্টের অবস্থা

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

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

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

শপিং কার্ট এবং মত

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

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

দুঃখিত যদি এই উত্তরটি খানিকটা ঘোরাফেরা করে তবে রাষ্ট্রীয়তা একটি জটিল বিষয়।


6

সেশন এবং কুকিজ এড়ানো হবে না। স্টেটলেস ওয়েব অ্যাপ্লিকেশনগুলির সাথে আপনার এগুলি এখনও থাকতে পারে।

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

রেল অ্যাপ্লিকেশন স্বাক্ষরিত, এনক্রিপ্ট করা কুকিতে ব্যবহারকারী আইডি সঞ্চয় করে। এটি নিয়ে কোনও छेड़छाड़ করা যায় না। আপনি যখন কোনও পৃষ্ঠা লোড করেন, ওয়েব অ্যাপ্লিকেশনটি একটি ডাটাবেস থেকে আপনার রাজ্য, ব্যবহারকারী এবং শপিং কার্ট নিয়ে আসে। এটি ধীর, তবে কীটি হ'ল আপনি যে কোনও পরিস্থিতিতে আঘাত করতে পারেন ! এটি আপনাকে ইচ্ছামত পুনঃসূচনা, স্কেল, শাটডাউন দৃষ্টান্তগুলির অনুমতি দেয়। খুব সুবিধাজনক. এটিকে রেডিসের মতো ভাগ করা, ইন-মেমরি, ক্যাশে ডাটাবেসের সাহায্যে দ্রুত তৈরি করা যায়। অথবা আপনি শপিংয়ের কার্টটি কুকিতে সঞ্চয় করতে পারেন, যদি এটি যথেষ্ট ছোট থাকে তবে।

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


5

প্রোটোকল দেশেরই নাগরিক নয়।

তবে এগুলি থেকে প্রোটোকল ব্যবহার করে অ্যাপ্লিকেশনগুলি স্টেটলেস হওয়া উচিত তা অগত্যা অনুসরণ করে না।

এখানে সম্পর্কিত কয়েকটি স্ট্যাক ওভারফ্লো উত্তর রয়েছে যা পার্থক্যটি ভালভাবে ব্যাখ্যা করে:


5

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

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

টোকেনগুলি ব্যবহার করা আরও ভাল উপায়, যা রাষ্ট্রহীন কারণ সার্ভারে কোনও কিছুই সঞ্চিত নয়।

এটি সত্য (নির্দিষ্ট প্রমাণীকরণ এবং অনুমোদনের প্রোটোকলের জন্য)। টোকেনগুলি (তবে প্রতি সে সে নয়) অনুরোধের মধ্যে সমস্ত তথ্য সরবরাহ করতে পারে যা কোনও ব্যবহারকারীর প্রমাণীকরণ বা কোনও ক্রিয়াকলাপ অনুমোদিত করার জন্য প্রয়োজনীয়। একটি উদাহরণ কটাক্ষপাত করা JWT

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

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

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

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

এবং তারপরে সম্পর্কিত প্রশ্ন হিসাবে বড় ওয়েবসাইটগুলি (অ্যামাজন, গুগল, ফেসবুক, টুইটার ইত্যাদি) আসলে কি রাষ্ট্রহীন? তারা কি টোকেন বা কুকিজ (বা উভয়) ব্যবহার করে?

আপনি যদি জিজ্ঞাসা করছেন যে তারা প্রমাণীকরণের জন্য কুকিজ বা টোকেন ব্যবহার করছে, তবে উত্তরটি হ'ল তারা উভয়ই ব্যবহার করেন। ব্যবহারকারীদের বেশিরভাগ প্রযুক্তিগত ক্লায়েন্টদের জন্য কুকিজ বেশিরভাগ টোকেন ব্যবহার করা হয়।


-2

ঠিক আছে, আপনি যে নিয়মটি উদ্ধৃত করেছেন তা প্রযুক্তিগতভাবে ভুল। ওয়েব অ্যাপ্লিকেশনটির সমস্ত স্তরগুলির স্থিতি রয়েছে।

বিধিটির উদ্দেশ্যটি "প্রতি সেশনের স্থিতি সার্ভারের পাশে থাকবেন না"।

অর্থাত, এ অধিবেশন ভেরিয়েবল এএসপি , যা সাধারণভাবে ঝুড়ি / ব্যবহারকারী নাম, ইত্যাদি আইটেম মত কাজগুলি করতে ব্যবহার করা হয়েছে

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

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

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


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

হুম ধরনের। আপনার যদি সার্ভারে প্রতি ব্যবহারকারী তথ্য থাকে তবে এর বিতরণ করা হলেও আপনার এখনও একটি স্কেলিবিলিটি সমস্যা রয়েছে।
ইয়ান

ডিস্ক থেকে ডেটা টানতে পারলে প্রচুর পরিমাণে রয়েছে যেমন ক্যাচিংয়ের মতো বাধা।
জেফো

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

1
গরম আলু এড়ানোর চেষ্টা সম্পর্কে এই সমস্ত আলোচনা আমাকে সত্যিই মায়াকৃত করে। পুরান কথাটি যা ঘটেছিল, "বক এখানে থামছে"? কিছু ডেটা পরিচালনা করতে হবে, আমার ব্যাংক আমার সমস্ত আর্থিক লেনদেনের তথ্য কেবলমাত্র আমার ল্যাপটপে রেখে আমাকে পছন্দ করবে না। সবাই কেন ডেটা থেকে চিৎকার করছে? আমাদের কম্পিউটার আছে কেন! ক্রেজি।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.