फाल्कोर और ग्रेफ्लक्यू में क्या अंतर है?


163

ग्राफकॉल में एक प्रकार की प्रणाली, क्वेरी भाषा और निष्पादन शब्दार्थ, स्थैतिक सत्यापन और नीचे दिए गए प्रत्येक प्रकार का आत्मनिरीक्षण शामिल होता है। इन घटकों में से प्रत्येक के माध्यम से आपको मार्गदर्शन करने के लिए, हमने एक उदाहरण लिखा है जिसे ग्राफकॉल के विभिन्न टुकड़ों को चित्रित करने के लिए डिज़ाइन किया गया है।

- https://github.com/facebook/graphql

फाल्कोर आपको वर्चुअल JSON ग्राफ के माध्यम से एकल डोमेन मॉडल के रूप में अपने सभी दूरस्थ डेटा स्रोतों का प्रतिनिधित्व करने देता है। आप उसी तरह से कोड करते हैं, जहां डेटा नहीं है, चाहे वह क्लाइंट पर मेमोरी में हो या सर्वर पर नेटवर्क पर।

- http://netflix.github.io/falcor/

फाल्कोर और ग्राफकलाइन (रिले के संदर्भ में) में क्या अंतर है?


5
इस पॉडकास्ट की जाँच करें जहां जाफर रिले / ग्राफकॉल और फाल्कोर / जेएसएन ग्राफ youtu.be/WL54eYbTJUw?t=53m55s
gdi2290

जवाबों:


131

मैंने Angular Air Episode 26: FalcorJS और Angular 2 को देखा है, जहाँ Jafar Husain ने जवाब दिया कि GraphQL, FalcorJS से तुलना कैसे करता है । यह सारांश है (पैराफ्रासिंग):

  • FalcorJS और GraphQL एक ही समस्या (डेटा का प्रबंधन, डेटा का प्रबंधन) से निपट रहे हैं।
  • महत्वपूर्ण अंतर यह है कि GraphQL एक क्वेरी भाषा है और FalcorJS नहीं है।
  • जब आप संसाधनों के लिए FalcorJS पूछ रहे हैं, तो आप बहुत स्पष्ट रूप से मूल्यों की परिमित श्रृंखला के लिए पूछ रहे हैं। FalcorJS पर्वतमाला, जैसे चीजों का समर्थन करता है genres[0..10]। लेकिन यह ओपन-एंडेड प्रश्नों का समर्थन नहीं करता है, जैसे genres[0..*]
  • GraphQL सेट किया गया है: मुझे सभी रिकॉर्ड दें जहाँ सही हो, इसके द्वारा ऑर्डर करें, आदि इस अर्थ में, GraphQL क्वेरी भाषा FalcorJS की तुलना में अधिक शक्तिशाली है।
  • GraphQL के साथ आपके पास एक शक्तिशाली क्वेरी भाषा है, लेकिन आपको सर्वर पर उस क्वेरी भाषा की व्याख्या करनी होगी।

जफ़र का तर्क है कि अधिकांश अनुप्रयोगों में, क्लाइंट से सर्वर पर जाने वाले प्रश्नों के प्रकार समान आकार साझा करते हैं। इसलिए, एक विशिष्ट और पूर्वानुमान योग्य संचालन जैसे कि सेट और सेट करना कैश का लाभ उठाने के अधिक अवसरों को उजागर करता है। इसके अलावा, बहुत से डेवलपर्स REST आर्किटेक्चर में एक साधारण राउटर का उपयोग करके अनुरोधों को मैप करने से परिचित हैं।

अंतिम चर्चा इस बात का समाधान करती है कि क्या ग्राफिकल के साथ आने वाली शक्ति जटिलता को पछाड़ देती है।


82

