दिलचस्प पोस्ट
टीडिंग के लिए पाइपिंग करते समय स्टडआउट के लाइन बफ़रिंग को बल दें Windows कमांड प्रॉम्प्ट आउटपुट प्रदर्शित करने और उसे किसी फ़ाइल में रीडायरेक्ट करना एचटीटीपी से रिमोट सर्वर से छवि कॉपी करें जेएसपी पेज के माध्यम से सर्वलेट को कैसे कॉल करें छवि तुलना एल्गोरिथम दो स्टैट :: वैक्टर को शामिल करना लॉक (मॉनिटर) एनएटी में आंतरिक कार्यान्वयन आईओएस 7 – व्यूडिडलोड और व्यूड डिडएपियर में अंतर कैसे टॉमकेट पर सीडीआई स्थापित और उपयोग करें? आईफोन लैंडस्केप एफएक्यू और सॉल्यूशंस मैं लिनक्स उबंटू टर्मिनल में एक फ़ोल्डर और उसके सभी सबफ़ोल्डर और फाइलों के लिए chmod कैसे सेट करूं? प्रोग्राम की जांच कैसे करें कि एक कीबोर्ड आईफोन ऐप में मौजूद है या नहीं? SQL सर्वर में कर्सर का उपयोग करने के लिए खराब अभ्यास क्यों माना जाता है? PHP में URL से पार्सिंग डोमेन सी / सी ++ में सामान्य वितरण के बाद यादृच्छिक संख्या उत्पन्न करें

JSF सेवा स्तर

मुझे यकीन नहीं है कि जेएसएफ में एमवीसी पर्यावरण के साथ मेरा दृष्टिकोण जाने का सबसे अच्छा तरीका है। चूंकि मैं जेएसएफ से सबसे अधिक प्राप्त करने की कोशिश कर रहा हूं, मैं यह जानना चाहूंगा कि मेरा सर्विस लेयर (या मॉडल, एमवीसी के शब्दों में बोल रहा है) को 'डिज़ाइन' किया जाना चाहिए।

मुझे पता है कि दृश्य-नियंत्रक का अनुपात 1 से 1 होना चाहिए (अपवाद का खंडन किया गया) अब मुझे अपना सर्विस लेयर कैसे डिजाइन करना चाहिए? क्या मुझे एक बड़ी सेवा का उपयोग करना चाहिए (ऐसा नहीं लगता है)? यदि नहीं, तो मुझे अपनी सेवाओं को किस प्रकार विभाजित करना चाहिए?

ध्यान दें, मेरी सेवा बीन्स (एमवीसी के नियमों में नियंत्रक) से बुलाएगी और सर्विस ही डीएओ को आवश्यक होने पर जेपीए का उपयोग कर देगा

अग्रिम में धन्यवाद

वेब के समाधान से एकत्रित समाधान "JSF सेवा स्तर"

सेवा स्तर (बिजनेस मॉडल) को मुख्य इकाई (डेटा मॉडल) के चारों ओर डिज़ाइन किया जाना चाहिए। User लिए User , Product लिए Product , OrderService लिए Order आदि। आपको बिल्कुल एक बड़ी सर्विस क्लास नहीं होना चाहिए। यह चरम तंग युग्मन है

सेवा स्तर एपीआई के रूप में ही, जावा ईई 6 सर्विस प्लयर एपीआई के रूप में ईजेबी 3.1 प्रदान करता है। अंधेरे J2EE की उम्र में, लंबे समय से पहले जब ईजेबी 2.0 भयानक था, तो स्प्रिंग अधिक बार सर्विस लेयर एपीआई के रूप में इस्तेमाल किया गया था। कुछ अभी भी इसे आजकल का उपयोग करते हैं, लेकिन जावा EE 6 के बाद से वसंत से सीखा सभी अच्छे सबक शामिल किए गए हैं, यह ज़रूरत से ज़्यादा ज़रूर बन गया है। ध्यान दें कि ईजेबी (और जेपीए) टॉमकैट जैसी बेर्बोन सर्विसलेट कंटेनरों में उपलब्ध नहीं है आपको इसके ऊपर ओपनएजेबी उदाहरण के लिए स्थापित करना होगा (या सिर्फ टॉमी में अपग्रेड करें)

