WCF से जावा वेबसर्विस इंटरॉप आश्चर्यजनक रूप से समस्याग्रस्त लगता है। कोई अच्छा संसाधन?


13

हाल ही में एक परियोजना के साथ हमारी। नेट आधारित देव टीम को दुनिया भर में जावा आधारित वेब सेवाओं की एक पूरी मेजबानी के साथ एकीकृत करने का काम सौंपा गया है, और हमने वास्तव में आश्चर्यजनक रूप से (अच्छी तरह से, हम निश्चित रूप से किसी भी अधिक आश्चर्यचकित नहीं हैं) बड़ी मात्रा में मुद्दे क्योंकि WCF द्वारा उत्पन्न XML जावा सेवाओं द्वारा स्वीकार नहीं किया जाता है।

यह भी लगता है कि इस विषय पर खोजने के लिए वास्तव में इतनी अच्छी जानकारी नहीं है, हमने यारोन नवे के उत्कृष्ट डब्ल्यूसीएफ ब्लॉग, http://webservices20.blogspot.com , और MSDN CCF मंच http पर भी कुछ अच्छे सुझाव दिए हैं। //social.msdn.microsoft.com/Forums/en-US/wcf/threads

क्या यहां कोई ऐसा है जो वास्तव में महसूस करता है कि उन्हें यह मिल गया है, और विषय पर निश्चित संसाधन पता है? पुस्तकों, ब्लॉगों या किसी भी वेबसाइट के सुझावों में रुचि होगी।

संपादित करें:
मैं इस थ्रेड पर स्वीकार किए गए उत्तर को सेट करने पर फटा हुआ हूं, क्योंकि दो सर्वश्रेष्ठ उत्तरों में से प्रत्येक का कुछ मूल्य है:
1. हम शायद डब्ल्यूसीएफ से लड़ने के बजाय अधिक HTTP वेबब्रेक कार्यान्वयन करने के साथ समाप्त हो जाएंगे।
2. लेकिन WCF एक्सप्रेस इंटरॉप बाइंडिंग 1.0 भी एक बहुत ही समझदार टिप था।


मैं डब्ल्यूसीएफ के बारे में कुछ नहीं जानता, लेकिन क्या यह एसओएपी आधारित एक्सएमएल पैकेट या सिर्फ एक्सएमएल का एक हिस्सा है जो एक रैस्टफुल सेवा द्वारा उपभोग किया जा सकता है?
मार्टिज़न वेरबर्ग

1
XML, JSON या RDF + XML लौटाता है।
एलन बी

क्या आप उदाहरण दे सकते हैं कि wcf क्लाइंट और जावा वेब्स सर्विस के बीच क्या गलत हुआ? क्या आपका मतलब है webservice = साबुन या कुछ अलग?
k3b

1
यह इस सवाल के दायरे से बाहर है कि बारीकियों में जाने के लिए, आप उदाहरणों के लिए स्टैक ओवरफ्लो पर मेरी प्रोफ़ाइल की जांच कर सकते हैं। यहां, मैं सिर्फ यह सुनना चाहता हूं कि क्या किसी और को WCF (या सामान्य रूप से .Net) के साथ समान समस्या हो रही है, ग्राहक अन्य प्लेटफार्मों पर आधारित वेबसर्विस के साथ इंटरोप करते हैं।
Bjørn

जवाबों:


15

आह हां ... एसओएपी, कंप्यूटिंग का सबसे पवित्र पवित्र कब्र। एक लिंगुआ फ़्रैंका जिसने दुनिया भर की प्रणालियों के बीच अंतर का वादा किया था।

और फिर आप जावा और PHP और .NET पर SOAP कार्यान्वयन के बीच अंतर करते हैं। या WebSphere SOAP सेवा और Apache SOAP क्लाइंट के बीच भी। अलग-अलग WS-I कंपेटिबिलिटी मानकों के साथ काम करने में कोई आपत्ति नहीं। अब कृपया मुझे बताएं कि आपको एक प्रोटोकॉल के लिए संगतता मानक की आवश्यकता क्यों है जो संगतता के लिए बनाया गया था , विडंबना के बारे में बात करें (और मेरा मतलब वास्तविक विडंबना है, न कि अलोनीस मॉरिसटेट ब्रांड ऑफ विडंबना )।

एक ही समय में जब आप दो SOAP एंडपॉइंट्स को संप्रेषित करने के मुद्दों में नहीं चलेंगे, जब वे दोनों एक ही मंच पर हों और ज्यादातर मामलों में प्लेटफ़ॉर्म में अधिक कुशल रिमोट ऑपरेशन प्रोटोकॉल होगा।

मैं यहां जो कह रहा हूं वह यह है कि अधिकांश भाग के लिए, सोप बेकार है। अब लोअर केस सोप, मैं हर दिन इस्तेमाल करता हूं और मैं शुक्रगुजार हूं कि ज्यादातर लोग ऐसा ही करते हैं।

