ওয়েব সেশন "খারাপ নকশা"? কেন?


13

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

তিনি আমাকে পুনরায় জবাব দিলেন, এমনকি এমএসেও তারা আমাকে সহজেই উত্তর দিতে পারে যে এটি খারাপ নকশা ছিল। এবং তিনি আমাকে কিছু শ্বেত-পত্র দেখিয়েছিলেন যা এটি প্রদর্শন করে।

দুর্ভাগ্যক্রমে আমার আর এই লোকটির সাথে যোগাযোগ করার সুযোগ নেই তবে আমি তার দৃষ্টিভঙ্গি সম্পর্কে আরও বুঝতে চাই। এখানে কি কারও কাছে তথ্য / দৃষ্টিভঙ্গি আছে?


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

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

2
কুকিগুলির সাথে ডেটাবেস স্টোরেজ হ'ল আপনার ডাটাবেসে আপনার সেশনটি আবাসন করার বিষয়।
অ্যালান শুটকো

উত্তর:


11

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

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

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

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

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


1
but you can't always count on the client being able to save cookiesতারপরে আফাইক, আপনিও সেশনগুলিতে গণনা করতে পারবেন না। কোন সেশনটি কোন ব্যবহারকারীর অন্তর্গত তা সনাক্ত করতে কুকিজ ব্যবহার করা হয় না, বা অন্য পদ্ধতি রয়েছে এবং এটি কেবল সবচেয়ে সাধারণ?
ইজকাটা

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

8

আমি মনে করি আপনি দুটি পৃথক বিষয়কে বিভ্রান্ত করছেন: ১) সেশন এবং ২) এসপ নেটওয়ার্ডফর্মগুলির পৃষ্ঠা মডেল

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


"অন্যদিকে সেশনগুলি ওয়েব অ্যাপ্লিকেশনগুলির একটি প্রয়োজনীয় অংশ" " নং
মাস্টারেক্সিলোর

6

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

এমএস নিজেরাই এমভিসি আর্কিটেকচারের দিকে চলে গেছে (সর্বশেষ সংস্করণ - এমভিসি 4) যা প্রোটোকলটি আসলে হওয়া উচিত - রাজ্যহীন to

এমন পরিস্থিতি রয়েছে যেখানে স্টোরেজ স্টেট এখনও কার্যকর but তবে এটি বোঝা উচিত যে এটি নিয়মের চেয়ে বরং ব্যতিক্রম।

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