WCF और ASMX वेब सेवाओं के बीच अंतर क्या हैं?


375

मैं WCF और ASMX वेब सेवाओं के बीच पूरी तरह से भ्रमित हूं। मैंने अपने पहले चरण में बहुत सारी वेब सेवाओं का उपयोग किया है, और अब इस नई चीज़ को डब्ल्यूसीएफ कहा जाता है। मैं अभी भी एक वेब सेवा के रूप में कार्य कर सकता है कि WCF बना सकते हैं। मुझे लगता है कि WCF में अधिक सामान होगा।

डब्ल्यूसीएफ और वेब सेवाओं के बीच अंतर क्या हैं? हर एक का उपयोग कब किया जाना चाहिए?


5
कोई रास्ता नहीं यह एक सिफारिश सवाल है। न तो ASMX और न ही WCF एक उत्पाद है। वे Microsoft स्टैक में वेब सेवाओं के दो पुनरावृत्तियों हैं। सवाल यह है कि अंतर क्या हैं, और क्या यह नया सीखने के लिए मेरे लायक है? यह वैसा ही नहीं है जैसा कि "मुझे टेलरिक नियंत्रण या इन्फ्रास्ट्रक्चर का उपयोग करना चाहिए।
जॉन

जवाबों:


391

कीथ एल्डर ने ASMX की तुलना WCF से की यहां की है। इसकी जांच - पड़ताल करें।

ASMX और WCF की एक और तुलना यहां मिल सकती है - मैं वहां सभी बिंदुओं से 100% सहमत नहीं हूं, लेकिन यह आपको एक विचार दे सकता है।

WCF मूल रूप से "स्टीरियो पर ASMX" है - यह वह सब हो सकता है जो ASMX - और भी बहुत कुछ कर सकता है !

ASMX है:

  • लिखने और कॉन्फ़िगर करने के लिए आसान और सरल
  • केवल IIS में उपलब्ध है
  • केवल HTTP से कॉल करने योग्य

WCF हो सकता है:

  • IIS, एक Windows सेवा, एक Winforms अनुप्रयोग, एक कंसोल ऐप में होस्ट किया गया है - आपको कुल स्वतंत्रता है
  • HTTP (REST और SOAP), TCP / IP, MSMQ और कई और प्रोटोकॉल के साथ उपयोग किया जाता है

संक्षेप में: WCF यहाँ पूरी तरह से ASMX को बदलने के लिए है।

की जाँच करें MSDN पर WCF डेवलपर केंद्र

अपडेट: लिंक मृत प्रतीत हो रहा है - यह प्रयास करें: विंडोज कम्युनिकेशन फाउंडेशन क्या है?


15
दृश्य स्टूडियो 2010 के साथ .net 4.0 WCF ASMX के रूप में लिखना आसान है, अब ASMX लिखने का कोई बहाना नहीं है। WCF रास्ता तेज, अधिक लचीला, अधिक सुरक्षित है। ASMX विरासत है और किसी को अभी भी इसे लिखना नहीं चाहिए।
टॉम स्टिकेल

13
"अधिकांश डेवलपर्स गलत तरीके से मानते हैं कि ASMX को IIS की आवश्यकता है; आखिरकार, यह एकमात्र उपयोग का मामला है जो उन्होंने कभी देखा है। लेकिन सच्चाई यह है कि ASMX का IIS पर कोई तकनीकी निर्भरता नहीं है।" msdn.microsoft.com/en-us/magazine/cc163879.aspx
MrNick

2
@ मनिक: सही है। कोई IIS, लेकिन अभी भी केवल HTTP, और WCF सेवा की मेजबानी के लिए कोड ASMX होस्ट करने के लिए कोड की तुलना करें।
जॉन सॉन्डर्स

1
दुर्भाग्य से लिंक keithelder.net/2008/10/17/wcf-vs-asmx-webservices टूट गया है।
रॉबर्ट

2
@codemonkeyliketab: प्रतिक्रिया 6 वर्ष से अधिक पुरानी है - इंटरनेट युग में हल्के- फुल्के ! मैं WCF डेवलपर केंद्र के लिए एक स्थानापन्न पता लगाने की कोशिश - मेरी अपडेट हुआ
marc_s

37

ASMX वेब सेवाओं को केवल HTTP (पारंपरिक webservice with .asmx) द्वारा ही लागू किया जा सकता है। जबकि WCF सेवा या WCF घटक को किसी भी प्रोटोकॉल (जैसे http, tcp आदि) और किसी भी परिवहन प्रकार द्वारा लागू किया जा सकता है।