कहा जा रहा है, यदि आप ईंट की दीवार के खिलाफ अपना सिर पीटने पर जोर दे रहे हैं। यहाँ Microsoft शुरू करने के लिए एक अच्छी जगह है, जिसमें अधिकांश प्रमुख जावा सर्वर के साथ इंटरॉप को सक्षम करने के लिए बाइंडिंग का एक सेट है। पाठ्यक्रम का मजेदार हिस्सा यह पता लगा रहा है कि आप किन सेवाओं के साथ काम कर रहे हैं।


5
SOAP नया CORBA :) है
gbjbaanb

किसी भी तरह मैं इसे सफलतापूर्वक ग्राहक एकीकरण परियोजनाओं में अक्सर किया जा रहा है। YMMV जाहिर है।
डेविड जे। लिस्ज़ेवस्की

9

मेरी राय में, आपका अवलोकन काफी सटीक है। XML आधारित संचार के उच्च स्तर के कार्यान्वयन आमतौर पर विभिन्न प्लेटफार्मों के साथ संगत नहीं होते हैं , भले ही वे दोनों "SOAP" कहलाते हों। कार्यान्वयन में सूक्ष्म अंतर, शायद कार्यान्वित मानक के दायरे में दोनों, वास्तविक जीवन के उपयोग में समस्याएं पैदा करते हैं।

सेवा प्रदाताओं के लिए मेरी सिफारिश: एक बहुत ही जटिल और सैद्धांतिक रूप से बेहतर कार्यान्वयन के बजाय एक सरल कार्यान्वयन का उपयोग करें। उदाहरण के लिए, यदि आपको उनकी आवश्यकता नहीं है, तो किसी भी अत्यंत जटिल प्रमाणीकरण योजना को शामिल न करें।

सेवा उपभोक्ताओं के लिए मेरी सिफारिश (आप, मुझे लगता है): जब आप की तुलना में एक अलग मंच पर एक उच्च स्तर के कार्यान्वयन के लिए संचार, एक निचले स्तर के कार्यान्वयन के लिए नीचा दिखाना। यह अचानक काफी सरल हो जाता है यदि आप केवल यह पता लगाते हैं कि वास्तविक XML को क्या भेजना है और फिर अपने स्वयं के मंच के उच्च स्तर के कार्यान्वयन का उपयोग करने पर जोर देने के विकल्प के रूप में, इसे पूरा करने के लिए सामान्य अच्छी कोडिंग प्रथाओं का उपयोग करें।

आशा है कि यह बहुत सारगर्भित नहीं था। संक्षेप में , जब आप जावा प्लेटफ़ॉर्म से कनेक्ट होने वाले .NET प्लेटफ़ॉर्म पर होते हैं, तो आप बस हेडर और xml को एक HttpWebRequest में इकट्ठा करना चाहते हैं और इसे इस तरह से भेज सकते हैं।


4

PHP वेब सेवाओं का उपभोग करने में भी आपको यही समस्याएँ होंगी।

इसका एकमात्र उत्तर SOAP के बजाय प्रोटोकॉल प्रकार को REST में बदलना था। हमें एसओएपी सामान कभी इंटरप्रेट करने के लिए नहीं मिला, इतना सिंपल के लिए!


ज्यादातर मामलों में, हमारे पास मौजूदा वेब सेवाओं को किसी भी तरह से बदलने का कोई विकल्प नहीं है, हमें उनके साथ SOAP से जुड़ना होगा, फिर चाहे जो भी हो। इसलिए मुझे डर है कि आपके लिए कोई उत्तर हल न हो जाए। ;)
ब्योर्न

1
> "किसी भी तरह से मौजूदा वेब सेवाओं को बदलने का कोई विकल्प नहीं है" उस स्थिति में; अपने आप को संभालो, तुम एक कठिन सवारी के लिए कर रहे हैं। मैं सिर्फ 2 सप्ताह के सिर से पीटने के बाद ठीक हो गया हूं, जावा / एंड्रॉइड से डब्ल्यूसीएफ / साबुन वेब सेवा को कॉल करने की कोशिश कर रहा हूं। मेरा उद्धार यह था कि मैं - आपके विपरीत - सेवा तक पहुँच गया था और इसने एक REST / JSON समापन बिंदु को उजागर किया। जाने के लिए रास्ता। यदि आप।
बाबू

@ Bjørn ओह ठीक है, आपको यह बताने के लिए खेद है, लेकिन तकनीकी शब्द का उपयोग करने के लिए, आप खराब हैं। मुझे लगता है कि एकमात्र उत्तर WCF का उपयोग बंद करने और एक अलग SOAP क्लाइंट का उपयोग करने के लिए है।
gbjbaanb

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