मुझे अपने वेब एप्लिकेशन के लिए डिज़ाइन के बारे में गंभीर संदेह है।
मैं व्यापार तर्क को इंटरफ़ेस से अलग करना चाहता था इसलिए मैंने एक वेब एपीआई बनाया जो डेटाबेस के सभी अनुरोधों को संभालता है।
यह एक ASP.NET वेब एपीआई इकाई ढांचे और काम और सामान्य रिपोजिटरी पैटर्न की एक इकाई के साथ है। अब तक, सब कुछ अच्छा है।
मुसीबत
जहाँ मुझे मदद की ज़रूरत है, मैं एपीआई और एप्लिकेशन के बीच वस्तुओं को साझा करने के एक कुशल तरीके का पता नहीं लगा सकता।
मैं सीधे इकाई वस्तु को क्रमबद्ध नहीं करना चाहता, मैंने सोचा कि यह एक बुरा अभ्यास होगा क्योंकि यदि इकाई मॉडल में बदलाव होता है, तो मैं बिना किसी कारण के बड़ी वस्तुओं को क्रमबद्ध करने के साथ समाप्त हो सकता हूं।
अब इसे कैसे लागू किया जाता है
चूँकि मेरा इंटरफ़ेस C # में ASP.NET वेब अनुप्रयोग है और मेरा API C # में है, मैंने अपने सभी वर्गों की परिभाषा के साथ एक सामान्य पुस्तकालय बनाया, जिसे मैं उनके बीच साझा करना चाहता हूं।
मुझे पता है कि समाधान तब काम नहीं करेगा जब मैं एक एंड्रॉइड ऐप विकसित करूंगा, मुझे अपनी कक्षाएं फिर से जावा में बनानी होंगी लेकिन यह मेरी सबसे बड़ी समस्या नहीं है।
समस्या यह है कि मुझे लगता है कि मैं हमेशा अपनी वस्तुओं को परिवर्तित कर रहा हूं।
उदाहरण
यहाँ मेरे काम प्रवाह का एक उदाहरण है:
मैं अपने फॉर्म के लिए सभी ऑब्जेक्ट्स और डेटा एनोटेशन के साथ एक मॉडल के साथ शुरू करता हूं फिर उपयोगकर्ता उस मॉडल को एक नियंत्रक के साथ पोस्ट कर देगा।
नियंत्रक में मुझे अपने सामान्य पुस्तकालय में इस मॉडल को एक वर्ग में बदलना होगा फिर उस वस्तु को मेरे एपीआई में भेजें।
फिर मेरे एपीआई में एक नियंत्रक कॉल को पकड़ता है और डेटाबेस को अपडेट करने के लिए उस ऑब्जेक्ट को एक इकाई ऑब्जेक्ट में परिवर्तित करता है।
इसलिए मेरे पास 3 कक्षाएं हैं
- सत्यापन के लिए सभी डेटा एनोटेशन के साथ देखने के लिए मॉडल (ग्राहक)
- वस्तुओं को साझा करने के लिए सामान्य पुस्तकालय कक्षाएं (DLL)
- इकाई वर्ग (एपीआई)
मुझे लग रहा है कि मैं कुछ गलत कर रहा हूं। वहाँ कुछ और अधिक सुंदर है? मैं यह सुनिश्चित करना चाहूंगा कि परियोजना के बहुत बड़े होने से पहले मेरे पास इस समस्या का एक अच्छा समाधान है।