এইচটিটিপি অনুরোধ / প্রতিক্রিয়া অবজেক্টগুলি কি অপরিবর্তনীয় হতে হবে?


10

আমি মনে করি এটি নিরাপদ বলে যে বেশিরভাগ ওয়েব অ্যাপ্লিকেশনগুলি অনুরোধ / প্রতিক্রিয়া দৃষ্টান্তের উপর ভিত্তি করে। পিএইচপি এর কখনও এই বিষয়গুলির একটি আনুষ্ঠানিক বিমূর্ততা ছিল না। একটি গোষ্ঠী এটি পরিবর্তনের চেষ্টা করছে: https://github.com/php-fig/fig-standards/blob/master/propised/http-message.md

যাইহোক, তারা অপরিবর্তনীয়তার বিষয়টি সম্পর্কে সন্ধান করতে পারে। একদিকে, অনুরোধ / প্রতিক্রিয়া অবজেক্টের সাধারণত তাদের জীবনচক্রের সময় খুব অল্প পরিবর্তন হয়। অন্যদিকে, বিশেষত প্রতিক্রিয়া অবজেক্টটির প্রায়শই এইচটিটিপি শিরোনাম যুক্ত করা প্রয়োজন।

তদুপরি, অপরিবর্তনীয়তা সত্যই কখনও পিএইচপি এর জমিতে ধরা দেয়নি।

অপরিবর্তনীয় অনুরোধ / প্রতিক্রিয়া অবজেক্ট ব্যবহার করার ক্ষেত্রে লোকেরা কী সুবিধা দেখতে পাবে?


ধরা যাক আপনি কোনও জসন বস্তুটি ফিরিয়ে দিচ্ছেন।

$response = new JsonResponse($item);

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

অনুরোধ বস্তুটি কিছুটা আকর্ষণীয়। এটি একই শুরু:

$request = new Request('incoming request information including uri and headers');

প্রাথমিক তথ্য পরিবর্তন করার দরকার নেই। তবে অনুরোধটি পাশ করার সাথে সাথে অতিরিক্ত প্রক্রিয়াজাতকরণের তথ্য যুক্ত করার প্রয়োজন হয় often উদাহরণস্বরূপ, আপনার কাছে একটি url ম্যাচার থাকতে পারে যা সিদ্ধান্ত দেয় যে প্রদত্ত অনুরোধের জন্য কী পদক্ষেপ নেওয়া উচিত।

$request->setAttribute('action',function() {});

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


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

উত্তর:


4

অপরিবর্তনীয় অনুরোধ / প্রতিক্রিয়া অবজেক্ট ব্যবহার করার ক্ষেত্রে লোকেরা কী সুবিধা দেখতে পাবে?

আমি @ মাইনমা'র এই বক্তব্যের সাথে একমত হয়েছি "পাঠের সামান্য উপকারের ফলে নমনীয়তার সম্ভাবনা অভাবকে ক্ষতিপূরণ হয় কিনা তা আমি নিশ্চিত নই " এবং ব্যক্তিগতভাবে আমি PHP HTTP Requestঅস্থায়ী বস্তু বা PHP HTTP Responseঅস্থায়ী বস্তুকে অপরিবর্তনীয় হতে বাধ্য করার কোনও ব্যবহারিক এবং দরকারী দিক দেখতে পাই না

এই ধরণের প্রয়োজনীয়তাগুলির সাথে মোকাবিলা করার কোনও অভিজ্ঞতা?

  1. মাইক্রোসফ্ট এর Windows Presentation Foundationকাঠামো হিমায়িত বস্তুর ধারণা প্রবর্তন করে । একবার হিমশীতল হয়ে গেলে এ জাতীয় জিনিসগুলি হয়ে যায়

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

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

  2. Nancy( "লাইটওয়েট, কম অনুষ্ঠান, .net এবং মনো উপর HTTP- র ভিত্তিক পরিষেবাগুলির নির্মাণের জন্য ফ্রেমওয়ার্ক") মধ্যে অপরিবর্তনীয়তা সুবিধার বর্ণনা মন্তব্য কমিট এক হিসাবে

    ... আমরা ধরে নিতে পারি যে আমাদের ক্যাশেগুলি বন্ধ হয়ে গেলে তা অপরিবর্তনীয়, যার অর্থ আমাদের এত তাড়াতাড়ি পারফরম্যান্সের কোনও লক নেই (যদিও হিটটি বিশাল নয়) ...

    আমি অপরিবর্তনীয়তা সম্পর্কে অন্য কোন উল্লেখযোগ্য মন্তব্য খুঁজুন পারি না তবে পুনর্ব্যবহারযোগ্য, ক্যাশেবেল প্রতিক্রিয়া বস্তুর সুবিধা প্রযোজ্য হতে পারে PHPহিসাবে ভাল