मैंने अब दोनों पुस्तकालयों के साथ ऐप लिख दिए हैं और मैं गजस के पोस्ट में सब कुछ से सहमत हो सकता हूं, लेकिन कुछ अलग चीजों को अपने स्वयं के ढांचे के उपयोग में सबसे महत्वपूर्ण पाया।

  • संभवत: सबसे बड़ा व्यावहारिक अंतर यह है कि ग्राफकॉइन पर इस बिंदु तक किए गए अधिकांश उदाहरण और संभवतया काम को ग्राफकॉल को रिले के साथ एकीकृत करने पर ध्यान केंद्रित किया गया है - फेसबुक के सिस्टम को उनकी डेटा आवश्यकताओं के साथ रिएक्टजेएस विजेट्स को एकीकृत करने के लिए। दूसरी ओर फाल्कोरजेएस विजेट सिस्टम से अलग काम करने का मतलब है, जिसका मतलब है कि दोनों को गैर-रिएक्ट / रिले क्लाइंट में एकीकृत करना आसान हो सकता है और यह विजेट के साथ विजेट डेटा निर्भरता के मिलान के मामले में आपके लिए कम स्वचालित रूप से काम करेगा।
  • क्लाइंट साइड इंटीग्रेशन में फाल्कोरजेएस का लचीला पक्ष यह है कि सर्वर को कार्य करने की आवश्यकता के बारे में बहुत राय दी जा सकती है। FalcorJS में वास्तव में स्ट्रेट अप "HTTP पर इस क्वेरी को कॉल करें" क्षमता है - हालांकि जाफ़र हुसैन इसके बारे में बहुत बात नहीं करते हैं - और एक बार जब आप उन्हें शामिल करते हैं, तो जिस तरह से क्लाइंट लायब्रेरीज़ सर्वर जानकारी पर प्रतिक्रिया करती है, वह काफी हद तक सिवाय इसके समान है। GraphQL / रिले विन्यास की एक परत जोड़ता है। FalcorJS में, यदि आप मूवी के लिए मान लौटा रहे हैं, तो आपका रिटर्न वैल्यू बेहतर है 'मूवी', जबकि ग्राफकॉल में, आप वर्णन कर सकते हैं कि भले ही क्वेरी 'फिल्म' लौटाती हो, आपको क्लाइंट साइड डेटस्टोर में 'मूवी' के रूप में रखना चाहिए। '। - यह शक्ति बनाम जटिलता ट्रेडऑफ का हिस्सा है जिसका उल्लेख गजस ने किया है।
  • व्यावहारिक आधार पर, ग्राफकलाइन और रिले अधिक विकसित प्रतीत होते हैं। जफ़र हुसैन ने उल्लेख किया है कि नेटफ्लिक्स फ्रंटेंड का अगला संस्करण कम से कम फाल्गोरजेएस पर चल रहा होगा, जबकि फेसबुक टीम ने उल्लेख किया है कि वे 3 साल से उत्पादन में ग्राफकॉल / रिले स्टैक के कुछ संस्करण का उपयोग कर रहे हैं।
  • GraphQL और रिले के आसपास खुला स्रोत डेवलपर समुदाय संपन्न हो रहा है। ग्राफक्लाइन और रिले के आसपास बड़ी संख्या में अच्छी तरह से समर्थित सहायक परियोजनाएं हैं, जबकि मैंने व्यक्तिगत रूप से फाल्कोरजेएस के आसपास बहुत कम पाया है। इसके अलावा रिले ( https://github.com/facebook/relay/pulse ) के लिए बेस गिथब रिपॉजिटरी, फाल्कोर जेएस ( https://github.com/netflix/fulcor/pulse ) के लिए गीथूब रिपॉजिटरी से काफी अधिक सक्रिय है । जब मैंने पहली बार फेसबुक रेपो खींचा, तो उदाहरण टूट गए थे। मैंने एक जीथब जारी किया और इसे घंटों के भीतर ठीक कर दिया गया। दूसरी ओर, फाल्कोरजेएस पर मैंने जो गिथब इश्यू खोला, उसकी दो हफ्तों में कोई आधिकारिक प्रतिक्रिया नहीं हुई।

1
GraphQL (2012) रिएक्ट और रिले से बहुत पहले रहा है, इसलिए आपका पहला बिंदु पूरी तरह से सटीक नहीं हो सकता है।
बरगी

आप शायद सही हो सकते हैं। मैं फेसबुकर नहीं हूं, इसलिए मैं वास्तव में इतिहास से बात नहीं कर सकता। मेरी टिप्पणी फेसबुक के प्रलेखन और वार्ता की वर्तमान स्थिति से अधिक आती है। उन्हें दुनिया के साथ साथी ( facebook.github.io/react/blog/2015/02/20/… ) के रूप में पेश किया गया था और दोनों काफी रास्ते से वापस चले गए। मैंने 2015 के शुरुआती दिनों में रिले में 3 साल पीछे जाने के बारे में कुछ अस्पष्ट लिखा है, इसलिए यह संभव है कि दोनों को बाहरी दुनिया में पेश करने से पहले कई वर्षों तक आंतरिक रूप से विकसित किया गया था। लेकिन मुझे निश्चित रूप से कोई विशेष ज्ञान नहीं है।
ओवरक्लॉकडिम

25

ग्राफकलाइन के पीछे के इंजीनियर में से एक बायरन ने हैशनोड पर एक एएमए किया , यहां यह सवाल पूछे जाने पर उनका जवाब है:

  • फाल्कोर ओब्जर्वैबल्स लौटाता है, ग्राफकाइल सिर्फ मान। नेटफ्लिक्स फाल्कोर का उपयोग कैसे करना चाहता था, यह उनके लिए बहुत मायने रखता है। वे कई अनुरोध करते हैं और डेटा तैयार करते हैं क्योंकि यह तैयार है, लेकिन इसका मतलब यह भी है कि क्लाइंट डेवलपर को सीधे ऑब्जर्वबल्स के साथ काम करना होगा। GraphQL एक अनुरोध / प्रतिक्रिया मॉडल है, और JSON वापस करता है, जो कि तब उपयोग करने के लिए तुच्छ रूप से आसान है। रिले कुछ गतिशीलवाद में वापस जोड़ता है जो केवल सादे मूल्यों का उपयोग करते हुए फाल्कोर प्रस्तुत करता है।
  • प्रकार प्रणाली। ग्राफकॉल को एक प्रकार की प्रणाली के रूप में परिभाषित किया गया है, और इसने हमें बहुत सारे दिलचस्प उपकरण बनाने की अनुमति दी है जैसे कि ग्राफिक्वेल, कोड जनरेटर, त्रुटि का पता लगाना, आदि। फाल्कोर बहुत अधिक गतिशील है, जो अपने आप में मूल्यवान है लेकिन करने की क्षमता को सीमित करता है इस तरह की बात।
  • नेटवर्क का उपयोग। ग्राफकॉक को मूल रूप से फेसबुक के न्यूज फीड को कम एंड डिवाइसेज पर कम एंड नेटवर्क पर संचालित करने के लिए डिजाइन किया गया था, इसलिए यह विलंबता को कम करने के लिए आपको एक ही नेटवर्क रिक्वेस्ट में जरूरत की हर चीज को घोषित करने की अनुमति देने के लिए बड़ी लंबाई तक जाता है। दूसरी ओर, फाल्कोर, अक्सर अतिरिक्त डेटा एकत्र करने के लिए कई राउंड ट्रिप करता है। यह वास्तव में सिस्टम की सादगी और नेटवर्क के नियंत्रण के बीच एक व्यापार है। नेटफ्लिक्स के लिए, वे बहुत कम अंत उपकरणों (जैसे Roku छड़ी) के साथ सौदा करते हैं, लेकिन धारणा यह है कि वीडियो स्ट्रीम करने के लिए नेटवर्क काफी अच्छा होगा।

संपादित करें: फाल्कोर वास्तव में बैच अनुरोध कर सकता है , जिससे नेटवर्क उपयोग के बारे में टिप्पणी गलत हो सकती है। @PrzeoR को धन्यवाद


4
TRUE -> "" दूसरी ओर, फाल्कोर, अक्सर अतिरिक्त डेटा एकत्र करने के लिए कई राउंड ट्रिप करता है। यह वास्तव में सिस्टम की सादगी और नेटवर्क के नियंत्रण के बीच का व्यापार है। "" बस फाल्कोर बैच की कार्यक्षमता की जाँच करें और यह रिले की तुलना में एक समान या उससे भी बेहतर है।
प्रोजोआर

1
@PrzeoR सुधार के लिए धन्यवाद! मैंने पोस्ट को संपादित किया!
यासरकडौर

आपका स्वागत है :-) फाल्कोरजेएस चेक से संबंधित अधिक जानकारी के लिए यहां देखें: reactjs.co/2016/02/03/…
PrzeoR

