معرفی
امروز ما به یک بحث بسیار رایج که در هنگام توسعه یک لایه دسترسی به داده رخ می دهد نگاه خواهیم کرد. این بحث برای این است که تصمیم بگیریم که آیا میخواهیم از رویههای ذخیرهشده استفاده کنیم و منطق خود را در پایگاه داده نگه داریم، یا میخواهیم از یک ORM مانند Entity Framework استفاده کنیم و تمام منطق را در کد C# لایه میانی خود نگه داریم، و از پایگاه داده فقط به عنوان ذخیره داده استفاده کنیم. . من انواع مختلف ORM ها و نمونه های استفاده از آنها را توضیح نمی دهم زیرا این اطلاعات به طور گسترده در وب در دسترس است. همچنین نحوه نوشتن و استفاده از رویههای ذخیرهشده را توضیح نمیدهم، زیرا این اطلاعات تقریباً برای همه انواع پایگاههای داده نیز به طور گسترده در دسترس است. من به سادگی سعی خواهم کرد مزایا و معایب استفاده از هر کدام را توضیح دهم و اینکه کدام و چرا فکر می کنم راه حل بهتری است.
رویه های ذخیره شده چیست؟
اجازه دهید با شناسایی رویه های ذخیره شده شروع کنیم. رویههای ذخیرهشده معمولاً مصنوعات پایگاههای داده رابطهای هستند، مانند SQL Server، Oracle، و غیره. اینها میتوانند شامل کدهایی برای دستکاری دادهها باشند و در انتخاب، پردازش، و ارسال مجدد دادهها به برنامه جلویی کارآمد هستند. اینها با استفاده از زبان SQL نوشته شده اند که به راحتی قابل درک و یادگیری است. برخی از مزایای اصلی استفاده از رویههای ذخیرهشده این است که این روشها توسط موتور پایگاه داده کامپایل، بهینهسازی و اجرا میشوند و بنابراین میتوانند بسیار سریع عمل کنند. به همین دلیل، من دیده ام که برخی از معماران به شدت استفاده از رویه های ذخیره شده را تحت فشار قرار داده اند.
ORM چیست؟
ORM به معنای نگاشت رابطه ای شی است. این روش به ما اجازه می دهد تا کلاس هایی را برای نمایش جداول پایگاه داده خود ایجاد کنیم و سپس از یک کلاس زمینه یا ارتباط برای پیوستن این کلاس ها به جداول پایگاه داده خود استفاده کنیم. سپس، میتوانیم از قدرت کامل زبان برنامهنویسی سطح متوسط، مانند سی شارپ، برای نوشتن کوئریها برای انتخاب و بهروزرسانی دادههای جداول خود استفاده کنیم. البته یک ORM به همین جا ختم نمی شود و همچنین می توانیم مصنوعات دیگری برای رویه های ذخیره شده و غیره ایجاد کنیم. همچنین می توانیم کلاس ها را از چندین جدول ادغام کنیم و یک جدول را به چندین کلاس تقسیم کنیم. با این حال، ایده اصلی این است که از پایگاه داده عمدتاً به عنوان یک فروشگاه استفاده کنید و تمام منطق پردازش را در کدهای سطح متوسط نگه دارید.
امروز از چه چیزی استفاده کنیم؟ رویه های ذخیره شده در مقابل ORM
این روزها ما یک چشم انداز بسیار پیشرفته برای رویه های ذخیره شده در پایگاه داده های مختلف و همچنین ORM های عالی داریم. به عنوان مثال، Entity Framework Core گزینه های زیادی در اختیار ما قرار می دهد و درک و پیاده سازی آن آسان است. خب از چی استفاده کنیم؟ پاسخ این است که بستگی به سناریوی خاص دارد. با این حال، ترجیح میدهم از یک ORM استفاده کنم، زیرا از این طریق میتوانیم بهتر بتوانیم منطق تجاری و پردازش را در کلاسهای مناسب در سطح متوسط خود انتزاع کنیم و از قدرت همه کتابخانهها، بستههای NuGet و غیره در این سطح استفاده کنیم. این همچنین ما را از گره خوردن به یک پایگاه داده خاص نجات میدهد و در آینده میتوانیم به راحتی به یک فروشگاه داده دیگر برویم. با این حال، اگر ما نیاز به انجام برنامهنویسی سنگین در سطح پایگاه داده داریم و میخواهیم به طور کامل از قدرت موتور پایگاه داده استفاده کنیم، استفاده از رویههای ذخیرهشده راه حلی است. با این حال،
خلاصه
در این مقاله ما به این نگاه کردیم که چه چیزی را برای ساخت، دسترسی به داده یا لایه پردازش داده انتخاب کنیم. پاسخ به نیازهای کدگذار بستگی دارد و افراد مختلف نظرات متفاوتی در مورد آن خواهند داشت. با این حال، از دیدگاه شخصی خودم، ترجیح میدهم تمام منطق را در سطح متوسط نگه دارم. به این ترتیب منطق بهتر انتزاع می شود و ما می توانیم از تعداد زیادی کتابخانه در دسترس برای پردازش داده ها استفاده کنیم. همچنین، میتوانیم دادهها را به صورت تکهای بازیابی کرده و با استفاده از تکنیکهای برنامهنویسی موازی پردازش کنیم و از سختافزار بسیار قدرتمندی که این روزها داریم استفاده کنیم. این نیز ما را به هیچ پایگاه داده خاصی متصل نمی کند.