2013-08-07 5 views
6

मुझे आश्चर्य है कि क्या यह समेकन से अपवाद फेंकने के बजाय घटनाओं को प्रकाशित करना बेहतर है। कहें, मेरे पास एक डोमेन है जहां एक आवश्यकता है कि केवल एक निश्चित ग्रेड स्तर के छात्र खेल के लिए नामांकन कर सकें। यदि मैं ऐसे छात्र पर एनरोलफ़ोरस्पोर्ट्स को कॉल करता हूं जो मानदंडों को पूरा नहीं करता है, तो क्या कुल मिलाकर अपवाद फेंकना चाहिए या एक ईवेंट प्रकाशित करना चाहिए, खासकर यदि अन्य योग या प्रक्रिया प्रबंधक प्रक्रिया के परिणाम में रूचि रखते हैं?सीक्यूआरएस - असाधारण परिदृश्यों के लिए डोमेन अपवाद वी घटनाक्रम

यदि कोई ईवेंट प्रकाशित होता है, तो इसका मतलब यह नहीं है कि जब हम दोबारा खेल रहे हों तो ईवेंट को संभालने के लिए संबंधित आंतरिक ईवेंट हैंडलर की आवश्यकता होगी, भले ही घटना कुल की स्थिति को नहीं बदलेगी?

यदि कोई अपवाद फेंक दिया गया है, तो अन्य पार्टियों को कैसे सूचित किया जाएगा? क्या कमांड हैंडलर अपवाद पकड़ सकता है और फिर एक ईवेंट बढ़ा सकता है? क्या कमांड हैंडलर से घटनाएं उठाई जा सकती हैं?

उत्तर

5

मुख्य रूप से बोलते हुए, एक आदेश वैध या निष्पादित किया जाना चाहिए, या अमान्य और निष्पादित नहीं किया जाना चाहिए। स्पॉन्गिंग त्रुटि घटनाओं के साथ विचार आपको बीच में कहीं छोड़ देता है और जो भी आदेश भेजता है उसे प्रतिक्रिया अस्पष्ट और देरी होती है। यह आपके डोमेन में एक अनावश्यक जटिलता भी है। यदि आप एक अपवाद फेंकते हैं तो यह ग्राहक कोड को तत्काल प्रतिक्रिया के रूप में आ जाएगा जो आदेश भेजता है।

+5

तत्काल प्रतिक्रिया के पाठ्यक्रम केवल तभी कार्य करेगा अपवाद तुल्यकालिक फेंक दिया जाता है, बाद में एक झरना बनाने के लिए एक जटिल गाथा या प्रक्रिया प्रबंधक की लाइन नीचे कहीं नहीं घटनाओं और आदेशों का। –

3

इस प्रश्न का आमतौर पर उत्तर नहीं दिया जा सकता है। कोई "सर्वोत्तम अभ्यास" नहीं है, यह वास्तव में कई कारकों पर निर्भर करता है।

फिर भी इस विषय में just recently been discussed at the DDD/CQRS mailing list है। इसे पढ़ें और आपको शायद वहां कुछ दिलचस्प और सहायक बिंदु मिलेगा।

ओह, और यहाँ विषय पर एक ब्लॉग पोस्ट है: Business Errors are Just Ordinary Events

संबंधित मुद्दे