महान लेख वास्तव में फाल्कोर महान है, दुर्भाग्य से मैं एक स्काला डेवलपर हूं और उस मामले के लिए स्काला में और किसी अन्य भाषा में कोई फाल्कोर कार्यान्वयन नहीं है, हालांकि संगरिया में स्काला में एक उत्कृष्ट ग्राफकॉल कार्यान्वयन है
यासेकरदाद

और रिले के अन्य विकल्प भी हैं जो अपोलो-क्लाइंट और काहे की
यासेरकडॉर

21

अद्यतन: मैंने अपनी पोस्ट के तहत बहुत उपयोगी टिप्पणी पाई है जिसे मैं आपके साथ मुख्य सामग्री के पूरक के रूप में साझा करना चाहता हूं: यहां छवि विवरण दर्ज करें

उदाहरणों की कमी के बारे में, आप भयानक-फाल्कोरोज़ रेपो के उपयोगकर्ता पा सकते हैं, फाल्कोर के सीआरयूडी उपयोग के विभिन्न उदाहरण हैं: https://github.com/przeor/awesome-falcorjs ... दूसरी बात, एक किताब है " मास्टरींग फुल स्टैक रिएक्ट डेवलपमेंट "जिसमें फाल्कोर भी शामिल है (इसका उपयोग करने का तरीका सीखने का अच्छा तरीका):"

यहां छवि विवरण दर्ज करें

सामान्य पोस्ट बिल:

Relay / GraphQL की तुलना में FalcorJS ( https://www.facebook.com/groups/falcorjs/ ) कुशल होना अधिक सरल है।

GraphQL + रिले के लिए सीखने की अवस्था बहुत बड़ी है: यहां छवि विवरण दर्ज करें

मेरे संक्षिप्त सारांश में: फाल्कोर के लिए जाओ। अपनी अगली परियोजना में फाल्कोर का उपयोग करें जब तक कि आपके पास एक बड़ा बजट और आपकी टीम के लिए सीखने का बहुत समय न हो, तब RELAY + GRAPHQL का उपयोग करें।

GraphQL + रिले के पास बहुत बड़ा एपीआई है जो आपको कुशल होना चाहिए। फाल्कोर में छोटा एपीआई है और यह किसी भी फ्रंट-एंड डेवलपर के लिए बहुत आसान है, जो JSON से परिचित है।

यदि आपके पास सीमित संसाधनों के साथ एक AGILE प्रोजेक्ट है -> तो FalcorJS के लिए जाएं!

मेरी विनम्र राय: फाल्कोरजेएस फुल-स्टैक जावास्क्रिप्ट में कुशल होने के लिए 500% + आसान है।

मैंने अपनी परियोजना पर कुछ फाल्कोरजेएस स्टार्टर किट भी प्रकाशित किए हैं (+ अधिक पूर्ण-स्टैक फाल्कोर उदाहरण परियोजनाएं): https://www.github.com/przeor

तकनीकी विवरण में अधिक होने के लिए:

1) जब आप फाल्कोर का उपयोग कर रहे हैं, तो आप फ्रंट-एंड और बैकएंड दोनों पर उपयोग कर सकते हैं:

'फाल्कोर' से आयात आयात;

और उसके बाद अपने मॉडल का निर्माण करें।

... आपको दो पुस्तकालयों की भी आवश्यकता है, जो बैकएंड पर उपयोग करने के लिए सरल हैं: ए) फाल्कोर-एक्सप्रेस - आप इसे एक बार उपयोग करते हैं (उदाहरण के लिए। app.use ('/ model.json', FalcorServer.dataSourceRoute ()) => नया NamesRouter ()) )। स्रोत: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/index.js

