কৌণিক 6 - কেন পরিষেবা ইনজেকশন চেয়ে @ এনজিআরএক্স / স্টোর ব্যবহার করবেন


86

আমি সম্প্রতি @ এনজিআরএক্স / স্টোরের সাথে অ্যাংুলার 6 শিখছি যখন টিউটোরিয়ালটির একটি হল রাষ্ট্র পরিচালনার জন্য @ এনজিআরএক্স / স্টোর ব্যবহার করা, তবে আমি পর্দার পিছনে @ এনজিআরএক্স / স্টোর ব্যবহারের সুবিধা বুঝতে পারি না।

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

এখন যদি আমরা @ এনজিআরএক্স / স্টোর ব্যবহার করে থাকি তবে আমাদের অ্যাকশন / স্টেট / রেডুসার / এফেক্টস / সিলেক্টর সংজ্ঞায়িত করতে হবে যা সম্ভবত উপরের ক্রিয়া বা ইভেন্টটি পরিচালনা করতে 4 বা 5 ফাইল লিখতে হবে, তবে এখনও মাঝে মাঝে আমাদের ব্যাকএন্ড এপি কল করতে হবে পরিষেবাটি ব্যবহার করে যা আরও জটিল এবং অপ্রয়োজনীয় বলে মনে হচ্ছে ...

অন্য কোনও দৃশ্যে , আমি দেখতে পাচ্ছি কিছু পৃষ্ঠা গ্রিড ডেটার মতো অবজেক্ট বা অবজেক্টের তালিকা সংরক্ষণ করতে @ এনজিআরএক্স / স্টোর ব্যবহার করে। , এটি কি কোনও ধরণের মেমোরি স্টোর ব্যবহারের জন্য?

সুতরাং এই প্রশ্নে ফিরে আসা, কেন আমরা এখানে কৌণিক প্রকল্পে @ এনজিআরএক্স / স্টোর পরিষেবার নিবন্ধকরণ স্টোর ব্যবহার করছি? আমি জানি এটি " স্টেট ম্যানেজমেন্ট " ব্যবহারের জন্য, তবে "রাজ্য পরিচালনা" আসলে কী? এটি কি লেনদেন লগের মতো কিছু এবং কখন আমাদের এটির প্রয়োজন হয়? কেন আমরা এটিকে সামনের প্রান্তে পরিচালনা করব? @ এনজিআরএক্স / স্টোর অঞ্চলে আপনার পরামর্শ বা অভিজ্ঞতাটি নির্দ্বিধায় শেয়ার করুন!


8
গত বছর আমি একটি সংস্থায় একটি নতুন কাজ শুরু করেছি। তারা রেডাক্সের সাথে অ্যাঙ্গুলার ব্যবহার করছিল। আমি রেডাক্সকে স্পর্শ করিনি, তবে এর বিটা প্রকাশের পর থেকেই আমি কৌণিক বিকাশ করছি। আমার প্রথম ধারণাটি হ'ল এ কী? এত জটিলতা কেবল এপিআই দিয়ে যোগাযোগ করতে এবং সেই ডেটাতে সাবস্ক্রাইব করতে। তারা আক্ষরিকভাবে প্রতিটি কিছুর জন্য রেডাক্স ব্যবহার করেছিল! এটি এমন গণ্ডগোল ছিল যে কাজ করা অসম্ভব ছিল। রেডাক্স / এনজিআরএক্সকে একটি কৌণিক অ্যাপে সংহত করার সত্যিই দরকার নেই। আপনি 'কৌণিক উপায়' সবকিছু করতে পারেন
ডিনো

4
এনজিআরএক্স তাত্পর্যপূর্ণভাবে একটি অযৌক্তিক বয়লারপ্লেট কোডের সাথে কোডের জটিলতা বৃদ্ধি করে। অন্যদিকে, এটি কৌনিক একটি সম্পূর্ণ কাঠামো হিসাবে ইতিমধ্যে বাক্সের বাইরে অফার করেছে, এর বাইরে খুব কমই সরবরাহ করে। এই ব্লগ পোস্টে আপনার প্রয়োজনীয় সমস্ত তথ্য কভার করা হয়েছে: কৌণিক অ্যাপ্লিকেশন স্টেট ম্যানেজমেন্ট: আপনার বাইরের ডেটা স্টোরগুলি দরকার (না)
সেডমে

