برنامه نویسی

تراکنش ها در دات نت: از اصول اولیه تا بهترین روش ها

تراکنش در دات نت چیست؟

معامله یک است دنباله ای از عملیات انجام شده به عنوان یک واحد منطقی کار. از تراکنش ها برای اطمینان از سازگاری و یکپارچگی داده ها در سیستم های پایگاه داده استفاده می شود.

آنها از خواص ACID پیروی می کنند: اتمی، سازگاری، انزوا، و دوام. در زمینه دات نت، تراکنش ها را می توان از طریق کلاس ها و رابط های مختلف ارائه شده توسط دات نت فریم ورک مدیریت کرد.

اهمیت تراکنش ها در مدیریت پایگاه داده

تراکنش ها برای حفظ یکپارچگی و سازگاری داده ها در سیستم های پایگاه داده بسیار مهم هستند.

آنها اطمینان می‌دهند که چندین عملیات به صورت اتمی انجام می‌شوند، یا همه موفقیت‌آمیز هستند یا همه با شکست مواجه می‌شوند، و از به‌روزرسانی‌های جزئی که می‌تواند پایگاه داده را در حالت ناسازگار بگذارد، جلوگیری می‌کند.

تراکنش‌ها همچنین به جداسازی عملیات همزمان کمک می‌کنند، و تضمین می‌کنند که تغییرات هر تراکنش تا زمانی که متعهد شوند از دیگران جدا می‌شوند.

انواع تراکنش ها در دات نت

معاملات محلی

تراکنش های محلی تراکنش هایی هستند که شامل یک منبع واحد مانند یک پایگاه داده یا یک صف پیام واحد می شود.

آنها در مقایسه با تراکنش‌های توزیع‌شده ساده‌تر و سریع‌تر هستند، زیرا فقط یک مدیر منبع را شامل می‌شوند. در دات نت، تراکنش های محلی را می توان با استفاده از TransactionScope کلاس یا SqlTransaction کلاس

معاملات توزیع شده

تراکنش های توزیع شده شامل منابع متعددی مانند پایگاه داده های متعدد یا ترکیبی از پایگاه های داده و صف های پیام هستند.

آنها پیچیده تر و کندتر از تراکنش های محلی هستند، زیرا به هماهنگی بین چندین مدیر منابع نیاز دارند. در دات نت، تراکنش های توزیع شده را می توان با استفاده از TransactionScope کلاس در ارتباط با System.Transactions فضای نام

کار با تراکنش ها در دات نت

کلاس TransactionScope

ایجاد یک TransactionScope

را TransactionScope کلاس موجود در System.Transactions فضای نام، به شما امکان می دهد بلوکی از کد را تعریف کنید که در یک تراکنش شرکت می کند.

برای ایجاد یک محدوده تراکنش جدید، به سادگی یک نمونه جدید از آن ایجاد می کنید TransactionScope کلاس، مانند:

using (TransactionScope scope = new TransactionScope())
{
    // Perform transactional operations here
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

انجام و بازگرداندن معاملات

به طور پیش فرض، یک تراکنش زمانی انجام می شود که TransactionScope دفع می شود. برای انجام معامله می توانید با شماره تماس بگیرید Complete روش:

using (TransactionScope scope = new TransactionScope())
{
    // Perform transactional operations here

    scope.Complete();
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر یک استثنا در داخل رخ دهد TransactionScope، تراکنش به طور خودکار برگردانده می شود:

using (TransactionScope scope = new TransactionScope())
{
    try
    {
        // Perform transactional operations here

        scope.Complete();
    }
    catch (Exception ex)
    {
        // Handle the exception and let the transaction roll back
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کلاس SqlTransaction

ایجاد ارتباط

را SqlTransaction کلاس موجود در System.Data.SqlClient فضای نام، به شما اجازه می دهد تا معاملات را مستقیماً در پایگاه داده SQL Server مدیریت کنید.

برای استفاده SqlTransaction، ابتدا باید با استفاده از SqlConnection کلاس:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    // Perform transactional operations here
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیاده سازی SqlTransaction

هنگامی که یک اتصال باز دارید، می توانید یک نمونه جدید از آن ایجاد کنید SqlTransaction کلاس با تماس BeginTransaction روش بر روی SqlConnection هدف – شی

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    using (SqlTransaction transaction = connection.BeginTransaction())
    {
        try
        {
            // Perform transactional operations here

            transaction.Commit();
        }
        catch (Exception ex)
        {
            // Handle the exception and roll back the transaction
            transaction.Rollback();
        }
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سطوح جداسازی در معاملات دات نت

Uncommitted را بخوانید

این سطح جداسازی به تراکنش ها اجازه می دهد تا تغییرات غیرمتعهد ایجاد شده توسط تراکنش های دیگر را بخوانند.

این پایین ترین سطح ایزوله است و می تواند منجر به مسائلی مانند خواندن کثیف، خواندن غیرقابل تکرار و خواندن فانتوم شود.

متعهد را بخوانید

تضمین می کند که یک تراکنش فقط می تواند تغییرات متعهد شده توسط سایر تراکنش ها را بخواند.

از خواندن کثیف جلوگیری می کند، اما همچنان می تواند منجر به خواندن غیرقابل تکرار و خواندن فانتوم شود.

خواندن تکراری

سطح خواندن تکرارشونده با قفل کردن داده های خوانده شده توسط تراکنش، از خواندن کثیف و خواندن غیرقابل تکرار جلوگیری می کند.

با این حال، همچنان می تواند منجر به خواندن فانتوم شود.

قابل سریال سازی

این بالاترین سطح ایزوله است که از خواندن کثیف، خواندن غیرقابل تکرار و خواندن فانتوم با قفل کردن کل محدوده داده ای که توسط یک تراکنش قابل دسترسی است، جلوگیری می کند.

این سطح از انزوا می تواند منجر به کاهش همزمانی و بن بست های احتمالی شود.

عکس فوری

این سطح انزوا یک عکس فوری از داده ها در شروع تراکنش ارائه می دهد و امکان خواندن مداوم را بدون دریافت قفل فراهم می کند.

از خواندن کثیف، خواندن غیرقابل تکرار و خواندن فانتوم جلوگیری می کند، در حالی که امکان همزمانی بالا را فراهم می کند.

بهترین روش ها برای اجرای تراکنش ها در دات نت

  1. نوع معامله مناسب را انتخاب کنید: هنگام کار با یک منبع واحد و تراکنش های توزیع شده برای چندین منبع از تراکنش های محلی استفاده کنید.
  2. از سطح ایزوله صحیح استفاده کنید: سطح ایزوله ای را انتخاب کنید که تضمین های سازگاری لازم را بدون کاهش عملکرد ارائه می دهد.
  3. معاملات را کوتاه نگه دارید: مدت زمان معاملات را به حداقل برسانید تا احتمال اختلاف و بن بست کاهش یابد.
  4. استثناها را به درستی مدیریت کنید: اطمینان حاصل کنید که در صورت بروز خطا یا استثنا، تراکنش‌ها برگشت داده می‌شوند.
  5. اتصالات را ببندید و منابع را دور بریزید: همیشه اتصالات پایگاه داده را ببندید و اشیاء تراکنش را دور بریزید تا از نشت منابع جلوگیری شود.

نتیجه

تراکنش ها بخش مهمی از حفظ یکپارچگی و سازگاری داده ها در سیستم های پایگاه داده هستند. در دات نت می توانید با استفاده از کلاس هایی مانند TransactionScope و SqlTransaction.

با درک انواع مختلف تراکنش ها، سطوح جداسازی و بهترین شیوه ها، می توانید تراکنش های قوی و کارآمد را در برنامه های دات نت خود پیاده سازی کنید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا