خانه SQL Server GraphQL چیست؟ آشنایی با نحوه اجرا، مشخصه ها و مزیت های استفاده از گراف کیوال SQL Server دستورات SQL نوشته شده توسط: محمد رضا عظیمی تاریخ انتشار: ۱۶ بهمن ۱۳۹۸ آخرین بروزرسانی: ۱۹ تیر ۱۴۰۳ زمان مطالعه: 5 دقیقه ۵ (۳) GraphQL چیست؟ گراف کیوال یک زبان کوئرینویسی برای API ها و همچنین، یک محیط زمان اجرا (Runtime Environment) محسوب میشود که روی بخش سمت سرور قرار میگیرد. بهواسطه استفاده از این زبان، اپلیکیشنهای کلاینت این مجوز را دارند که دقیقاً برای دادههای موردنیاز خود به API درخواست ارسال کنند. این ویژگی به بهبود کارایی و انعطافپذیری کمک خواهد کرد. مشخصه های GraphQL چیست؟ اصلیترین مشخصههای GraphQL عبارتند از: زبان کوئرینویسی: با کمک GraphQL، کلاینتها برای تعریف دادههای درخواستیشان از API ها، از یک نحو (Syntax) مخصوص برخوردار هستند. انعطافپذیری: کلاینتها میتواند در یک درخواست واحد، از چندین سورس مختلف درون یک API، دیتا درخواست کنند. کارایی: با درخواست دادن برای دیتای موردنیاز، گراف کیوال از واکشی بیشاندازه اطلاعات غیرضروری جلوگیری میکند. رویکرد ساختاریافته: GraphQL با استفاده از یک شِما (Schema)، دادههای در دسترس و روابط آنها را تعریف میکند. مزیت استفاده از GraphQL چیست؟ استفاده از GraphQL مزیتهای زیر را بههمراه دارد: کاهش ترافیک شبکه بهبود تجربه توسعه و تسهیل کار با API ها کاهش تعداد فرخوانیهای API کنترل بهتر روی سمت کلاینت مقیاسپذیری و نگهداری بهبودیافته GraphQL : یک زبان پرس و جو برای API شما هنگامی که از API نام برده میشود، مشکلات و چالشهای آن یادآوری میشوند که لازم است به آنها رسیدگی شوند. مشکلاتی مانند وجود Endpoint های متفاوت، درخواستهای متعدد، دادههای غیرضروری، مستندسازی هر Endpoint و پارامترهای آن و…، همگی مواردی هستند که ممکن است با آنها مواجه شویم. شاید در اولین نظر تصور کنید که برای مواجه با مشکلات مذکور، راه حلهایی در RestAPI ارائه شده است. فیسبوک GraphQL را بهعنوان راه حلی برای کار کردن با API ها ارائه کرده است. GraphQL یک Library یا یک فریمورک نیست؛ بلکه راه حلی برای ساخت API با ساختاری شبیه به Graph است. دحقیقت، گراف کیوال به جای اینکه API را در قالب Endpoint های متعدد درنظر بگیرد، آنها را در قالب Graph درنظر میگیرد. برای درک بهتر مفهوم GraphQL ، مثال زیر را بررسی خواهیم کرد: فرض کنید یک برنامه موبایل داریم که کاربر، پست، کامنت و لایک دارا است. برای ساخت API های موردنیاز، بهصورت زیر عمل میکنیم: /api/post /api/posts/**POST_ID**/comments /api/posts/**POST_ID**/likes /api/comments/**POST_ID** /api/users /api/users/**USER_ID** api/posts/**POST_ID** /api/likes/**POST_ID** در مثال فوق، برای هر موجودیت یک Endpoint درنظر گرفته شده است. حتی ممکن است برای هر Endpoint ، تعدادی Parameter داشته باشیم. /api/posts?count=1&offset=20&fields=title,body,user ضمن اینکه ممکن است برخی از پارامترها با Header تنظیم شوند. بهعنوان مثال، URL صفحه قبلی و بعدی بهصورت HTTP Header باشد. این موارد، تنها بخشی از مشکلات احتمالیای است که در کارکردن با API ها با آنها مواجه میشوید. برای درک بهتر موضوع، به تصویر زیر توجه کنید: GraphQL چه راه حل هایی ارائه کرده است؟ در GraphQL، دادهها بهصورت Graph دیده میشوند و بهصورت Graph درخواست داده خواهند شد. نکته قابل توجه این است که Graph ها در آن، بهصورت JSON درنظر گرفته میشوند. فرض کنید میخواهیم در یک API که با GraphQL نوشته شده است، پستها را دریافت کنیم. برای این کار، اقدامات زیر لازم هستند: { post } برای دریافت فیلدهای مشخص، به شکل زیر عمل کنید: post { title, body, userId } } همچنین میتوانیم Pagination را نیز پیداسازی کنید. بهعنوان مثال، Count را مساوی ۱۰ قرار دهید: { post(userID: 20, count: 10, offset= 20) { title, body } } بررسی نحوه استفاده از GraphQL در این مثال، قصد داریم مفاهیم را به زبان ساده تشریح کنیم. ابتدا یک پروژه از نوع Console در Visual Studio ایجاد کرده و GraphQL را ازطریق NuGet برروی پروژه خود نصب کنید. using GraphQL; using GraphQL.Types; using System; namespace GraphQL { class Program { static void Main(string[] args) { var schema = Schema.For(@" type Query { id: ID, name : String, course : String } "); var _root = new { id = 100, name = "nikamooz", course = "sqlserver" }; //Id, name var json = schema.Execute(a => { a.Query = "{ id, name }"; a.Root = _root; }); Console.WriteLine(json); Console.WriteLine("---------------------------------------------"); //Id,name,course json = schema.Execute(a => { a.Query = "{ id, name, course }"; a.Root = _root; }); Console.WriteLine(json); Console.ReadLine(); } } } خروجی برنامه بهصورت زیر خواهد بود: { "data": { "id": "100", "name": "nikamooz" } } -------------------------------- { "data": { "id": "100", "name": "nikamooz", "course": "sqlserver" } } تفاوت REST API و GraphQL چیست؟ ساختار و زبان: REST API ها یک سبک معماری خاصی برای ساخت API های وب ارائه میکنند. آنها بر متدهای استاندارد HTTP شامل GET، POST، PUT و DELETE و همچنین، Endpoint های ازپیشتعریفشده اکتفا میکنند. GraphQL همانند یک زبان کوئرینویسی خاص برای API های طراحی شده است و به کلاینتها این امکان را میدهد که دیتای موردنظر خود را دقیقاً تعیین کنند. واکشی دیتا: در REST API، کلاینت دیتا را از Endpoint های خاصی درخواست میکند که ساختار دادههای ثابتی دارند. این موضوع میتواند به واکشی بیشتر از اندازه منجر شود و بر کارایی تأثیر منفی بگذارد. در حالی که گراف کیوال به شما اجازه میدهد تا ازطریق کوئریهایی تعیین کنید دقیقاً کدام فیلدها از بخشهای مختلف بکاند موردنیاز هستند. اسکیما: معمولاً REST API ها یک تعریف اسکیمای رسمی ندارند؛ این یعنی، ساختارهای داده براساس قالب پاسخ و Endpoint و بهطور ضمنی هستند. در نقطه مقابل، GraphQL بر یک اسکیما تعریفشده و مناسب اکتفا میکند. در این اسکیما، نوعهای داده، روابط و عملیات در دسترس به طور صریح تشریح شدهاند. این مشخصه به بهبود تجربه توسعه منجر میشود. پیچیدگی: معمولاً مدیریت و تنظیم REST API ها، بهویژه API های ساده با مدلهای دیتای مناسب، سادهتر است. GraphQL میتواند در تنظیم و نگهداری اسکیما پیچیدهتر باشد و به نوعی Learning Curve در ارتباط با آن وجود دارد. مروری بر GraphQL و دلایل اهمیت آن GraphQL یک تکنولوژی کلیدی در ساخت API بهشمار میرود و مزیتهای مختلفی، شامل واکشی کلاینتمحور دیتا، کاهش تعداد دفعات فراخوانی API، اعمال Strong Typing، کاهش اندازه Payload و قابلیت رسیدگی به روابط پیچیده دادهها را بههمراه دارد. به همین دلیل است که میتوان گراف کیوال را بهعنوان یک ابزار کارآمد برای توسعهدهندگان درنظر داشت. چه رتبه ای میدهید؟ میانگین ۵ / ۵. از مجموع ۳ اولین نفر باش معرفی نویسنده مقالات 3 مقاله توسط این نویسنده محصولات 0 دوره توسط این نویسنده محمدرضا عظیمی معرفی محصول ایمان باقری دوره آموزش کار با اشیای داده ای در SQL Server 1.490.000 تومان مقالات مرتبط ۰۲ آبان SQL Server ابزار Database Engine Tuning Advisor؛ مزایا، کاربردها و روش استفاده تیم فنی نیک آموز ۱۵ مهر SQL Server معرفی Performance Monitor ابزار مانیتورینگ SQL Server تیم فنی نیک آموز ۱۱ مهر SQL Server راهنمای جامع مانیتورینگ بکاپ ها در SQL Server تیم فنی نیک آموز ۰۸ مهر SQL Server Resource Governor چیست؟ آشنایی با نحوه پیکربندی و اهمیت های آن تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ محمد ۲۸ / ۰۲ / ۹۹ - ۰۶:۳۰ با عرض سلام و خسته نباشین آیا یادگیری Graphql برای بک اند کار ها هست ؟ حالا با هر زبانی که میخواد کار کنه چون که فرانت اند کار چیزی رو دریافت نمیکنه پاسخ به دیدگاه جواد اسماعیلی ۰۸ / ۰۶ / ۰۰ - ۰۵:۰۸ با سلام بله این موضوع مروبط به بکاند کار میباشد و سمت برنامه نویس باید مدیریت شود. شاد و پیروز باشید. پاسخ به دیدگاه محمد ۲۸ / ۰۲ / ۹۹ - ۰۶:۳۰ با عرض سلام و خسته نباشین آیا یادگیری Graphql برای بک اند کار ها هست ؟ حالا با هر زبانی که میخواد کار کنه چون که فرانت اند کار چیزی رو دریافت نمیکنه پاسخ به دیدگاه جواد اسماعیلی ۰۸ / ۰۶ / ۰۰ - ۰۵:۰۸ با سلام بله این موضوع مروبط به بکاند کار میباشد و سمت برنامه نویس باید مدیریت شود. شاد و پیروز باشید. پاسخ به دیدگاه شکری ۱۶ / ۱۱ / ۹۸ - ۰۱:۵۵ مطلب ارائه شده خیلی کاربردیه، لطفا سریعتر ادامه مطلب رو منتشر کنید. با تشکر پاسخ به دیدگاه شکری ۱۶ / ۱۱ / ۹۸ - ۰۱:۵۵ مطلب ارائه شده خیلی کاربردیه، لطفا سریعتر ادامه مطلب رو منتشر کنید. با تشکر پاسخ به دیدگاه