SlideShare une entreprise Scribd logo
1  sur  36
Enterprise Software Development
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Enterprise Apps
with ASP.NET Core 2.1
.NET User Group Tour – June 2017
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
SSW Solution Architect
Jason Taylor
@JasonGtAu @SSW_TV
codingflow.net
github.com/JasonGT
Developer* Since 1992
1 MHz CPU
20 KB Memory
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Architecture & Design
Persistence Layer
Application Layer
Infrastructure Layer
Presentation Layer
Domain Layer
Agenda
Architecture & Design
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Independent of frameworks
Testable
Independent of UI
Independent of database
Independent of external agency
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Application
Domain
Presentation
Clean Architecture
Unit of Work and Repository Patterns
Should we implement these patterns?
It isn’t always the best choice, because:
• DbContext insulates your code from database changes
• DbContext acts as a unit of work
• DbSet acts as a repository
• EF Core has features for unit testing without repositories
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Independent of frameworks*
Testable
Independent of UI
Independent of database
Independent of external agency
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Application
Domain
Presentation
Clean Architecture
Key Points
Domain contains enterprise-wide types and logic
Application contains application-specific models and logic
Infrastructure (including Persistence) contain all external concerns
Presentation contains frontend apps
Infrastructure and Presentation components can be replaced with
minimal effort
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Domain Layer
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Overview
Entities
Value Objects
Enumerations
Logic
Exceptions
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Application
Domain
Presentation
Demo
Reviewing the Domain layer
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Key Points
Use data annotations sparingly
Always define foreign keys
Use value objects when appropriate
Initialise all collections
Create custom domain exceptions
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Application Layer
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Overview
Interfaces
Models
Logic
Validators
Events
Exceptions
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Application
Domain
Presentation
Demo
Reviewing the Application layer
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Key Points
Use CQRS to simply your overall design
Use MediatR to simplify management of requests / responses,
commands, queries, notifications and events
Know the difference between View Models (VMs) and Data
Transfer Objects (DTOs)
Use FluentValidation for complex validation scenarios
Create custom application exceptions
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Persistence Layer
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Overview
DbContext
Configurations
Migrations
Seeding
Abstractions
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Application
Domain
Presentation
Demo
Reviewing the Persistence layer
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Key Points
Independent of the database
Conventions over configuration
Use Fluent API Configuration over Data Annotations
Use an extension to automatically apply all entity type
configurations
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Infrastructure Layer
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Overview
Clients
File Systems
Email / SMS
System Clock
Anything External
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Application
Domain
Presentation
Demo
Reviewing the Infrastructure layer
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Key Points
Contains classes for accessing external resources
Implements interfaces within the Application layer
Utilises DTOs defined within the Application layer
No layers depend on Infrastructure layer, e.g.
Presentation layer
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Presentation Layer
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Overview
Web Forms
MVC
Razor Pages
Web API
Single Page Apps
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Application
Domain
Presentation
Demo
Reviewing the Presentation layer
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Key Points
Controllers should not contain any application logic
All application logic belongs in the application layer
Utilising Open API bridges the gap between the
frontend and backend
Create and consume well defined view models
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Recommend Resources
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Northwind Traders
A sample application built
using ASP.NET Core and EF
Core.
bit.ly/northwind-traders
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Building Monoliths
Clean Architecture
Azure
aka.ms/webappebook
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Building Microservices
Microservices
Containers
DDD
Azure
aka.ms/microservicesebook
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Clean Architecture
Robert C. Martin
bit.ly/clean-architecture-book
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Questions?
Join the Conversation #EnterpriseApps #AspNetCore @JasonGtAu
Thank you!
info@ssw.com.au
www.ssw.com.au
Sydney | Melbourne | Brisbane

Contenu connexe

Tendances

Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and Tell
E. Camden Fisher
 

Tendances (20)

CI, CD with Docker, Jenkins and Tutum
CI, CD with Docker, Jenkins and TutumCI, CD with Docker, Jenkins and Tutum
CI, CD with Docker, Jenkins and Tutum
 
Jenkins
JenkinsJenkins
Jenkins
 
Pipeline based deployments on Jenkins
Pipeline based deployments  on JenkinsPipeline based deployments  on Jenkins
Pipeline based deployments on Jenkins
 
CI and CD with Jenkins
CI and CD with JenkinsCI and CD with Jenkins
CI and CD with Jenkins
 
DevOps with Kubernetes
DevOps with KubernetesDevOps with Kubernetes
DevOps with Kubernetes
 
CICD Pipelines for Microservices Best Practices
CICD Pipelines for Microservices Best Practices CICD Pipelines for Microservices Best Practices
CICD Pipelines for Microservices Best Practices
 
Dev ops using Jenkins
Dev ops using JenkinsDev ops using Jenkins
Dev ops using Jenkins
 
SonarQube: Continuous Code Inspection
SonarQube: Continuous Code InspectionSonarQube: Continuous Code Inspection
SonarQube: Continuous Code Inspection
 
Managing Terraform Module Versioning and Dependencies
Managing Terraform Module Versioning and Dependencies Managing Terraform Module Versioning and Dependencies
Managing Terraform Module Versioning and Dependencies
 
TypeScript VS JavaScript.pptx
TypeScript VS JavaScript.pptxTypeScript VS JavaScript.pptx
TypeScript VS JavaScript.pptx
 
Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and Tell
 
Advanced Git Presentation By Swawibe
Advanced Git Presentation By SwawibeAdvanced Git Presentation By Swawibe
Advanced Git Presentation By Swawibe
 
CICD with Jenkins
CICD with JenkinsCICD with Jenkins
CICD with Jenkins
 
