2008-10-26 19 views
16

हमारे पास R Server (आर सांख्यिकीय विश्लेषण में प्रयुक्त एक प्रोग्रामिंग भाषा है) जो मूल रूप से एक स्क्रिप्ट और एक सीएसवी फ़ाइल लेता है, कुछ डेटा संसाधित करता है और परिणाम को पाठ के रूप में देता है।डब्ल्यूसीएफ बाइंडिंग्स - इतने सारे! मैं एक कैसे चुनूं?

मुझे आर सर्वर पर एक सेवा लिखनी है ताकि .NET क्लाइंट (.Net Windows Forms, या ASP.Net हो।) आर सर्वर से कनेक्ट हो सकते हैं, स्क्रिप्ट और सीएसवी फ़ाइल जमा कर सकते हैं, और परिणाम प्राप्त कर सकते हैं वापस।

मैं अपने लिए उपलब्ध कई अलग-अलग बाइंडिंग से उलझन में हूं और वेब पर जानकारी किसी को चुनने के बारे में स्पैस/बिखरी हुई प्रतीत होती है।

साथ ही, आईआईएस में सेवा चलाने के लिए या एक अलग "कमांड लाइन" प्रकार श्रोता सेवा के रूप में सबसे अच्छा है (बाद वाला आईआईएस की तुलना में बदसूरत लगता है और मुझे नहीं पता कि कोई ऐसा करने का विकल्प क्यों चुन सकता है अगर वे ऐसा कर सकें इसे आईआईएस में चलाएं)?

उत्तर

10

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

पुन: होस्टिंग; आईआईएस क्लाइंट/सर्वर सेटअप के लिए वास्तव में सबसे सरल है; दो विशेष शक्तियों:

  • कॉन्फ़िगर करने के लिए आसान एसएसएल (यानी तुम सिर्फ आईआईएस कॉन्फ़िगर करें, और WCF इसका इस्तेमाल करेंगे)
  • संतुलन लोड करने के लिए आसान (बस अपने वेब खेत संतुलन लोड)

(मैं मानना ​​है WCF BasicHttpProfile पर चल भी अपने आईआईएस संपीड़न [GZip/Deflate] सेटअप लाभ उठा सकते हैं, लेकिन मेरे बोली नहीं है ...)

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

फिर से; अगर आपको इस जटिलता की आवश्यकता नहीं है, तो सबसे सरल विकल्प के लिए जाएं: आईआईएस में होस्टिंग।

+1

नेट के लिए नेट के लिए दिलचस्प है ऐसा करने की अनुमति देता है जहां मुझे पता है कि मुझे गैर के साथ संगतता की परवाह नहीं है।नेट क्लाइंट्स मैं आमतौर पर टीसीपी बाध्यकारी का उपयोग करता हूं, जो फ्लोचार्ट के अनुसार सही लगता है। http://weblogs.asp.net/spano/archive/2007/10/02/choosing-the-right-wcf-binding.aspx। आपका सुझाव निश्चित रूप से सबसे सरल है, लेकिन यदि आपके पास अच्छी किताब/उदाहरण हैं/जानते हैं कि आप अन्य बाइंडिंग काम करने के लिए क्या कर रहे हैं, तो यह अधिक प्रयास नहीं है। मुझे लगता है कि आईआईएस चुनने का मामला कमजोर है अब विंडोज प्रोसेस एक्टिवेशन सर्विस (डब्ल्यूएएस) आसपास है। – RichardOD

8

वास्तव में कई विकल्प हैं।

बाइंडिंग

बाइंडिंग WCF से उपलब्ध सामान्य परिदृश्य के लिए प्रोटोकॉल का एक सेट है। यह परिवहन, संदेश और सुरक्षा जानकारी निर्दिष्ट करता है।

बाध्यकारी चुनते समय, आपको यह पता लगाना होगा कि आपको इसकी क्या सुविधा चाहिए। उदा। आपको

  • क्लाइंट को प्रमाणीकृत करने की आवश्यकता हो सकती है क्योंकि आप नहीं चाहते कि हर कोई आपकी सेवा का उपयोग कर सके।
  • डेटा को एन्क्रिप्ट करने की आवश्यकता हो सकती है।
  • सेवा को अन्य प्लेटफार्मों के ग्राहकों के लिए अंतःक्रियाशील होने की आवश्यकता है।
  • संदेश का उपरिवर्तन एक मुद्दा बन रहा है।