b) फाल्कोर-राउटर - वहाँ आप SIMPLE मार्ग (उदा। मार्ग: '_view.length' ) को परिभाषित करते हैं । स्रोत: https://github.com/przeor/falcor-netflix-shopping-cart-example/blob/master/server/router.js

फालकोर सीखने की अवस्था के मामले में केक का टुकड़ा है।

आप दस्तावेज़ीकरण भी देख सकते हैं जो एफबी के लिबास की तुलना में बहुत सरल है और यह भी लेख " क्यों आपको फाल्कोरज (नेटफ्लिक्स फाल्कोर) की परवाह करनी चाहिए " की जाँच करें ।

2) Relay / GraphQL एक विशाल उद्यम उपकरण की तरह अधिक संभावना है।

उदाहरण के लिए, आपके पास दो अलग-अलग दस्तावेज़ हैं जो अलग-अलग बात कर रहे हैं:

a) रिले: https://facebook.github.io/relay/docs/tutorial.html - कंटेनर - रूट - रूट कंटेनर - रेडी स्टेट - म्यूटेशन - नेटवर्क लेयर - बैबल रिले प्लगइन - GRAPHQL

  • ग्राफकलाइन रिले विशिष्टता
  • वस्तु पहचान
  • संबंध
  • उत्परिवर्तन
  • आगे की पढाई
  • एपीआई संदर्भ

  • रिले

  • RelayContainer
  • Relay.Route
  • Relay.RootContainer
  • Relay.QL
  • Relay.Mutation
  • Relay.PropTypes
  • Relay.Store
  • इंटरफेस

  • RelayNetworkLayer

  • RelayMutationRequest
  • RelayQueryRequest

