HotChocolate-এ কী নির্দেশিকা সহ অবজেক্ট টাইপ অপ্টিমাইজ করা
HotChocolate-এর সাথে GraphQL ব্যবহার করার সময়, আপনাকে নির্দেশের সাথে আপনার বস্তুর ধরন প্রসারিত করতে হতে পারে, যেমন @কী নির্দেশিকা, অ্যাপোলো ফেডারেশনের সাথে সামঞ্জস্য নিশ্চিত করার জন্য। এটি ফেডারেটেড স্কিমাগুলির জন্য বিশেষভাবে গুরুত্বপূর্ণ, যেখানে কীগুলি বিভিন্ন পরিষেবা জুড়ে সত্তা সনাক্ত করে। এই নির্দেশাবলীর সাথে আপনার অবজেক্টের ধরনগুলি কীভাবে যথাযথভাবে ডিজাইন করবেন তা বোঝা গুরুত্বপূর্ণ।
এই নিবন্ধটি কিভাবে ব্যবহার করতে হবে তা দেখাবে হট চকলেট ব্যবহার করে বস্তুর ধরন সাজাতে @কী নির্দেশ আমরা একটি সাধারণ নির্মাণের জন্য C# কোড ব্যবহার করে বিশেষ উদাহরণগুলিও দেখব অভিভাবক ক্লাস এবং কিভাবে উত্পাদিত GraphQL স্কিমা পরিবর্তন করতে হয়। এই কার্যকারিতা তৈরি করতে আপনি যে বাস্তব পদক্ষেপ নিতে পারেন তার উপর জোর দেওয়া হবে।
গ্রাফকিউএল অবজেক্টের ধরন তৈরি করতে হটচকোলেট ব্যবহার করার সময়, @কী প্রত্যাশিত হিসাবে নির্দেশ অবিলম্বে প্রয়োগ নাও হতে পারে. পরিবর্তে, স্কিমা একটি সাধারণ ধরনের কাঠামো তৈরি করতে পারে যা ফেডারেশনের জন্য প্রয়োজনীয় সমালোচনামূলক বৈশিষ্ট্যগুলির অভাব রয়েছে। কীভাবে এটি সমাধান করা যায় এবং আপনার স্কিমাকে প্রত্যাশিতভাবে সম্পাদন করতে আমরা তা নিয়ে যাব।
আমরা গুরুত্বপূর্ণ কনফিগারেশন কাজগুলিও কভার করব, যেমন আপনার GraphQL সার্ভার সেটআপ পরিবর্তন করা এবং ডানটি ব্যবহার করা হট চকলেট এবং অ্যাপোলো ফেডারেশন প্যাকেজ সঠিক কনফিগারেশনের সাথে, আপনি সহজেই নির্দেশাবলী প্রয়োগ করতে পারেন এবং আপনার পরিষেবাগুলির জন্য সঠিক স্কিমা ফেডারেশন নিশ্চিত করতে পারেন।
| আদেশ | ব্যবহারের উদাহরণ |
|---|---|
| [কী] | HotChocolate-এ, এই কমান্ডটি ব্যবহার করে একটি অবজেক্ট টাইপ সাজায় @কী নির্দেশ অ্যাপোলো ফেডারেশনের সাথে কাজ করার সময় কোন ক্ষেত্রটি টাইপের অনন্য শনাক্তকারী হিসাবে কাজ করবে তা সংজ্ঞায়িত করে। |
| [রেফারেন্স সমাধানকারী] | একটি পদ্ধতিতে প্রয়োগ করা হলে, এই বৈশিষ্ট্যটি HotChocolateকে ফেডারেটেড প্রকারের জন্য একটি রেজোলিউশন হিসাবে সেই পদ্ধতিটি ব্যবহার করার নির্দেশ দেয়। এটি বহিরাগত রেফারেন্সের মাধ্যমে ফেডারেটেড পরিষেবাগুলিতে প্রাসঙ্গিক ডেটা পুনরুদ্ধারের অনুমতি দেয়। |
| অ্যাডঅ্যাপোলো ফেডারেশন() | এই কমান্ডটি HotChocolate GraphQL সার্ভারে Apollo Federation সমর্থন কনফিগার করে। ফেডারেটেড স্কিমা বৈশিষ্ট্যগুলি সক্ষম করা প্রয়োজন, যেমন @কী নির্দেশ |
| রেজিস্টার সার্ভিস | একটি পরিষেবা নিবন্ধন করে, যেমন ParentRepository, GraphQL DI কন্টেইনারে। এটি আপনাকে সরাসরি GraphQL সমাধানকারীতে পরিষেবাগুলি ইনজেকশন করতে দেয়। |
| নির্দেশিকা @কী (ক্ষেত্র: স্ট্রিং!) | SDL মডেলে, এই নির্দেশিকা ফেডারেশনের জন্য প্রধান মূল ক্ষেত্রটি নির্দিষ্ট করে। ক্রস-সার্ভিস সত্তা রেজোলিউশন সক্ষম করতে, অবজেক্টের ধরন থাকতে হবে @কী নির্দেশ |
| ISchemaAsync.ExecuteAsync() | অ্যাসিঙ্ক্রোনাসভাবে একটি GraphQL ক্যোয়ারী চালায়, যা সাধারণত ইউনিট পরীক্ষায় ব্যবহৃত হয় তা নিশ্চিত করতে স্কিমা এবং নির্দেশাবলী, যেমন @কী, সঠিকভাবে বাস্তবায়িত হয়। |
| [পরিষেবা] | এই বৈশিষ্ট্যটি গ্রাফকিউএল সমাধানকারী পদ্ধতির আর্গুমেন্টগুলিতে রিপোজিটরি বা পরিষেবাগুলির মতো নির্ভরতাগুলিকে ইনজেক্ট করতে ব্যবহৃত হয়, HotChocolate-এ পরিষেবা পুনরুদ্ধার সক্ষম করে৷ |
| Assert.Contains() | XUnit এর ইউনিট টেস্টিং কমান্ডটি নিশ্চিত করতে ব্যবহৃত হয় যে নির্দিষ্ট স্ট্রিং বা নির্দেশাবলী, যেমন @কী নির্দেশিকা, পরীক্ষার সময় জেনারেট করা GraphQL স্কিমাতে অন্তর্ভুক্ত করা হয়। |
হটচকোলেটে মূল নির্দেশের ভূমিকা বোঝা
প্রথম স্ক্রিপ্ট ব্যাখ্যা করে কিভাবে বাস্তবায়ন করতে হয় @কী C# এ HotChocolate ব্যবহার করে নির্দেশনা। এই স্ক্রিপ্টটি গ্যারান্টি দেয় যে তৈরি করা GraphQL স্কিমাটিতে রয়েছে @কী অ্যাপোলো ফেডারেশনের সাথে ফেডারেশনের জন্য নির্দেশ। একটি তৈরি করে স্ক্রিপ্ট শুরু হয় অভিভাবক ক্লাস এবং বরাদ্দ করা [কী] এবং [আইডি] এর ক্ষেত্রের বৈশিষ্ট্য। এই বৈশিষ্ট্যগুলি চিহ্নিত করার জন্য HotChocolate জানানোর জন্য গুরুত্বপূর্ণ আইডি সত্তার অনন্য শনাক্তকারী হিসাবে ক্ষেত্র। একটি ফেডারেটেড GraphQL পরিষেবা তৈরি করার সময় এটি অত্যন্ত গুরুত্বপূর্ণ যেখানে সত্তাগুলিকে বিভিন্ন পরিষেবা জুড়ে ভাগ করা যেতে পারে। এই ক্ষেত্রটিকে চিহ্নিত করার ফলে গ্রাফকিউএল পরিষেবাকে ফেডারেটেড প্রশ্নের মধ্যে সত্তার সমাধান করার অনুমতি দেয়৷
দ রেফারেন্স রিসোলভার ফাংশনও স্ক্রিপ্টের একটি অপরিহার্য উপাদান। এই স্ট্যাটিক ফাংশনটি HotChocolate-এর জন্য সত্তার সমাধান করতে সক্ষম করে অভিভাবক একটি সংগ্রহস্থলে বস্তু। দ ParentRepository গ্রাফকিউএল সার্ভারের সাথে নিবন্ধিত, এবং পান পদ্ধতি তার দ্বারা একটি অভিভাবক পুনরুদ্ধার করে আইডি. বুটস্ট্র্যাপ কোডে, .AddQueryType নির্দেশ নিবন্ধন প্রশ্ন অবজেক্ট, যা গ্রাফকিউএল প্রশ্নগুলি চালানোর জন্য ব্যবহৃত হয়। রেজিস্টার সার্ভিস গ্রাফকিউএল সমাধানকারীদের মধ্যে ParentRepository-এর মতো নির্ভরতা ইনজেকশন করার অনুমতি দেয়। উদ্বেগের একটি স্পষ্ট বিচ্ছেদ সংরক্ষণ করার সময় এই নকশা তথ্য পুনরুদ্ধার সহজতর.
দ্বিতীয় উদাহরণটি একটি স্কিমা-প্রথম পদ্ধতি গ্রহণ করে, গ্রাফকিউএল এসডিএল (স্কিমা সংজ্ঞা ভাষা) ব্যবহার করে @কী স্কিমার মধ্যে নির্দেশ। এই সমাধানটি বিশেষ করে সেই দলগুলির জন্য কার্যকর যারা ইতিমধ্যে GraphQL এর SDL বাক্য গঠনের সাথে পরিচিত৷ এই উদাহরণে, @কী নির্দেশাবলী প্রয়োগ করা হয় অভিভাবক টাইপ, স্পষ্টভাবে ইঙ্গিত আইডি অনন্য শনাক্তকারী হিসাবে ক্ষেত্র। স্কিমা-ফার্স্ট ব্যবহার করে ডেভেলপারদের GraphQL স্কিমা কীভাবে তৈরি করা হয় তার উপর আরও নিয়ন্ত্রণ রাখতে এবং C# কোডে না গিয়ে এটিকে সংশোধন করতে দেয়, এটি বড় দলগুলির জন্য আরও নমনীয় বিকল্প হিসাবে তৈরি করে।
অবশেষে, ইউনিট পরীক্ষার উপাদানটি যাচাই করে যে কোডটি উদ্দেশ্য অনুযায়ী কাজ করে। xUnit টেস্টিং ফ্রেমওয়ার্ক ব্যবহার করে, Assert.The ধারণ করে কমান্ড নিশ্চিত করে যে ফলস্বরূপ স্কিমা অন্তর্ভুক্ত করে @কী নির্দেশ এই পরীক্ষাটি উপস্থিতির জন্য স্কিমাকে বৈধ করে @কী নির্দেশিকা, নিশ্চিত করে যে পরিষেবাটি ফেডারেশনের জন্য সঠিকভাবে কনফিগার করা হয়েছে। আপনার GraphQL স্কিমা বা সমাধানকারী পদ্ধতিতে পরিবর্তনগুলি কার্যকারিতা ব্যাহত না করে তা নিশ্চিত করার জন্য ইউনিট টেস্টিং একটি সর্বোত্তম অনুশীলন, বিশেষত একটি ফেডারেটেড সিস্টেমে যেখানে একাধিক পরিষেবাগুলিকে একত্রে নির্বিঘ্নে পরিচালনা করতে হবে।
GraphQL অবজেক্ট টাইপের জন্য HotChocolate-এ মূল নির্দেশনা বাস্তবায়ন করা
এই সমাধানটি ব্যাকএন্ড থেকে একটি গ্রাফকিউএল স্কিমা পরিবর্তন করতে C#, HotChocolate এবং Apollo Federation ব্যবহার করে।
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 SDL এবং HotChocolate-এর সাথে স্কিমা-প্রথম পদ্ধতি ব্যবহার করে।
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}
@কী নির্দেশিকা সহ ইউনিট টেস্টিং HotChocolate GraphQL
এখানে একটি C# ইউনিট পরীক্ষা রয়েছে যা XUnit ফ্রেমওয়ার্ক ব্যবহার করে HotChocolate সার্ভারটি GraphQL স্কিমাতে @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());}}
অ্যাপোলো ফেডারেশন এবং হটচকোলেটের সাথে গ্রাফকিউএল উন্নত করা
একটি ফেডারেটেড পরিবেশে HotChocolate-এর সাথে GraphQL ব্যবহার করার জন্য সুগঠিত স্কিমা স্টিচিং প্রয়োজন। অ্যাপোলো ফেডারেশন একটি অভিন্ন ইন্টারফেস বজায় রেখে ডেভেলপারদের বিভিন্ন পরিষেবা জুড়ে স্কিমা পার্টিশন করতে সক্ষম করে। ব্যবহার করে @কী HotChocolate-এর সাথে নির্দেশনায়, আপনি নির্দিষ্ট করতে পারেন কিভাবে বিভিন্ন পরিষেবা জুড়ে GraphQL সত্তাগুলি সমাধান করা হয়। এটি আপনার APIকে আরও মডুলার এবং মাপযোগ্য করে তোলে, যা বিশেষ করে বড়, বিতরণ করা সিস্টেমে উপকারী যেখানে একাধিক দল GraphQL স্কিমার বিভিন্ন দিক নিয়ন্ত্রণ করে।
একটি সাধারণ ফেডারেটেড স্কিমাতে, সত্তা যেমন অভিভাবক অনেক পরিষেবা জুড়ে থাকতে পারে। অ্যাপোলো ফেডারেশন ব্যবহার করে @কী একটি নির্দিষ্ট ক্ষেত্রের উপর ভিত্তি করে একটি সত্তাকে অনন্যভাবে সনাক্ত করার নির্দেশ, যেমন আইডি. Apollo Federation-এর জন্য HotChocolate-এর সমর্থন নিশ্চিত করে যে আপনার পরিষেবা একটি বড় পরিকাঠামোতে অনায়াসে একত্রিত হয়। কী সেট করার পাশাপাশি, আপনি যেমন ফেডারেশন নির্দেশিকা ব্যবহার করতে পারেন @প্রসারিত বা @বহিরাগত আপনার GraphQL সেটআপের জন্য আরও নমনীয়তা প্রদান করে বিভিন্ন মাইক্রোসার্ভিসে ছড়িয়ে থাকা ডেটা ক্ষেত্রগুলি পরিচালনা করতে।
HotChocolate ব্যবহার করার সময় আরেকটি মূল বিষয় হল কর্মক্ষমতা অপ্টিমাইজেশান। ওভার-ফেচিং ডেটা GraphQL API-এর একটি সাধারণ সমস্যা, বিশেষ করে ফেডারেটেড প্রেক্ষাপটে। সঠিক সমাধানকারী ব্যবহার করা, যেমন রেফারেন্স রিসোলভার পূর্ববর্তী উদাহরণে বর্ণিত, গ্যারান্টি দেয় যে আপনার API অতিরিক্ত অনুসন্ধান ছাড়াই শুধুমাত্র প্রয়োজনীয় ডেটা সরবরাহ করে। উপরন্তু, HotChocolate উন্নত কোয়েরি ব্যাচিং এবং ক্যাশিং অ্যালগরিদম সমর্থন করে, যা একটি ফেডারেটেড স্কিমাতে API প্রতিক্রিয়া গতি এবং দক্ষতা বাড়াতে পারে।
হটচকোলেট এবং অ্যাপোলো ফেডারেশন সম্পর্কে সাধারণ প্রশ্ন
- অ্যাপোলো ফেডারেশন কীভাবে গ্রাফকিউএল ডেভেলপমেন্টকে উপকৃত করে?
- অ্যাপোলো ফেডারেশন আপনাকে GraphQL স্কিমাগুলিকে অনেকগুলি পরিষেবাতে বিভক্ত করার অনুমতি দেয়, প্রতিটি স্কিমার একটি বিভাগের জন্য দায়ী, কিন্তু এখনও একটি সামঞ্জস্যপূর্ণ API বজায় রাখে।
- কি @key নির্দেশিকা HotChocolate জন্য ব্যবহৃত?
- দ @key নির্দেশিকা একটি সত্তার জন্য একটি অনন্য শনাক্তকারী তৈরি করে, এটিকে বিভিন্ন গ্রাফকিউএল পরিষেবা জুড়ে সমাধান করতে সক্ষম করে।
- ব্যবহার করতে পারি [Key] এবং [ID] HotChocolate একসঙ্গে গুণাবলী?
- হ্যাঁ, দ [Key] সম্পত্তি ফেডারেশন জন্য ব্যবহৃত হয়, এবং [ID] স্কিমার মধ্যে একটি শনাক্তকারী হিসাবে ক্ষেত্র নির্দিষ্ট করে।
- কি করে .RegisterService হটচকোলেটে করবেন?
- .RegisterService আপনার সমাধানকারীদের মধ্যে নির্ভরতা ইনজেকশন সক্ষম করে GraphQL সার্ভারের সাথে একটি পরিষেবা, যেমন একটি সংগ্রহস্থল নিবন্ধন করে।
- আপনি কিভাবে HotChocolate দিয়ে GraphQL স্কিমা পরীক্ষা করবেন?
- HotChocolate স্কিমা চালু করে এবং নির্দেশাবলী পরীক্ষা করে ইউনিট পরীক্ষা ব্যবহার করে স্কিমা টেস্টিং সক্ষম করে @key ফলে ফলাফলে।
ফেডারেশন প্রক্রিয়া মোড়ানো
হট চকলেট ব্যবহার করে @কী নির্দেশ আপনার ফেডারেটেড নিশ্চিত করে গ্রাফকিউএল স্কিমা অ্যাপোলো ফেডারেশনের জন্য যথাযথভাবে কনফিগার করা হয়েছে। এই পদ্ধতি অবজেক্ট টাইপ ম্যানেজমেন্ট উন্নত করে এবং ক্রস-সার্ভিস সত্তা রেজোলিউশনের জন্য অনুমতি দেয়।
HotChocolate দিয়ে আপনার GraphQL সার্ভার কনফিগার করা এবং এর মতো নির্দেশাবলী ব্যবহার করা @কী বৃহৎ, বিতরণ করা API-এর বিল্ডিংকে সহজ করে। এই কৌশলটি আপনাকে সামঞ্জস্যপূর্ণ, উচ্চ-পারফরম্যান্স স্কিমা স্টিচিং বজায় রেখে আপনার পরিষেবাগুলিকে আরও সহজে প্রসারিত করতে সক্ষম করে।
হটচকোলেট এবং অ্যাপোলো ফেডারেশনের জন্য তথ্যসূত্র এবং সংস্থান
- ব্যবহার সম্পর্কে বিশদ বিবরণ @কী অ্যাপোলো ফেডারেশনের নির্দেশিকা এবং কীভাবে এটি হটচকোলেটের সাথে একীভূত হয়। আরও বিশদ বিবরণের জন্য, অফিসিয়াল হটচকোলেট ডকুমেন্টেশন দেখুন হটচকোলেট ডক্স .
- হটচকোলেট ব্যবহার করে অ্যাপোলো ফেডারেশনের সাথে গ্রাফকিউএল কনফিগার করার একটি ওভারভিউ প্রদান করে। থেকে এই গাইড দেখুন অ্যাপোলো ফেডারেশন ডক্স আরও তথ্যের জন্য
- HotChocolate ব্যবহার করে GraphQL-এ পরিষেবা নিবন্ধন এবং ক্যোয়ারী রেজোলিউশনের একটি বিশদ উদাহরণ অফার করে। আরো এই নিবন্ধে পাওয়া যাবে হট চকলেটের সাথে সার্ভিস ইন্টিগ্রেশন .