2010-01-05 4 views
5

मुझे लगता है कि बीएलएल डेटा के बारे में है। इसमें SendEmail नामक एक विधि शामिल नहीं होनी चाहिए। बीएलएल डेटा कैशिंग के लिए एक जगह है, इसे जोड़कर, व्यवसाय से संबंधित गणना कर रही है। ईमेल भेजना एक व्यवसाय प्रक्रिया है लेकिन वास्तव में ईमेल भेजने वाला कोड बीएलएल नेमस्पेस के बाहर होना चाहिए।बिजनेस लेयर लॉजिक (बीएलएल) डेटा के बारे में है?

क्या बीएलएल केवल डेटा के बारे में है?

+0

जब तक आपका व्यवसाय ईमेल नहीं भेज रहा हो। – cgp

+0

@alt - यहां तक ​​कि यदि उसका व्यवसाय ईमेल भेजना चाहता है, तो ईमेल भेजने का तरीका बीएलएल के अंदर परिभाषित नहीं किया जाना चाहिए। इसे उपयोगिता वर्ग में अलग किया जाना चाहिए। – JonH

उत्तर

11

BLL, डेटा के बारे में नहीं है यह सब के बारे में क्या डेटा के साथ किया जाना चाहिए है।

  • उपयोगकर्ता केवल किसी भी आवेदन, जो लोकप्रिय प्रस्तुति परत के रूप में जाना जाता है के सामने के अंत प्रस्तुति-रूपों के साथ बातचीत करेंगे।

  • डाटा या प्रदर्शित किया जाएगा डेटा के विभिन्न स्रोतों से इस परत को इनपुट/आउटपुट के रूप में आदान-प्रदान किया। ये स्रोत डेटाबेस या वेब-सेवा हैं। कोड का टुकड़ा जो वास्तव में डेटा के संबंधित स्रोतों को इन डेटा को भेजता या भेजता है वह है जिसे हम DAL - डेटा एक्सेस लेयर के रूप में कहते हैं।

  • अनुप्रयोग के बीच में विशेष अभियान जो हम आवेदन-आवश्यकताओं या उपयोगकर्ता के जरूरतों फोन करता है। एप्लिकेशन के इस रणनीतिक भाग को बीएलएल कहा जाता है जो वास्तव में क्लाइंट की पते की आवश्यकता है जिसके लिए आप एप्लिकेशन विकसित कर रहे हैं।

  • यदि डेटा डेटाबेस में संग्रहीत करने की आवश्यकता है, बीएलएल के पास अंतर्निहित परत के रूप में डीएएल होगा।

  • BLLडेटा के स्रोतों के बारे में पता नहीं है और कैसे डेटा प्राप्त किए गए है या डेटा सूत्रों के भेजा है। आपके पास इसके लिए डीएएल है। बीएलएल केवल डेटा के बारे में जानता है, कि व्यापार-वस्तुओं के रूप में अधिक बार और डेटा व्यवसाय-वस्तुओं पर संचालन। उपयोगकर्ता की वेबसाइट या एक डेस्कटॉप अनुप्रयोग उपयोग कर रहा है कि क्या

  • BLL भी नहीं जानता है। आपके पास प्रस्तुति परत है।

3

बीएलएल आपके व्यापार तर्क स्तर के लिए खड़ा है। यह आपके व्यापार तर्क परत से संबंधित कुछ भी संभाल लेना चाहिए। SendEmail कुछ प्रकार की उपयोगिता कक्षा में बेहतर हो सकता है?

यदि आप अपने बीएलएल को ईमेलिंग तंत्र के बारे में बताते हैं तो आप इसे बहुत अधिक जानकारी दे रहे हैं (कसकर युग्मित, कार्यों के लिए डेमेटर के कानून का पालन करें, विकी/Google इसे)। आपका बीएलएल ईमेल के बारे में परवाह नहीं करता है और न ही इसे चाहिए।