बी) ग्राप्सेल: https://facebook.github.io/graphql/

  • 2Language
  • 2.1 स्रोत पाठ
  • 2.1.1Unicode
  • 2.1.2 अंतरिक्ष में
  • २.१.३ लीन टर्मिनेटर
  • 2.1.4Comments
  • २.१.५ निस्सन्तानि कामस
  • २.१.६ अलौकिक स्तन
  • २.१. अ Tokens्गिर्यांचित् च
  • 2.1.8Punctuators
  • 2.1.9Names
  • 2.2-2009 दस्तावेज़
  • 2.2.1Operations
  • 2.2.2 चयन सेट
  • 2.2.3Fields
  • 2.2.4Arguments
  • 2.2.5Field उपनाम
  • 2.2.6Fragments
  • 2.2.6.1 टाइप की शर्तें
  • २.२.६.२ इनलाइन फ्रेगमेंट्स
  • 2.2.7Input मान
  • 2.2.7.1Int मान
  • २.२. 2.2.२ लौं मान
  • २.२. 2.2.३ बूलियन मान
  • 2.2.7.4String मान
  • 2.2.7.5Enum मान
  • 2.2.7.6लिस्ट मूल्य
  • 2.2.7.7Input ऑब्जेक्ट मान
  • 2.2.8Variables
  • टुकड़े के भीतर 2.2.8.1Variable उपयोग
  • 2.2.9Input प्रकार
  • 2.2.10Directives
  • २.२.१०.१ वर्णसंबंधी निर्देश
  • 3 टाइप सिस्टम
  • 3.1Types
  • 3.1.1Scalars
  • ३.१.१.१ ब्रेल-इन स्कैलर्स
  • 3.1.1.1.1Int
  • 3.1.1.1.2Float
  • 3.1.1.1.3String
  • 3.1.1.1.4Boolean
  • 3.1.1.1.5ID
  • 3.1.2Objects
  • 3.1.2.1Object फ़ील्ड तर्क
  • ३.१.२.२ अस् तस्य क्षेत्रेण प्रतिगृह्यताः
  • 3.1.2.3Object प्रकार का सत्यापन
  • 3.1.3Interfaces
  • ३.१.३.१ अन्तर्विभाज्य प्रकार मान्यता
  • 3.1.4Unions
  • 3.1.4.1 उपयोग प्रकार सत्यापन
  • 3.1.5Enums
  • ३.१.६ इन्पुटे वस्तु
  • 3.1.7Lists
  • 3.1.8Non-अशक्त
  • 3.2Directives
  • 3.2.1@skip
  • 3.2.2@include
  • ३.३ प्रकार के
  • 4Introspection
  • 4.1General सिद्धांतों
  • 4.1.1 नामकरण सम्मेलन
  • 4.1.2Documentation
  • 4.1.3Deprecation
  • 4.1.4 टाइप नाम आत्मनिरीक्षण
  • 4.2Schema आत्मनिरीक्षण
  • 4.2.1The "__Type" प्रकार
  • 4.2.2 टाइप किंड्स
  • 4.2.2.1Scalar
  • 4.2.2.2Object
  • 4.2.2.3Union
  • 4.2.2.4Interface
  • 4.2.2.5Enum
  • 4.2.2.6Input वस्तु
  • 4.2.2.7List
  • 4.2.2.8Non-अशक्त
  • 4.2.2.9 कॉम्बिनेशन लिस्ट और नॉन-नाल
  • 4.2.3The __Field Type
  • 4.2.4The __InputValue प्रकार
  • 5Validation
  • 5.1Operations
  • 5.1.1 नामांकित ऑपरेशन परिभाषाएँ
  • 5.1.1.1 अपरिपक्वता नाम विशिष्टता
  • ५.१.२ अज्ञात ऑपरेशन परिभाषाएँ
  • 5.1.2.1L बेनामी ऑपरेशन
  • 5.2Fields
  • 5.2.1 ऑब्जेक्ट्स, इंटरफेसेस और यूनियनों के प्रकारों पर चयन
  • 5.2.2 चयन चयन विलय
  • 5.2.3 फ़ीफ़ा फ़ील्ड चयन
  • 5.3Arguments
  • 5.3.1 संज्ञा नाम
  • ५.३.२ श्रुति अस्ति
  • ५.३.३ संवेग मान सही प्रकार
  • 5.3.3.1Compatible मान
  • 5.3.3.2 असमान तर्क
  • 5.4Fragments
  • ५.४.१ वर्णसंकर घोषणा
  • ५.४.१.१ वर्णनाम नाम अद्वितीयता
  • 5.4.1.2 फ़्रेग्मेंट स्प्रेड प्रकार अस्तित्व
  • ५.४.१.३ संघनन प्रकार पर
  • 5.4.1.4Fragments का उपयोग किया जाना चाहिए
  • ५.४.२ व्रतार्थ सूत्र
  • 5.4.2.1 फ़्रेग्मेंट प्रसार लक्ष्य परिभाषित
  • 5.4.2.2 फ़्रेग्मेंट स्प्रेड को चक्र नहीं बनाना चाहिए
  • 5.4.2.3 प्रसार प्रसार संभव है
  • 5.4.2.3.1 ऑब्जेक्ट स्कोप में विशेष विषय
  • वस्तु स्कोप में 5.4.2.3.2 सार सार
  • ५.४.२.३.३ विशेषांक सार स्कोप में
  • 5.4.2.3 सार सार में फैलता है
  • 5.5Values
  • 5.5.1Input ऑब्जेक्ट फ़ील्ड विशिष्टता
  • 5.6Directives
  • 5.6.1 अप्रत्यक्ष रूप से परिभाषित हैं
  • 5.7Variables
  • 5.7.1उपयोगी विशिष्टता
  • 5.7.2 परिवर्तनीय डिफ़ॉल्ट मान सही तरीके से लिखे गए हैं
  • 5.7.3 वैरिएबल इनपुट प्रकार हैं
  • 5.7.4 सभी परिवर्तनीय उपयोग परिभाषित हैं
  • 5.7.5 सभी चर उपयोग किए गए
  • 5.7.6 सभी परिवर्तनीय उपयोग अनुमत हैं
  • 6Execution
  • 6.1 अनुरोधों को पूरा करना
  • 6.2Coercing चर
  • 6.3Evaluating संचालन
  • 6.4 चयनित चयन सेट
  • 6.5 एक समूहित फ़ील्ड सेट को बदलना
  • 6.5.1Field प्रविष्टियाँ
  • 6.5.2 सामान्य मूल्यांकन
  • 6.5.3 सामान्य निष्पादन
  • 6.5.4Error को संभालना
  • 6.5.5Nullability
  • 7Response
  • 7.1 सरलीकरण प्रारूप
  • 7.1.1JSON सीरियलाइज़ेशन
  • 7.2Response प्रारूप
  • 7.2.1Data
  • 7.2.2Errors
  • AAppendix: संकेतन कन्वेंशन
  • A.1Context- मुक्त व्याकरण
  • अ। २.लक्षणात्मक और संश्लिष्ट व्याकरण
  • A.3Grammar संकेतन
  • A.4Gmarmar शब्दार्थ
  • A.5Algorithms
  • BAppendix: व्याकरण सारांश
  • B.1Ignored टोकन
  • B.2Lexical टोकन
  • B.3-2009 दस्तावेज़

