2010-03-15 9 views
337

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

WCF और वेब सेवाओं के बीच क्या अंतर है? प्रत्येक का इस्तेमाल कब किया जाना चाहिए?

+2

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

उत्तर

358

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

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

डब्ल्यूसीएफ मूल रूप से "स्टीरियोइड्स पर एएसएमएक्स" है - यह सब कुछ हो सकता है कि एएसएमएक्स - प्लस बहुत कुछ हो सकता है!

ASMX है:

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

WCF किया जा सकता से प्रतिदेय:

  • आईआईएस, एक विंडोज सेवा, एक विनफॉर्म एप्लिकेशन में होस्ट किया गया WCF यहाँ है ASMX पूरी तरह से बदलने के लिए: -, एक कंसोल एप्लिकेशन को आप कुल स्वतंत्रता
  • HTTP (REST और सोप), टीसीपी/आईपी, MSMQ और कई और अधिक प्रोटोकॉल

संक्षेप में के साथ प्रयोग किया है।

WCF Developer Center on MSDN देखें।

अद्यतन: लिंक मृत हो रहा है - इस प्रयास करें: What Is Windows Communication Foundation?

+14

विजुअल स्टूडियो 2010 के साथ .नेट 4.0 डब्ल्यूसीएफ लिखना उतना ही आसान है एएसएमएक्स के रूप में, अब एएसएमएक्स लिखने का कोई बहाना नहीं है। डब्ल्यूसीएफ रास्ता तेज, अधिक लचीला और अधिक सुरक्षित है। एएसएमएक्स विरासत है और किसी को भी इसे अभी भी लिखना नहीं चाहिए। –

+13

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

+2

@MrNick: दाएं। नहीं आईआईएस, लेकिन अभी भी HTTP , और WCF सेवा होस्ट करने के लिए कोड में ASMX को होस्ट करने के लिए कोड की तुलना करें। –

10

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

+31

समस्या यह है कि एएसएमएक्स एक सरल मॉडल था (जिसका मतलब बहुत लचीला नहीं है), यह एक साधारण मॉडल था (जिसका उपयोग करना आसान है और सबसे सामान्य के लिए समझना आसान है वेब सेवा की जरूरत है)। डब्ल्यूसीएफ बहुत अधिक जटिलता को जोड़ता है। जबकि एमएस डब्ल्यूसीएफ के साथ एएसएमएक्स को प्रतिस्थापित करना चाहता है, एमएस तब तक प्रतिरोध का थोड़ा सा प्रतीत होता है जब तक कि एमएस सबसे सामान्य परिदृश्य को पुराने [वेबमाइड] तरीके से सरल नहीं बनाता। – mattmc3

+6

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

+55

"डब्ल्यूसीएफ बिल्कुल जटिल नहीं है" हा। बताएं कि मेरे रास्ते पर web.config overbloated। – mattmc3

35

एएसएमएक्स वेब सेवाओं को केवल HTTP (पारंपरिक वेबसाइकिल के साथ .asmx) द्वारा ही बुलाया जा सकता है। जबकि डब्ल्यूसीएफ सेवा या डब्ल्यूसीएफ घटक किसी प्रोटोकॉल (जैसे http, टीसीपी इत्यादि) और किसी भी परिवहन प्रकार द्वारा लगाया जा सकता है।

दूसरा, एएसएमएक्स वेब सेवाएं लचीला नहीं हैं। हालांकि, डब्ल्यूसीएफ सेवाएं लचीली हैं। यदि आप सेवा का एक नया संस्करण बनाते हैं तो आपको केवल एक नया अंत का खुलासा करना होगा। इसलिए, सेवाएं चुस्त हैं और वर्तमान व्यापार प्रवृत्तियों को देखते हुए यह एक बहुत ही व्यावहारिक दृष्टिकोण है।

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

+6

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

+0

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

+0

@Mou, मेरा मतलब है कि मुझे लगता है कि एक नया 'एंडपॉइंट' उजागर करना है। '' –

21

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

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

create webservice की साधारण विकास कार्यप्रवाह के लिए ->run webservice ->add webservice reference, एक ASMX वेब सेवा बहुत कम गलत ज्यादा नहीं है, कि तुम misconfigure कर सकते हैं जा सकते हैं कि है, और है कि यह शक्ति है।

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

उदाहरण web.config:

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

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

+6

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

+0

एंड्रयू, आपको .NET 4.0 या 4.5 में एक सरल "हैलो, वर्ल्ड" डब्ल्यूसीएफ सेवा बनाने का प्रयास करना चाहिए। लगभग कोई विन्यास नहीं है। कॉन्फ़िगरेशन 4.0 में बदला गया था ताकि डिफ़ॉल्ट जेनरेट की गई कॉन्फ़िगरेशन फ़ाइल डिफ़ॉल्ट मानों को कॉन्फ़िगर न करे, और अलग-अलग बाइंडिंग के लिए मानों के डिफ़ॉल्ट सेट हैं। इसलिए, यदि आप 'basicHttp बाइंडिंग' सेवा बनाते हैं, तो आपको कॉन्फ़िगरेशन फ़ाइल में लगभग कुछ भी नहीं मिलेगा। –

2

