بیزینس لاجیک (Business Logic) به مجموعهای از قوانین، روابط و روندهای منطقی اطلاق میشود که برای مدیریت دادهها و عملکردهای یک سازمان یا سیستم تجاری استفاده میشود. این منطق و قوانین برای تعیین رفتار و عملکرد سازمان، پردازش دادهها و تصمیمگیریهای مربوط به فرآیندهای کسب و کار به کار میروند.
به طور کلی، بیزینس لاجیک شامل اصول و محدودیتهایی است که برای اجرای صحیح فرآیندهای کسب و کار، مدیریت منابع، ارتباطات و تصمیمگیریها باید رعایت شوند. این قوانین میتوانند به صورت الگوریتمها، قوانین تصمیمگیری، فرمولها یا قوانین تجاری بیان شوند.
در سیستمهای کامپیوتری، بیزینس لاجیک به عنوان قوانین و روندهای منطقی استفاده میشود که برای اجرای صحیح و منطقی عملکرد سیستم و پردازش دادهها به کار میروند. به عنوان مثال، در سیستمهای مدیریت مشتری (CRM)، بیزینس لاجیک برای تعیین قوانین و روندهای مرتبط با مدیریت اطلاعات مشتریان و اجرای فرآیندهای فروش و خدمات مشتری استفاده میشود.
بیزینس لاجیک (Business Logic) با مدل (Model) در معماری MVC ارتباط مستقیم دارد. در واقع، بیزینس لاجیک معمولاً در مدل پیادهسازی میشود. مدل مسئول مدیریت دادهها و منطق تجاری است، بنابراین بیزینس لاجیک که شامل قوانین و روندهای کسب و کار است، در مدل قرار میگیرد.
به عنوان مثال، فرض کنید یک برنامه فروشگاه آنلاین دارید. بیزینس لاجیک میتواند شامل قوانینی برای محاسبه تخفیفها، مدیریت موجودی کالاها، و اعتبارسنجی اطلاعات مشتریان باشد. این قوانین و منطقها در مدل پیادهسازی میشوند تا دادهها به درستی مدیریت شوند و عملیات تجاری به درستی انجام شوند.
بنابراین، مدل نه تنها دادهها را مدیریت میکند، بلکه بیزینس لاجیک را نیز پیادهسازی میکند تا اطمینان حاصل شود که برنامه به درستی و مطابق با قوانین کسب و کار عمل میکند.
دیتابیس (Database) یا پایگاه داده، مجموعهای سازمانیافته از دادهها است که به صورت الکترونیکی ذخیره و مدیریت میشود. دیتابیسها به کاربران اجازه میدهند تا دادهها را ذخیره، بازیابی، بهروزرسانی و مدیریت کنند. دیتابیسها معمولاً توسط سیستمهای مدیریت پایگاه داده (DBMS) مدیریت میشوند که ابزارهایی برای دسترسی، مدیریت و امنیت دادهها فراهم میکنند.
مدل (Model) در معماری MVC بخشی از برنامه است که مسئول مدیریت دادهها و منطق تجاری است. مدلها با دیتابیسها ارتباط برقرار میکنند تا دادههای مورد نیاز را دریافت و پردازش کنند. به عبارت دیگر، مدلها نماینده دادهها و قوانین کسب و کار هستند که برنامه بر اساس آنها عمل میکند.
ارتباط بین دیتابیس و مدل
1- ذخیرهسازی و بازیابی دادهها: مدلها با دیتابیسها ارتباط برقرار میکنند تا دادهها را ذخیره، بازیابی و بهروزرسانی کنند. به عنوان مثال، در یک برنامه فروشگاه آنلاین، مدل محصول با دیتابیس ارتباط برقرار میکند تا اطلاعات محصولات را ذخیره و بازیابی کند.
2- اعتبارسنجی و منطق تجاری: مدلها شامل قوانین و منطق تجاری هستند که برای اعتبارسنجی دادهها و اجرای عملیات تجاری استفاده میشوند. به عنوان مثال، مدل کاربر ممکن است شامل قوانینی برای اطمینان از صحت ایمیل و رمز عبور باشد.
3- تعامل با کنترلگر: مدلها دادههای مورد نیاز کنترلگر را فراهم میکنند تا کنترلگر بتواند درخواستهای کاربر را پردازش کند و دادهها را به نما ارسال کند.
انواع دیتابیسها
1- دیتابیسهای رابطهای (Relational Databases): دادهها را به صورت جداول و روابط میان آنها ذخیره میکنند. از زبان SQL برای مدیریت دادهها استفاده میکنند. نمونهها: MySQL، PostgreSQL، Oracle.
2- دیتابیسهای NoSQL: از ساختارهای غیررابطهای برای ذخیره دادهها استفاده میکنند. مناسب برای حجم بزرگ دادهها و انعطافپذیری بیشتر. نمونهها: MongoDB، Cassandra.
3- دیتابیسهای سلسله مراتبی (Hierarchical Databases): دادهها را به صورت سلسله مراتبی سازماندهی میکنند. مناسب برای دادههایی با ساختار سلسله مراتبی.
4- دیتابیسهای گرافی (Graph Databases): دادهها را به صورت گراف مدل میکنند که گرهها و روابط بین آنها را نشان میدهد. مناسب برای شبکههای اجتماعی و مخابراتی.
در معماری MVC، نما (View) بخشی از برنامه است که مسئول نمایش دادهها به کاربر است. نما دادههایی که از مدل دریافت میکند را به صورت گرافیکی و قابل فهم برای کاربر نمایش میدهد. این بخش شامل قالبهای HTML، CSS و گاهی جاوااسکریپت است که برای ایجاد رابط کاربری استفاده میشوند.
وظایف اصلی نما (View)
1- نمایش دادهها: نما دادههای پردازش شده توسط مدل را به کاربر نمایش میدهد. این دادهها میتوانند شامل اطلاعات متنی، جداول، نمودارها و سایر عناصر گرافیکی باشند.
2- تعامل با کاربر: نما مسئول دریافت ورودیهای کاربر (مانند فرمها و دکمهها) و ارسال آنها به کنترلگر برای پردازش است.
3- بهروزرسانی پویا: با استفاده از تکنولوژیهایی مانند AJAX، نما میتواند بدون نیاز به بارگذاری مجدد صفحه، دادهها را بهروزرسانی کند.
مثال
فرض کنید یک برنامه مدیریت کتابخانه دارید. نما میتواند شامل صفحاتی باشد که لیست کتابها، جزئیات هر کتاب و فرمهای جستجو و افزودن کتاب جدید را نمایش میدهند. این صفحات با استفاده از دادههایی که از مدل دریافت میکنند، به کاربر نمایش داده میشوند.
نما (View) در معماری MVC میتواند از APIها استفاده کند تا دادهها را از سرور دریافت کند و به کاربر نمایش دهد. این کار معمولاً با استفاده از تکنولوژیهایی مانند AJAX، Fetch API یا کتابخانههایی مانند Axios انجام میشود. این روش به نما اجازه میدهد تا بدون نیاز به بارگذاری مجدد صفحه، دادهها را بهروزرسانی کند و تجربه کاربری بهتری ارائه دهد.
مثال
فرض کنید یک برنامه مدیریت کتابخانه دارید و میخواهید لیست کتابها را از یک API دریافت کنید و به کاربر نمایش دهید. میتوانید از AJAX یا Fetch API برای ارسال درخواست به API و دریافت دادهها استفاده کنید و سپس این دادهها را در نما نمایش دهید.
// استفاده از Fetch API برای دریافت دادهها از API
fetch('https://api.example.com/books')
.then(response => response.json())
.then(data => {
// نمایش دادهها در نما
const bookList = document.getElementById('book-list');
data.forEach(book => {
const listItem = document.createElement('li');
listItem.textContent =
${book.title} by ${book.author};
bookList.appendChild(listItem);
});
})
.catch(error => console.error('Error fetching data:', error));
مزایا- بهروزرسانی پویا: نما میتواند بدون بارگذاری مجدد صفحه، دادهها را بهروزرسانی کند.
- کاهش بار سرور: فقط دادههای مورد نیاز از سرور درخواست میشوند، که میتواند بار سرور را کاهش دهد.
- تجربه کاربری بهتر: کاربران میتوانند بدون وقفه و به صورت پویا با برنامه تعامل داشته باشند.در معماری MVC، کنترلگر (Controller) بخشی از برنامه است که واسط بین مدل و نما است. کنترلگر درخواستهای کاربر را دریافت میکند، با مدل ارتباط برقرار میکند تا دادههای مورد نیاز را دریافت کند و سپس دادهها را به نما ارسال میکند تا به کاربر نمایش داده شود.
وظایف اصلی کنترلگر (Controller)
1- دریافت درخواستها: کنترلگر درخواستهای HTTP را از کاربر دریافت میکند. این درخواستها میتوانند شامل درخواستهای GET، POST، PUT و DELETE باشند.
2- پردازش دادهها: کنترلگر با مدل ارتباط برقرار میکند تا دادههای مورد نیاز را دریافت یا بهروزرسانی کند. این شامل اجرای بیزینس لاجیک و اعتبارسنجی دادهها نیز میشود.
3- ارسال پاسخها: پس از پردازش دادهها، کنترلگر دادهها را به نما ارسال میکند تا به کاربر نمایش داده شوند. این میتواند شامل رندر کردن یک صفحه HTML یا ارسال دادههای JSON برای یک API باشد.
مثالفرض کنید یک برنامه مدیریت کتابخانه دارید. وقتی کاربر درخواست مشاهده لیست کتابها را ارسال میکند، کنترلگر این درخواست را دریافت میکند، با مدل ارتباط برقرار میکند تا لیست کتابها را دریافت کند و سپس این دادهها را به نما ارسال میکند تا به کاربر نمایش داده شود.
public class BooksController : Controller
{
private readonly IBookRepository _bookRepository;
public BooksController(IBookRepository bookRepository)
{
_bookRepository = bookRepository;
}
public IActionResult Index()
{
var books = _bookRepository.GetAllBooks();
return View(books);
}
}
در این مثال، کنترلگر BooksController درخواستهای مربوط به کتابها را مدیریت میکند. متد Index لیست کتابها را از مخزن دادهها (Repository) دریافت میکند و آنها را به نما ارسال میکند تا به کاربر نمایش داده شوند.
در ASP.NET Core MVC امکانات متعددی دارد که هر کدام نقش مهمی در توسعه وب اپلیکیشنها ایفا میکنند. در ادامه به توضیح هر یک از این امکانات میپردازم:
1- Routing:
- توضیح: Routing به شما اجازه میدهد که URLها را به اکشنهای کنترلرها نگاشت کنید. این امکان به شما کمک میکند تا URLهای خوانا و قابل فهم برای کاربران و موتورهای جستجو ایجاد کنید.
2- Model Binding:
- توضیح: Model Binding دادههای ورودی از درخواستهای HTTP (مانند فرمها) را به پارامترهای اکشنها و مدلها نگاشت میکند. این فرآیند به شما کمک میکند تا دادهها را به راحتی دریافت و پردازش کنید.
3- Model Validation:
- توضیح: Model Validation به شما اجازه میدهد تا قوانین اعتبارسنجی را برای مدلها تعریف کنید و اطمینان حاصل کنید که دادههای ورودی معتبر هستند. این اعتبارسنجیها میتوانند به صورت اتوماتیک در فرمها اعمال شوند.
4- Dependency Injection:
- توضیح: Dependency Injection (DI) یک الگوی طراحی است که به شما اجازه میدهد وابستگیها را به صورت پویا تزریق کنید. ASP.NET Core به صورت داخلی از DI پشتیبانی میکند که به شما کمک میکند کدهای قابل تست و قابل نگهداری بنویسید.
5- Filters:
- توضیح: Filters به شما اجازه میدهند تا منطقهای مشترک را قبل یا بعد از اجرای اکشنها اعمال کنید. انواع مختلفی از فیلترها وجود دارند مانند Authorization، Action، و Exception filters.
6- Areas:
- توضیح: Areas به شما کمک میکنند تا اپلیکیشنهای بزرگ را به بخشهای کوچکتر و قابل مدیریت تقسیم کنید. هر Area میتواند کنترلرها، ویوها و مدلهای خود را داشته باشد.
7- Web API:
- توضیح: ASP.NET Core MVC به شما اجازه میدهد تا APIهای RESTful ایجاد کنید که میتوانند توسط کلاینتهای مختلف (مانند مرورگرها و موبایلها) مصرف شوند.
8- Testability:
- توضیح: ASP.NET Core MVC به گونهای طراحی شده است که تست کردن کدها آسان باشد. استفاده از DI و جداسازی منطقها به شما کمک میکند تا تستهای واحد و یکپارچه بنویسید.
9- Razor View Engine:
- توضیح: Razor یک موتور ویو است که به شما اجازه میدهد کدهای C# را درون HTML بنویسید. این موتور ویو به شما کمک میکند تا ویوهای پویا و قابل نگهداری ایجاد کنید.
10- Strongly Typed Views:
- توضیح: Strongly Typed Views به شما اجازه میدهند تا ویوها را به مدلهای خاصی متصل کنید. این امکان به شما کمک میکند تا از تایپهای قوی و IntelliSense در ویوها استفاده کنید.
11- Tag Helpers:
- توضیح: Tag Helpers به شما اجازه میدهند تا کدهای HTML را با استفاده از کدهای C# غنیسازی کنید. این امکان به شما کمک میکند تا کدهای HTML تمیزتر و قابل نگهداریتری بنویسید.
12- View Components:
- توضیح: View Components به شما اجازه میدهند تا بخشهای قابل استفاده مجدد از UI را ایجاد کنید. این بخشها میتوانند منطقهای پیچیدهای داشته باشند و در ویوهای مختلف استفاده شوند.
این امکانات تنها بخشی از ویژگیهای ASP.NET Core MVC هستند. این فریمورک همچنین از ویژگیهای دیگری مانند پشتیبانی از چند پلتفرم، پشتیبانی از میکروسرویسها و پشتیبانی از کانتینرها نیز برخوردار است.
Overview of ASP.NET Core MVC | Microsoft Learn
https://learn.microsoft.com/en-us/aspnet/core/mvc/overview?view=aspnetcore-8.0
برای ایجاد کنترل پوشه Controllers راست کلیک کنید و در قسمت Add گزینه Controllers انتخاب کنید
سه گزینه دارد
1-کنترلر MVC خالی (Empty MVC Controller):
این نوع کنترلر، یک کنترلر خالی بدون هیچگونه اکشنهای پیشفرض یا ویوها است. معمولاً برای زمانی که نیاز به ایجاد یک کنترلر سفارشی با اکشنها و ویوهای خاص دارید، استفاده میشود.
2-کنترلر MVC با اکشنهای خواندن/نوشتن (MVC Controller with Read/Write Actions):
این نوع کنترلر شامل اکشنهای استاندارد برای عملیات CRUD (ایجاد، خواندن، بروز رسانی، حذف) است. این اکشنها به شما اجازه میدهند تا به صورت پیشفرض با دادهها کار کنید و آنها را در نمایههای مختلف نمایش دهید یا تغییر دهید.
3-کنترلر MVC با ویو، استفاده از Entity Framework (MVC Controller with View, using Entity Framework):
این نوع کنترلر از Entity Framework برای مدیریت دادهها استفاده میکند و به صورت خودکار ویوهایی برای عملیات CRUD ایجاد میکند. این نوع کنترلر به شما اجازه میدهد تا به راحتی با پایگاه داده ارتباط برقرار کنید و دادهها را در ویوها نمایش دهید یا ویرایش کنید.