दूसरा, ASMX वेब सेवाएं लचीली नहीं हैं। हालाँकि, WCF सेवाएँ लचीली हैं। यदि आप सेवा का नया संस्करण बनाते हैं तो आपको एक नए सिरे को उजागर करने की आवश्यकता है। इसलिए, सेवाएं चुस्त हैं और जो वर्तमान व्यवसाय के रुझान को देखते हुए एक बहुत ही व्यावहारिक दृष्टिकोण है।

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


11
शायद यह सिर्फ मेरे लिए है, लेकिन पैराग्राफ # 2 और # 3 मार्केटिंग बीएस के रूप में बाहर खड़े हैं।
नियोलिस्क

@ नेट एक्सपर्ट्स यू ने कहा "यदि आप सेवा का एक नया संस्करण बनाते हैं तो आपको बस एक नए सिरे को उजागर करने की आवश्यकता है" क्या आप कहने की कोशिश कर रहे हैं?
Mou

@ मौ, उसका मतलब था endpointकि मैं एक नया अनुमान लगा रहा हूं। जैसे<endpoint address="http://api.microsofttranslator.com/V1/soap.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_LanguageService1" contract="TranslatorService.LanguageService" name="BasicHttpBinding_LanguageService3" />
एलेक्समेल्व

25

यह एक बहुत पुराना प्रश्न है, लेकिन मुझे नहीं लगता कि ASMX के लाभों को काफी चित्रित किया गया है। बहुत लचीला नहीं होने के बावजूद, ASMX वेब सेवाएं उपयोग और समझने के लिए बहुत सरल हैं। जबकि WCF अधिक लचीला है, इसलिए खड़े होना और कॉन्फ़िगर करना भी अधिक जटिल है।

ASMX वेब सेवाओं के लिए तैयार हैं और जैसे ही आप फ़ाइल जोड़ते हैं एक webservice संदर्भ के रूप में जोड़ते हैं। (अपना प्रोजेक्ट बनाता है)

create webservice-> run webservice-> के सरल विकास वर्कफ़्लो के लिए add webservice reference , एक ASMX वेब सेवा में बहुत कम है जो गलत हो सकता है, इतना नहीं कि आप गलत तरीके से कॉन्फ़िगर कर सकते हैं, और यह ताकत है।

उन है कि ज़ोर कि WCF की जगह ASMX के जवाब में, मैं जवाब होता है कि WCF पूरी तरह से ASMX को बदलने के लिए क्रम में एक सुव्यवस्थित KISS विन्यास मोड जोड़ने के लिए की आवश्यकता होगी।

उदाहरण के लिए web.config एक ASMX वेब सेवा के लिए:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings />
  <system.web>
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
</configuration>

मुझे नहीं लगता कि डब्ल्यूसीएफ को उस काम के लिए अधिक कॉन्फ़िगरेशन की आवश्यकता होती है जिसे एसएक्सएक्स वेबसर्विसेज का उपयोग करके किया जा सकता है, और आप डब्ल्यूसीएफ सेवा के लिए अपने क्लाइंट पक्ष में एक संदर्भ जोड़ सकते हैं, डब्ल्यूसीएफ एएसएमएक्स की तुलना में अधिक शक्तिशाली है, यह वही कर सकता है जो एसएक्सएक्स करता है और यह asmx की तरह सरल होगा
Coder1409

9
@ Coder1409 अच्छी तरह से यह निश्चित रूप से अधिक विन्यास है, क्योंकि कुछ चीजों को कॉन्फ़िगर करने की आवश्यकता है। बंधन, खोज, आदि asmx में आवश्यक नहीं है। सेवा अनुबंध, संचालन अनुबंध, डेटा अनुबंध, डेटा सदस्य। Asmx में आवश्यक नहीं। बेशक ये बातें क्यों wcf बेहतर और अधिक शक्तिशाली हैं, लेकिन इस बात से इनकार करने के लिए कि यह जटिलता जोड़ता है सिर्फ ईमानदार नहीं है। यह कहने के लिए पहुंच रहा है कि कोई डाउनसाइड नहीं है।
एंड्रयू हॉफमैन

7
पहली (दूसरी, तीसरी ...) समय मैंने एक wcf बनाया जो मुझे आवश्यक कॉन्फ़िगरेशन का पता लगाने के लिए उम्र लगा। "मुझे ऐसा करने की आवश्यकता क्यों है?" मैं अपने आप से पूछता रहा। "इतने जटिल कुछ के साथ परेशान क्यों?"। asmx बस तुरन्त काम किया। तो यह कहते हुए कि यह सिर्फ उतना ही सरल है, यह सच नहीं है। एक दिन मैं पूरी तरह से समझूंगा और अपना दृष्टिकोण बदलूंगा - उस दिन तक जीआरआरआरआर !!!
टॉमज्म

