मैं तीसरा कहूंगा। मैं वेब सेवाओं के बारे में सोचता हूं कि एक और प्रस्तुति परत है।
इस बारे में सोचें: आपके पास एक वेब यूआई है, जो आपके व्यवसाय स्तर कोड को एक नया उपयोगकर्ता (User.Add) बनाने जैसी चीजों को करने के लिए कहता है, किसी दिए गए विवरण से मेल खाने वाले सभी उत्पादों को ढूंढें (Products.FindByDescription), आदि
अब आप उसी व्यापार स्तर कोड का फिर से उपयोग कर सकते हैं ताकि तीसरे पक्ष के लिए सार्वजनिक पक्ष की वेब सेवाओं का एक सेट तैयार किया जा सके। एक ऐसी विधि हो सकती है जो उपयोगकर्ता को जोड़ती है - जो आपके आंतरिक उपयोगकर्ता को कॉल करती है।() विधि जोड़ें, उत्पादों को खोजने के लिए दूसरा, आदि ..
आपको जो भी मिलता है वह समान अंतर्निहित डेटा और व्यावसायिक तर्क के लिए प्रस्तुतिकरण/इंटरफेस का समानांतर सेट है।
दृश्यों (पूरी तरह से वेब सेवाओं या यूआई परतों के दायरे से बाहर) के पीछे, व्यापार परत डेटा एक्सेस लेयर को कॉल करती है जो भौतिक रूप से डेटाबेस से पूछताछ का ख्याल रखती है। यदि आप एक अलग डीबीएमएस में बदलना चाहते थे, तो आपको आदर्श (और सिद्धांत रूप में) नए डेटाबेस के लिए डेटा परत को पुनर्निर्माण करने में सक्षम होना चाहिए और सबकुछ बस काम करना चाहिए।
आपकी व्यावसायिक परत में उपयोगकर्ता नाम जैसे नियम 4 से 15 वर्ण लंबा होना चाहिए; उपयोगकर्ताओं को केवल उन उत्पादों को खोजने और लोड करने की अनुमति है जो उनके पास पहुंचने वाले स्टोर पर हैं; इत्यादि
यदि आप एक व्यापार नियम बदलने का निर्णय लेते हैं - जैसे किसी उपयोगकर्ता को अपने राज्य में किसी भी स्टोर में उत्पादों की खोज करने की अनुमति है - तो आप इसे एक बार में बदलते हैं, और वेब सेवा को स्पर्श करने की आवश्यकता नहीं है या इसे काम करने के लिए यूआई।
मुझे लगता है कि यह वेब सेवाओं को कहां रखना है, इस सवाल का जवाब नहीं है? – siamak