2013-06-05 5 views
7

में वेब विधि पर वेब एपीआई का उपयोग करने का क्या फायदा है मैं वेब विधि से परिचित हूं। अब मुझे वेब विधि के बजाय वेब एपीआई का उपयोग करने का सुझाव मिला है। मैंने एएसपी.नेट वेब एपीआई का डेमो किया था, यह शास्त्रीय एएसपीनेट वेब विकास का उपयोग कर एमवीसी आर्किटेक्चर बजे के करीब है। मैं शास्त्रीय विकास के साथ नियंत्रक (एमवीसी अवधारणा) को गड़बड़ करना पसंद नहीं करता हूं।एएसपी.NET

मेरे वेब विधि:

[WebMethod] 
public static string GetName(int id) 
{ 
    return "testName"; 
} 

मेरे जाल एपीआई नियंत्रक:

public class MyController : ApiController 
{ 
[HttpGet] 
public string GetName(int id) 
{ 
    return "testName"; 
} 
} 

बजे वास्तव में इस मुद्दे को किसी भी एक ही पर एक बेहतर उपाय है पर उलझन में।

उस पर आपका सुझाव क्या है जो बेहतर विकल्प है?

यदि दोनों कोड के समान टुकड़े हैं, तो मैं तुलना कैसे कर सकता हूं?

उत्तर

13

क्लासिक एएसपी.नेट वेब सर्विसेज (जिसे आप वेबमाइंड कहते हैं) एक बहिष्कृत तकनीक है। अब कोई सक्रिय विकास नहीं है। एएसपी.नेट वेब एपीआई माइक्रोसॉफ्ट से वेब स्टैक का एक पूर्ण पुनर्लेख है जिसमें आपके पास रीस्टफुल वेब सेवाओं के निर्माण के लिए बहुत अधिक नियंत्रण है। इसका मतलब यह नहीं है कि आपको एक या दूसरे के बीच चयन करना चाहिए। ServiceStack भी है। यदि आप एक नई परियोजना शुरू कर रहे हैं तो आपको क्लासिक वेबसाइसेस से दूर रहना चाहिए। यदि वे अभी भी .NET ढांचे में मौजूद हैं तो यह विरासत कोड के साथ संगतता कारणों के लिए है।

3

यदि आप एपीकंट्रोलर से अपनी विधि का परीक्षण करना चाहते हैं, तो आप डीआई कंटेनर (http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver) का उपयोग करके ऑब्जेक्ट की निर्भरताओं को इंजेक्ट कर सकते हैं। निर्भरता इंजेक्शन स्वचालित रूप से किया जाता है।

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