التحقق من صحة البيانات في C# (.NET): دليل شامل مع أمثلة
التحقق من صحة البيانات هو أحد الجوانب الرئيسية لتطوير تطبيقات موثوقة بلغة C# في بيئة .NET. فهو يضمن أن البيانات الواردة تتوافق مع القواعد المحددة، مما يمنع الأخطاء والثغرات والحالات غير الصحيحة للنظام. في هذه المقالة، سنستعرض بالتفصيل المكتبات والأدوات الرئيسية للتحقق من الصحة في .NET، بما في ذلك الآليات المدمجة والحلول الخارجية الشائعة.
لماذا يعتبر التحقق من صحة البيانات مهمًا؟
بدون التحقق من الصحة، قد يتلقى التطبيق:
- أنواع بيانات غير صحيحة (مثل سلسلة نصية بدلاً من رقم).
- قيم خارج النطاقات المسموح بها (عمر سالب، بريد إلكتروني غير موجود).
- هجمات SQL injection و XSS وغيرها من التهديدات الأمنية.
- انتهاك منطق الأعمال (طلب بدون منتجات، اسم مستخدم فارغ).
استخدام المناهج المنظمة للتحقق من الصحة يجعل الكود أنظف وأكثر قابلية للاختبار وأكثر أمانًا.
1. التحقق المدمج: Data Annotations (System.ComponentModel.DataAnnotations)
الطريقة الأبسط والأكثر شيوعًا هي استخدام السمات من مساحة الأسماء System.ComponentModel.DataAnnotations. هذه الطريقة مثالية للنماذج في ASP.NET Core MVC و Web API و Entity Framework.
مثال على نموذج مع السمات:
using System.ComponentModel.DataAnnotations;
public class User{ [Required(ErrorMessage = "الاسم مطلوب")] [StringLength(50, MinimumLength = 2, ErrorMessage = "يجب أن يكون الاسم من 2 إلى 50 حرفًا")] public string Name { get; set; }
[Required] [EmailAddress(ErrorMessage = "بريد إلكتروني غير صحيح")] public string Email { get; set; }
[Range(1, 120, ErrorMessage = "يجب أن يكون العمر بين 1 و 120")] public int Age { get; set; }
[Phone(ErrorMessage = "رقم هاتف غير صحيح")] public string Phone { get; set; }}التحقق البرمجي للنموذج:
var user = new User { Name = "A", Email = "invalid", Age = 200 };var context = new ValidationContext(user);var results = new List<ValidationResult>();
bool isValid = Validator.TryValidateObject(user, context, results, true);
if (!isValid){ foreach (var error in results) { Console.WriteLine(error.ErrorMessage); }}المزايا: البساطة، الدعم المدمج في ASP.NET Core، التحقق التلقائي على مستوى المتحكمات.
العيوب: مرونة محدودة، السمات مرتبطة بشكل صارم بالنموذج، صعوبة تنفيذ قواعد الأعمال المعقدة.
2. FluentValidation — تحقق مرن وتعبيري
مكتبة FluentValidation هي الأداة الخارجية الأكثر شيوعًا للتحقق من الصحة في .NET. تسمح بنقل قواعد التحقق إلى فئات منفصلة، وتدعم سلاسل الاستدعاء والرسائل المخصصة والشروط المعقدة.
التثبيت عبر NuGet: Install-Package FluentValidation
مثال على أداة التحقق:
using FluentValidation;
public class UserValidator : AbstractValidator<User>{ public UserValidator() { RuleFor(u => u.Name) .NotEmpty().WithMessage("الاسم لا يمكن أن يكون فارغًا") .Length(2, 50).WithMessage("طول الاسم من 2 إلى 50 حرفًا");
RuleFor(u => u.Email) .NotEmpty() .EmailAddress().WithMessage("تنسيق البريد الإلكتروني غير صحيح");
RuleFor(u => u.Age) .InclusiveBetween(1, 120).WithMessage("العمر خارج النطاق");
// قاعدة مخصصة RuleFor(u => u.Phone) .Matches(@"^\\+?[1-9]\\d{1,14}$").When(u => !string.IsNullOrEmpty(u.Phone)) .WithMessage("رقم الهاتف بالتنسيق الدولي"); }}الاستخدا