عميل HTTP لـ C# (.NET): أفضل المكتبات للعمل مع طلبات الويب

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

عميل HTTP لـ C# (.NET): مراجعة أفضل المكتبات



عند تطوير التطبيقات الحديثة بلغة C# (.NET)، تنشأ دائمًا تقريبًا الحاجة للتفاعل مع خدمات الويب البعيدة وواجهات API. توفر الفئة الأساسية HttpClient جميع الإمكانيات اللازمة، ولكن بالنسبة للسيناريوهات المعقدة (محاولات إعادة، تسلسل، واجهة fluent سهلة الاستخدام) أنشأ المجتمع العديد من مكتبات التغليف القوية. في هذه المقالة، سنستعرض أربعة من أشهر عملاء HTTP لـ C# (.NET)، ونقارن إمكانياتهم ونقدم أمثلة على الكود.



1. HttpClient (مدمج في .NET)



HttpClient هي فئة قياسية من مساحة الأسماء System.Net.Http، متوفرة في جميع إصدارات .NET (بما في ذلك .NET Core، .NET 5/6/7/8). وهي الأساس الذي بنيت عليه جميع المكتبات الأخرى.



المزايا:

  • لا يتطلب تثبيت حزم إضافية (مضمن في BCL).
  • تحكم كامل في عملية إرسال الطلبات.
  • دعم HTTP/1.1، HTTP/2، HTTP/3.
  • دعم مدمج لضغط gzip/deflate.
  • إمكانية العمل مع التدفقات (streaming).


العيوب:

  • يتطلب إدارة يدوية لمحاولات إعادة المحاولة (retry).
  • لا يوجد تسلسل/إلغاء تسلسل JSON مدمج.
  • كود مطول للعمليات النمطية.


مثال على الاستخدام:

using System.Net.Http;using System.Text.Json;using System.Threading.Tasks;

public class UserClient{ private readonly HttpClient _httpClient;

public UserClient() { _httpClient = new HttpClient(); _httpClient.BaseAddress = new Uri("https://jsonplaceholder.typicode.com"); }

public async Task<User> GetUserAsync(int id) { var response = await _httpClient.GetAsync($"/users/{id}"); response.EnsureSuccessStatusCode(); var json = await response.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize<User>(json); }

public async Task<User> CreateUserAsync(User user) { var json = JsonSerializer.Serialize(user); var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync("/users", content); response.EnsureSuccessStatusCode(); var responseJson = await response.Content.ReadAsStringAsync(); return JsonSerializer.Deserialize<User>(responseJson); }}

public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}


2. RestSharp



RestSharp هي واحدة من أقدم وأشهر المكتبات للعمل مع REST API. توفر واجهة fluent سهلة الاستخدام، وتسلسل/إلغاء تسلسل تلقائي لـ JSON و XML، بالإضافة إلى معالجة مدمجة للأخطاء.



المزايا:

  • API بسيط وبديهي.
  • تسلسل/إلغاء تسلسل تلقائي.
  • دعم مدمج للمصادقة (Basic، OAuth، JWT).
  • دعم تحميل الملفات (multipart/form-data).
  • نظام مرن لمعالجة الأخطاء ومحاولات إعادة المحاولة.


العيوب:

  • اعتماد على حزمة خارجية (NuGet: RestSharp).
  • لبعض السيناريوهات، يفرط في تجريد HTTP.


مثال على الاستخدام:

using RestSharp;using System.Threading.Tasks;

public class UserClient{ private readonly RestClient _client;

public UserClient() { _client = new RestClient("https://jsonplaceholder.typicode.com"); }

public async Task<User> GetUserAsync(int id) { var request = new RestRequ

توصيات