1
@tomjm फिर, इसे Visual Studio और .NET के आधुनिक संस्करण के साथ आज़माएँ। अन्य चीजों के अलावा, कॉन्फ़िगरेशन सिस्टम डिफ़ॉल्ट रूप से अधिक सेटिंग्स में बदल गया है। विशेष रूप से, आपको केवल एक साधारण वेब सेवा, http, केवल कोई सुविधाएँ नहीं होने के लिए URL को निर्दिष्ट करने की तुलना में अधिक करने की आवश्यकता होगी।
जॉन साउन्डर्स

1
@tomjm वैसे यह जानना अच्छा है। ईमानदारी से यह इतना विन्यास हुआ करता था कि यह एक wcf विन्यास प्रबंधक अनुप्रयोग का उपयोग करने के लिए समझ में आता था। यह सब कुछ कर सकता है! (कुछ अच्छी डिफ़ॉल्ट सेटिंग्स के साथ बॉक्स से बाहर काम को छोड़कर) हालांकि आजकल हम WEB सेवाओं के विषय में अधिक सोचते हैं। Wcf अभी भी उन्नत सेवा के लिए बहुत अच्छा है, लेकिन .. शायद सेवा विकास का अधिकांश हिस्सा webservice विकास है, और webservice विकास imo के लिए webapi2 को हराना मुश्किल है।
एंड्रयू हॉफमैन

10

WCF पूरी तरह से ASMX वेब सेवाओं की जगह लेता है। ASMX वेब सेवाओं को करने का पुराना तरीका है और WCF वेब सेवाएं करने का वर्तमान तरीका है। क्लाइंट या सर्वर पर सभी नए SOAP वेब सेवा विकास, WCF का उपयोग करके किया जाना चाहिए।


32
परेशानी यह है, जबकि ASMX एक सरलीकृत मॉडल था (जिसका अर्थ बहुत लचीला नहीं था), यह एक साधारण मॉडल था (सबसे आम वेब सेवा आवश्यकताओं के लिए उपयोग करना और समझना आसान है)। WCF अतिरिक्त जटिलता को जोड़ता है। जबकि एमएस ASMX को WCF के साथ बदलना चाहता है, लेकिन जब तक एमएस सबसे आम परिदृश्यों को पुराने [Webmethod] तरीके से सरल बना देता है, तब तक इसके लिए थोड़ा प्रतिरोध प्रतीत होता है।
१४:०४ पर मैटमैक्स ३

6
डब्ल्यूसीएफ बिल्कुल जटिल नहीं है। दोनों में एक सरल "हैलो वर्ल्ड" वेब सेवा बनाएं और देखें कि आप प्रत्येक में कितना कोड लिखते हैं। जवाब: WCF में या तो बहुत अधिक नहीं है, और केवल थोड़ा अधिक है। और, Btw, ASMX पहले से ही है WCF द्वारा प्रतिस्थापित किया गया। सौदा किया।
जॉन सॉन्डर्स

58
"WCF बिल्कुल जटिल नहीं है" हा। मेरे रास्ते को बताएं कि web.config पर काबू पा लिया है।
मट्टम

26
(नहीं एक नीच, लेकिन मैं आपको बताऊंगा क्यों) - क्योंकि "यह नया है और यह पुराना है" कोई महत्वपूर्ण अंतर नहीं है कि किसी को भी परवाह करनी चाहिए। हम केवल इस बात पर आधारित उपकरण नहीं चुनते हैं कि वे कितने पुराने हैं - हथौड़ा वास्तव में, वास्तव में पुराना है, लेकिन यह अभी भी नाखून ड्राइविंग के लिए सबसे अच्छा उपकरण है। तो, आपने एक मान्य उत्तर दिया, यह सिर्फ उतना मददगार नहीं है - पुराने की तरह "आप एक हवाई जहाज में हैं" मजाक।
जैस्मिन

5
नीचे मतदान - कोई संदर्भ नहीं। आपको यह जानकारी कैसी लगी। क्या यह राय है? क्या आप Microsoft के लिए काम करते हैं? एक संदर्भ जोड़ें और मैं मतदान करूंगा।
टॉमज्म

7

