.NET Core - الأداء وتحسين السرعة (Performance Optimization)

6.4 .NET Core - الأداء وتحسين السرعة (Performance Optimization)

تحسين أداء التطبيقات في ASP.NET Core هو عامل حاسم لنجاح أي مشروع، خصوصًا عند العمل مع عدد كبير من المستخدمين أو الطلبات. في هذا الدرس سنتعرف على أهم الطرق لتحسين السرعة، وتقليل استهلاك الموارد، وتقديم تجربة مستخدم أسرع.


🚀 1) التخفيف من الوصول المتكرر لقاعدة البيانات

  • استخدم Caching (الذاكرة المؤقتة) لتخزين البيانات التي لا تتغير باستمرار.
  • قلل من الاستعلامات غير الضرورية عبر Include() الذكي في Entity Framework.

// استخدام الذاكرة المؤقتة
builder.Services.AddMemoryCache();

// في الكود
if (!_cache.TryGetValue("productList", out List<Product> products))
{
    products = _context.Products.ToList();

    _cache.Set("productList", products, TimeSpan.FromMinutes(5));
}

📦 2) تفعيل ضغط الاستجابة (Response Compression)

ضغط الـ Response يقلل حجم البيانات المرسلة للعميل.


builder.Services.AddResponseCompression();
app.UseResponseCompression();

🧵 3) استخدام Async/Await لتحسين الأداء المتزامن


// بدلاً من:
var list = _context.Products.ToList();

// استخدم:
var list = await _context.Products.ToListAsync();

هذا يسمح للسيرفر بمعالجة طلبات أخرى أثناء انتظار قاعدة البيانات.

🧠 4) تقليل حجم الـ JSON المرسل

  • استخدم Select لاختيار فقط البيانات المطلوبة.
  • استخدم DTOs (كائنات نقل البيانات) بدلًا من إرسال الكيان بالكامل.

// بدلاً من إرسال الكيان الكامل
var list = _context.Products
    .Select(p => new { p.Id, p.Name })
    .ToList();

📈 5) تفعيل الـ Logging لمراقبة الأداء

استخدم ILogger لتسجيل زمن تنفيذ العمليات الحرجة، لتحديد المشاكل المحتملة.


_logger.LogInformation("بدأ تنفيذ GetAllProducts في: {Time}", DateTime.Now);

🧪 6) أدوات قياس وتحسين الأداء

  • dotnet-counters: أداة CLI لقياس أداء .NET runtime.
  • Application Insights: أداة من Azure لمراقبة الأداء والـ Telemetry.
  • MiniProfiler: مكتبة خفيفة لعرض زمن تنفيذ كل استعلام.

🧵 7) تحسين الجداول والاستعلامات

  • تأكد من وجود فهارس (Indexes) في الأعمدة التي تستخدم كثيرًا في WHERE.
  • استخدم .AsNoTracking() عندما لا تحتاج إلى التعديل على البيانات:

var data = await _context.Products
    .AsNoTracking()
    .ToListAsync();

🔚 الخلاصة

تحسين أداء تطبيق ASP.NET Core لا يقتصر فقط على الكود، بل يشمل البنية، الاستعلامات، والذاكرة المؤقتة. ابدأ دائمًا بالتحليل، وراقب الأداء، ثم نفذ التعديلات تدريجيًا بناءً على ما هو فعليًا بطيء أو مكلف.

تعليقات

المشاركات الشائعة من هذه المدونة

C# - Arrays

Entity Framework - ما هو ORM؟ ونبذة عن Dapper وNHibernate

Entity Framework - مقدمة عن Entity Framework