जब आपने डेटा का उल्लेख किया है, तो संभवतः आप डीएएल (डेटा एक्सेस लेयर) के बाद हैं। यह वह परत है जो डाटाबेस जैसे कुछ संसाधनों के लिए डेटा आवेषण/अपडेट इत्यादि से संबंधित है।

2

BLL डेटा के बारे में नहीं है ... यह व्यापार (इसलिए व्यापार तर्क लेयर) के बारे में है।

दाल सब डाटा के बारे में है।

शायद मैं SendMail विधि को उपयोगिता वर्ग में ले जाऊंगा, लेकिन यह पूरी तरह वैध है कि आपको बीएलएल से SendMail को कॉल करने की आवश्यकता होगी।

+0

धन्यवाद, क्या होगा यदि आपके पास बीएलएल में SendEmail नामक एक विधि है, तो विधि वास्तव में कई चीजें करेगी 1- यूटिल नामक उपयोगिता वर्ग का उपयोग करके यह एन्क्रिप्ट करेगा और ईमेल भेजेगा। 2- डीएएल के माध्यम से डेटाबेस में भेजने की स्थिति डालें। – Costa

+0

उस स्थिति में, मैं कहूंगा कि बीएलएल विधि के लिए सही स्थान है ...हालांकि नाम थोड़ा और वर्णनात्मक हो सकता है (खुद को उपयोगिता शैली SendEmail विधि से अलग करने के लिए)। –

0

आपकी व्यावसायिक तर्क परत को आपके व्यवसाय से संबंधित चीजों को संभालना चाहिए, यह कहने के लिए कि आपकी व्यावसायिक परत केवल डेटा के बारे में सटीक नहीं है। उदाहरण के लिए कई लोगों को प्रदर्शन कारणों के लिए डेटा कैश करने की आवश्यकता होती है, और इसलिए कहने के लिए कि कैशिंग व्यवसाय विशिष्ट है।

हालांकि कुछ गणनाएं (उदाहरण के लिए उद्धरण की गणना करना) निश्चित रूप से व्यावसायिक तर्क के रूप में गिना जा सकता है, क्योंकि वे केवल आपके व्यवसाय के लिए विशिष्ट हैं।

ईमेल भेजना निश्चित रूप से व्यावसायिक तर्क नहीं है - यह एक सामान्य सामान्य आवश्यकता है और निश्चित रूप से आपके व्यापार या उद्योग के लिए विशिष्ट नहीं है।

0

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

हालांकि, ईमेल भेजने की ट्रिगरिंग बसिन परत से आ सकती है, और व्यापार परत प्रस्तुति परत को कॉल नहीं करनी चाहिए।

इस मामले में व्यवसाय परत के लिए एक ईमेल कतार प्रबंधित करने के लिए एक संभावित समाधान होगा, और प्रस्तुति परत ईमेल उठाकर उन्हें भेजने का प्रबंधन करेगी।


कभी-कभी पैटर्न के प्रति कठोर रूप से अनुरूप होने से हल करने की कोशिश करने से अधिक समस्याएं हो सकती हैं। यदि आपको अब आपके लिए एक विशिष्ट कार्यान्वयन कार्य मिल रहा है और इससे कम से कम मध्यम अवधि में कोई समस्या नहीं आती है, और "सही" समाधान की जांच और कार्यान्वयन की लागत बहुत बढ़िया है, तो आपको जो मिला है उसके साथ जाएं।

0

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

पिछली टीमों में मैंने हमेशा अलग-अलग कार्यों पर काम किया है जो किसी भी प्रोग्राम/व्यवसाय में दिखाई दे सकते हैं जैसे कि अपनी खुद की जेनेरिक क्लास/विधि में ईमेल भेजना। एक बार जब मैंने बीएलएल कक्षा देखी है तो ईमेल के लिए कोई संबंध है जब एक ईमेल भेजने के लिए व्यवसाय नियम लिखा गया था। इस मामले में बीएलएल को ईमेल भेजने के लिए ईमेल का पाठ पता था, लेकिन ईमेल भेजने के लिए सामान्य ईमेल क्लास को तुरंत चालू कर दिया गया।