WCF पर asmx वेब सेवाओं की सादगी के बारे में बहुत सारी बातें चल रही हैं। यहां कुछ बिंदु स्पष्ट कर दूं।

  • यह सच है कि नौसिखिया वेब सेवा डेवलपर्स asmx वेब सेवाओं में आसानी से शुरू हो जाएगा। विजुअल स्टूडियो उनके लिए सभी काम करता है और आसानी से एक हैलो वर्ल्ड प्रोजेक्ट बनाता है।
  • लेकिन अगर आप WCF सीख सकते हैं (जो कि बेशक बहुत समय नहीं लगेगा) तो आप देख सकते हैं कि WCF भी काफी सरल है, और आप आसानी से आगे बढ़ सकते हैं।
  • यह याद रखना महत्वपूर्ण है कि डब्ल्यूसीएफ में इन जटिलताओं को वास्तव में उन सुंदर विशेषताओं के लिए जिम्मेदार ठहराया जाता है जो इसे अपने साथ लाता है। कॉन्‍फ़‍िगरेशन, बाइंडिंग, कॉन्ट्रैक्ट्स और एंडपॉइंट्स, सेवाएं और क्‍लाइंट सभी कॉन्‍फ़िगर फ़ाइल में बताए गए हैं। सुंदरता यह है कि आपके व्यावसायिक तर्क को अलग रखा गया है और सुरक्षित रूप से बनाए रखा गया है। कल तुम से बाध्यकारी को बदलने की जरूरत है, तो basicHttpBinding को netTcpBinding आप आसानी से एक बाध्यकारी config में फ़ाइल बनाने और इसका इस्तेमाल कर सकते हैं। इसलिए ग्राहकों से संबंधित सभी परिवर्तन, संचार चैनल, बाइंडिंग आदि को व्यापार तर्क को सुरक्षित और अक्षुण्ण रखने वाले कॉन्फ़िगरेशन में किया जाना चाहिए, जो वास्तविक अच्छा समझ में आता है।
  • WCF "वेब सेवाएं" WCF के माध्यम से सक्षम दूरस्थ संचार के बहुत व्यापक स्पेक्ट्रम का हिस्सा हैं। आपको WCF में पारंपरिक ASMX की तुलना में लचीलेपन और पोर्टेबिलिटी की बहुत अधिक डिग्री मिल जाएगी क्योंकि WCF को Microsoft द्वारा प्रस्तुत विभिन्न वितरित प्रोग्रामिंग इन्फ्रास्ट्रक्चर के सभी को संक्षेप में प्रस्तुत करने के लिए तैयार किया गया है। WCF में एक समापन बिंदु को SOAP / XML के साथ आसानी से संचारित किया जा सकता है क्योंकि यह TCP / बाइनरी पर हो सकता है और इस माध्यम को बदलने के लिए बस एक कॉन्फ़िगरेशन फ़ाइल मॉड है। सिद्धांत रूप में, यह व्यावसायिक आवश्यकताओं, लक्ष्यों आदि को पोर्ट या बदलते समय आवश्यक नए कोड की मात्रा को कम करता है।
  • वेब सेवाओं को केवल HTTP पर पहुँचा जा सकता है और यह स्टेटलेस वातावरण में काम करता है, जहाँ WCF लचीला होता है क्योंकि इसकी सेवाओं को विभिन्न प्रकार के अनुप्रयोगों में होस्ट किया जा सकता है। आप अपनी WCF सेवाओं को Console, Windows Services, IIS & WAS में होस्ट कर सकते हैं, जो फिर से Visual Studio में नई परियोजनाएँ बनाने के विभिन्न तरीके हैं।
  • ASMX WCF से पुराना है, और ASMX WCF (और अधिक) कर सकता है। मूल रूप से आप WCF को Microsoft की दुनिया में संचार करने के लिए दो ऐप प्राप्त करने के सभी विभिन्न तरीकों को एक साथ सामूहिक रूप से करने की कोशिश के रूप में देख सकते हैं; ASMX इन कई तरीकों में से एक था और इसलिए अब इसे क्षमताओं के WCF छतरी के नीचे रखा गया है।
  • आप हमेशा NET 4.0 या 4.5 के लिए Visual Studio का उपयोग करना पसंद करेंगे क्योंकि यह WCF सेवाएँ बनाते समय जीवन को आसान बनाता है।
  • प्रमुख अंतर यह है कि वेब सेवाएँ XmlSerializer का उपयोग करती हैं। लेकिन WCF DataContractSerializer का उपयोग करता है जो XmlSerializer की तुलना में प्रदर्शन में बेहतर है। यही कारण है कि WCF .NET से अन्य संचार प्रौद्योगिकी समकक्षों की तुलना में बेहतर प्रदर्शन करता है जैसे कि asmx, .NET रीमोटिंग आदि।

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

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