dotnet-api-boilerplate
A .Net 5.0 Webapi Boilerplate / Template Project. المستودعات ، تبخير ، Mapper ، serilog وأكثر تنفيذ.
الهدف من هذا المشروع هو أن يكون KickStart ل .net webapi الخاص بك ، وتنفيذ الأنماط والتقنيات الأكثر استخدامًا لاتفاقية واجهة برمجة تطبيقات مريحة في .NET ، مما يجعل عملك أسهل.
كيفية الجري
- استخدم هذا القالب (github) أو استنساخ/تنزيل إلى مكان عملك المحلي.
- قم بتنزيل أحدث .NET SDK و Visual Studio/Code.
مستقل
- قد تحتاج إلى مثيل تشغيل من MSSQL ، مع تهيئة الترحيل المناسبة.
- يمكنك تشغيل DB فقط على Docker. لذلك ، يجب عليك تغيير سلسلة الاتصال الخاصة بك إلى "Server = 127.0.0.1 ؛ قاعدة البيانات = master ؛ user = sa ؛ password = yourspassword123" وقم بتشغيل الأمر التالي:
docker-compose up -d db-server . القيام بذلك ، سيكون التطبيق قادرًا على الوصول إلى حاوية DE لخادم DB. - إذا كنت تريد ، يمكنك تغيير databaseextension لاستخدام useinMemoryDatabase ، بدلاً من MSSQL.
- انتقل إلى مجلد SRC/BoilerPlate.Api وقم بتشغيل
dotnet run ، أو في Visual Studio ، قم بتعيين مشروع API كبدء وتشغيله كوحدة تحكم أو Docker (وليس IIS). - تفضل بزيارة http: // localhost: 5000/api-docs أو https: // localhost: 5001/api-docs للوصول إلى تبخير التطبيق.
عامل ميناء
- قم بتشغيل
docker-compose up -d في دليل الجذر ، أو ، في Visual Studio ، قم بتعيين مشروع Docker-Cormse كبدء تشغيل وتشغيل. يجب أن يبدأ هذا التطبيق و DB.
- بالنسبة إلى Docker-Cormse ، يجب عليك تشغيل هذا الأمر على المجلد الجذري:
dotnet dev-certs https -ep https/aspnetapp.pfx -p yourpassword استبدال "Yourpassword" بشيء آخر في هذا الأمر وملف docker-corm.override.yml. هذا يخلق شهادة HTTPS.
- تفضل بزيارة http: // localhost: 5000/api-docs أو https: // localhost: 5001/api-docs للوصول إلى تبخير التطبيق.
إجراء اختبارات
في المجلد الجذر ، قم بتشغيل dotnet test . سيحاول هذا الأمر العثور على جميع مشاريع الاختبار المرتبطة بملف SLN.
يحتوي هذا المشروع على:
- Swaggerui
- entityframework
- السيارات
- مستودع عام (لتسهيل بسهولة مستودع Crud)
- serilog مع تسجيل الطلب وأحواض القابلة للتكوين بسهولة
- .NET التبعية حقن
- تصفية الموارد
- ضغط الاستجابة
- CI (إجراءات github)
- اختبارات الوحدة
- اختبارات التكامل
- دعم الحاويات مع Docker و Docker-Corms
هيكل المشروع
- خدمات
- يخزن هذا المجلد واجهات برمجة التطبيقات وأي مشروع يرسل البيانات إلى المستخدمين.
- Boilerplate.Api
- هذا هو مشروع API الرئيسي. فيما يلي جميع وحدات التحكم وتهيئة API التي سيتم استخدامها.
- Docker-corm
- يوجد هذا المشروع للسماح لك بتشغيل Docker-Corm مع Visual Studio. أنه يحتوي على إشارة إلى ملف Docker-Corpose وسيقوم ببناء جميع تبعيات المشاريع وتشغيله.
- طلب
- يخزن هذا المجلد جميع عمليات تحويل البيانات بين واجهة برمجة التطبيقات الخاصة بك وطبقة المجال الخاصة بك. كما أنه يحتوي على منطق عملك.
- اِختِصاص
- يحتوي هذا المجلد على نماذج عملك ، والتعداد والواجهات الشائعة.
- boilerplate.domain.core
- يحتوي على الكيان الأساسي لجميع كيانات المجال الأخرى ، وكذلك واجهة تنفيذ المستودع.
- Boilerplate.domain
- يحتوي على نماذج الأعمال والتعداد.
- ظهور
- يحتوي هذا المجلد على جميع مستودعات الوصول إلى البيانات ، وسياقات قاعدة البيانات ، أي شيء يصل إلى البيانات الخارجية.
- Boilerplate.Infrancture
- يحتوي هذا المشروع على DBContext ، وتطبيق عام لنمط المستودع ومستودع البطل (فئة المجال).
اعتماد مشروعك
- قم بإزالة/إعادة تسمية جميع الأشياء المتعلقة بالبطل باحتياجاتك.
- إعادة تسمية الحل والمشاريع ومساحات الأسماء ومجموعة القواعد لاستخدامك.
- قم بتغيير Dockerfile و Docker-corm.yml إلى أسماء Csproj/المجلد الجديدة.
- أعط هذا الريبو نجم!
الهجرات
لتشغيل الترحيل في هذا المشروع ، قم بتشغيل الأمر التالي على المجلد الجذر:
-
dotnet ef migrations add InitialCreate --startup-project .srcBoilerplate.Api --project .srcBoilerplate.Infrastructure
سيقوم هذا الأمر بتعيين نقطة الإدخال للترحيل (المسؤول عن اختيار DBProvider {SQLServer ، MySQL ، إلخ} وسلسلة الاتصال) والمشروع نفسه سيكون البنية التحتية ، حيث يوجد DBContext.
إذا أعجبك ذلك ، فاعطها نجمة
إذا كان هذا القالب مفيدًا لك ، أو إذا تعلمت شيئًا ما ، فالرجاء إعطائه نجمًا!
شكرًا
هذا المشروع له تأثير كبير على https://github.com/lkurzyniec/netcore-boilerplate و https://github.com/eduardopires/equinoxproject. إذا كان لديك وقت ، فيرجى زيارة هذه الإعادة ، ومنحهم نجمة أيضًا!
عن
تم تطوير هذا القالب/القالب من قبل Yan Pitangui بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.