2009-10-17 12 views
22

के लिए डब्ल्यूसीएफ, आरईएसटी, पीओएक्स और आरआईए सेवाओं के बीच कैसे चयन करूं? बहुत 0 तरीके से सिल्वरलाइट एप्लिकेशन इसे सर्वर से कनेक्ट कर सकता है। सहितमैं एक नए सिल्वरलाइट एप्लिकेशन

इनमें से प्रत्येक के लिए कृपया यह कहें कि यह क्या है और जब आप चाहें या नहीं करेंगे इसे से मैं उनके बीच चयन करने के लिए "अंगूठे के नियम" का एक सेट केवल एक महान स्तर की जानकारी नहीं ढूंढ रहा हूं।

(समस्या है जब यह जानकर आप उन सभी को जानने के लिए समय नहीं है जब क्या उपयोग करने के लिए अपने पहले सिल्वरलाइट आवेदन को डिजाइन है।)

अगर मैं इस सवाल का क्या प्रभाव में WPF साथ सिल्वरलाइट को बदलने के लिए था क्या आपके उत्तर पर होगा? (मैं WPF के साथ यह सोचते हैं कि फायरवॉल और व्यवस्थापक नीतियों के कारण एक सीधा कनेक्ट करने के लिए डेटाबेस एक विकल्प नहीं है।)

उत्तर

9

मेरे दो (यूरो) सेंट:

WCF सबसे अच्छा लगता है जब सेवा एप्लिकेशन की व्यावसायिक परत के रूप में देखा जा सकता है, यानी, जब आपकी सेवा में "बुद्धिमान" संचालन होते हैं जैसे "गणना करें DiscountForClient"

एडीओ.NET डेटा सर्विसेज (वास्तव में, केवल एक आरईएसटी कार्यान्वयन) उचित लगता है जब आपका एप्लिकेशन मूल रूप से डेटा केंद्रित होता है और सेवा डेटाबेस के लिए केवल फ्रंट-एंड होती है। यही है, सब आपकी सेवा तरीकों प्रकार GetCustomers के हैं, CreateInvoice, आदि

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

उपयोग POX अगर वहाँ एक मौका है कि आप ग्राहक भाग सिल्वरलाइट से किसी भी अन्य प्रौद्योगिकी के लिए (उदाहरण के HTML + AJAX के लिए) भविष्य में बदल सकता है, क्योंकि यह सबसे इंटरऑपरेबल विकल्प है।

डब्ल्यूपीएफ के लिए मतभेदों के बारे में, केवल मैं सोच सकता हूं कि डेटा एक्सेस के लिए, जब भी संभव हो, मैं प्रत्यक्ष ADO.NET डेटा कनेक्शन (डेटा एक्सेस लेयर में ठीक से एम्बेडेड, LINQ से SQL या इसी तरह) का उपयोग करता हूं ADO.NET डेटा सेवाओं का, क्योंकि यह तरीका अधिक लचीला है। मुझे वैसे भी कहना होगा कि मैंने कभी भी WPF में कुछ भी विकसित नहीं किया है।

+1

वास्तव में उपयोगी उदाहरण! इस उत्कृष्ट उत्तर के लिए धन्यवाद। –

3

मुझे लगता है कि मैं कभी भी POX नहीं जाऊंगा। यदि आप डब्ल्यूसीएफ लिखते हैं ताकि सेवा स्वयं बाध्यकारी और बाइंडिंग से स्वतंत्र हो, विन्यास फाइलों में किया जाता है, तो डब्ल्यूसीएफ परिवहन और प्रोटोकॉल के बारे में काफी अज्ञेयवादी है।यह एसओएपी, जेएसओएन, आरईएसटी, या बाइनरी सीरियलाइजेशन का अपना रूप कर सकता है। यह सब बाध्यकारी में है। आंतरिक रूप से, डब्ल्यूसीएफ केवल निर्दिष्ट करता है कि संचालन और डेटा अनुबंध (कक्षा, विधि, और संपत्ति विशेषताओं द्वारा परिभाषित सभी) के संदर्भ में क्या खुलासा होता है। 2010 में आने के साथ डब्ल्यूसीएफ आपको इस संबंध में जबरदस्त लचीलापन देता है।

सिल्वरलाइट पक्ष से, डब्ल्यूसीएफ की आवश्यकता है कि आप कुछ नलसाजी कोड लिखें। .NET Frameowrk में आपके सिल्वरलाइट प्रोजेक्ट में प्रॉक्सी बनाने के लिए टूल हैं, लेकिन आपको सभी डब्ल्यूसीएफ प्रतिक्रियाओं को असीमित रूप से संभालने के लिए तैयार होना चाहिए, और प्रॉक्सी सेवा द्वारा फेंकने वाले अपवादों को पकड़ नहीं सकता है।

.NET आरआईए सेवाएं ये सब छुपाती हैं। यह कवर के तहत डब्ल्यूसीएफ का उपयोग करता है, लेकिन यह पूरी तरह छुपा हुआ है। आपको एसिंक्रोनस कोड लिखना नहीं है। आप एक बार सत्यापन को परिभाषित करते हैं, ज्यादातर घोषणात्मक रूप से, और यह सर्वर-साइड और क्लाइंट-साइड दोनों काम करता है। रिलीज 1 को सिल्वरलाइट के लिए लक्षित किया जाएगा, इसलिए आपको कहीं और सेवा का उपयोग करने के लिए बहुमुखी प्रतिभा नहीं मिलती है। बाद में रिलीज में उस दायरे को विस्तारित किया जाना चाहिए।

