সার্ভার থেকে ব্যবহারকারীর কাছে প্রেরিত ডেটা কীভাবে গঠন করবেন?
মেসেজিং প্যাটার্নটি ব্যবহার করুন । ঠিক আছে, আপনি ইতিমধ্যে একটি মেসেজিং প্রোটোকল ব্যবহার করছেন, তবে আমি বোঝাতে চাইছি পরিবর্তনগুলি বার্তা হিসাবে ... বিশেষত ইভেন্টগুলি events যখন সার্ভারের দিক পরিবর্তন হয়, এর ফলে ব্যবসায়িক ইভেন্ট হয় in আপনার দৃশ্যে আপনার ক্লায়েন্টের দর্শনগুলি এই ইভেন্টগুলিতে আগ্রহী। ইভেন্টগুলিতে সেই পরিবর্তনের সাথে সম্পর্কিত সমস্ত ডেটা থাকা উচিত (অগত্যা সমস্ত দৃশ্য ডেটা নয়) view ক্লায়েন্ট পৃষ্ঠার তারপরে ইভেন্টের ডেটা দিয়ে এটি রক্ষণাবেক্ষণের অংশগুলি আপডেট করা উচিত।
উদাহরণস্বরূপ, আপনি যদি স্টক টিকার আপডেট করে থাকেন এবং এএপিএল পরিবর্তিত হয়ে থাকেন তবে আপনি সমস্ত স্টকের দাম বা এএপিএল (নাম, বিবরণ ইত্যাদি) সম্পর্কিত সমস্ত ডেটা নীচে নামাতে চাইবেন না। আপনি কেবল এএপিএল, ব-দ্বীপ এবং নতুন দামকে চাপ দিন। ক্লায়েন্টে, তারপরে আপনি কেবলমাত্র সেই স্টকের দামটি ভিউতে আপডেট করবেন।
আমি কি কেবল "এই সংস্থানটি আপডেট হয়ে গেছে এবং আপনার এটি একটি এজেএক্স কলের মাধ্যমে পুনরায় লোড করা উচিত" এর মতো ইভেন্টগুলি প্রেরণ করা উচিত অথবা আপডেট হওয়া ডেটাটি পুশ করা উচিত এবং প্রাথমিক এজেএক্স কলগুলির মাধ্যমে লোড হওয়া পূর্ববর্তী ডেটাগুলি প্রতিস্থাপন করা উচিত?
আমিও বলব না। আপনি যদি ইভেন্টটি প্রেরণ করছেন তবে এগিয়ে যান এবং এর সাথে প্রাসঙ্গিক ডেটা প্রেরণ করুন (পুরো বস্তুর ডেটা নয়) not এটি কী ধরণের ইভেন্টের জন্য একটি নাম দিন। (নামটির নামকরণ এবং কী কী ডেটা এই ইভেন্টের সাথে প্রাসঙ্গিক তা সিস্টেমের যান্ত্রিক কার্যকারিতা ছাড়িয়ে যায় This ব্যবসায়ের যুক্তি কীভাবে মডেল করা হয় তার সাথে এর আরও বেশি সম্পর্ক রয়েছে)) আপনার ভিউ আপডেটকারীদের প্রতিটি নির্দিষ্ট ইভেন্টকে কীভাবে অনুবাদ করতে হয় তা জানতে হবে একটি সুনির্দিষ্ট দর্শন পরিবর্তন (যেমন পরিবর্তিত হয়েছে কেবল তা আপডেট করুন)।
প্রেরিত ডেটাতে কীভাবে একটি সুসংগত এবং স্কেলেবল কঙ্কালের সংজ্ঞা দেওয়া যায়? এটি কি কোনও মডেল আপডেট বার্তা বা "ব্লেব্লাব্লাব্লাহ'র সাথে একটি ত্রুটি ছিল" বার্তাটি
আমি বলব এটি একটি বড়, মুক্ত-সমাপ্ত প্রশ্ন যা অন্য কয়েকটি প্রশ্নের মধ্যে বিভক্ত হয়ে আলাদাভাবে পোস্ট করা উচিত।
যদিও সাধারণত, আপনার ব্যাক এন্ড সিস্টেমে আপনার ব্যবসায়ের গুরুত্বপূর্ণ ঘটনার জন্য ইভেন্টগুলি তৈরি এবং প্রেরণ করা উচিত। এগুলি বহিরাগত ফিড থেকে বা ব্যাক-এন্ডের ক্রিয়াকলাপ থেকে আসতে পারে।
ব্যাকএন্ডের যে কোনও জায়গা থেকে কীভাবে সমস্ত কিছু তথ্য প্রেরণ করবেন না?
প্রকাশ / সাবস্ক্রাইব প্যাটার্ন ব্যবহার করুন । যখন আপনার এসপিএ একটি নতুন পৃষ্ঠা লোড করে যা রিয়েল-টাইম আপডেটগুলি পেতে আগ্রহী হয়, পৃষ্ঠাটি কেবল এটি ব্যবহার করতে পারে এমন ইভেন্টগুলিতে সাবস্ক্রাইব করা উচিত এবং সেই ইভেন্টগুলি আসার সাথে সাথে ভিউ আপডেট লজিককে কল করা উচিত You সম্ভবত আপনার পब / সাব লজিকের প্রয়োজন হবে নেটওয়ার্ক লোড কমাতে সার্ভার। ওয়েবসকেট পাব / সাব-এর জন্য গ্রন্থাগারগুলি বিদ্যমান, তবে আমি নিশ্চিত নই যে সেগুলি রিয়েল বাস্তুতন্ত্রের মধ্যে কী রয়েছে।
সার্ভারে এবং ক্লায়েন্টের উভয় ক্ষেত্রে ব্যবসায়ের যুক্তিযুক্ত সদৃশটি কীভাবে হ্রাস করা যায়?
দেখে মনে হচ্ছে আপনি ক্লায়েন্ট এবং সার্ভার উভয় ক্ষেত্রেই ভিউ ডেটা আপডেট করতে চলেছেন। আমার অনুমান যে আপনাকে সার্ভার-সাইড ভিউ ডেটা প্রয়োজন যাতে রিয়েল-টাইম ক্লায়েন্টটি শুরু করতে আপনার কাছে স্ন্যাপশট থাকে। দুটি ভাষা / প্ল্যাটফর্ম জড়িত থাকার কারণে (রুবি এবং জাভাস্ক্রিপ্ট), উভয়টিতে ভিউ আপডেটের যুক্তি লিখতে হবে। ট্রান্সপ্লাইং বাদে (যার নিজস্ব সমস্যা রয়েছে), আমি এর আশেপাশে কোনও উপায় দেখছি না।
প্রযুক্তিগত বিষয়: ডেটা ম্যানিপুলেশন (দেখুন আপডেট) ব্যবসায়ের যুক্তি নয়। আপনি যদি ব্যবহারের ক্ষেত্রে বৈধতা বোঝাতে চান, তবে এটি অপরিহার্য বলে মনে হয় কারণ ভাল ব্যবহারকারীর অভিজ্ঞতার জন্য ক্লায়েন্টের বৈধতা প্রয়োজনীয়, তবে শেষ পর্যন্ত সার্ভারের দ্বারা বিশ্বাস করা যায় না।
এখানে আমি কীভাবে এ জাতীয় জিনিসটি সুসংবদ্ধভাবে দেখছি।
ক্লায়েন্টের দর্শন:
- একটি দর্শন স্ন্যাপশট এবং ভিউ এর শেষ দেখা ইভেন্ট নম্বর অনুরোধ
- এটি ভিউটি প্রিপুলেট করবে যাতে ক্লায়েন্টকে স্ক্র্যাচ থেকে তৈরি করতে না হয়।
- সরলতার জন্য HTTP GET এর ওপরে হতে পারে
- একটি ওয়েবসকেট সংযোগ তৈরি করে এবং ভিউয়ের শেষ ইভেন্ট নম্বর থেকে শুরু করে নির্দিষ্ট ইভেন্টগুলিতে সদস্যতা গ্রহণ করে।
- ওয়েবসকেটের মাধ্যমে ইভেন্টগুলি গ্রহণ করে এবং ইভেন্টের ধরণ / ডেটার উপর ভিত্তি করে এর দৃশ্য আপডেট করে।
ক্লায়েন্ট আদেশ:
- ডেটা পরিবর্তনের জন্য অনুরোধ করুন (HTTP পুট / পোস্ট / মোছা)
- প্রতিক্রিয়া হ'ল সাফল্য বা ব্যর্থতা + ত্রুটি
- (পরিবর্তনের দ্বারা উত্পন্ন ইভেন্টগুলি গুলি ওয়েবসকেটের উপরে এসে একটি ভিউ আপডেট আপডেট করবে))
সার্ভার সাইডটি আসলে সীমিত দায়িত্ব সহ বেশ কয়েকটি উপাদানতে বিভক্ত হতে পারে। একটি যা কেবল আগত অনুরোধগুলি প্রক্রিয়া করে এবং ইভেন্ট তৈরি করে। আর একজন ক্লায়েন্টের সাবস্ক্রিপশন পরিচালনা করতে পারে, ইভেন্টগুলি শুনতে (প্রক্রিয়াতে বলুন) এবং উপযুক্ত ইভেন্টগুলি গ্রাহকদের কাছে ফরোয়ার্ড করতে পারে। আপনার কাছে তৃতীয়টি থাকতে পারে যা ইভেন্টগুলি এবং সার্ভার-সাইড ভিউগুলি আপডেট করার শোনায় - গ্রাহকরা ইভেন্টগুলি গ্রহণের আগে সম্ভবত এটি ঘটে।
আমি যা বর্ণনা করেছি তা হ'ল একরকম সিকিউআরএস + মেসেজিং এবং আপনি যে ধরণের সমস্যার মুখোমুখি হচ্ছেন সেগুলি সমাধান করার জন্য একটি সাধারণ কৌশল।
আমি এই বিবরণে ইভেন্ট সোর্সিংকে আনিনি কারণ আমি নিশ্চিত নই যে এটি আপনি গ্রহণ করতে চান এমন কিছু কিনা বা আপনার প্রয়োজনে এটি প্রয়োজন হয় কিনা I'm তবে এটি একটি সম্পর্কিত প্যাটার্ন।