Tuesday 15 September 2015

Breeze and RESTful WebAPI -


प्रश्न:

जब मुझे लागू करने की आवश्यकता हो अपने स्वयं के पोस्ट / पुट / वेबपीआई में प्रति इकाई मिलते हैं?

पृष्ठभूमि:

एक सर्वरआइड ब्रीज़ नियंत्रक का एक सामान्य क्रियान्वयन लगता है:

  [BreezeController] सार्वजनिक वर्ग टोडोस कंट्रोलर: एपीआईकंट्रोलर {पढ़ने के लिए ईएफसीओन्टेक्सप्रोवाइडर & lt; टोडोस कॉन्टेक्स & gt; _contextProvider = नया EFContextProvider & lt; TodosContext & gt; (); // ~ / हवा / टोडोस / मेटाडेटा [एचटीटीपीगेट] सार्वजनिक स्ट्रिंग मेटाडाटा () {वापसी _ कन्टेक्सप्रोवाइडर। मेटाडेटा (); } // ~ / हवा / टूडोस / टोडोस // ~ / हवा / टूडोस / टोडोस? $ फ़िल्टर = ईसाईर्चित ईएफ़ झूठे और $ ऑर्डर द्वारा = बनाया गया [एचटीटीपीगेट] पब्लिक इकाइटेबल & lt; TodoItem & gt; टोडोस () {वापसी _ कन्टेक्सप्रोवाइडर.कॉन्टेक्सटोडोस; } // ~ / हवा / टूडोस / सेव चेंज [एचटीपीपीओस्ट] पब्लिक सेव रिजल्ट सेच चेंज (जॉबइज सेवबंडल) {रिटर्न _ कन्टेक्सप्रोवाइडर। सेव चेंजस (सेवबंडल); } // हमारे लिए कोई ब्याज की अन्य विविध कार्रवाइयां नहीं}   

मैं एक रीस्टिश एपीआई के निर्माण के बीच में हूं, जो इस बिंदु तक है, जैसे अंत बिंदु है: <प्री> प्राप्त / एपीआई / टूडू / 1 पट / एपीआई / टोड पोस्ट / एपीआई / टोडो

ऐसा लगता है कि ब्रीज़ को समापन बिंदुओं की आवश्यकता होती है (बेहतर या बदतर के लिए) ) - बस GETS का एक गुच्छा और एक SaveChanges POST समापन बिंदु

यह मुझे यह सोचने की ओर जाता है कि ब्रीज़ एकल वेब क्लाइंट के साथ तेजी से विकास करती है, ठीक है, एक हवा ... लेकिन जैसे ही आप गुमनाम ग्राहक हैं, आपको उन सभी हवा इंटरफेस कन्वेंशनों में बल देना होगा आपके क्लाइंट में बनाया है, जो कि लगता है रीस्टाइन एपीआई डिजाइन के उद्देश्य को हराने के लिए क्या यह मामला है?

हवाएं, पहले और फ़ार्मोस्ट, क्लाइंट-साइड जावास्क्रिप्ट फ़्रेमवर्क यदि आप क्लाइंट पर ब्रीज़ का उपयोग नहीं कर रहे हैं, तो Breeze.WebApi के लाभ

  • एन्हांस्ड ओडाटा क्वेरी समर्थन ($ का चयन करें और $ का समर्थन बढ़ाएं, विस्तारित ऑर्डर की जाती है)
  • मेटाडेटा निष्कर्षण और सीरियलाइज़ेशन
  • पी> जैसा कि आपने अनुमान लगाया है, सीआरयूडी संचालन के बारे में ब्रेज़ का एक अलग दर्शन है।

    हवाएं उन ग्राहकों के लिए डिज़ाइन की गई हैं जो एक लेनदेन में विभिन्न प्रकार के सी / यू / डी के कई संसाधनों के लिए चाहते हैं। यह उपयोगकर्ताओं को सर्वर को मारने के बिना जटिल तरीके से डेटा को हेरफेर करने देता है, फिर अपने परिवर्तन सहेजते समय सहेजे जाने पर। उदाहरण के लिए, कोई एक नया आदेश बना सकता है, दो OrderLineItem s को एक आदेश से दूसरे में ले जाएँ, एक तीसरा DeleteLineItem हटाएं , एक चौथाई मात्रा को संशोधित करें, और फिर SaveChanges () । ब्रीज़ भी सर्वर से डिस्कनेक्ट पूरी तरह से काम करने के लिए स्थानीय स्टोरेज का उपयोग करने का समर्थन करता है एक बार पुन: कनेक्टेड होने पर, परिवर्तन सभी सहेजे जा सकते हैं।

    REST को संचालित करने के लिए डिज़ाइन किया गया था। प्रत्येक सी / यू / डी ऑपरेशन तुरंत सर्वर के खिलाफ किया जाना चाहिए ताकि प्रतिक्रिया कोड पर कार्रवाई की जा सके। यह आसान अपडेट की आवश्यकता के साथ अनुप्रयोगों के लिए अच्छी तरह से काम करता है, लेकिन डेटा प्रविष्टि अनुप्रयोगों के लिए नहीं। हालांकि, वे सबसे अच्छे रूप में बोझिल हैं

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

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

No comments:

Post a Comment