वर्तमान प्रोजेक्ट जो मैं काम कर रहा हूं वह व्यापक रूप से वेब सेवाओं का उपयोग कर रहा है और नेट 3.5 में बनाया गया है। अब जब हम दूसरे चरण के कार्यान्वयन के लिए जा रहे हैं तो हम उलझन में हैं अगर हमें या तो डब्ल्यूसीएफ या वेब सेवा का इस्तेमाल पहले किया जाना चाहिए? आगे कुछ भी नया है जो उपयोगी हो सकता है और वेब सेवाओं या डब्ल्यूसीएफ के संबंध में .NET 4.0 के साथ आ रहा है।क्या चुनना है? .NET 3.5 में एएसएमएक्स वेब सेवा या डब्ल्यूसीएफ?
उत्तर
हमने पहली बार एएसएमएक्स वेब सेवाओं की बजाय डब्ल्यूसीएफ का उपयोग करके एक ब्रांड नई परियोजना पूरी की। हम परिणामों से बहुत खुश हैं, लेकिन जानते हैं कि एक सीधी सीखने की वक्र थी। फिर भी, हम समग्र परिणामों से बेहद खुश हैं और जानते हैं कि यह माइक्रोसॉफ्ट आगे बढ़ने वाली हर चीज का आधार है और यह दर्द-वार और सब कुछ पूरी तरह से लायक है।
त्वरित लाभ हम से अधिक ASMX प्राप्त की:
1) आंतरिक (फ़ायरवॉल के पीछे) सेवा करने वाली सेवा कॉल हम शुद्ध उपयोग करें: टीसीपी बाइंडिंग, जो साबुन की तुलना में बहुत तेजी से होता है
2) हमने एक नेट पर टीसीपी एंडपॉइंट और एक "वेब" एंडपॉइंट को केवल एक कॉन्फ़िगरेशन फ़ाइल अपडेट (कोई कोड परिवर्तन नहीं)
3) हम केवल कॉन्फ़िगरेशन के साथ AJAX- सहायक रीस्टफुल वेब सेवाओं को बनाने में सक्षम थे डेटाकंट्रैक्टजसनसेरियलाइज़र का उपयोग और उपयोग करना जो पहले से ही बनाया गया है। टी o अन्यथा ऐसा करें, हमें एक HTTP हैंडलर (एएसएक्स) लिखना होगा और हाथ से अधिकांश जेसन सीरियलाइजेशन और यूआरएल पार्सिंग को संभालना होगा।
4) चूंकि हमारी साइट को प्रदर्शन अनुकूलन और स्थिरता के लिए स्केल करने की आवश्यकता है, इसलिए हम एक एमएसएमक्यू-आधारित मैसेजिंग संरचना का उपयोग करने के लिए परिवर्तित हो रहे हैं जो असीमित और गारंटीकृत है और लेनदेन में भाग लेता है; डब्ल्यूसीएफ एक एमएसएमक्यू बाइंडिंग प्रदान करता है जिसके लिए हमारी सेवाओं में कम-से-कम कोड परिवर्तन की आवश्यकता होती है - केवल मौजूदा अपडेट के साथ संदर्भ अपडेट और एमएसएमक्यू की स्थापना करना (और लेनदेन सीमाओं के लिए विशेषताओं को जोड़ना)।
लेकिन सावधान रहें: वास्तव में इस सीखने में निवेश करें (नीली ओ-रेली पुस्तक खरीदें और इसके माध्यम से जाएं)। ऐसे विकास के दौरान तर्क-नाम-परिवर्तन जैसी चीजें हैं जो वास्तव में सेवा संदर्भों को तोड़ती नहीं हैं, लेकिन परिणामस्वरूप शून्य तर्क (अंतर्निहित संस्करण स्की हैंडलिंग) हो रहा है, मॉडल पर विचार करने के लिए होस्टिंग (विंडोज़ सेवा बनाम आईआईएस), और तत्काल सभी वास्तव में समझने के लिए मॉडल और FaultExceptions। हम अंदर नहीं गए और हमें कुछ दर्द था। लेकिन हमने आगे बढ़े और हमारी शिक्षाओं और लचीलापन और विकास के अवसरों से बहुत खुश हैं जिन्हें हम अब एएसएमएक्स से बंधे नहीं हैं!
विभिन्न बिंदुओं WCF करने पर कूदने से पहले विचार करने के लिए कर रहे हैं:
- WCF वास्तुकला और अधिक मजबूत है और सर्वोत्तम प्रथाओं को बढ़ावा देता है।
- यदि आप जानते हैं कि आप "रेशमी चिकनी" क्या कर रहे हैं, तो यदि आप सवारी के लिए नहीं हैं।
- क्या आपके पास अपनी सेवाओं के रूपांतरण को पूरा करने के लिए पर्याप्त समय है?
अंत में मैं कहूँगा कि, अगर आप समय है, bling और मांसपेशियों उन्नयन करना है। यह इसके लायक है। अगर एएसएमएक्स सभी जरूरतों को पूरा कर रहा है, तो आप वेब सेवाओं के साथ जारी रह सकते हैं।
दो आगे पहलुओं:
कोई फर्क नहीं पड़ता कि कैसे आप सर्वर साइड के लिए इस निर्णय लेते हैं, तो आप आसानी से Webservices उपभोग कर सकते हैं और WCF सेवा क्लाइंट-साइड पर केवल का उपयोग कर WCF। यह मूल्य है, यदि आप एक ग्राहक के साथ कई सेवाओं का उपभोग करते हैं।
आपने आगामी विषयों के लिए कहा। यदि आप क्लाउड कंप्यूटिंग पर विचार करते हैं: विंडोज़ एज़ूर पर डब्ल्यूसीएफ सेवाओं को होस्ट करना संभव है।
ASMX महान और सरल है - लेकिन यह बहुत कई मायनों में सीमित है:
- आप केवल IIS में अपने वेब सेवाओं की मेजबानी
- आप केवल HTTP पर अपने वेब सेवाओं तक पहुँच सकते हैं कर सकते हैं
- सुरक्षा बहुत सीमित है
डब्ल्यूसीएफ इसका उपचार करता है - और इसके अलावा बहुत कुछ प्रदान करता है। आप आईआईएस में अपनी डब्ल्यूसीएफ सेवाओं को होस्ट कर सकते हैं - या कंसोल ऐप या विन एनटी सर्विस में स्वयं-होस्ट की आवश्यकता हो सकती है। आप HTTP, टीसीपी/आईपी, एमएसएमक्यू, पीयर-टू-पीयर प्रोटोकॉल, ऑन-मशीन संचार के लिए पाइप नामित और बहुत कुछ का उपयोग करके अपनी डब्ल्यूसीएफ सेवाओं को जोड़ सकते हैं।
मैं निश्चित रूप से की सिफारिश करता हूं जो आप डब्ल्यूसीएफ के साथ जाते हैं। यह एएसएमएक्स की तुलना में अधिक जटिल है, लेकिन यह भी बहुत अधिक क्षमताओं और विकल्पों की पेशकश करता है!
resoures के लिए के रूप में: MSDN WCF Developer Center जो लेख और नमूना कोड की आरंभिक ट्यूटोरियल से सब कुछ है नहीं है।
इसके अलावा, मैं आप की सिफारिश करेंगे Pluralsight screen casts on WCF पर एक नजर है - यह एक उत्कृष्ट श्रृंखला "Creating your first WCF service" और "Creating your first WCF client" से सभी तरह से करने के लिए नहीं बल्कि उन्नत विषयों के लिए जा रहा है। हारून स्कोनार्ड 10-15 मिनट स्क्रीनकास्ट में सब कुछ अच्छी तरह से समझाता है - अत्यधिक अनुशंसित! ScriptManager टैग:
, सुनिश्चित करें कि आप एएसपी का उपयोग करके अपने पृष्ठों के लिए अपनी सेवाओं को जोड़ रहे हैं बनाते हैं। यह आपके लिए जावास्क्रिप्ट प्रॉक्सी का निर्माण करेगा, और लाभ यह है कि अंतर्निहित प्रोटोकॉल के बावजूद आपको किसी भी पार्सिंग को बनाने की ज़रूरत नहीं है। यह बहुत अच्छा है। यह उदाहरण एएसएमएक्स है, लेकिन यह डब्ल्यूसीएफ का उपयोग करने के रूप में साफ है।
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/WebServices/Admin/HospitalLocationService.asmx" InlineScript="true" />
</Services>
</asp:ScriptManager>
इसके अलावा, आप ASMX ScriptService और ScriptMethod जोड़कर JSON भेज कर सकते हैं विशेषताएं:
<System.Web.Services.WebService(Namespace:="http://www.fujimed.com/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
<ScriptService()> _
Public Class HospitalLocationService
Inherits System.Web.Services.WebService
<WebMethod()> _
<ScriptMethod()> _
Public Function GetAll() As List(Of HospitalLocationEntity)
Return (New HospitalLocation()).GetAll().Data
End Function
<WebMethod()> _
<ScriptMethod()> _
Public Function GetByID(ByVal ID As Integer) As HospitalLocationEntity
Return (New HospitalLocation()).GetHospitalLocation(ID).Data
End Function
End Class
सेवा उपभोक्ता, पार्स करने के बिना (यह क्या ScriptManager आप के लिए करता है):
function editLocation(id) {
vRIS.HospitalLocationService.GetByID(id, getComplete, getError);
}
function getComplete(results, context, methodName) {
document.all['txtLocation'].value = results.Location;
document.all['txtInterfaceID'].value = results.InterfaceID;
document.all['selActive'].value = results.Active ? "true" : "false";
document.all['hdnLocationID'].value = results.ID.toString();
}
function getError(errorInfo, context, methodName) {
Alert(methodName + " : " + errorInfo);
document.all['txtLocation'].value = "";
document.all['txtInterfaceID'].value = "";
document.all['selActive'].value = "false";
document.all['hdnLocationID'].value = "";
}
संपादित जोड़ने के लिए: के साथ सब से ऊपर ASMX के आधार पर, मैं अभी भी, WCF जाना चाहते हैं बहुमुखी प्रतिभा के लिए और डेटा अनुबंध को परिभाषित करने की क्षमता के लिए। इसके अलावा, डब्ल्यूसीएफ आरआईए सेवाओं की जांच; वे AJAX के साथ ही सिल्वरलाइट के लिए समर्थन को लक्षित कर रहे हैं, और यह डब्ल्यूसीएफ की अधिकांश कॉन्फ़िगरेशन को स्वचालित करता है।
WCF मॉडल बेहद अधिक लचीला है, अनिवार्य है - अगर आप केवल इसका इस्तेमाल बुनियादी प्रोफाइल व एक्सएमएल, प्रॉक्सी वस्तुओं के साथ का उपयोग कर एक बुनियादी http मॉडल पेश करने के लिए - यह बहुत समान दिखाई देंगे।
हालांकि मतभेद का एक संक्षिप्त सूची:
- मानकों
- MTOM इनबिल्ट (हालांकि WSE2 और WSE3 ASMX के लिए उपलब्ध हैं, यह सब बहुत WCF में सरल है) उभरते के लिए काफी बेहतर समर्थन (और एक ठीक करता है ज्ञात बग जो मुझे एमटीओएम के साथ डब्लूएसई 3 में खोजना याद है)
- समर्थित ट्रांसपोर्ट/प्रोटोकॉल इत्यादि की विस्तृत श्रृंखला, और व्यवहार पूरी तरह कॉन्फ़िगर करने योग्य/एक्स्टेंसिबल हैं; उदाहरण आप एक कस्टम serializer/प्रोटोकॉल/परिवहन का उपयोग करने की अनुमति देने के/आदि seemlessly, बस config और रनटाइम पर config
- अधिक बेहतर विन्यास, दोनों बदलकर
- निरीक्षकों और कस्टम प्रिंसिपलों
- साझा करने की क्षमता के लिए पूर्ण समर्थन ऑब्जेक्ट-मॉडल यदि आप
- चाहते हैं तो आप इसे वेब-सर्वर के बाहर होस्ट कर सकते हैं; एक कंसोल exe या सेवा, उदाहरण के लिए
- 1. .NET 3.5 डब्ल्यूसीएफ वेब सेवा (आरईएसटी)
- 2. एएसएमएक्स को डब्ल्यूसीएफ वेब सेवा
- 3. एएसएमएक्स वेब सेवा के बजाय डब्ल्यूसीएफ सेवा?
- 4. एएसएमएक्स वेब सेवा जेसन में .net 4.0
- 5. डब्ल्यूसीएफ या वेब एपीआई के लिए एएसएमएक्स
- 6. एएसएमएक्स वेब सेवा
- 7. क्या वेबमाइंड एएसएमएक्स सेवा
- 8. वेब सेवाएं - डब्ल्यूसीएफ बनाम एएसएमएक्स ("मानक")
- 9. धीमी वेब सेवा (और डब्ल्यूसीएफ सेवा) विंडोज 7
- 10. डब्ल्यूसीएफ और एएसएमएक्स वेब सेवाओं के बीच अंतर क्या हैं?
- 11. डब्ल्यूसीएफ एएसएमएक्स पर स्ट्रीमिंग?
- 12. एएसएमएक्स के रूप में उजागर डब्ल्यूसीएफ सेवा पैरामीटर
- 13. एएसएमएक्स वेब सेवा धीमा पहला अनुरोध
- 14. डब्ल्यूसीएफ आरईएसटी वेब सेवा
- 15. क्या सिंगलटन एएसएमएक्स वेब सेवा प्रॉक्सी का उपयोग करना ठीक है?
- 16. डब्ल्यूसीएफ वेब सेवा में जीजेपी संपीड़न
- 17. सी # डब्ल्यूसीएफ वेब सेवा
- 18. एएसएमएक्स वेब सेवा अमूर्त बेस क्लास
- 19. डब्ल्यूसीएफ वेब सेवा
- 20. एएसएमएक्स वेब सेवा का वर्णन वेबमाइड पैरामीटर
- 21. वेब सेवा संस्करण - डब्ल्यूसीएफ
- 22. क्या मुझे .NET वेब सेवा
- 23. एएसएमएक्स को डब्ल्यूसीएफ वेब सेवा में बदलने के लिए कितने प्रयास की आवश्यकता है?
- 24. वेब सेवा/डब्ल्यूसीएफ सेवा, क्या डेटासेट वापस करना बेहतर है?
- 25. डब्ल्यूसीएफ वेब सेवा
- 26. .NET 3.5 (या 4.0)
- 27. डब्ल्यूसीएफ जेसन वेब सेवा
- 28. .NET 2.0 या 3.5?
- 29. वेब सेवा (डब्ल्यूसीएफ)
- 30. क्या एक डब्ल्यूसीएफ सेवा एक वेब सेवा है?
टोनी प्रयासों के लायक अद्यतन है ... मेरा मतलब है कि आप एएसएमएक्स से डब्ल्यूसीएफ में स्विच करते समय काफी प्रदर्शन, कार्यक्षमता और लचीलापन वृद्धि देखते हैं? – HotTester
+1 अच्छे अंक टोनी – Perpetualcoder
यहां प्रदर्शन के बारे में कुछ और जानकारी: http://msdn.microsoft.com/en-us/library/bb310550.aspx – magnus