SlideShare a Scribd company logo
Be a Hero on Day 1 with ASP.Net Boilerplate
Be a Hero on Day 1 with ASP.Net Boilerplate
Be a Hero on Day 1 with ASP.Net Boilerplate
Be a Hero on Day 1 with ASP.Net Boilerplate
Be a Hero on Day 1 with ASP.Net Boilerplate
Be a Hero on Day 1 with ASP.Net Boilerplate
 Get up to speed fast
 Pre-implemented best practices
 Authorization
 Well documented
 Free and Open Source
 Enterprise-consistency
Yea, Docker, Cross Platform, Modern, but:
• No Encrypted Columns
• Only Table-Per-Hierarchy Inheritance (no TPT)
• Less Query Optimization (EF Core only got
group by in 2.1!)
Be a Hero on Day 1 with ASP.Net Boilerplate
Social logins
LDAP (Active Directory) /
ADFS
Forgot password & reset
Two Factor authentication
OpenId Connect login
User lockout
User profile / change
password
Identity Server integration
Chat (with SignalR)
Show website logs / clear
caches
Xamarin mobile application
Code generation extension
Support
https://aspnetzero.com/Documents/Abp-Template-vs-AspNet-Zero
Be a Hero on Day 1 with ASP.Net Boilerplate
Be a Hero on Day 1 with ASP.Net Boilerplate
Live Reloading
Local Styles
LESS or SASS
Swagger
nSwagge
r
Localization
Multi-
Tenancy
Permission
s
Bearer Auth
Pagination (&
Sorting*)
https://material.angular.io/*
Be a Hero on Day 1 with ASP.Net Boilerplate
*
(via AutoMapper)
Custom Validation
Auditing
Soft Delete
C:devABPMyCompany.MyProjectaspnet-
coresrcMyCompany.MyProject.Web.HostApp_DataLogs
Logging
Be a Hero on Day 1 with ASP.Net Boilerplate
Docker
Migrator
Be a Hero on Day 1 with ASP.Net Boilerplate
Testing
XUnit
shouldly
nsubstitute
In-Memory DB
Be a Hero on Day 1 with ASP.Net Boilerplate
1. Add Entity
public class Product : Entity<int> { … }
2. Add To DbContext
public DbSet<Product> Products { get; set; }
3. Add Migration
Add-Migration "Add-Products"
4. Update Database
Update-Database
5. Add a DTO
[AutoMapFrom(typeof(Product))]
public class ProductDto : EntityDto<int> { … }
6. Register a Permission
context.CreatePermission(PermissionNames.Pages_Products, L("Products"));
7. Add an AppService
[AbpAuthorize(PermissionNames.Pages_Products)]
public class ProductsAppService : AsyncCrudAppService<Product,
ProductDto, int, PagedAndSortedResultRequestDto, ProductDto>
8. Run Your App, See Swagger Update, Rejoice
1. Update nSwagger
angularnswagrefresh.bat
2. Register Service Proxy
src/shared/service-proxies/service-proxy.module.ts
ApiServiceProxies.ProductsServiceProxy,
3. Update Left-Hand Nav
srcapplayoutsidebar-nav.component.ts
new MenuItem(this.l('Products'), 'Pages.Users',
'local_grocery_store', '/app/products’),
4. Update Route
srcappapp-routing.module.ts
5. Duplicate Tenant folder Find/Replace
Replace “Tenant” with “Product” and “tenant” with “product”
C:devLeesStoreangularsrcappproducts
6. Register new components in app.module.ts
7. Fix Fields, Tidy Up UI, Rejoice
Server Side
• Authorization ([AbpAuthorize(Pages_Users)] )
• Server-Side Validation
• DataAnnotations, CustomValidator,
UserFriendlyException
• AutoMapper (MyMapProfile : Profile)
• Modules
• Dependency Injection
• Castle Windsor, down side: 1st to register wins
• Auditing (IFullAudited)
• Soft Delete
• Repository Pattern
• Transactions
• Logging / BareTail
• Downside: it owns TRACE, and DEBUG
Client Side
• CLI-based
• Localization
• Nswagger proxy generation
• Pagination / Sorting
• Login, Authentication,
Authorization
• Multi Tenancy
Testing
• In-Memory DB Testing
Deployment
• Docker
• Database Migrator
 Front-End (Angular
 Inconsistencies in spacing (sometimes 2, sometimes 4)
 Underscores in some typescript variables (but not others)
 A large global style.css
 Poorly enforced linting
 No front-end tests
 Refresh tokens and expirations not implemented
 Back-End
 Failed login attempts generate 500 responses (and caught exceptions)
 Castle Windsor’s 1st to register wins for Dependency Injection
 Automatic DI registration (?)
😡
Be a Hero on Day 1 with ASP.Net Boilerplate
PARKINSON'S LAW OF
TRIVIALITYWhen members of an organization give disproportionate weight to trivial issues
Aka bikeshedding
Aka Don’t Miss The Forest For the Trees
</> NORTHERN VIRGINIA CODECAMP
PLATINUM
GOLD
Hosted by
Lee Richardson
@lprichar
www.leerichardson.com
linkedin.com/in/leerichardson
https://www.youtube.com/leerichardson200

More Related Content

PDF
Asp.NETZERO - A Workshop Presentation by Citytech Software
PDF
Laravel 101
PPTX
Introduction to Storm
PPTX
Java 11 to 17 : What's new !?
PDF
Spring Day | Identity Management with Spring Security | Dave Syer
PDF
introduction to Vue.js 3
PPTX
03.Ansible 소개
PDF
Java 8-streams-collectors-patterns
Asp.NETZERO - A Workshop Presentation by Citytech Software
Laravel 101
Introduction to Storm
Java 11 to 17 : What's new !?
Spring Day | Identity Management with Spring Security | Dave Syer
introduction to Vue.js 3
03.Ansible 소개
Java 8-streams-collectors-patterns

What's hot (20)

PDF
서비스 무중단 마이그레이션 : KT에서 Amazon으로
PDF
Laravel presentation
PDF
날로 먹는 Django admin 활용
PDF
Clean code
PDF
Terraform 0.9 + good practices
PPTX
Batchable vs @future vs Queueable
PPTX
JavaScript Promises
PDF
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
PDF
Domino OSGi Development
PPTX
REST API 설계
PDF
Ngrx slides
PPTX
JPAの基礎と現場で役立つ開発Tips
PDF
Introduction to Java 11
PPTX
Dynamodb ppt
PDF
TypeScript - An Introduction
PPTX
Reactjs
PDF
Introduction to react
PPTX
React js for beginners
서비스 무중단 마이그레이션 : KT에서 Amazon으로
Laravel presentation
날로 먹는 Django admin 활용
Clean code
Terraform 0.9 + good practices
Batchable vs @future vs Queueable
JavaScript Promises
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
Domino OSGi Development
REST API 설계
Ngrx slides
JPAの基礎と現場で役立つ開発Tips
Introduction to Java 11
Dynamodb ppt
TypeScript - An Introduction
Reactjs
Introduction to react
React js for beginners
Ad

Similar to Be a Hero on Day 1 with ASP.Net Boilerplate (20)

PDF
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
PDF
TechnicalTerraformLandingZones121120229238.pdf
PPTX
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
PDF
Security DevOps: Wie Sie in agilen Projekten trotzdem sicher bleiben // JAX 2015
PPTX
Integrating Microservices with Apache Camel
PPTX
Real world #microservices with Apache Camel, Fabric8, and OpenShift
PPTX
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
PPTX
IaaS azure_vs_amazon
PDF
Simple REST with Dropwizard
PPTX
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
PPTX
ASP.NET: Present and future
PDF
[Struyf] Automate Your Tasks With Azure Functions
KEY
Rhodes
PPTX
Azure Resource Manager - Technical Primer
PDF
How to Contribute to Apache Usergrid
KEY
Nodejs web,db,hosting
PPTX
My weekend startup: seocrawler.co
PDF
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
PPTX
What's New in .Net 4.5
PPTX
Architectures, Frameworks and Infrastructure
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
TechnicalTerraformLandingZones121120229238.pdf
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Security DevOps: Wie Sie in agilen Projekten trotzdem sicher bleiben // JAX 2015
Integrating Microservices with Apache Camel
Real world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
IaaS azure_vs_amazon
Simple REST with Dropwizard
Testing Rapidly Changing Applications With Self-Testing Object-Oriented Selen...
ASP.NET: Present and future
[Struyf] Automate Your Tasks With Azure Functions
Rhodes
Azure Resource Manager - Technical Primer
How to Contribute to Apache Usergrid
Nodejs web,db,hosting
My weekend startup: seocrawler.co
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
What's New in .Net 4.5
Architectures, Frameworks and Infrastructure
Ad

Recently uploaded (20)

PDF
System and Network Administration Chapter 2
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
history of c programming in notes for students .pptx
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Digital Strategies for Manufacturing Companies
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
System and Network Administraation Chapter 3
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
Digital Systems & Binary Numbers (comprehensive )
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Designing Intelligence for the Shop Floor.pdf
PPTX
assetexplorer- product-overview - presentation
System and Network Administration Chapter 2
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Navsoft: AI-Powered Business Solutions & Custom Software Development
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
history of c programming in notes for students .pptx
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Design an Analysis of Algorithms I-SECS-1021-03
CHAPTER 2 - PM Management and IT Context
Softaken Excel to vCard Converter Software.pdf
Digital Strategies for Manufacturing Companies
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
wealthsignaloriginal-com-DS-text-... (1).pdf
System and Network Administraation Chapter 3
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Digital Systems & Binary Numbers (comprehensive )
PTS Company Brochure 2025 (1).pdf.......
Designing Intelligence for the Shop Floor.pdf
assetexplorer- product-overview - presentation

Be a Hero on Day 1 with ASP.Net Boilerplate

  • 7.  Get up to speed fast  Pre-implemented best practices  Authorization  Well documented  Free and Open Source  Enterprise-consistency
  • 8. Yea, Docker, Cross Platform, Modern, but: • No Encrypted Columns • Only Table-Per-Hierarchy Inheritance (no TPT) • Less Query Optimization (EF Core only got group by in 2.1!)
  • 10. Social logins LDAP (Active Directory) / ADFS Forgot password & reset Two Factor authentication OpenId Connect login User lockout User profile / change password Identity Server integration Chat (with SignalR) Show website logs / clear caches Xamarin mobile application Code generation extension Support https://aspnetzero.com/Documents/Abp-Template-vs-AspNet-Zero
  • 33. 1. Add Entity public class Product : Entity<int> { … } 2. Add To DbContext public DbSet<Product> Products { get; set; } 3. Add Migration Add-Migration "Add-Products" 4. Update Database Update-Database 5. Add a DTO [AutoMapFrom(typeof(Product))] public class ProductDto : EntityDto<int> { … } 6. Register a Permission context.CreatePermission(PermissionNames.Pages_Products, L("Products")); 7. Add an AppService [AbpAuthorize(PermissionNames.Pages_Products)] public class ProductsAppService : AsyncCrudAppService<Product, ProductDto, int, PagedAndSortedResultRequestDto, ProductDto> 8. Run Your App, See Swagger Update, Rejoice
  • 34. 1. Update nSwagger angularnswagrefresh.bat 2. Register Service Proxy src/shared/service-proxies/service-proxy.module.ts ApiServiceProxies.ProductsServiceProxy, 3. Update Left-Hand Nav srcapplayoutsidebar-nav.component.ts new MenuItem(this.l('Products'), 'Pages.Users', 'local_grocery_store', '/app/products’), 4. Update Route srcappapp-routing.module.ts 5. Duplicate Tenant folder Find/Replace Replace “Tenant” with “Product” and “tenant” with “product” C:devLeesStoreangularsrcappproducts 6. Register new components in app.module.ts 7. Fix Fields, Tidy Up UI, Rejoice
  • 35. Server Side • Authorization ([AbpAuthorize(Pages_Users)] ) • Server-Side Validation • DataAnnotations, CustomValidator, UserFriendlyException • AutoMapper (MyMapProfile : Profile) • Modules • Dependency Injection • Castle Windsor, down side: 1st to register wins • Auditing (IFullAudited) • Soft Delete • Repository Pattern • Transactions • Logging / BareTail • Downside: it owns TRACE, and DEBUG Client Side • CLI-based • Localization • Nswagger proxy generation • Pagination / Sorting • Login, Authentication, Authorization • Multi Tenancy Testing • In-Memory DB Testing Deployment • Docker • Database Migrator
  • 36.  Front-End (Angular  Inconsistencies in spacing (sometimes 2, sometimes 4)  Underscores in some typescript variables (but not others)  A large global style.css  Poorly enforced linting  No front-end tests  Refresh tokens and expirations not implemented  Back-End  Failed login attempts generate 500 responses (and caught exceptions)  Castle Windsor’s 1st to register wins for Dependency Injection  Automatic DI registration (?) 😡
  • 38. PARKINSON'S LAW OF TRIVIALITYWhen members of an organization give disproportionate weight to trivial issues Aka bikeshedding Aka Don’t Miss The Forest For the Trees
  • 39. </> NORTHERN VIRGINIA CODECAMP PLATINUM GOLD Hosted by