मुझे तुलना करने के लिए ADO.NET डेटा सेवाओं के बारे में पर्याप्त जानकारी नहीं है। मुझे संदेह है कि उत्तर इस बात पर निर्भर करेगा कि आप सिल्वरलाइट उपयोग के मुकाबले अपने डेटा का खुलासा करना चाहते हैं या नहीं।

.NET आरआईए सेवाएं उस दिशा की तरह दिखती हैं जो मैं जाना चाहता हूं (इन मुद्दों को स्वयं ध्यान में रखते हुए, इन मुद्दों को ध्यान में रखते हुए)। मेरे लिए बड़े मुद्दे सेवा परत में कार्यक्षमता का एक बहुत बड़ा संग्रह लागू करेंगे, और सीधे डेटा एक्सेस परत पर कोड करने में सक्षम नहीं होंगे (हमें या तो SQL सर्वर या ओरेकल पर चलाने में सक्षम होना चाहिए)।

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

5

हम आरआईए का उपयोग करते हैं, और यह उन विकल्पों में से एकमात्र है जो मुझे पता है, लेकिन मुझे यह पता है, इसलिए यहां मेरे कुछ विचार हैं।

आरआईए अभी तक समाप्त नहीं हुआ है। यह काम किया जा रहा है। यदि आप जल्द ही समाप्त होने की योजना बना रहे हैं, और आप उस चीज़ का समर्थन करने के बारे में चिंतित हैं जिसके पास काफी बदलाव करने की संभावना है, तो आप अन्य विकल्पों पर विचार करना चाहेंगे। यदि यह एक नई परियोजना है, और आप इसे लंबे समय तक समर्थन देने जा रहे हैं, तो आरआईए का उपयोग करना आसान हो जाएगा।

ऐसा कहकर, मुझे लगता है कि आरआईए के जुलाई पूर्वावलोकन के तरीके और एक पूर्ण संस्करण काम करने के तरीके में कई बदलाव नहीं होंगे। इसके अलावा समर्थन का स्तर यह सुझाव देता है कि यह सिल्वरलाइट में किसी सर्वर से बात करने के लिए "रास्ता" बन जाएगा।

बस इसे उल्लेख के लायक है कारण, कुछ लिंक है:

http://blogs.msdn.com/brada/ ब्राड अब्राम एक उदाहरण है कि वह लगातार अपडेट कर रहा है है।

http://forums.silverlight.net/forums/53.aspx यह वह जगह है जहां आप प्रश्न पूछने के लिए जाते हैं।

http://www.riaservicesblog.com/Blog/ कॉलिन ब्लेयर अपनी सामग्री जानता है, और वह बहुत उपयोगी है।

3

डब्ल्यूसीएफ सेवा संचार के लिए माइक्रोसॉफ्ट का मानक है। मैं दृढ़ता से किसी को भी डब्ल्यूसीएफ वेब एपीआई (डब्ल्यूसीएफ का उपयोग करता है, लेकिन विशेष रूप से आरईएसटी के लिए तैयार) का उपयोग करके सेवा परत बनाने की सलाह देता हूं, जो इस अप्रैल 2012 से बाहर आ रहा है। डब्ल्यूसीएफ वेब एपीआई वर्तमान में पूर्वावलोकन मोड में है।

अंगूठे के इन नियमों को याद रखें: - आपका यूआई आपकी सेवा परत से तेज़ी से बदल जाएगा। कई वर्षों में रीस्टफुल सेवाएं उपलब्ध होंगी, सिल्वरलाइट शायद नहीं होगी - क्या आपकी सेवाएं कभी भी एपीआई होंगी? खैर ... डब्ल्यूसीएफ आरईएसटी जाने का तरीका है - क्या आप जावास्क्रिप्ट और सिल्वरलाइट कोड को मिश्रित करेंगे? डब्ल्यूसीएफ आरईएसटी आपके जीवन को आसान बना देगा - क्या आपके पास मोबाइल घटक होगा (चूंकि सिल्वरलाइट आईओएस या एंड्रॉइड पर नहीं चलेगा) ... REST को प्राथमिकता दी जाती है।

तकनीक के अनुरूप न हों, लेकिन संपूर्ण रूप से ऐप।

2

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

टिप्पणी:

  • मैं कभी नहीं इस कोशिश की, लेकिन क्या तुम सच में आप अन्य ग्राहकों के साथ भी रिया सेवा का उपयोग कर सकते करने के बाद सभी रिया सेवा WCF सेवाओं के शीर्ष पर बनाया जाता है की आवश्यकता है।
  • मुझे आकाश कवा की सुरक्षा चिंताओं को काफी समझ में नहीं आता है। आप किसी भी अन्य सेवा के साथ सर्वर-साइड पर सुरक्षा को नियंत्रित (और करना) कर सकते हैं।
संबंधित मुद्दे