উপরের বিষয়গুলি অফ-টপিক উত্তরগুলির মতো দেখতে পারে তবে আমি অন্য কিছু সম্পর্কে অবগত নই এবং এজন্যই আমি মনে করি অপরিবর্তনীয়তা প্রয়োজনীয়তা একটি কৃত্রিম সমস্যা এবং বরং পছন্দ বা কোডিং শৈলীর বিষয় etc.


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

7

সাধারণভাবে অপরিবর্তনীয় জিনিসগুলির বিভিন্ন সুবিধা রয়েছে।

  • সমান্তরালভাবে সম্পাদিত কোডে অপরিবর্তনীয় অবজেক্টগুলি ব্যবহার করা কতটা সহজ তা সর্বাধিক গুরুত্বপূর্ণ important এটিও ব্যাখ্যা করে যে "পিএইচপি-র জমিতে অপরিবর্তনীয়তা সত্যই কখনই ধরা পড়েনি"

  • রাজ্যের ধারাবাহিকতা প্রাপ্তি সহজ।

  • অবজেক্টস কাজ করা সহজ, আরও প্রাকৃতিক।

প্রয়োজনীয় জিনিস হ'ল বস্তুটির তার জীবনের সময়কালে কতটা পরিবর্তন হওয়া উচিত an এক অপরিবর্তনীয় বস্তুর প্রতি পরিবর্তনের জন্য একটি অতিরিক্ত উদাহরণ তৈরি করা প্রয়োজন যা মেমরির ক্ষেত্রে (এবং সম্ভবত সিপিইউ চক্রের ক্ষেত্রেও) খুব ব্যয়বহুল হতে পারে। এ কারণেই বেশিরভাগ প্রোগ্রামিং ভাষাগুলি যেখানে stringঅপরিবর্তনীয়, কিছু ধরণের মিউটেবল স্ট্রিংয়ের জন্য অন্য শ্রেণি সম্পন্ন হয়StringBuilder সি # এর হয়, যেখানে স্ট্রিংগুলি অনেকগুলি ছোট অংশ থেকে সংযুক্ত করা হয়, প্রতিটি অংশটি গতিশীলভাবে যুক্ত হয় added

ক্লায়েন্ট-সাইড লাইব্রেরিতে (এইচটিটিপি অনুরোধ প্রেরণ এবং প্রতিক্রিয়া গ্রহণ করা), এটি HTTP অনুরোধ এবং প্রতিক্রিয়াটিকে অপরিবর্তনীয় করে তোলে তা বোঝা যায়: কিছু অনুরোধগুলি একটি সাবলীল ইন্টারফেসের সাহায্যে তৈরি করা যেতে পারে, তবে এটি প্রধান ব্যবহার নয়। প্রতিক্রিয়া যে কোনওভাবেই পরিবর্তন করা হবে না, তাই অপরিবর্তনীয়তা বোঝা যায়।

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

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

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


1
আইএমওর উল্লেখ করার মতো একটি সুবিধা হ'ল আপনি যখন অবিচ্ছিন্ন জিনিস রাখেন তখন কখনই নিজেকে জিজ্ঞাসা করার দরকার নেই যে আপনি কোনও ব্যক্তিগত অনুলিপি নিয়ে কাজ করছেন কিনা আপনি নির্দ্বিধায় পরিবর্তন করতে পারেন বা অন্য কোনও অবজেক্টের মালিকানাধীন একটি রেফারেন্স যেখানে পরিবর্তনগুলি অন্য বস্তুগুলিকে প্রভাবিত করতে পারে।
ফিলিপ

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

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