2016-08-18 11 views
6

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

हालांकि, मैं हाल ही में ASP.NET MVC ट्यूटोरियल को बहुत बार देखा गया है और पाया है कि प्रशिक्षक नियंत्रकों फ़ोल्डर के अंदर एक एपीआई फ़ोल्डर बनाता है।

इस तरह वह सभी एमवीसी नियंत्रकों को विभाजित करता है जो प्राथमिक रूप से व्यूमोडल्स से निपटते हैं और एमवीसी को बताने के लिए व्यू फ़ंक्शन का उपयोग करते हैं जो एपीआई नियंत्रकों से प्रदर्शित करने के लिए देखते हैं जो मुख्य रूप से डीटीओ से निपटते हैं और विचारों से सख्ती से निपटते हैं, विचार नहीं ।

आप एक MVC आवेदन में लगता होगा वहाँ कोई एपीआई नियंत्रकों होगा आप नहीं है? खासकर जब से कोर 1.0 में आप एक वर्ग से प्राप्त होते हैं: 'नियंत्रक'। लेकिन मुझे लगता है कि जब आप एंगुलर और केंडो यूआई जैसे फ्रंट एंड फ्रेमवर्क को शामिल करते हैं जो बहुत सारे AJAX अनुरोध करते हैं तो आप आमतौर पर एपीआई के माध्यम से उन्हें करना चाहते हैं।

यहाँ मेरी वर्तमान समझ है:
उपयोग एक MVC नियंत्रक MVC का उल्लेख करने वाले केवल कार्य करता है जो दृश्य प्रदर्शित किया जाना चाहिए और उसके साथ एक दृश्य मॉडल पारित करने के लिए सख्ती से।

एक दृश्य के प्रारंभिक लोड के लिए कभी नहीं, मुख्य रूप से ajax कॉल के लिए एक एपीआई नियंत्रक का प्रयोग करें, और कभी नहीं MVC CRUD पैटर्न के लिए।

कोई पालन करने के लिए मुझे एक बेहतर मानकों दे सकते हैं जब यह यह करने के लिए आता है?

+2

अब आप स्वतंत्र रूप से एक ही नियंत्रक में MVC और एपीआई कार्यों मिश्रण कर सकते हैं, यह राय या एक डिजाइन निर्णय की काफी हद तक सिर्फ एक बात है। एमवीसी नियंत्रकों को अलग करना जो एपीआई नियंत्रकों से प्रस्तुति प्रदान करते हैं जो डेटा प्रदान करते हैं, सिर्फ मुझे "चिंताओं को अलग करने" के फैसले की तरह लगता है। यह वास्तव में आप पर निर्भर करता है कि आप चीजों को कैसे व्यवस्थित करना चाहते हैं। – jmoerdyk

उत्तर

7

आपके कहे अनुसार, दोनों के बीच नेट कोर में कोई अंतर नहीं है, और एक "API" फ़ोल्डर बनाने परियोजना संगठन के लिए विशुद्ध रूप से किया जाएगा है, लेकिन नियंत्रक एक ही प्रकार के हो जाएगा।

यदि आप एक काफी सरल नियम चाहते हैं, तो मैं कहूंगा कि जेएसओएन/एक्सएमएल/डेटा (कोई प्रेजेंटेशन जानकारी के साथ) लौटने वाली कोई भी विधि "एपीआई" नियंत्रक होनी चाहिए, और एचटीएमएल लौटने वाली कोई भी चीज़ "एमवीसी" होनी चाहिए नियंत्रक या एपीआई फ़ोल्डर के अंदर नहीं।

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