نحوه صحیح لایه بندی پروژه های Web api چگونه است ؟
لطفا بفرمایید نحوه صحیح و اصولی لایه بندی یک پروژه از نوع Web Api چگونه است ؟ چه لایه هایی برای یک پروژه Web Api مورد نیاز هست ؟
لایه بندی پروژه های Web Api
دقت کنید لایه بندی و تفکیک لایه ها در یک پروژه Web Api با یک پروژه معمولی (FullStack) تفاوت خاصی نداره و شما می تونید مثل همون پروژه ها معمولی لایه بندی هاتون رو انجام بدید.
همون طور که در تصویر بالا مشاهده می کنید معمولا برای لایه بندی پروژه باید 6 لایه در نظر بگیریم. لایه ها از بالا (بالاترین لایه Presentation می باشد) به سمت پایین (پایین ترین لایه Common می باشد) می باشند و هر لایه با تمامی لایه های زیرین خود ارتباط دارد. در اصل میشه اینجوری گفت که هر لایه که بالاتر قرار میگیره به همه لایه های زیرین خود رفرنس دارد و از کلاسها و توابع و متغیرهای لایه های زیرین خود می تواند استفاده کند.
کاربرد لایه های پروژه چیست ؟
- لایه Presentation یا UI یا WEB یا API
این لایه بالاترین لایه در لایه بندی می باشد. اگر پروژه شما از نوع وب معمولی باشد ظاهر و شکل و شمایل پروژه شما در این لایه قرار دارد. یعنی چیزی که کاربر نهایی می تواند ببینید محتویات این لایه می باشد. اگر هم پروژه شما از نوع API باشد کنترلرها و API هایی که صدا زده می شود در این لایه تعریف می شود.
- لایه WebFramework
در این لایه موارد مشترک لایه بالاتر قرار می گیرد. مثلا تنظیمات اجرا نرم افزار، Middleware ها یا همان میان افزارها، کانفیگ های نرم افزار و ... . اگر از Asp.net Core استفاده می کنید.
- لایه Services
در این لایه سرویس های کاربردی، اینترفیس ها و DbService ها نگهداری میشن. برای کار با دیتابیس و ریپازیتوری ها و کنترل اونها از اینترفیس های موجود در این لایه استفاده میشه.
- لایه Data یا Data Access
در این لایه خود DbContext و ریپازیتوری ها نگهداری می شود. همچنین می توان در این لایه رول های دیتابیسی یا Fluent Api ها را هم نگهداری کرد.
- لایه Entities یا Domain یا Model
تعاریف جداول، انتیتی ها، مدل ها، Dto ها و ویومدل ها را می توان در این لایه نگهداری کرد.
- لایه Common یا Utilities یا Infrustructure
این لایه پایه ای ترین و زیرین ترین لایه می باشد. این لایه ارتباطی با پروژه اصلی ندارد و میتوان از آن در همه پروژه ها استفاده کرد. کلاسهای عمومی مثل کلاسهای تاریخ و زمان، کلاسهای کنترل string ها و ... در این لایه نگهداری می شود.
نکته : دقت کنید شما مجبور نیستید حتما پروژه خودتون رو اجبارا با این ساختار ایجاد کنید و می توانید هر طور که راحتتر هستید کارتون رو انجام بدید. این لایه بندی صرفا یک پیشنهاد هست و هر طوری هم که مایل باشید می تونید تغییرش بدید.
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2