উত্তর:


35

আমার ধারণা এনজিআরএক্স স্টোর সম্পর্কে আপনার এই দুটি পোস্ট পড়া উচিত:

যদি প্রথমটি এনজিআরএক্স স্টোর দ্বারা সমাধান করা মূল সমস্যাগুলি ব্যাখ্যা করে, তবে এটি প্রতিক্রিয়া হাও-টু থেকে এই বিবৃতিটি উদ্ধৃত করে "এটি মূল ফ্লাক্স, রেডাক্স, এনজিআরএক্স স্টোর বা সাধারণ কোনও স্টোরের সমাধানের ক্ষেত্রে সমানভাবে প্রযোজ্য বলে মনে হয়":

আপনার যখন ফ্লাক্স দরকার তখন আপনি জানতে পারবেন। আপনার যদি এটির প্রয়োজন হয় কিনা তা নিশ্চিত না হন তবে আপনার এটির দরকার নেই।

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

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

দ্বিতীয় পোস্টটি ফেসবুকের অপঠিত বার্তা পাল্টা ইস্যু নিয়ে প্রতিক্রিয়া বিশ্বে এমন সমাধানগুলি কী প্রদর্শিত হয়েছিল তা সম্পর্কে।

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

  • প্রাইভেট সাবজেক্ট পাবলিক পর্যবেক্ষণযোগ্য এবং পরবর্তী ফাংশন সহ পর্যবেক্ষক প্যাটার্ন
  • এনজিআরএক্স স্টোর

9

এছাড়াও তৃতীয় বিকল্প রয়েছে, উদাহরণস্বরূপ, পরিষেবাতে ডেটা থাকা এবং সরাসরি এইচটিএমএলে পরিষেবা ব্যবহার করা *ngFor="let item of userService.users"। সুতরাং আপনি যখন userService.usersঅ্যাড বা আপডেট ক্রিয়াকলাপের পরে পরিষেবাটিতে আপডেট হন স্বয়ংক্রিয়ভাবে এইচটিএমএলতে রেন্ডার হয়ে যায়, তখন কোনও পর্যবেক্ষণযোগ্য বা ইভেন্ট বা স্টোরের প্রয়োজন হয় না।


6
পরিষেবাটি ব্যক্তিগত হিসাবে ইনজেকশন দেওয়া থাকলে এটি এওটিতে কাজ করে না। কোনও উপাদানটির টেমপ্লেটে কোনও পরিষেবা প্রকাশ না করাই সেরা অনুশীলন। বরং উপাদানটিতে একটি পরিবর্তনশীল রাখুন এবং পরিষেবাটির ভেরিয়েবলের ভিত্তিতে এটি সেট / সেট করুন get
শ্রীচন্দ্রদীপ সি

2

যদি আপনার অ্যাপের ডেটা একাধিক উপাদানগুলিতে ব্যবহার করা হয়, তবে ডেটা ভাগ করার জন্য কোনও ধরণের পরিষেবা প্রয়োজন required এটি করার অনেকগুলি উপায় রয়েছে।

একটি মাঝারি জটিল অ্যাপ্লিকেশনটি অবশেষে সামনের দিকের পিছনের দিকের কাঠামোর মতো দেখাবে, পরিষেবাগুলিতে ডেটা হ্যান্ডলিংয়ের মাধ্যমে পর্যবেক্ষণের মাধ্যমে উপাদানগুলিতে ডেটা প্রকাশ করে।

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

আপনার এপিআই ইতিমধ্যে বিদ্যমান অনেকগুলি স্টেট ম্যানেজমেন্ট লাইব্রেরির মতো দেখতে শেষ হবে। এগুলি কঠিন সমস্যা সমাধানের জন্য বিদ্যমান। আপনার অ্যাপ্লিকেশনটি সহজ হলে আপনার সেগুলির প্রয়োজন হবে না।

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