सर्विस लेयर एपीआई पसंद के बावजूद, सर्वोत्तम सेवा परत में व्यवसाय की नौकरी पूरी करने से आपके जेएसएफ बैकिंग बीन (एक्शन) श्रोता तरीके को यथासंभव चालाक रखना होगा। ध्यान दें कि सेवा स्तर स्वयं से कोई भी JSF निर्भरता नहीं होना चाहिए। इसलिए किसी भी (में) javax.faces.* प्रत्यक्ष आयात javax.faces.* सेवा स्तर कोड में खराब डिजाइन इंगित करता है आपको बैकिंग बीन में विशेष कोड पंक्तियां रखनी चाहिए (यह आम तौर पर कोड है जो सेवा कॉल परिणाम के आधार पर चेस संदेश जोड़ता है) इस तरह से सेवा परत अन्य मोर्चे की समाप्ति के लिए पुन: उपयोग योग्य होता है, जैसे कि जेएक्स-आरएस या सादे सर्विसलेट्स भी।

आपको समझना चाहिए कि जावा ईई अनुप्रयोग में सेवा स्तर का मुख्य लाभ कंटेनर प्रबंधित लेनदेन की उपलब्धता है। एक @Stateless ईजेबी पर एक सेवा विधि कॉल प्रभावी रूप से एक एकल डीबी लेनदेन के रूप में गिना जाता है। इसलिए यदि किसी एक डीएओ ऑपरेशन में से किसी एक के दौरान @PersistenceContext EntityManager का उपयोग करते हुए अपवाद होता है जिसे सेवा विधि कॉल द्वारा लागू किया जाता है, तो एक पूर्ण रोलबैक शुरू हो जाएगा इस तरह आप गंदे डीबी राज्य के बदले एक साफ डीबी राज्य के साथ खत्म हो जाते हैं, क्योंकि उदाहरण के लिए पहली डीबी मैनिप्युलेशन क्वेरी सफल हुई, लेकिन दूसरा नहीं।

यह भी देखें:

  • संस्थाओं के लिए मास्टर-विस्तार पृष्ठों का निर्माण करना, उन्हें कैसे लिंक करना है और किस बीन क्षेत्र को चुनना है
  • जब यह आवश्यक है या स्प्रिंग या ईजेबी 3 या उन सभी को एक साथ उपयोग करने के लिए सुविधाजनक है?
  • जेएसएफ नियंत्रक, सेवा और डीएओ

सेवा और मॉडल संस्थाओं के बीच 1: 1 का अनुपात शायद आपके ऐप में कुछ संस्थाओं में नहीं है। लेकिन अगर यह एक बड़ा ऐप है, तो बहुत अधिक सेवाएं मिलेंगी।

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

डीएओ और मॉडल संस्थाओं के बीच का अनुपात 1: 1 है प्रत्येक डीएओ अपनी इकाई की सीआरयूडी संचालन और पूछताछ करता है। यदि एक विधि को 2 संबंधित संस्थाओं से पूछना चाहिए, तो व्यापार अवधारणाओं के आधार पर इसे अधिक उपयुक्त डीएओ में डाल दें।

JSF प्रस्तुति परत में मुझे न तो 1: 1 अनुपात पृष्ठ और नियंत्रकों के बीच है, जो बहुत अधिक नियंत्रक होगा। मैं एक समूह में प्रत्येक सेवा के उपयोग मामलों को करने के लिए आवश्यक सभी पृष्ठों को एक उलझन में रखता हूं। तो अनुपात 1: 1 नियंत्रकों और सेवाओं के बीच होता है, प्रत्येक सेवा को नियंत्रक में इंजेक्शन करता है जिनके पन्नों के उपयोग के मामलों में इसका इस्तेमाल होता है।

बेशक, ये सामान्य सिद्धांत हैं आपके पास कुछ खास मामलों में ऐसे एप्लिकेशन होंगे जो उन्हें तोड़ दिया, लेकिन वे कुछ ही हैं।

आपके पास बहुत अधिक सेवाएं और नियंत्रक नहीं हो सकते हैं, लेकिन बहुत कम नहीं हैं, क्योंकि तब उनके पास बहुत अधिक तर्क और फ़ील्ड होगा आपको समझौता करना चाहिए