ہاٹ چاکلیٹ میں کلیدی ہدایت کے ساتھ آبجیکٹ کی اقسام کو بہتر بنانا
HotChocolate کے ساتھ GraphQL استعمال کرتے وقت، آپ کو اپنے آبجیکٹ کی اقسام کو ہدایات کے ساتھ بڑھانے کی ضرورت پڑ سکتی ہے، جیسے کہ @key ہدایت، اپالو فیڈریشن کے ساتھ مطابقت کو یقینی بنانے کے لیے۔ یہ فیڈریٹڈ اسکیموں کے لیے خاص طور پر اہم ہے، جس میں کلیدیں کئی سروسز میں موجود اداروں کی شناخت کرتی ہیں۔ ان ہدایات کے ساتھ اپنے آبجیکٹ کی اقسام کو مناسب طریقے سے ڈیزائن کرنے کا طریقہ سمجھنا بہت ضروری ہے۔
یہ مضمون بتائے گا کہ کس طرح استعمال کرنا ہے۔ ہاٹ چاکلیٹ کا استعمال کرتے ہوئے آبجیکٹ کی اقسام کو سجانے کے لئے @key ہدایت ہم ایک سادہ بنانے کے لیے C# کوڈ کا استعمال کرنے والی مخصوص مثالوں کو بھی دیکھیں گے۔ والدین کلاس اور تیار کردہ گراف کیو ایل اسکیما کو کیسے تبدیل کیا جائے۔ اس فنکشنلٹی کو بنانے کے لیے اصل اقدامات پر زور دیا جائے گا۔
گراف کیو ایل آبجیکٹ کی قسمیں بنانے کے لیے ہاٹ چاکلیٹ کا استعمال کرتے وقت، @key ہدایت کا اطلاق فوری طور پر توقع کے مطابق نہیں ہو سکتا۔ اس کے بجائے، اسکیما ایک سادہ قسم کا ڈھانچہ تیار کر سکتا ہے جس میں فیڈریشن کے لیے درکار اہم خصوصیات کا فقدان ہے۔ ہم اس کو حل کرنے کے طریقہ پر جائیں گے اور آپ کے اسکیما کو توقع کے مطابق انجام دینے کے لیے تیار کریں گے۔
ہم کنفیگریشن کے اہم کاموں کا بھی احاطہ کریں گے، جیسے کہ آپ کے گراف کیو ایل سرور سیٹ اپ میں ترمیم کرنا اور صحیح استعمال کرنا ہاٹ چاکلیٹ اور اپالو فیڈریشن پیکجز مناسب ترتیب کے ساتھ، آپ آسانی سے ہدایات کا اطلاق کر سکتے ہیں اور اپنی خدمات کے لیے مناسب سکیما فیڈریشن کو یقینی بنا سکتے ہیں۔
| حکم | استعمال کی مثال |
|---|---|
| [کلید] | ہاٹ چاکلیٹ میں، یہ کمانڈ استعمال کرکے آبجیکٹ کی قسم کو سجاتی ہے۔ @key ہدایت یہ اس بات کی وضاحت کرتا ہے کہ اپولو فیڈریشن سے نمٹنے کے دوران کون سا فیلڈ ٹائپ کے منفرد شناخت کنندہ کے طور پر کام کرے گا۔ |
| [حوالہ حل کرنے والا] | جب کسی طریقہ پر لاگو ہوتا ہے، تو یہ وصف HotChocolate کو ہدایت دیتا ہے کہ وہ اس طریقہ کو فیڈریٹڈ اقسام کے حل کے طور پر استعمال کرے۔ یہ بیرونی حوالوں کے ذریعے وفاقی خدمات میں متعلقہ ڈیٹا کی بازیافت کی اجازت دیتا ہے۔ |
| .AdApolloFederation() | یہ کمانڈ ہاٹ چاکلیٹ گراف کیو ایل سرور میں اپولو فیڈریشن سپورٹ کو ترتیب دیتی ہے۔ فیڈریٹڈ اسکیما کی خصوصیات کو فعال کرنا ضروری ہے، جیسے @key ہدایت |
| رجسٹر سروس | کسی سروس کو رجسٹر کرتا ہے، جیسے پیرنٹ ریپوزٹری، گراف کیو ایل ڈی آئی کنٹینر میں۔ یہ آپ کو براہ راست گراف کیو ایل ریزولور میں خدمات انجیکشن کرنے کی اجازت دیتا ہے۔ |
| directive @key (کھیتوں: سٹرنگ!) | SDL ماڈل میں، یہ ہدایت فیڈریشن کے لیے اہم کلیدی فیلڈ کی وضاحت کرتی ہے۔ کراس سروس ہستی ریزولوشن کو فعال کرنے کے لیے، آبجیکٹ کی اقسام میں ہونا ضروری ہے۔ @key ہدایت |
| ISchemaAsync.ExecuteAsync() | غیر مطابقت پذیر طور پر ایک گراف کیو ایل استفسار کو انجام دیتا ہے، جو عام طور پر یونٹ ٹیسٹوں میں استعمال ہوتا ہے اس بات کو یقینی بنانے کے لیے کہ اسکیما اور ہدایات، جیسے @key، مناسب طریقے سے لاگو کیا جاتا ہے. |
| [سروس] | یہ خصوصیت GraphQL ریزولور میتھڈ آرگیومنٹس میں ریپوزٹریز یا سروسز جیسی انحصار کو انجیکشن کرنے کے لیے استعمال کی جاتی ہے، HotChocolate میں سروس کی بازیافت کو فعال کرتی ہے۔ |
| Assert.Contains() | XUnit کی یونٹ ٹیسٹنگ کمانڈ کا استعمال اس بات کو یقینی بنانے کے لیے کیا جاتا ہے کہ کچھ تار یا ہدایات، جیسے @key ہدایت، ٹیسٹ کے دوران تیار کردہ گراف کیو ایل اسکیما میں شامل ہیں۔ |
ہاٹ چاکلیٹ میں کلیدی ہدایات کے کردار کو سمجھنا
پہلا اسکرپٹ بتاتا ہے کہ کس طرح لاگو کیا جائے۔ @key سی # میں ہاٹ چاکلیٹ کا استعمال کرنے کی ہدایت۔ یہ اسکرپٹ اس بات کی ضمانت دیتا ہے کہ تخلیق کردہ گراف کیو ایل اسکیما پر مشتمل ہے۔ @key اپالو فیڈریشن کے ساتھ فیڈریشن کے لیے ہدایت۔ اسکرپٹ ایک بنانے سے شروع ہوتا ہے۔ والدین کلاس اور تفویض [کلید] اور [ID] اس کے کھیتوں کی صفات۔ یہ خصوصیات ہاٹ چاکلیٹ کو نشان زد کرنے کے لیے مطلع کرنے کے لیے اہم ہیں۔ آئی ڈی ہستی کے منفرد شناخت کنندہ کے طور پر فیلڈ۔ یہ ایک فیڈریٹڈ گراف کیو ایل سروس بناتے وقت بہت اہم ہے جس میں اداروں کو کئی سروسز میں شیئر کیا جا سکتا ہے۔ اس فیلڈ کو نشان زد کرنے سے GraphQL سروس کو وفاق کے سوالات میں ہستی کو حل کرنے کی اجازت ملتی ہے۔
دی حوالہ حل کرنے والا فنکشن بھی اسکرپٹ کا ایک لازمی جزو ہے۔ یہ جامد فنکشن ہاٹ چاکلیٹ کو ہستی کو حل کرنے کے قابل بناتا ہے۔ والدین ایک ذخیرہ میں اعتراض. دی پیرنٹ ریپوزٹری گراف کیو ایل سرور کے ساتھ رجسٹرڈ ہے، اور حاصل کریں۔ طریقہ اس کے ذریعہ والدین کو بازیافت کرتا ہے۔ آئی ڈی. بوٹسٹریپ کوڈ میں، .AddQueryType ہدایات رجسٹر کرتا ہے استفسار آبجیکٹ، جو گراف کیو ایل کے سوالات کو انجام دینے کے لیے استعمال کیا جاتا ہے۔ RegisterService GraphQL حل کرنے والوں میں ParentRepository جیسے انحصار کو انجیکشن کرنے کی اجازت دیتی ہے۔ یہ ڈیزائن خدشات کی واضح علیحدگی کو محفوظ رکھتے ہوئے ڈیٹا کی بازیافت کو آسان بناتا ہے۔
دوسری مثال اسکیما فرسٹ اپروچ لیتی ہے، جس میں گراف کیو ایل ایس ڈی ایل (اسکیما ڈیفینیشن لینگویج) کا استعمال @key سکیما کے اندر ہدایت. یہ حل خاص طور پر ان ٹیموں کے لیے موثر ہے جو پہلے ہی GraphQL کے SDL نحو سے واقف ہیں۔ اس مثال میں، @key پر ہدایت کا اطلاق ہوتا ہے۔ والدین قسم، واضح طور پر اشارہ کرتا ہے آئی ڈی فیلڈ کو بطور منفرد شناخت کنندہ۔ سکیما فرسٹ کا استعمال ڈویلپرز کو اس بات پر زیادہ کنٹرول حاصل کرنے کی اجازت دیتا ہے کہ گراف کیو ایل سکیما کیسے بنایا جاتا ہے اور اسے C# کوڈ میں جانے کے بغیر اس میں ترمیم کر سکتا ہے، یہ بڑی ٹیموں کے لیے زیادہ لچکدار آپشن بناتا ہے۔
آخر میں، یونٹ ٹیسٹنگ جزو اس بات کی توثیق کرتا ہے کہ کوڈ مطلوبہ کارکردگی کا مظاہرہ کرتا ہے۔ xUnit ٹیسٹنگ فریم ورک کا استعمال کرتے ہوئے، Assert.The پر مشتمل ہے۔ کمانڈ اس بات کو یقینی بناتا ہے کہ نتیجے میں اسکیما شامل ہے۔ @key ہدایت یہ ٹیسٹ اسکیما کی موجودگی کی تصدیق کرتا ہے۔ @key ہدایت، اس بات کی تصدیق کرتے ہوئے کہ سروس فیڈریشن کے لیے مناسب طریقے سے ترتیب دی گئی ہے۔ یونٹ ٹیسٹنگ اس بات کو یقینی بنانے کے لیے ایک بہترین عمل ہے کہ آپ کے گراف کیو ایل اسکیما یا حل کرنے والے طریقوں میں تبدیلیاں فعالیت میں خلل نہیں ڈالتی ہیں، خاص طور پر ایک وفاقی نظام میں جہاں متعدد خدمات کو ایک ساتھ بغیر کسی رکاوٹ کے کام کرنا چاہیے۔
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 کے ساتھ ایک @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}
یونٹ ٹیسٹنگ HotChocolate GraphQL کے ساتھ @key Directive
یہاں ایک 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());}}
اپولو فیڈریشن اور ہاٹ چاکلیٹ کے ساتھ گراف کیو ایل کو بڑھانا
فیڈریٹڈ ماحول میں ہاٹ چاکلیٹ کے ساتھ گراف کیو ایل کا استعمال کرنے کے لیے اچھی ساخت والی اسکیما سلائی کی ضرورت ہوتی ہے۔ اپالو فیڈریشن ڈویلپرز کو یکساں انٹرفیس کو برقرار رکھتے ہوئے متعدد خدمات میں اسکیموں کو تقسیم کرنے کے قابل بناتا ہے۔ کا استعمال کرتے ہوئے @key HotChocolate کے ساتھ ہدایت، آپ وضاحت کر سکتے ہیں کہ کس طرح GraphQL اداروں کو متعدد سروسز میں حل کیا جاتا ہے۔ یہ آپ کے API کو زیادہ ماڈیولر اور توسیع پذیر بناتا ہے، جو خاص طور پر بڑے، تقسیم شدہ نظاموں میں فائدہ مند ہے جہاں متعدد ٹیمیں GraphQL اسکیما کے مختلف پہلوؤں کو کنٹرول کرتی ہیں۔
ایک عام فیڈریٹڈ اسکیما میں، ادارے جیسے والدین بہت ساری خدمات میں موجود ہو سکتا ہے۔ اپولو فیڈریشن استعمال کرتی ہے۔ @key مخصوص فیلڈ کی بنیاد پر کسی ہستی کی منفرد شناخت کرنے کی ہدایت، جیسے آئی ڈی. اپالو فیڈریشن کے لیے ہاٹ چاکلیٹ کا تعاون اس بات کو یقینی بناتا ہے کہ آپ کی سروس آسانی سے ایک بڑے انفراسٹرکچر میں ضم ہو جائے۔ چابیاں ترتیب دینے کے علاوہ، آپ فیڈریشن کی ہدایات جیسے کہ استعمال کر سکتے ہیں۔ @توسیع کرتا ہے۔ یا @بیرونی آپ کے گراف کیو ایل سیٹ اپ کے لیے زیادہ لچک فراہم کرتے ہوئے، متعدد مائیکرو سروسز پر منتشر ڈیٹا فیلڈز کا نظم کرنے کے لیے۔
ہاٹ چاکلیٹ کے استعمال کے دوران ایک اور اہم عنصر کارکردگی کی اصلاح ہے۔ گراف کیو ایل APIs کے ساتھ ڈیٹا کو اوور فیچ کرنا ایک عام مسئلہ ہے، خاص طور پر وفاقی سیاق و سباق میں۔ درست حل کرنے والوں کا استعمال کرنا، جیسے حوالہ حل کرنے والا پہلے کی مثالوں میں بیان کیا گیا ہے، اس بات کی ضمانت دیتا ہے کہ آپ کا API ضرورت سے زیادہ تلاش کے بغیر صرف مطلوبہ ڈیٹا فراہم کرتا ہے۔ مزید برآں، HotChocolate ایڈوانسڈ استفسار بیچنگ اور کیشنگ الگورتھم کو سپورٹ کرتا ہے، جو فیڈریٹڈ اسکیما میں API کے جواب کی رفتار اور کارکردگی کو بڑھا سکتا ہے۔
ہاٹ چاکلیٹ اور اپولو فیڈریشن کے بارے میں عام سوالات
- اپالو فیڈریشن گراف کیو ایل کی ترقی کو کیسے فائدہ پہنچاتی ہے؟
- Apollo Federation آپ کو GraphQL اسکیموں کو کئی سروسز میں تقسیم کرنے کی اجازت دیتا ہے، ہر ایک اسکیما کے ایک حصے کے لیے جوابدہ ہے، لیکن پھر بھی ایک مستقل API کو برقرار رکھتا ہے۔
- کیا ہے @key ہاٹ چاکلیٹ میں استعمال ہونے والی ہدایت؟
- دی @key ڈائرکٹیو کسی ہستی کے لیے ایک منفرد شناخت کنندہ بناتا ہے، جو اسے کئی گراف کیو ایل سروسز میں حل کرنے کے قابل بناتا ہے۔
- کیا میں استعمال کر سکتا ہوں؟ [Key] اور [ID] ہاٹ چاکلیٹ میں ایک ساتھ صفات؟
- جی ہاں، [Key] جائیداد وفاق کے لیے استعمال ہوتی ہے، اور [ID] اسکیما کے اندر ایک شناخت کنندہ کے طور پر فیلڈ کی وضاحت کرتا ہے۔
- کیا کرتا ہے .RegisterService ہاٹ چاکلیٹ میں کرتے ہیں؟
- .RegisterService آپ کے حل کرنے والوں کے اندر انحصار انجیکشن کو فعال کرتے ہوئے، گراف کیو ایل سرور کے ساتھ ایک خدمت، جیسا کہ ذخیرہ خانہ، رجسٹر کرتا ہے۔
- آپ ہاٹ چاکلیٹ کے ساتھ گراف کیو ایل اسکیموں کی جانچ کیسے کرتے ہیں؟
- ہاٹ چاکلیٹ اسکیما کو استعمال کرکے اور اس طرح کی ہدایات کی جانچ کرکے یونٹ ٹیسٹ کا استعمال کرتے ہوئے اسکیما ٹیسٹنگ کو قابل بناتا ہے۔ @key نتیجے کے نتیجے میں.
فیڈریشن کے عمل کو سمیٹنا
ہاٹ چاکلیٹ کا استعمال @key ہدایت اس بات کو یقینی بناتی ہے کہ آپ کا فیڈریشن ہے۔ گراف کیو ایل اسکیما اپالو فیڈریشن کے لیے مناسب طریقے سے ترتیب دیا گیا ہے۔ یہ نقطہ نظر آبجیکٹ کی قسم کے انتظام کو بہتر بناتا ہے اور کراس سروس ہستی کے حل کی اجازت دیتا ہے۔
اپنے گراف کیو ایل سرور کو ہاٹ چاکلیٹ کے ساتھ ترتیب دینا اور اس طرح کی ہدایات کا استعمال کرنا @key بڑے، تقسیم شدہ APIs کی تعمیر کو آسان بناتا ہے۔ یہ حکمت عملی آپ کو اس قابل بناتی ہے کہ آپ اپنی خدمات کو زیادہ آسانی سے بڑھا سکیں اور مسلسل، اعلیٰ کارکردگی والے اسکیما سلائی کو برقرار رکھیں۔
ہاٹ چاکلیٹ اور اپولو فیڈریشن کے حوالے اور وسائل
- کے استعمال کی وضاحت کرتا ہے۔ @key اپالو فیڈریشن میں ہدایت اور یہ ہاٹ چاکلیٹ کے ساتھ کیسے ضم ہوتا ہے۔ مزید تفصیلات کے لیے، پر آفیشل ہاٹ چاکلیٹ دستاویزات دیکھیں ہاٹ چاکلیٹ دستاویزات .
- ہاٹ چاکلیٹ کا استعمال کرتے ہوئے اپالو فیڈریشن کے ساتھ گراف کیو ایل کو ترتیب دینے کا ایک جائزہ فراہم کرتا ہے۔ سے اس گائیڈ کو دیکھیں اپالو فیڈریشن دستاویزات مزید معلومات کے لیے
- HotChocolate کا استعمال کرتے ہوئے GraphQL میں سروس رجسٹریشن اور استفسار کے حل کی ایک تفصیلی مثال پیش کرتا ہے۔ پر اس مضمون میں مزید پایا جا سکتا ہے ہاٹ چاکلیٹ کے ساتھ سروس انٹیگریشن .