نصب قالب پروژه از طریق نیوگت
dotnet new --install DNTFrameworkCoreTemplateAPI::*
dotnet new dntcore-api
بررسی قسمتهای مختلف قالب پروژه
2- پروژه Infrastructure دربرگیرنده DbContext، مهاجرتها و کلاسهای تنظیمات نگاشت موجودیتها به جداول بانک اطلاعاتی پروژه میباشد. به عنوان مثال، به صورت پیشفرض تنظیمات نگاشت موجودیتهای کاربر و گروهکاربری و موجودیتهای وابسته آنها در این قالب پیادهسازی شدهاند. همچنین دو مهاجرت CreateInitialSchema و CreateIdentitySchema ایجاده شدهاند.
3- پروژه Application دربرگیرنده مدلها/DTOها، اعتبارسنجهای مدلها، سرویسها و همچنین Eventهای سفارشی و Handlerهای رویدادهای متناظر با موجودیتهای سیستم، میباشد. همانطور که شکل زیر ملاحظه میکنید، برای موجودیتهای کاربر و گروهکاربری طراحی و پیادهسازی پیشفرضی از قسمتهای مذکور ارائه شده است.
5- از پروژه Common نیز میتوان به عنوان دربرگیرنده کلاسهای کمکی مورد استفاده در سایر قسمتها، بهره برد.
6- پروژه UnitTests دربرگیرده آزمونهای واحد پروژه میباشد. به عنوان مثال، به صورت پیشفرض آزمونهای واحد مرتبط با UserValidator و RoleValidator به صورت کامل در این قالب تدارک دیده شده است.
7- پروژه IntegrationTests دربرگیرنده آزمونهای جامعیت مرتبط با پروژه میباشد. به عنوان مثال، آزمونهای جامعیت متناظر با سرویسهای کاربر و گروهکاربری نیز در این قالب تدارک دیده شده است.
نکته: بدلیل اینکه مکانیزم اعتبارسنجی خودکار ورودیها به عنوان یک Aspect برروی این سرویسها اعمال شده است و بدین ترتیب در فرآیند تست سرویسها نیز دخالت دارند، به صورت ناخواسته به سمت آزمون جامعیت سوق پیدا کردهایم. با این حال اگر برای لایه بالاتر/خارجی پروژه خود یا همان API در قالب، قصد تهیه آزمون جامعیت داشته باشید، میتوانید این تنظیمات ValidationInterceptor را از فایل ApplicationRegistry در پروژه Application حذف کرده و آزمونهای سرویسها را در قالب آزمون واحد انجام دهید. با این حال باید توجه کنید که برای برخی از سناریوها که امکانات هیچ کدام از مهیاکنندههای InMemory و SQLite درون حافظه، جوابگوی نیاز شما نباشد، نیاز خواهید داشت تا از بانک اطلاعاتی واقعی از جمله LocalDb استفاده کنید؛ در این صورت آزمونهای شما نیز در ردیف آزمونهای جامعیت قرار خواهند داشت.
8- پروژه API دربرگیرنده کنترلرها، هابهای SignalR، زیرساخت Authentication مبتنیبر JWT و سایر تنظیمات آغازین پروژه، میباشد. CRUD API متناظر با موجودیتهای کاربر و گروهکاربری نیز در این قالب تدارک دیده شده است.
کدهای کامل این قسمت را میتوانید از اینجا دریافت کنید.