वहाँ WCF अधिक ASMX वेब सेवाओं की सादगी के बारे में चल रहा वार्ता का एक बहुत कुछ है। मुझे यहां कुछ बिंदुओं को स्पष्ट करने दें।

  • यह सच है कि नौसिखिया वेब सेवा डेवलपर्स आसानी से एएसएमएक्स वेब सेवाओं में शुरू हो जाएंगे। विजुअल स्टूडियो उनके लिए सभी काम करता है और आसानी से हैलो वर्ल्ड प्रोजेक्ट बनाता है।
  • लेकिन यदि आप डब्ल्यूसीएफ सीख सकते हैं (जो निश्चित रूप से अधिक समय नहीं लेते हैं) तो आप देख सकते हैं कि डब्ल्यूसीएफ भी काफी सरल है, और आप आसानी से आगे बढ़ सकते हैं।
  • यह याद रखना महत्वपूर्ण है कि डब्ल्यूसीएफ में इन जटिलताओं को वास्तव में उन खूबसूरत विशेषताओं के लिए जिम्मेदार ठहराया जाता है जो इसके साथ लाते हैं। पते, बाइंडिंग, अनुबंध और अंतराल, सेवाएं & सभी कॉन्फ़िगरेशन फ़ाइल में उल्लिखित क्लाइंट हैं। सौंदर्य यह है कि आपका व्यावसायिक तर्क अलग-अलग और सुरक्षित रूप से बनाए रखा जाता है। कल अगर आपको से बाध्यकारी बदलने की आवश्यकता है तो मूल एचटीपी बाइंडिंग से netTcp बाइंडिंग आप आसानी से कॉन्फ़िगरेशन फ़ाइल में बाध्यकारी बना सकते हैं और इसका उपयोग कर सकते हैं। इसलिए ग्राहकों से संबंधित सभी परिवर्तन, संचार चैनल, बाइंडिंग इत्यादि को कॉन्फ़िगरेशन में किया जाना चाहिए ताकि व्यवसाय तर्क सुरक्षित & बरकरार रखा जा सके, जो वास्तविक अच्छी समझ में आता है।
  • डब्ल्यूसीएफ "वेब सेवाएं" डब्ल्यूसीएफ के माध्यम से दूरस्थ संचार के एक बहुत व्यापक स्पेक्ट्रम का हिस्सा हैं। आपको पारंपरिक एएसएमएक्स की तुलना में डब्ल्यूसीएफ में चीजों को करने की लचीलापन और पोर्टेबिलिटी की बहुत अधिक डिग्री मिलेगी क्योंकि डब्ल्यूसीएफ को जमीन से ऊपर, माइक्रोसॉफ्ट द्वारा पेश किए गए सभी अलग-अलग वितरित प्रोग्रामिंग बुनियादी ढांचे को सारांशित करने के लिए डिज़ाइन किया गया है। डब्ल्यूसीएफ में एक एंडपॉइंट को एसओएपी/एक्सएमएल पर आसानी से संचारित किया जा सकता है क्योंकि यह टीसीपी/बाइनरी से अधिक हो सकता है और इस माध्यम को बदलने के लिए बस कॉन्फ़िगरेशन फ़ाइल मोड है। सिद्धांत रूप में, यह जब पोर्टिंग या बदलते व्यापार की जरूरत, लक्ष्य, आदि
  • वेब सेवा केवल HTTP & यह राज्यविहीन पर्यावरण, जहां WCF लचीला है क्योंकि अपनी सेवाओं की मेजबानी की जा सकती है, में काम करता है से अधिक पहुँचा जा सकता है की जरूरत है नए कोड की मात्रा को कम विभिन्न प्रकार के अनुप्रयोगों में। आप कंसोल, विंडोज सर्विसेज, आईआईएस & डब्ल्यूएएस में अपनी डब्ल्यूसीएफ सेवाओं को होस्ट कर सकते हैं, जो विजुअल स्टूडियो में नई परियोजनाओं को बनाने के फिर से अलग-अलग तरीके हैं।
  • ASMX WCF से अधिक पुराना है, और कुछ भी ASMX तो कर सकते हैं WCF (और अधिक) कर सकते हैं। मूल रूप से आप की कोशिश कर के रूप में WCF देख सकते हैं करने के लिए तार्किक समूह को एक साथ सभी Microsoft की दुनिया में संवाद करने के लिए दो क्षुधा हो रही के विभिन्न तरीके; ASMX बस इन कई मायनों में से एक था और इसलिए अब क्षमताओं का WCF छाता के अंतर्गत वर्गीकृत किया जाता है।
  • तुम हमेशा नेट 4.0 या 4.5 के लिए दृश्य स्टूडियो का उपयोग करने के रूप में यह जीवन आसान बना देता है, जबकि WCF सेवाओं का निर्माण पसंद आएगा।
  • प्रमुख अंतर यह है कि वेब सेवाएं XmlSerializer का उपयोग करें। लेकिन डब्ल्यूसीएफ डेटा कंट्रैक्ट सर्जरीलाइज़र का उपयोग करता है जो XmlSerializer की तुलना में प्रदर्शन में बेहतर है। यही कारण है कि WCF ASMX की तरह नेट से जिस तरह से अन्य संचार प्रौद्योगिकी समकक्षों की तुलना में बेहतर प्रदर्शन करती है, .NET दूरस्थ आदि

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