MVC 5 प्रोजेक्ट और वेब एपी प्रोजेक्ट के बीच अंतर


135

मैं ASP.NET MVC और वेब एपीआई के लिए नया हूं और मूल बातें प्राप्त करने की कोशिश कर रहा हूं । AFAIK, हमारे पास वीएस 2013 में प्रोजेक्ट टेम्प्लेट हैं, जिन्हें नाम दिया गया है MVC, Web APIऔर Both of them together

मैंने ट्यूटोरियल के माध्यम से जाना है और सीखा है कि हम अकेले एमवीसी और साथ ही वेब एपीआई टेम्पलेट का उपयोग करके एक एपीआई बना सकते हैं।

तो, आर्किटेक्चर और उपयोग के आधार पर इनमें से क्या अंतर हैं ?

जवाबों:


182

मूल रूप से, एक Web APIनियंत्रक एक MVCनियंत्रक होता है, जो HttpMessageResponseआधार प्रतिक्रिया के आधार प्रकार के बजाय उपयोग करता है ActionResponse। अधिकांश अन्य मामलों में वे समान हैं। प्रोजेक्ट प्रकारों के बीच मुख्य अंतर यह है कि MVC Applicationप्रोजेक्ट प्रकार वेब विशिष्ट चीज़ों को जोड़ता है जैसे कि डिफ़ॉल्ट CSS, JavaScriptफ़ाइलें और वेब साइट के लिए आवश्यक अन्य संसाधन, जिन्हें एपीआई की आवश्यकता नहीं होती है।

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

Microsoft ने विभिन्न टेम्पलेटों को प्रस्तुत करने के तरीके को बदल दिया। अब वे अलग-अलग प्रोजेक्ट प्रकारों के लिए अलग-अलग टेम्प्लेट का उपयोग करने के बजाय, डेवलपर्स को आवश्यकतानुसार उसी प्रोजेक्ट के अंदर ASP.NET तकनीकों का मिश्रण करने के लिए प्रोत्साहित करते हैं। Microsoft यह कहता है vNext

अद्यतन: ASP.NET कोर के लिए, वेब एपीआई को MVC 6 परियोजना प्रकार में एकीकृत किया गया है और ApiControllerवर्ग को कक्षा में समेकित किया गया है Controller। आगे का विवरण: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6


1
धन्यवाद एलाद मुझे यह मिल गया है। आप अपने एनों को संपादित कर सकते हैं और Asp.net आइडेंटिटी और वेब एपी 2 के बारे में कुछ जोड़ सकते हैं। बस कुछ वे कैसे उपयोग किए जा रहे हैं और कुछ शब्दों का लाभ उठाते हैं।
लूप

इसलिए, किसी भी तरह से मैं dektop ऐप से कंट्रोलर एक्शन तक नहीं पहुँच सकता। यहां तक ​​कि अगर मैं URL को कॉल करने के लिए उचित GET सिंटैक्स का उपयोग करता हूं?
अटूट

70

मेरे दो सेंट...

  1. में ASP.Net MVC - MVC के Controllerक्या होना चाहिए का फैसला करता है View- यानी, नियंत्रक का फैसला करता है क्या उपयोगकर्ता "देख" चाहिए (मौजूदा परिदृश्य या संदर्भ के आधार पर), जब वे एक अनुरोध करना।
  2. में ASP.Net वेब फार्म , ASPXपृष्ठों का फैसला करता है क्या उपयोगकर्ता "देख" चाहिए, जब वे एक अनुरोध करना।
  3. लेकिन वेब एपीआई में , यह तय करने के लिए कि उपयोगकर्ता को क्या देखना चाहिए, यह तय करने के लिए वेब एपीआई की किसी भी सुविधा पर कोई नियंत्रण / शक्ति नहीं है।

वेब एपीआई केवल वेबसाइटों से जुड़ी एक तकनीक नहीं है। इसका उपयोग कई उद्देश्यों के लिए किया जा सकता है - न केवल वेबसाइटों के लिए। तो इसका मतलब नहीं पता हैrendering

आगे की पढाई

  1. वेब समाधानों की योजना बनाना आज: वेब फॉर्म, ASP.NET MVC, वेब एपीआई और OWIN।
  2. WCF या ASP.NET वेब एपीआई? विषय पर मेरे दो सेंट
  3. .NET की अगली पीढ़ी - ASP.NET vNext
  4. ASP.NET MVC 6 के साथ आरंभ करना

मैं तुलना कोड से नहीं बता सकता कि WebAPI अधिक पठनीय क्यों है। इसके अलावा, ऐसा लगता है कि वहाँ कुछ फ़्लिप किया गया है, क्योंकि यह वेब एपीआई है जो एक HTTP पद्धति विशेषता जैसे कि [HttpGet] की उम्मीद है। कुछ WebAPI (और WebAPI 2) कोड यहां देखें
Gobe

2
स्वीकृत उत्तर बताता है "मूल रूप से, एक वेब एपीआई नियंत्रक एक एमवीसी नियंत्रक है"। यह सिर्फ गलत है। बाहर पूरे कि आपका उत्तर अंक सूत्री वेबएपीआई की है कि यह है नहीं है MVC, यह नहीं करता है सब सामान के साथ और भूमि के ऊपर के साथ "दृश्य" और "प्रतिपादन" निपटने के लिए निपटने के लिए। ... और WebApi नियंत्रकों को केवल वेब साइटों के साथ बंधे होने की आवश्यकता नहीं है। बहुत अच्छा जवाब - धन्यवाद!
फोग्गायडे

0

MVC नियंत्रक नियंत्रक वर्ग से प्राप्त होता है। Mvc में आप दृश्य वापस कर सकते हैं। Mvc achitecture एप्लिकेशन बनाने के लिए उपयोग करता है। हालाँकि विभिन्न एप्लिकेशन को डेटा प्रदान करने के लिए वेब एप का उपयोग किया जाता है।

वेब एपीआई एपीआई नियंत्रक से ड्राइव करता है और यह दृश्य वापस नहीं करता है।

नोट: आप MVC कंट्रोलर से Web Api भी बना सकते हैं लेकिन आपको JsonResult या अन्य Web Api समर्थित रिटर्न प्रकारों के रूप में परिणाम वापस करने की आवश्यकता है।


0

यहां पहले से उपलब्ध कराए गए उत्तरों के अलावा, इसके किसी भी नियंत्रक को ध्यान देने योग्य है जो ApiController से विरासत में मिला है और Http क्रिया POST के साथ एक क्रिया होने पर केवल एक [FromBody] इनपुट पैरामीटर हो सकता है। यदि MVC कंट्रोलर ('कंट्रोलर' से व्युत्पन्न) का उपयोग करते हुए आपके पास कई पोस्ट इनपुट पैरामीटर हो सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.