हॉटचॉकलेट में मुख्य निर्देश के साथ ऑब्जेक्ट प्रकारों को अनुकूलित करना
हॉटचॉकलेट के साथ ग्राफक्यूएल का उपयोग करते समय, आपको अपने ऑब्जेक्ट प्रकारों को निर्देशों के साथ विस्तारित करने की आवश्यकता हो सकती है, जैसे कि @चाबी निर्देश, अपोलो फेडरेशन के साथ अनुकूलता सुनिश्चित करने के लिए। यह फ़ेडरेटेड स्कीमा के लिए विशेष रूप से महत्वपूर्ण है, जिसमें कुंजियाँ कई सेवाओं में संस्थाओं की पहचान करती हैं। इन निर्देशों के साथ अपने ऑब्जेक्ट प्रकारों को उचित रूप से डिज़ाइन करने का तरीका समझना महत्वपूर्ण है।
यह लेख बताएगा कि कैसे उपयोग करें हॉट चॉकलेट का उपयोग करके वस्तु प्रकारों को सजाने के लिए @चाबी निर्देश. हम सरल निर्माण के लिए C# कोड का उपयोग करने वाले विशेष उदाहरणों पर भी गौर करेंगे माता-पिता क्लास और उत्पादित ग्राफक्यूएल स्कीमा को कैसे बदलें। इस कार्यक्षमता को बनाने के लिए आपके द्वारा की जाने वाली वास्तविक कार्रवाइयों पर जोर दिया जाएगा।
ग्राफक्यूएल ऑब्जेक्ट प्रकारों के निर्माण के लिए हॉटचॉकलेट का उपयोग करते समय, @चाबी अपेक्षा के अनुरूप निर्देश तुरंत लागू नहीं किया जा सकता है। इसके बजाय, स्कीमा एक सरल प्रकार की संरचना तैयार कर सकती है जिसमें फेडरेशन के लिए आवश्यक महत्वपूर्ण सुविधाओं का अभाव है। हम इस पर चर्चा करेंगे कि इसे कैसे हल किया जाए और अपने स्कीमा को अपेक्षा के अनुरूप कार्यान्वित किया जाए।
हम महत्वपूर्ण कॉन्फ़िगरेशन कार्यों को भी कवर करेंगे, जैसे कि आपके ग्राफक्यूएल सर्वर सेटअप को संशोधित करना और दाईं ओर का उपयोग करना हॉट चॉकलेट और अपोलो फेडरेशन संकुल. उचित कॉन्फ़िगरेशन के साथ, आप आसानी से निर्देश लागू कर सकते हैं और अपनी सेवाओं के लिए उचित स्कीमा फ़ेडरेशन सुनिश्चित कर सकते हैं।
| आज्ञा | उपयोग का उदाहरण |
|---|---|
| [चाबी] | हॉटचॉकलेट में, यह कमांड किसी ऑब्जेक्ट प्रकार को उपयोग करके सजाता है @चाबी निर्देश. यह परिभाषित करता है कि अपोलो फेडरेशन के साथ व्यवहार करते समय कौन सा क्षेत्र प्रकार के विशिष्ट पहचानकर्ता के रूप में काम करेगा। |
| [संदर्भ समाधानकर्ता] | जब किसी विधि पर लागू किया जाता है, तो यह विशेषता हॉटचॉकलेट को फ़ेडरेटेड प्रकारों के लिए रिज़ॉल्यूशन के रूप में उस विधि का उपयोग करने का निर्देश देती है। यह बाहरी संदर्भों के माध्यम से फ़ेडरेटेड सेवाओं में प्रासंगिक डेटा की पुनर्प्राप्ति की अनुमति देता है। |
| .अपोलोफेडरेशन जोड़ें() | यह कमांड हॉटचॉकलेट ग्राफ़क्यूएल सर्वर में अपोलो फेडरेशन समर्थन को कॉन्फ़िगर करता है। फ़ेडरेटेड स्कीमा सुविधाओं को सक्षम करना आवश्यक है, जैसे कि @चाबी निर्देश. |
| .रजिस्टरसेवा<टी>() | किसी सेवा को पंजीकृत करता है, जैसे पेरेंट रिपॉजिटरी, GraphQL DI कंटेनर में। यह आपको सेवाओं को सीधे GraphQL रिज़ॉल्वर में इंजेक्ट करने की अनुमति देता है। |
| निर्देश @कुंजी(फ़ील्ड: स्ट्रिंग!) | एसडीएल मॉडल में, यह निर्देश फेडरेशन के लिए मुख्य कुंजी क्षेत्र निर्दिष्ट करता है। क्रॉस-सर्विस इकाई रिज़ॉल्यूशन को सक्षम करने के लिए, ऑब्जेक्ट प्रकारों में यह होना चाहिए @चाबी निर्देश. |
| ISchemaAsync.ExecuteAsync() | एसिंक्रोनस रूप से एक ग्राफक्यूएल क्वेरी निष्पादित करता है, जिसका उपयोग आमतौर पर यूनिट परीक्षणों में यह सुनिश्चित करने के लिए किया जाता है कि स्कीमा और निर्देश, जैसे @चाबी, ठीक से क्रियान्वित किया जाता है। |
| [सेवा] | इस सुविधा का उपयोग ग्राफक्यूएल रिज़ॉल्वर विधि तर्कों में रिपॉजिटरी या सेवाओं जैसी निर्भरताओं को इंजेक्ट करने के लिए किया जाता है, जिससे हॉटचॉकलेट में सेवा पुनर्प्राप्ति सक्षम होती है। |
| दावा.शामिल है() | XUnit की यूनिट टेस्टिंग कमांड का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि कुछ स्ट्रिंग्स या निर्देश, जैसे @चाबी निर्देश, परीक्षणों के दौरान उत्पन्न ग्राफक्यूएल स्कीमा में शामिल हैं। |
हॉटचॉकलेट में प्रमुख निर्देशों की भूमिका को समझना
पहली स्क्रिप्ट बताती है कि इसे कैसे कार्यान्वित किया जाए @चाबी C# में HotChocolat का उपयोग करने वाला निर्देश। यह स्क्रिप्ट गारंटी देती है कि निर्मित ग्राफक्यूएल स्कीमा में शामिल है @चाबी अपोलो फेडरेशन के साथ फेडरेशन के लिए निर्देश। स्क्रिप्ट a बनाने से शुरू होती है माता-पिता कक्षा और असाइन करना [चाबी] और [पहचान] इसके क्षेत्रों की विशेषताएँ। हॉटचॉकलेट को चिह्नित करने की जानकारी देने के लिए ये गुण महत्वपूर्ण हैं पहचान इकाई के विशिष्ट पहचानकर्ता के रूप में फ़ील्ड। फ़ेडरेटेड ग्राफक्यूएल सेवा बनाते समय यह महत्वपूर्ण है जिसमें संस्थाओं को कई सेवाओं में साझा किया जा सकता है। इस फ़ील्ड को चिह्नित करने से ग्राफक्यूएल सेवा को फ़ेडरेटेड प्रश्नों में इकाई को हल करने की अनुमति मिलती है।
सन्दर्भ समाधानकर्ता फ़ंक्शन भी स्क्रिप्ट का एक अनिवार्य घटक है। यह स्थिर फ़ंक्शन हॉटचॉकलेट को इकाई की तलाश करके हल करने में सक्षम बनाता है माता-पिता एक भंडार में वस्तु. पेरेंट रिपॉजिटरी GraphQL सर्वर के साथ पंजीकृत है, और पाना विधि इसके द्वारा माता-पिता को पुनः प्राप्त करती है पहचान. बूटस्ट्रैप कोड में, .QueryType जोड़ें अनुदेश रजिस्टर करता है सवाल ऑब्जेक्ट, जिसका उपयोग ग्राफक्यूएल क्वेरीज़ को निष्पादित करने के लिए किया जाता है। रजिस्टर सर्विस पेरेंट रिपोजिटरी जैसी निर्भरता को ग्राफक्यूएल रिज़ॉल्वर में इंजेक्ट करने की अनुमति देता है। यह डिज़ाइन चिंताओं के स्पष्ट पृथक्करण को संरक्षित करते हुए डेटा पुनर्प्राप्ति को सरल बनाता है।
दूसरा उदाहरण स्कीमा-प्रथम दृष्टिकोण अपनाता है, परिभाषित करने के लिए ग्राफक्यूएल एसडीएल (स्कीमा डेफिनिशन लैंग्वेज) का उपयोग करता है। @चाबी स्कीमा के भीतर निर्देश. यह समाधान उन टीमों के लिए विशेष रूप से प्रभावी है जो पहले से ही ग्राफक्यूएल के एसडीएल सिंटैक्स से परिचित हैं। इस उदाहरण में, @चाबी निर्देश पर लागू होता है माता-पिता प्रकार, स्पष्ट रूप से इंगित करता है पहचान अद्वितीय पहचानकर्ता के रूप में फ़ील्ड। स्कीमा-फर्स्ट का उपयोग करने से डेवलपर्स को इस बात पर अधिक नियंत्रण मिलता है कि ग्राफक्यूएल स्कीमा कैसे बनाया जाता है और सी # कोड में जाने के बिना इसे संशोधित किया जाता है, जिससे यह बड़ी टीमों के लिए अधिक लचीला विकल्प बन जाता है।
अंत में, यूनिट परीक्षण घटक यह सत्यापित करता है कि कोड इच्छानुसार कार्य करता है। xUnit परीक्षण ढाँचे का उपयोग करते हुए, Assert.The Contains कमांड यह सुनिश्चित करता है कि परिणामी स्कीमा में शामिल है @चाबी निर्देश. यह परीक्षण की उपस्थिति के लिए स्कीमा को मान्य करता है @चाबी निर्देश, पुष्टि करता है कि सेवा फ़ेडरेशन के लिए ठीक से कॉन्फ़िगर की गई है। यह सुनिश्चित करने के लिए यूनिट परीक्षण एक सर्वोत्तम अभ्यास है कि आपके ग्राफक्यूएल स्कीमा या रिज़ॉल्वर तरीकों में परिवर्तन कार्यक्षमता को बाधित नहीं करते हैं, विशेष रूप से एक फ़ेडरेटेड सिस्टम में जहां कई सेवाओं को एक साथ निर्बाध रूप से काम करना चाहिए।
ग्राफक्यूएल ऑब्जेक्ट प्रकारों के लिए हॉटचॉकलेट में मुख्य निर्देश लागू करना
यह समाधान बैकएंड से ग्राफक्यूएल स्कीमा को संशोधित करने के लिए सी#, हॉटचॉकलेट और अपोलो फेडरेशन का उपयोग करता है।
using HotChocolate;using HotChocolate.Types;using HotChocolate.Types.Relay;using Microsoft.Extensions.DependencyInjection;public class Parent{public Parent(string id, string name){Id = id;Name = name;}[Key][ID]public string Id { get; }public string Name { get; }[ReferenceResolver]public static Parent? Get(ParentRepository repository, string id){return repository.GetParent(id);}}public class Query{public Parent GetParent(string id, [Service] ParentRepository repository){return repository.GetParent(id);}}public void ConfigureServices(IServiceCollection services){services.AddGraphQLServer().AddQueryType<Query>().RegisterService<ParentRepository>().AddApolloFederation();}
@key निर्देश लागू करने के लिए GraphQL स्कीमा प्रथम दृष्टिकोण का उपयोग करना
यह समाधान @key निर्देश के साथ एक कस्टम स्कीमा बनाने के लिए ग्राफक्यूएल एसडीएल और हॉटचॉकलेट के साथ स्कीमा-प्रथम दृष्टिकोण का उपयोग करता है।
type Parent @key(fields: "id") {id: ID!name: String!}extend type Query {parent(id: ID!): Parent}extend type Mutation {createParent(id: ID!, name: String!): Parent}directive @key(fields: String!) on OBJECT | INTERFACEschema {query: Querymutation: Mutation}
@key निर्देश के साथ यूनिट परीक्षण हॉटचॉकलेट ग्राफक्यूएल
यहां एक C# यूनिट परीक्षण है जो यह सुनिश्चित करने के लिए xUnit फ्रेमवर्क का उपयोग करता है कि हॉटचॉकलेट सर्वर ग्राफक्यूएल स्कीमा में @key निर्देश को ठीक से लागू करता है।
using Xunit;using HotChocolate.Execution;using Microsoft.Extensions.DependencyInjection;public class ParentTests{[Fact]public async Task ParentSchema_ContainsKeyDirective(){var serviceCollection = new ServiceCollection();serviceCollection.AddGraphQLServer().AddQueryType<Query>().AddApolloFederation();var serviceProvider = serviceCollection.BuildServiceProvider();var schema = await serviceProvider.GetRequiredService<ISchemaAsync>().ExecuteAsync();Assert.Contains("@key(fields: \"id\")", schema.ToString());}}
अपोलो फेडरेशन और हॉटचॉकलेट के साथ ग्राफक्यूएल को बढ़ाना
फ़ेडरेटेड वातावरण में हॉटचॉकलेट के साथ ग्राफक्यूएल का उपयोग करने के लिए अच्छी तरह से संरचित स्कीमा सिलाई की आवश्यकता होती है। अपोलो फेडरेशन डेवलपर्स को एक समान इंटरफ़ेस बनाए रखते हुए कई सेवाओं में स्कीमा को विभाजित करने में सक्षम बनाता है। का उपयोग @चाबी हॉटचॉकलेट के साथ निर्देश, आप यह निर्दिष्ट कर सकते हैं कि ग्राफक्यूएल इकाइयों को कई सेवाओं में कैसे हल किया जाता है। यह आपके एपीआई को अधिक मॉड्यूलर और स्केलेबल बनाता है, जो विशेष रूप से बड़े, वितरित सिस्टम में फायदेमंद है जहां कई टीमें ग्राफक्यूएल स्कीमा के विभिन्न पहलुओं को नियंत्रित करती हैं।
एक विशिष्ट फ़ेडरेटेड स्कीमा में, संस्थाएँ जैसे माता-पिता कई सेवाओं में मौजूद हो सकता है। अपोलो फेडरेशन इसका उपयोग करता है @चाबी किसी निर्दिष्ट फ़ील्ड के आधार पर किसी इकाई की विशिष्ट पहचान करने का निर्देश, जैसे पहचान. अपोलो फेडरेशन के लिए हॉटचॉकलेट का समर्थन यह सुनिश्चित करता है कि आपकी सेवा आसानी से एक बड़े बुनियादी ढांचे में एकीकृत हो जाए। कुंजियाँ सेट करने के अलावा, आप फ़ेडरेशन निर्देशों का उपयोग इस प्रकार कर सकते हैं @विस्तार या @बाहरी कई माइक्रोसर्विसेज में फैले डेटा फ़ील्ड को प्रबंधित करने के लिए, आपके ग्राफक्यूएल सेटअप के लिए अधिक लचीलापन प्रदान करता है।
हॉटचॉकलेट का उपयोग करते समय एक अन्य महत्वपूर्ण कारक प्रदर्शन अनुकूलन है। ग्राफक्यूएल एपीआई के साथ ओवर-फ़ेचिंग डेटा एक आम समस्या है, विशेष रूप से फ़ेडरेटेड संदर्भों में। जैसे सही रिज़ॉल्वर का उपयोग करना सन्दर्भ समाधानकर्ता पहले के उदाहरणों में वर्णित, गारंटी देता है कि आपका एपीआई अत्यधिक खोजों के बिना केवल आवश्यक डेटा वितरित करता है। इसके अलावा, हॉटचॉकलेट उन्नत क्वेरी बैचिंग और कैशिंग एल्गोरिदम का समर्थन करता है, जो फ़ेडरेटेड स्कीमा में एपीआई प्रतिक्रिया गति और दक्षता बढ़ा सकता है।
हॉटचॉकलेट और अपोलो फेडरेशन के बारे में सामान्य प्रश्न
- अपोलो फेडरेशन ग्राफक्यूएल विकास को कैसे लाभ पहुंचाता है?
- अपोलो फेडरेशन आपको ग्राफक्यूएल स्कीमा को कई सेवाओं में विभाजित करने की अनुमति देता है, प्रत्येक स्कीमा के एक अनुभाग के लिए जवाबदेह होता है, लेकिन फिर भी एक सुसंगत एपीआई बनाए रखता है।
- क्या है @key हॉटचॉकलेट में निर्देश का उपयोग किसके लिए किया जाता है?
- @key निर्देश एक इकाई के लिए एक अद्वितीय पहचानकर्ता बनाता है, जो इसे कई ग्राफक्यूएल सेवाओं में हल करने में सक्षम बनाता है।
- क्या मैं उपयोग कर सकता हूँ [Key] और [ID] हॉटचॉकलेट में विशेषताएँ एक साथ?
- हां [Key] संपत्ति का उपयोग महासंघ के लिए किया जाता है, और [ID] स्कीमा के भीतर फ़ील्ड को एक पहचानकर्ता के रूप में निर्दिष्ट करता है।
- क्या करता है .RegisterService हॉटचॉकलेट में करें?
- .RegisterService ग्राफक्यूएल सर्वर के साथ रिपॉजिटरी जैसी एक सेवा को पंजीकृत करता है, जो आपके रिज़ॉल्वर के भीतर निर्भरता इंजेक्शन को सक्षम करता है।
- आप हॉटचॉकलेट के साथ ग्राफक्यूएल स्कीमा का परीक्षण कैसे करते हैं?
- हॉटचॉकलेट स्कीमा को लागू करके और निर्देशों की जांच करके यूनिट परीक्षणों का उपयोग करके स्कीमा परीक्षण को सक्षम बनाता है @key परिणामी परिणाम में.
फेडरेशन प्रक्रिया का समापन
हॉटचॉकलेट का उपयोग करना @चाबी निर्देश यह सुनिश्चित करता है कि आपका संघीय ग्राफक्यूएल स्कीमा अपोलो फेडरेशन के लिए उचित रूप से कॉन्फ़िगर किया गया है। यह दृष्टिकोण ऑब्जेक्ट प्रकार प्रबंधन में सुधार करता है और क्रॉस-सर्विस इकाई समाधान की अनुमति देता है।
अपने ग्राफक्यूएल सर्वर को हॉटचॉकलेट के साथ कॉन्फ़िगर करना और जैसे निर्देशों का उपयोग करना @चाबी बड़े, वितरित एपीआई के निर्माण को सरल बनाता है। यह रणनीति आपको सुसंगत, उच्च-प्रदर्शन स्कीमा सिलाई को बनाए रखते हुए अपनी सेवाओं को अधिक तत्परता से विस्तारित करने में सक्षम बनाती है।
हॉटचॉकलेट और अपोलो फेडरेशन के लिए संदर्भ और संसाधन
- के उपयोग के बारे में विस्तार से बताया @चाबी अपोलो फेडरेशन में निर्देश और यह हॉटचॉकलेट के साथ कैसे एकीकृत होता है। अधिक जानकारी के लिए, आधिकारिक हॉटचॉकलेट दस्तावेज़ देखें हॉटचॉकलेट डॉक्स .
- हॉटचॉकलेट का उपयोग करके अपोलो फेडरेशन के साथ ग्राफक्यूएल को कॉन्फ़िगर करने का एक अवलोकन प्रदान करता है। इस गाइड को देखें अपोलो फेडरेशन डॉक्स अधिक जानकारी के लिए.
- हॉटचॉकलेट का उपयोग करके ग्राफक्यूएल में सेवा पंजीकरण और क्वेरी समाधान का एक विस्तृत उदाहरण प्रस्तुत करता है। इस लेख में और अधिक पाया जा सकता है हॉटचॉकलेट के साथ सेवा एकीकरण .