2009-11-05 19 views
5

मैं अपने आवेदन के लिए एक डब्ल्यूसीएफ सेवा बनाने के एक चरण में हूं जो उत्पादों को प्रदान करेगा .. मेरे पास, डोमेन मॉडल और एप्लिकेशन के तहत दृढ़ता परत है।डब्ल्यूसीएफ सेवा में डेटा एक्सेस लेयर

सेवा के लिए मुझे एक समान डोमेन मॉडल और दृढ़ता परत की भी आवश्यकता होगी। मैं चीजों को डुप्लिकेट नहीं करना चाहता हूं और मैं पुस्तकालयों को साझा नहीं करना चाहता हूं और एप्लिकेशन और सेवा को जोड़ना नहीं चाहता हूं।

तो यह मुझे सोचता है कि अगर मुझे या तो एक अलग सेवा (या इस नए उत्पाद में मैं लागू कर रहा हूं) को डेटा एक्सेस लेयर बनाना चाहिए और उस सेवा का उपयोग ऐप से डेटा एक्सेस के लिए भी करूँगा, इसलिए वहां होगा केवल एक डेटा एक्सेस लेयर जो कि एप्लिकेशन और सेवा दोनों द्वारा साझा की जाती है

क्या यह एक अच्छा पैटर्न है और क्या मुझे बड़ी समस्याएं हैं जो सड़क के लिए मेरे लिए इंतजार कर रही हैं, यदि ऐसा है तो आपका सुझाव क्या होगा? धन्यवाद!

उत्तर

1

मैं एक बार एक ही स्थिति में था। पहले विकास के दौरान, डेटा एक्सेस के लिए कोई डब्ल्यूसीएफ सेवाएं उपलब्ध नहीं थीं, इसलिए मैंने डेटा एक्सेस के लिए निबर्ननेट का उपयोग किया। डेटा पुनर्प्राप्ति के लिए डब्ल्यूसीएफ सेवाओं तक सीधे निबर्ननेट पहुंच से स्विचिंग को आसान बनाने के लिए, मेरे पास कुछ ऐसा था:

client app -> Repository Interfaces -> Repository Implementations (सबसे पहले इसने एनबीरनेट के माध्यम से डेटा पुनर्प्राप्त किया, डब्ल्यूसीएफ के माध्यम से दूसरा कार्यान्वयन)।

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

+0

यह मेरी स्थिति है क्योंकि मैं निबर्ननेट का भी उपयोग कर रहा हूं और मेरे पास रिपोजिटरी इंटरफेस और फिर एक अलग पुस्तकालय पर रिपोजिटरी कार्यान्वयन है।क्या वहां कोई ठोस उदाहरण हैं जो यह सेवा के माध्यम से करता है जिसे मैं देख सकता हूं? – kaivalya

+0

मुझे खेद है कि मैं आपको हमारे कोड बेस तक पहुंच नहीं दे सकता। हालांकि, अगर आप अपने क्लाइंट ऐप के भीतर से एक इंटरफ़ेस तक पहुंचते हैं, तो आपको वास्तविक कार्यान्वयन की परवाह नहीं है। जब wcf के माध्यम से nhibernate इकाइयों को प्रेषित करने की बात आती है, आलसी लोड किए गए संग्रह के साथ serialization मुद्दों का ख्याल रखना। wcf nhibernate प्रॉक्सी पसंद नहीं है –

1

यदि आपके पास संसाधन पहुंच परत के रूप में डब्ल्यूसीएफ सेवाएं थीं, तो आप अपने मौजूदा डेटा एक्सेस लेयर को अपने क्लाइंट एप्लिकेशन से दूर ले जा सकते हैं क्योंकि आपकी डब्ल्यूसीएफ वेब सेवा डेटा एक्सचेंज के लिए एंडपॉइंट है।

फिलहाल,

क्लाइंट अनुप्रयोग < -> डाटाबेस पहुँच

यह बुरा व्यवहार, यह आपके डेटाबेस सार्वजनिक उजागर करता है और डेटाबेस के बंदरगाह सकता है डिफ़ॉल्ट रूप से अवरोधित किया गया है।

वेब सेवा के साथ

,

क्लाइंट अनुप्रयोग < -> वेब सेवा (डाटाबेस पहुँच)

यह उचित सुरक्षा कार्यान्वयन (HTTPS और प्रमाणीकरण) होनी चाहिए। वेब सेवा सामान्य रूप से दोस्ताना पोर्ट 80 पर होस्ट की जाती है और आपको अंतर्निहित डेटाबेस सार्वजनिक रूप से बेनकाब करने की ज़रूरत नहीं है।

+0

यह बकवास है। आप नहीं जानते कि आप किस बारे में बात कर रहे हैं। – DarthVader

-1

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

इसका यह भी अर्थ है कि आपको अपना डेटाबेस सार्वजनिक करने की ज़रूरत नहीं है, और साथ ही, आपके डेटाबेस के साथ छेड़छाड़ करने का मौका काफी कम होगा।

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