ডিডিডি এবং সিআরকিউএস ব্যবহার করার সময়, আদেশ অনুসারে ঠিক একটি ইভেন্ট হওয়া উচিত?


17

আমি কনফিগারেশন ওভার কনভেনশন সহ একটি ডিডিডি অ্যাপ্লিকেশন ডিজাইনের একটি উপায় খুঁজছি।

বলুন একটি সামগ্রিক "ক্লায়েন্ট" এর একটি কমান্ড রয়েছে "ফিলপ্রোফিল" defined এটি যৌক্তিকভাবে একটি ইভেন্ট "প্রোফাইলফিল্ড" উত্থাপন করবে।

কোনও ঘটনা যখন কোনও কমান্ড একটি ইভেন্টের চেয়ে বেশি উত্থাপিত করে, বা কোনও যুক্তিটির ভিত্তিতে কোনও কমান্ড বিভিন্ন ঘটনা উত্থাপন করে? বা এটি কি সর্বদা 1 - 1 টি সম্পর্ক (1 কমান্ড সর্বদা কোনওটিই উত্থাপন করবে না বা প্রদত্ত কোনও ধরণের একক ঘটনা)।

আমি এটি জিজ্ঞাসা করছি কারণ এটি যদি সত্য হয় তবে একটি আদেশ সর্বদা একই ঘটনা উত্থাপন করবে, আমি সেই সত্যের উপর আমার কনভেনশন সিস্টেমটি তৈরি করতে পারি। আমি জানি যে "রাইসইভেন্ট" এর ফলাফল "ইভেন্টরাইজড" ...


1
যদি কমান্ডটি 2 টি জিনিস ঘটায় আপনি প্রতিটি বিষয় একটি ইভেন্ট উত্থাপনের আশা করতে পারেন। প্রোফাইল জেনারেটেড, প্রোফাইল সেভড, এছাড়াও যে কোনও ইভেন্ট ত্রুটির কারণ হতে পারে যা আবার একটি ঘটনা বাড়াতে পারে
ইওয়ান

তুচ্ছ ঘটনাগুলি সিস্টেমগুলি পূর্ব কমন্ড, আফটারকম্যান্ড ইত্যাদির ইভেন্টগুলি বাস্তবায়িত করতে পারে
ইওয়ান

অথবা কমান্ডটি লুপ হতে পারে অর্থাত্ ফিলপ্রোফাইলে () প্রোফাইলফিল্ড, প্রোফাইলফিল্ড ....
ইভান

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

উত্তর:


18

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

  • ইভেন্টগুলি সিস্টেমের দৃষ্টিকোণ থেকে আপনার সিস্টেমে প্রাথমিক "জিনিসগুলি ঘটতে পারে" ক্যাপচার করে।

  • কমান্ডগুলি ব্যবহারকারীকে তার দৃষ্টিকোণ থেকে অপারেশন হিসাবে বিবেচনা করে তা দ্বারা সংজ্ঞায়িত করা হয়

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

উদাহরণস্বরূপ, টিউটোরিয়াল ইভেন্টগুলির উল্লেখ করে

  • TabOpened
  • DrinksOrdered
  • FoodOrdered

এবং আদেশ

  • OpenTab
  • PlaceOrder

এখানে, "ওপেনট্যাব" কমান্ডটি একটি "ট্যাব-ওপেনড" পরিচালিত করবে, তবে প্লেসঅর্ডার কমান্ডটি "ড্রিঙ্কস অর্ডারড", "ফুডঅর্ডারড" বা উভয়ই ইভেন্টগুলিতে নেতৃত্ব দেবে।

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


10

সাধারণত একটি কমান্ড একটি ইভেন্টে নেতৃত্ব দেয়। তবে কিছু ক্ষেত্রে এটি একের বেশিও হতে পারে, এটি আপনার বাস্তবায়নের উপর নির্ভর করে।

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

RegisterUserCommand

  • User.create (ইমেল, পাসওয়ার্ড) → ব্যবহারকারীর তৈরি re
  • User.updateProfile (firstname, LASTNAME, অবস্থান) → UserProfileUpdatedEvent
  • User.joinDefaultGroup () → UserJoinedGroupEvent

আপনি যদি পরে সিদ্ধান্ত নেবেন তবে কী হবে UserWasAddedToCrm? আপনার পুরো স্ট্রিমটি আবার লিখবেন?
mcintyre321

@ mcintyre321 অনুসন্ধান কোরিওগ্রাফ বনাম অর্কেস্ট্রেটেড ইভেন্টগুলি
বেন্টেন

10

একটি কমান্ড একাধিক ইভেন্ট উত্থাপন করতে পারে। এটি কেবল একটি বাস্তবের যৌক্তিক উপসংহার: Composite commandউপস্থিত রয়েছে।

বলুন আপনার কাছে দুটি কমান্ড রয়েছে, প্রত্যেকটি একটি ইভেন্ট উত্থাপন করে। তারপরে, আপনি এই দু'জনের একটি সমন্বিত কমান্ড তৈরি করুন। কম্পোজিট কমান্ড ব্যবহার করে একের দৃষ্টিভঙ্গি থেকে মনে হয় কমান্ডটি দুটি ইভেন্ট উত্থাপন করেছে।

সুতরাং একক কমান্ড একাধিক (বা এমনকি কোনও) ইভেন্ট উত্থাপন করা থেকে বিরত থাকে না।

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