यदि आप जानते हैं कि क्लाइंट हमेशा डॉट नेट से हैं, तो आप नेट टीसीपी बाइंडिंग का उपयोग कर सकते हैं, जो मूल हैप्पीबाइंडिंग से तेज़ है। हालांकि, basicHttp बाइंडिंग एक इंटरऑपरेबल प्रोटोकॉल है, यहां तक ​​कि PHP या जावा क्लाइंट बिना किसी समस्या के बात कर सकते हैं।

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

होस्टिंग

आईआईएस को और अधिक विश्वसनीय है। यदि आपकी सेवा को उस राज्य की आवश्यकता नहीं है जिसे लंबे समय तक चलने वाली डिमन प्रक्रिया (विंडोज सेवा या कंसोल ऐप) में होस्ट किया जाना है, तो आईआईएस विकल्प है क्योंकि यह आपकी सेवाओं के लिए संपीड़न और एन्क्रिप्शन को सक्षम करना आसान है।

बाइंडिंग के बारे में अधिक आप अपनी सेवा ब्राउज़र अर्थात जावास्क्रिप्ट WebHttpBinding अच्छा एक है कि शुद्ध आप के लिए परिभाषित डॉट है भीतर के नाम से जाना चाहते हैं। जावास्क्रिप्ट के लिए जेएसओएन को समझने के लिए आप enbableWebScript का उपयोग कर सकते हैं।

उपलब्धता

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

5

मैं जुवल लोवी द्वारा "प्रोग्रामिंग डब्ल्यूसीएफ सर्विसेज" पुस्तक का जिक्र करने का सुझाव दूंगा।

वह निर्णय लेने के लिए निर्णय लेता है कि आप किस बाध्यकारी उपयोग का निर्णय लेते हैं। तुम भी पुस्तक wros की WCF4 "इन सभी में निर्मित बाइंडिंग standars कि विशिष्ट परिदृश्यों के लिए काम पर बनाया जाता है, लेकिन यह भी मैं तुम्हें काम करेंगे चुनें से बाइंडिंग पर अपने लेख यहाँ

http://www.code-magazine.com/article.aspx?quickid=0605051&page=3

+0

हां- प्रवाह चार्ट बहुत आसान है। – RichardOD

+0

और यह पुस्तक भी है- शुरुआत के लिए उपयुक्त नहीं है – RichardOD

0

निकालें पा सकते हैं गलत या कम-कुशल एक। तो आप कैसे चुनते हैं कि आपके लिए यह सही है?

यदि आपको गैर-डब्ल्यूसीएफ क्लाइंट्स के साथ संवाद करने की आवश्यकता है तो सबसे स्पष्ट decisión है। आप "नेट" के साथ उपसर्ग किए गए बाइंडिंग पर उपयोग कर सकते हैं। याद रखें कि आप एक ही सेवा के लिए कई एंडपॉइंट्स को परिभाषित कर सकते हैं जो विभिन्न बाइंडिंग का उपयोग करेंगे। इससे आपको लाभ उठाने की अनुमति मिलती है। डब्ल्यूसीएफ ग्राहकों के लिए एफ प्रदर्शन अनुकूलन, लेकिन अभी भी एएसएमएक्स सेवाओं और डब्ल्यूएस- * मानकों के लिए समर्थन प्रदान करते हैं। ये और सुरक्षा और अन्य सुविधाएं प्रदान करते हैं जो कई ग्राहक लाभ लेते हैं।

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

ये WCF-प्रदान की बाइंडिंग ज्यादातर मामलों कि आप की आवश्यकता को शामिल करना चाहिए:। हालांकि, अगर आप बदल सकते हैं या एक पूरी तरह से ne बाध्यकारी बनाने की जरूरत, WCF तुम बहुत बस "

संबंधित मुद्दे