عميل HTTP لـ C# (.NET): مراجعة أفضل المكتبات
يعد العمل مع طلبات HTTP إحدى المهام الرئيسية عند تطوير التطبيقات الحديثة بلغة C#. سواء كان التفاعل مع REST API، أو تحميل البيانات من خادم الويب، أو إرسال النماذج، فإن اختيار الأداة المناسبة يمكن أن يبسط التطوير بشكل كبير ويعزز الأداء. في هذه المقالة، سنستعرض أفضل المكتبات لإنشاء عملاء HTTP في نظام .NET البيئي، وميزاتها، ومزاياها، وأمثلة على استخدامها.
1. HttpClient (مدمج في .NET)
HttpClient هو فئة قياسية من مساحة الأسماء System.Net.Http، متوفرة في جميع الإصدارات الحديثة من .NET. وهو الأساس لمعظم المكتبات الأخرى ويوفر مجموعة أساسية ولكنها قوية من الإمكانيات.
الميزات الرئيسية:
- مدمج في المنصة، ولا يتطلب تثبيت حزم إضافية.
- يدعم العمليات غير المتزامنة (
async/await). - يسمح بإدارة الرؤوس، والمهلات، وإعادة استخدام الاتصالات.
- يعمل مع تدفقات البيانات، وهو أمر مهم للاستجابات الكبيرة.
مثال على الاستخدام:
using System;using System.Net.Http;using System.Threading.Tasks;
class Program{ static async Task Main(string[] args) { using HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Add("User-Agent", "C# HttpClient");
try { HttpResponseMessage response = await client.GetAsync("https://api.github.com/repos/dotnet/core"); response.EnsureSuccessStatusCode(); string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); } catch (HttpRequestException e) { Console.WriteLine($"خطأ: {e.Message}"); } }}متى تستخدم: للمشاريع البسيطة التي لا تحتاج إلى تجريدات إضافية، أو عندما يكون التحكم الكامل في العملية مطلوبًا.
2. RestSharp
RestSharp هي واحدة من أشهر المكتبات الخارجية لـ .NET، والتي توفر واجهة fluent مريحة لبناء طلبات HTTP ومعالجة الاستجابات. إنها تبسط بشكل كبير العمل مع JSON و XML والتسلسل.
الميزات الرئيسية:
- بناء جملة بسيط ومعبر.
- دعم مدمج لإلغاء تسلسل JSON و XML.
- دعم المصادقة (Basic، OAuth، JWT).
- معالجة تلقائية للأخطاء ومحاولات إعادة.
مثال على الاستخدام:
using RestSharp;using System;
class Program{ static void Main(string[] args) { var client = new RestClient("https://api.github.com"); var request = new RestRequest("repos/dotnet/core", Method.Get); request.AddHeader("User-Agent", "RestSharp");
var response = client.Execute(request); if (response.IsSuccessful) { Console.WriteLine(response.Content); } else { Console.WriteLine($"خطأ: {response.ErrorMessage}"); } }}متى تستخدم: للمشاريع المتوسطة والكبيرة حيث تكون سرعة التطوير وسهولة العمل مع API مهمة.
3. Flurl
Flurl هي مكتبة خفيفة الوزن تجعل طلبات HTTP بسيطة مثل استدعاء طريقة عادية. تتميز ببناء جملة أنيق وكمية قليلة من الكود.
الميزات الرئيسية:
- واجهة fluent مع سلسلة من الطرق.
- دعم مدمج لبناء عناوين URL وترميزها.
- عمل بسيط مع JSON (عبر إضافات Flurl.Http).
- دعم الاختبار من خلال الكائنات الوهمية (mocks).