यह तुम्हारी पसंद है:

सरल मीठा और लघु प्रलेखित फाल्कोर JS VERSUS विशाल-उद्यम-ग्रेड टूल जो ग्राफकॉइन और रिले के रूप में लंबे और उन्नत प्रलेखन के साथ है।

जैसा कि मैंने पहले कहा, यदि आप एक फ्रंट-एंड देव हैं जो JSON का उपयोग करने के विचार को समझ लेते हैं, तो फाल्कोर की टीम से JSON ग्राफ कार्यान्वयन आपके पूर्ण-स्टैक देव प्रोजेक्ट को करने का सबसे अच्छा तरीका है।


13
विषय का उत्तर। तकनीकी तुलना शामिल नहीं है। एक टिप्पणी के रूप में अधिक उपयुक्त है।
गजस

2
@ GajusKuizinas व्यक्तिपरक जवाब? दोनों के दस्तावेज़ों की जांच करें;; नौकरी के साथ प्रचार ;-)
प्रोज़ोआर

2
यह केवल एक राय है और यह सवाल का जवाब नहीं देता है।
मिचेल मिस्ज़ेसिज़िन

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

2
मैं @MorgenCheng के साथ सहमत हूँ, ऊपर मतदान! मैं पिछले कुछ हफ्तों से ग्राफ़िकल / रिले, कैशे, रेडक्स और अब फाल्कोर का मूल्यांकन कर रहा हूं, और मैं 100% प्रेज़ोर के साथ सहमत हूं। रिले और ग्राफकॉइन बहुत बढ़िया तकनीक हैं, लेकिन उन्हें बहुत अधिक मस्तिष्क शक्ति की आवश्यकता होती है और न्यूबॉक्सेस के लिए कमर कसना कठिन होता है। इसमें महत्वपूर्ण मात्रा में शिक्षण शामिल है। फाल्कोर का नकारात्मक पहलू, एक पूर्ण CRUD- आधारित ऐप के लिए उदाहरणों की कमी है। और मुझे JsonGraph को थूकते हुए PostgreSQL और RethinkDB परियोजनाओं को देखना अच्छा लगेगा।
डोम

5

संक्षेप में, फाल्कोर या ग्राफकॉल या रेस्टफुल एक ही समस्या को हल करते हैं - डेटा को प्रभावी ढंग से क्वेरी / हेरफेर करने के लिए एक उपकरण प्रदान करते हैं।

वे कैसे भिन्न होते हैं, कैसे वे अपना डेटा प्रस्तुत करते हैं:

  • फाल्कोर चाहता है कि आप उनके डेटा को एक बहुत बड़े वर्चुअल JSON ट्री के रूप में सोचें, और डेटा को पढ़ने, लिखने के लिए प्राप्त करें , सेट करें और कॉल करें
  • GraphQL चाहता है कि आप उनके डेटा को पूर्वनिर्धारित टाइप की गई वस्तुओं के समूह के रूप में सोचें, और डेटा को पढ़ने, लिखने के लिए प्रश्नों और म्यूटेशन का उपयोग करें।
  • बाकी चाहते हैं कि आप उनके डेटा को संसाधनों के एक समूह के रूप में सोचें, और डेटा को पढ़ने, लिखने के लिए HTTP क्रियाओं का उपयोग करें।