SRE Conference 2022 - How to Build a Healthy On-Call Culture
SRE Conference 2022 - How to Build a Healthy On-Call CultureSRE Conference 2022 - How to Build a Healthy On-Call Culture
SRE Conference 2022 - How to Build a Healthy On-Call Culture
 
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
CI CD Pipeline Using Jenkins | Continuous Integration and Deployment | DevOps...
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
 
[수정본] 우아한 객체지향
[수정본] 우아한 객체지향[수정본] 우아한 객체지향
[수정본] 우아한 객체지향
 
Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins Introduction
 
Kubernetes in Docker
Kubernetes in DockerKubernetes in Docker
Kubernetes in Docker
 

Similaire à Building Enterprise Apps with ASP.NET Core 2.1

Mix Tech Ed Update No Video
Mix Tech Ed Update No VideoMix Tech Ed Update No Video
Mix Tech Ed Update No Video
AllyWick
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan
 

Similaire à Building Enterprise Apps with ASP.NET Core 2.1 (20)

Clean Architecture By Jason Taylor
Clean Architecture By Jason TaylorClean Architecture By Jason Taylor
Clean Architecture By Jason Taylor
 
Mix Tech Ed Update No Video
Mix Tech Ed Update No VideoMix Tech Ed Update No Video
Mix Tech Ed Update No Video
 
An agile approach to cloud infrastructure
An agile approach to cloud infrastructureAn agile approach to cloud infrastructure
An agile approach to cloud infrastructure
 
Developing an Enterprise Architecture Capability
Developing an Enterprise Architecture CapabilityDeveloping an Enterprise Architecture Capability
Developing an Enterprise Architecture Capability
 
Resume_A_Vinod
Resume_A_VinodResume_A_Vinod
Resume_A_Vinod
 
J2EE Performance And Scalability Bp
J2EE Performance And Scalability BpJ2EE Performance And Scalability Bp
J2EE Performance And Scalability Bp
 
Asp.net Web Development.pdf
Asp.net Web Development.pdfAsp.net Web Development.pdf
Asp.net Web Development.pdf
 
Visual studio
Visual studioVisual studio
Visual studio
 
What is ASP.NET and Why do we need it?
What is ASP.NET and Why do we need it?What is ASP.NET and Why do we need it?
What is ASP.NET and Why do we need it?
 
Domain Modeling & Full-Stack Web Development F#
Domain Modeling & Full-Stack Web Development F#Domain Modeling & Full-Stack Web Development F#
Domain Modeling & Full-Stack Web Development F#
 
Experiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure teamExperiences using CouchDB inside Microsoft's Azure team
Experiences using CouchDB inside Microsoft's Azure team
 
Stephane Lapointe & Alexandre Brisebois: Développer des microservices avec Se...
Stephane Lapointe & Alexandre Brisebois: Développer des microservices avec Se...Stephane Lapointe & Alexandre Brisebois: Développer des microservices avec Se...
Stephane Lapointe & Alexandre Brisebois: Développer des microservices avec Se...
 
Resume: DevOps/Technology Architect - Satya Prakash
Resume: DevOps/Technology Architect   -  Satya PrakashResume: DevOps/Technology Architect   -  Satya Prakash
Resume: DevOps/Technology Architect - Satya Prakash
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2
 
Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code First
 
Visual Studio.NET
Visual Studio.NETVisual Studio.NET
Visual Studio.NET
 
Titanium presentation
Titanium presentationTitanium presentation
Titanium presentation
 
All the amazing features of asp.net core
All the amazing features of asp.net coreAll the amazing features of asp.net core
All the amazing features of asp.net core
 
.NET Overview & Roadmap
.NET Overview & Roadmap.NET Overview & Roadmap
.NET Overview & Roadmap
 
Soprex framework on .net in action
Soprex framework on .net in actionSoprex framework on .net in action
Soprex framework on .net in action
 

Dernier

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 

Dernier (20)

%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 

Building Enterprise Apps with ASP.NET Core 2.1

Notes de l'éditeur

  1. Now I have an i7 with 16GB of RAM and it’s too slow. Plus there’s no tape drive so that kind of sucks.
  2. Todo: Talk about the dependency inversion principle. Todo: Talk about the interfaces within the core. Todo: Show alternative stacks.
  3. Todo: Talk about the dependency inversion principle. Todo: Talk about the interfaces within the core. Todo: Show alternative stacks.
  4. Todo: Mention how I have tried to break the application up by feature – products, orders, customers, and so on. I might not have it quite right yet – time will tell – but it’s a good start. Segregating the application this way make’s it obvious what’s important, and give me a logical starting pointing should I need to break it up into microservices.
  5. Todo: Mention how I have tried to break the application up by feature – products, orders, customers, and so on. I might not have it quite right yet – time will tell – but it’s a good start. Segregating the application this way make’s it obvious what’s important, and give me a logical starting pointing should I need to break it up into microservices.
  6. Todo: Mention how I have tried to break the application up by feature – products, orders, customers, and so on. I might not have it quite right yet – time will tell – but it’s a good start. Segregating the application this way make’s it obvious what’s important, and give me a logical starting pointing should I need to break it up into microservices.
  7. Todo: Mention how I have tried to break the application up by feature – products, orders, customers, and so on. I might not have it quite right yet – time will tell – but it’s a good start. Segregating the application this way make’s it obvious what’s important, and give me a logical starting pointing should I need to break it up into microservices.
  8. Todo: Mention how I have tried to break the application up by feature – products, orders, customers, and so on. I might not have it quite right yet – time will tell – but it’s a good start. Segregating the application this way make’s it obvious what’s important, and give me a logical starting pointing should I need to break it up into microservices.