আমি একটি আদেশ বা একটি ইভেন্ট ব্যবহার করা উচিত?


14

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

আসুন একটি উদাহরণ তাকান:

যখন কোনও নতুন ব্যবহারকারী কোনও ওয়েব অ্যাপ্লিকেশনটিতে নিবন্ধভুক্ত হন, আমাদের উচিত তার একটি অ্যাকাউন্ট তৈরি করা উচিত এবং একটি নিশ্চিতকরণ ইমেল প্রেরণ করা উচিত।

অ্যাকাউন্ট তৈরি করা - CreateUserCommandএটি বাসে একটি প্রেরণ এবং একটি বিশেষ উপাদান এটি পরিচালনা করতে সঠিক স্থান বলে মনে হচ্ছে component

অথবা এটি এমনকি একটি অ্যাসিক্রোনাস বাস যোগাযোগের মাধ্যমে প্রয়োগ করা উচিত নয়? আমরা চাই যে ব্যবহারকারী এখনই অ্যাপ্লিকেশনটিতে লগ ইন করতে সক্ষম হন। বাসের সাথে আমাদের কোনও গ্যারান্টি নেই যখন কমান্ডটি কার্যকর করা হবে।

ইমেল প্রেরণ - উপাদানটি অ্যাকাউন্ট তৈরি করার পরে আমি 2 টি সম্ভাবনা দেখতে পাচ্ছি

  1. বাসে আরেকটি কমান্ড প্রেরণ করুন SendConfirmationEmailCommand
  2. একটি ইভেন্ট প্রকাশ করুন UserAccountCreatedEvent

এবং এর চেয়ে ইমেল প্রেরক উপাদানটিকে এটি দখল করতে এবং এটির কাজটি করতে দিন।

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

আপনি কীভাবে এটি বাস্তবায়ন করবেন?

উত্তর:


16

নীতিগতভাবে, একটি কমান্ড একটি অনুরোধ বর্ণনা করে যা কার্যকর করা উচিত, অন্যদিকে একটি ইভেন্ট যা ঘটেছে তার কিছু বর্ণনা করে:

  • একটি কমান্ডের কোনও প্রসেসরের দ্বারা সম্পাদন করার জন্য কিছু ক্রিয়া প্রয়োজন এবং এই ক্রিয়াটি কেবলমাত্র এই প্রসেসরের দ্বারা সম্পাদন করা উচিত।

  • একটি ইভেন্ট হ'ল কিছু ক্রিয়াকলাপ যা ইতিমধ্যে সম্পাদিত হয়েছিল বা কোনও বাহ্যিক ঘটনার বিজ্ঞপ্তি। বেশ কয়েকটি প্রসেসর / এজেন্ট ইভেন্টটি সম্পর্কে জানতে আগ্রহী হতে পারে। তাদের বেশিরভাগ তাদের দায়িত্বের ডোমেনে এই বিজ্ঞপ্তিটির দ্বারা প্রয়োজনীয় আদেশ বা ক্রিয়াকলাপ জারি করতে পারে।

আপনার দৃশ্যে, আমি বুঝতে পারি যে:

  • CreateUserCommand একটি আদেশ
  • UserAccountCreatedEventCreateUserCommandঅ্যাকাউন্ট ইভেন্ট ম্যানেজমেন্ট সার্ভিসের মাধ্যমে সফলভাবে শেষ হয়ে গেলে এমন একটি ইভেন্ট জারি করা উচিত

এখন দুটি সম্ভাবনা রয়েছে:

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

আপনি যদি কোনও পরিষেবা বাসের পদ্ধতির পক্ষে যান, তবে এটি যে নমনীয়তাটি ব্যবহার করে তা ব্যবহার করার অর্থ হবে, অর্থাত্ বিকল্প 2 -কে সমর্থন করা।


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

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

@ গিসেক ২) একটি সার্ভিস বাসে, আমি কল্পনা করতে পারি যে আপনার খুব বিশেষায়িত পরিষেবা রয়েছে, যার প্রত্যেকটিরই সীমাবদ্ধ দায়বদ্ধ। এক্ষেত্রে অ্যাকাউন্ট ম্যানেজমেন্ট কেবল তৈরিটি সম্পাদন করে এবং যেটি আগ্রহী সে সম্পর্কে এটি জানায় it's কিছু অন্যান্য পরিষেবা তখন প্রতিক্রিয়া জানাতে বিষয়গুলি পর্যবেক্ষণ করবে। উদাহরণস্বরূপ, আপনার কাছে একটি যোগাযোগ পরিচালক থাকতে পারে, যিনি কখন এবং কীভাবে ব্যবহারকারীদের সাথে ইভেন্টগুলি যোগাযোগ করবেন তা সিদ্ধান্ত নেওয়ার জন্য ব্যবসায়ের বিধি প্রয়োগ করার দায়িত্বে থাকবেন। যদি আপনি একই পরিষেবাতে 1) +2) করেন তবে আপনার খুব কমই কোনও সার্ভিস বাসের প্রয়োজন হবে।
ক্রিস্টোফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.