जब भी हमें उपयोगकर्ता के लिए डेटा प्रदान करने की आवश्यकता होती है, तो हम कुछ पसंद करते हैं: क्लाइंट -> क्वेरी -> {डेटा ऑप्स में एक लेयर ट्रांसलेट क्वेरी} -> डेटा।

GraphQL, फाल्कोर और JSON API (और यहां तक ​​कि ODdata) के साथ संघर्ष करने के बाद, मैंने अपनी डेटा क्वेरी परत लिखी । यह सरल है, सीखना आसान है, और ग्राफकॉल के साथ अधिक समकक्ष है।

इसे बाहर की जाँच करें:
देखें https://github.com/giapnguyen74/nextql

यह वास्तविक समय क्वेरी / उत्परिवर्तन के लिए पंख के साथ एकीकृत भी करता है। https://github.com/giapnguyen74/nextql-feathers


2

ठीक है, बस एक सरल लेकिन महत्वपूर्ण अंतर से शुरू करें, ग्राफकॉल एक क्वेरी है, जबकि फाल्कोर नहीं है!

लेकिन वे यू कैसे मदद करते हैं?

असल में, वे दोनों हमें प्रबंधन करने के लिए मदद कर रहा है और डेटा की क्वेरी, लेकिन GraphQL एक है अनुरोध / RES मॉडल और के रूप में डेटा वापस JSON , मूल रूप से में विचार GraphQL एक लक्ष्य में अपने सभी डेटा प्राप्त करने के एक ही अनुरोध कर रहा है ... इसके अलावा, सटीक अनुरोध होने पर सटीक प्रतिक्रिया दें, इसलिए कम गति वाले इंटरनेट और मोबाइल उपकरणों पर चलने के लिए कुछ, जैसे 3 जी नेटवर्क ... इसलिए यदि आपके पास कई मोबाइल उपयोगकर्ता हैं या कुछ कारणों से आप कम अनुरोध और तेज़ प्रतिक्रिया चाहते हैं , ग्राफकलाइन का उपयोग करें ... जबकि फेसलर इससे बहुत दूर नहीं है, इसलिए इसे पढ़ें ...

दूसरी ओर, नेटफ्लिक्स द्वारा फाल्कोर , आमतौर पर आपके सभी डेटा को पुनः प्राप्त करने के लिए अतिरिक्त अनुरोध (आमतौर पर एक से अधिक बार) होता है, आखिरकार वे इसे एक ही रीक में सुधारने की कोशिश कर रहे हैं ... फाल्कोर प्रश्नों के लिए अधिक सीमित है और पूर्व नहीं है रेंज और आदि की तरह -fined क्वेरी सहायकों ...

लेकिन अधिक स्पष्टीकरण के लिए, आइए देखें कि उनमें से प्रत्येक अपना परिचय कैसे देता है:

GraphQL, आपके एपीआई के लिए एक क्वेरी भाषा

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

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

ग्राफक्लॉक क्वेरीज़ न केवल एक संसाधन के गुणों का उपयोग करता है, बल्कि उनके बीच के संदर्भों का सुचारू रूप से पालन भी करता है। जबकि विशिष्ट REST API को कई URL से लोड करने की आवश्यकता होती है, वहीं ग्राफकॉल एपीआई को आपके डेटा की जरूरत है। ग्राफक्लाइन का उपयोग करने वाले ऐप्स धीमे मोबाइल नेटवर्क कनेक्शन पर भी त्वरित हो सकते हैं।

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


फाल्कोर, कुशल डेटा लाने के लिए एक जावास्क्रिप्ट पुस्तकालय

फाल्कोर आपको वर्चुअल JSON ग्राफ के माध्यम से एकल डोमेन मॉडल के रूप में अपने सभी दूरस्थ डेटा स्रोतों का प्रतिनिधित्व करने देता है। आप उसी तरह से कोड करते हैं, जहां डेटा नहीं है, चाहे वह क्लाइंट पर मेमोरी में हो या सर्वर पर नेटवर्क पर।

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

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

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