SlideShare a Scribd company logo
Bojan Veljanovski 
Software Development Engineer | Technical Architect 
HASELT 
Ready 
Real-world software design 
practices when developing 
ASP.NET web systems
General Sponsors 
Platinum Sponsors 
Gold Sponsors 
Silver Sponsors 
Bronze Sponsors 
Promoters 
Ready
A quick chat 
• Users interact with apps by INTENT 
• Server processes ACTIONS 
• Who triggers those ACTIONS? 
Ready
Example of User Intent in medical institution 
• Actor: Patient 
Ready 
– Request an appointment with the doctor 
– Cancel appointment 
– Re-schedule appointment 
• Actor: Doctor 
– Confirm requested patient’s appointment 
– Deny requested patient’s appointment 
– Check schedule 
– Look into historical medical records for the patient
Example of a System Action 
• Patient Actions 
Ready 
– RequestNewAppointment 
– CancelRequestedAppointment 
– RequestAppointmentReschedule 
• Doctor Actions 
– ConfirmRequestedAppointment 
– DenyRequestedAppointment 
– GetSchedule 
– GetHistoricalRecordsForPatient
Example of a System Action 
• Patient Actions 
Ready 
– RequestNewAppointment 
– CancelRequestedAppointment 
– RequestAppointmentReschedule 
• Doctor Actions 
– ConfirmRequestedAppointment 
– DenyRequestedAppointment 
– GetSchedule 
– GetHistoricalRecordsForPatient 
• WRITE 
• WRITE 
• WRITE 
• WRITE 
• WRITE 
• READ 
• READ
Example of a System Action 
• Patient Actions 
Ready 
– RequestNewAppointment 
– CancelRequestedAppointment 
– RequestAppointmentReschedule 
• Doctor Actions 
– ConfirmRequestedAppointment 
– DenyRequestedAppointment 
– GetSchedule 
– GetHistoricalRecordsForPatient 
• Command 
• Command 
• Command 
• Command 
• Command 
• Query 
• Query
Evolving Architecture 
Users work with apps by INTENT. 
Your UI should capture it! 
Your system should process it! 
Ready
Agenda 
• Evolving Architectures 
• Command & Query Implementation 
• Component Oriented Single Page Modules 
• Evolutionary database development 
• Summary 
Ready
Bojan Veljanovski 
Ready 
• Software Development Engineer and Technical Architect 
at HASELT 
• HyperLAB Coordinator 
• Technical Speaker 
• Microsoft Certified Professional 
• Former Microsoft Student Partner 
Favorite topics: 
– Software Architectures and Design 
– Code. Code. Code. 
– Emerging technologies
Evolving Architectures 
(from high-level perspective) 
Ready
Evolving Architecture 
Classical Layered Architecture 
Ready 
UI 
DTO 
ASP.NET 
DTO 
App Services 
Domain Object 
Data Access Logic 
Data Structure 
DB 
Validation 
Business Logic 
Data Reads 
Data Writes
Evolving Architecture 
Adding Query 
Ready 
UI 
DTO 
ASP.NET 
DTO 
App Services 
Domain Object 
Data Access Logic 
Data Structure 
DB 
Validation 
Business Logic 
Some Data Reads 
Data Writes 
Query 
Handler 
Data Reads 
Query Result 
Domain Object
Evolving Architecture 
Going further with the Query 
Data Reads 
Ready 
UI 
DTO 
ASP.NET 
DTO 
App Services 
Domain Object 
Data Access Logic 
Data Structure 
DB 
Validation 
Business Logic 
Some Data Reads 
Data Writes 
Query Result 
Query 
Handler 
Denorm 
Structure
Evolving Architecture 
Adding Command 
Data Reads 
Ready 
UI 
DTO 
ASP.NET 
DTO 
App Services 
Domain Object 
Data Access Logic 
Data Structure 
DB 
Validation 
Business Logic 
Some Reads 
Writes 
Query Result 
Query 
Handler 
Denorm 
Structure 
Command 
Command 
Handler 
Domain Object
Evolving Architecture 
Some cleaning 
Data Reads 
Ready 
UI 
ASP.NET 
Data Access Logic 
Data Structure 
DB 
Validation 
Business Logic 
Some Reads 
Writes 
Query Result 
Query 
Handler 
Denorm 
Structure 
Command 
Command 
Handler 
Domain Object
Evolving Architecture 
Some cleaning 
Data Reads 
Ready 
UI 
ASP.NET 
Data Access Logic 
Data Structure 
DB 
Validation 
Business Logic 
Some Reads 
Writes 
Query Result 
Query 
Handler 
Denorm 
Structure 
Command 
Command 
Handler 
Domain Object 
Query Result Command
Evolving Architecture 
What about collaborative 
systems, real-time and stuff? 
Ready
Evolving Architecture 
Look ma’, real-time 
Ready 
UI 
ASP.NET 
DAL 
DB 
Query 
Handler 
Socket: PUSH 
Command 
Handler Event Handler Event
Evolving Architecture 
Full-Featured CQRS (overview) 
Ready
Command & Query Implementation 
Command & Query 
Implementation 
Ready
Demo: 
Implementing 
CQS 
Ready
Component Oriented 
Single Page Modules 
Ready
Component Oriented Single Page Modules 
Common seen SPA structure 
• Controllers 
• Models 
• ViewModels 
• Views 
• Modules 
• Components 
• Utils 
• Services 
Ready
Component Oriented Single Page Modules 
There is a better way 
• Modules 
• Components 
Ready 
– View 
– ViewModel 
• Shared 
– Events (message constant) 
– Actions (message constant) 
– MessageBus (pub/sub) 
• Data Services 
– API Calls 
– LocalStorage
Component Oriented Single Page Modules 
Rules of thumb 
• One Module per Page 
• Focused modules 
• Cohesive components 
Ready 
– Not *everything* should be reusable 
• Components don’t TALK they: 
– REACT (to messages) 
– EMIT (messages) 
• Message types 
– Event 
– Action
Component Oriented Single Page Modules 
Ready 
Message 
Bus 
Data 
Services 
API 
Module A 
Module B 
Module C 
pub 
sub 
pub 
sub 
pub 
sub
Component Oriented Single Page Modules 
Flux Architecture 
Ready
Demo 
COSPM 
Ready
Evolutionary Database 
Development 
Ready
Evolutionary Database Development 
Evolutionary Database 
Development 
• A DB consist of Schema and Test Data 
• Schema is Source Code 
• Schema changes are tracked over-time 
• Version it in GIT 
• Every dev gets its own db instance 
• Devs make frequent integrations into shared master 
db 
• FluentMigration mechanisms help us build our db in 
any RDMS system we want 
Ready
Demo 
Fluent 
Migration 
Ready
Summary 
• Users work with apps by INTENT 
• System processes ACTION triggered by INTENT 
• READS are different from WRITES 
Ready 
– Treat them as so, in your code, yo 
• Components are simple, inter-components communication 
is hard 
• Database schema is source code too – it evolves 
– Version it 
• Don’t fall into the tech hype hole 
– Think 
• There are no ‘best practices’, only ‘good practices in 
context’
Questions 
Ready 
Complete the 
evaluation and earn the 
chance to win valuable 
prizes from our 
sponsors
Thank you 
Ready

More Related Content

What's hot (20)

Integration Best Practices
Integration Best PracticesIntegration Best Practices
Integration Best Practices
Gabriel Michaud
 
Cucumber_Capybara
Cucumber_CapybaraCucumber_Capybara
Cucumber_Capybara
Alexander Polovinko
 
7 Cool Things to Demo in Acumatica 5.0
7 Cool Things to Demo in Acumatica 5.07 Cool Things to Demo in Acumatica 5.0
7 Cool Things to Demo in Acumatica 5.0
Gabriel Michaud
 
Best Practice In Software Development
Best Practice In Software DevelopmentBest Practice In Software Development
Best Practice In Software Development
SARCCOM
 
Kentico CMS 7 – Mobile web development
Kentico CMS 7 – Mobile web developmentKentico CMS 7 – Mobile web development
Kentico CMS 7 – Mobile web development
Thomas Robbins
 
Enterprise beans
Enterprise beansEnterprise beans
Enterprise beans
vpulec
 
Kentico CMS
Kentico CMSKentico CMS
Kentico CMS
Raavish patel
 
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
Sencha
 
Web fundamentals
Web fundamentals Web fundamentals
Web fundamentals
Majd Lefi
 
Jdbc
JdbcJdbc
Jdbc
Sujit Kumar
 
Microservice at a glance
Microservice at a glanceMicroservice at a glance
Microservice at a glance
Ketan Ghumatkar
 
JIIT; Project 2013- 14; CSE; project presentation
JIIT; Project 2013- 14; CSE; project presentationJIIT; Project 2013- 14; CSE; project presentation
JIIT; Project 2013- 14; CSE; project presentation
Rajat Sharma
 
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGiOSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
mfrancis
 
Basics of Silverlight 1
Basics of Silverlight 1Basics of Silverlight 1
Basics of Silverlight 1
Meenakshi Kumar
 
Web ml Explained
Web ml ExplainedWeb ml Explained
Web ml Explained
Waseem Khan
 
Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1
WSO2
 
PowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application DeploymentPowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application Deployment
zulmach .
 
Pal gov.tutorial3.session7
Pal gov.tutorial3.session7Pal gov.tutorial3.session7
Pal gov.tutorial3.session7
Mustafa Jarrar
 
Tom van gaever-sp_serviceapplications_spsbe17
Tom van gaever-sp_serviceapplications_spsbe17Tom van gaever-sp_serviceapplications_spsbe17
Tom van gaever-sp_serviceapplications_spsbe17
BIWUG
 
Basic fundamentals of web application development
Basic fundamentals of web application developmentBasic fundamentals of web application development
Basic fundamentals of web application development
sofyjohnson18
 
Integration Best Practices
Integration Best PracticesIntegration Best Practices
Integration Best Practices
Gabriel Michaud
 
7 Cool Things to Demo in Acumatica 5.0
7 Cool Things to Demo in Acumatica 5.07 Cool Things to Demo in Acumatica 5.0
7 Cool Things to Demo in Acumatica 5.0
Gabriel Michaud
 
Best Practice In Software Development
Best Practice In Software DevelopmentBest Practice In Software Development
Best Practice In Software Development
SARCCOM
 
Kentico CMS 7 – Mobile web development
Kentico CMS 7 – Mobile web developmentKentico CMS 7 – Mobile web development
Kentico CMS 7 – Mobile web development
Thomas Robbins
 
Enterprise beans
Enterprise beansEnterprise beans
Enterprise beans
vpulec
 
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
SenchaCon 2016: Creating a Flexible and Usable Industry Specific Solution - D...
Sencha
 
Web fundamentals
Web fundamentals Web fundamentals
Web fundamentals
Majd Lefi
 
Microservice at a glance
Microservice at a glanceMicroservice at a glance
Microservice at a glance
Ketan Ghumatkar
 
JIIT; Project 2013- 14; CSE; project presentation
JIIT; Project 2013- 14; CSE; project presentationJIIT; Project 2013- 14; CSE; project presentation
JIIT; Project 2013- 14; CSE; project presentation
Rajat Sharma
 
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGiOSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
OSGi Community Event 2010 - VMware and SpringSource Projects on OSGi
mfrancis
 
Web ml Explained
Web ml ExplainedWeb ml Explained
Web ml Explained
Waseem Khan
 
Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1Better Enterprise Integration With the WSO2 ESB 4.5.1
Better Enterprise Integration With the WSO2 ESB 4.5.1
WSO2
 
PowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application DeploymentPowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application Deployment
zulmach .
 
Pal gov.tutorial3.session7
Pal gov.tutorial3.session7Pal gov.tutorial3.session7
Pal gov.tutorial3.session7
Mustafa Jarrar
 
Tom van gaever-sp_serviceapplications_spsbe17
Tom van gaever-sp_serviceapplications_spsbe17Tom van gaever-sp_serviceapplications_spsbe17
Tom van gaever-sp_serviceapplications_spsbe17
BIWUG
 
Basic fundamentals of web application development
Basic fundamentals of web application developmentBasic fundamentals of web application development
Basic fundamentals of web application development
sofyjohnson18
 

Viewers also liked (17)

Csi ( las vegas )
Csi ( las vegas )Csi ( las vegas )
Csi ( las vegas )
JuanPedro15
 
Proyectos gestionados por el pp de Aldeaquemada de 2007 a 2011
Proyectos gestionados por el pp de Aldeaquemada de 2007 a 2011Proyectos gestionados por el pp de Aldeaquemada de 2007 a 2011
Proyectos gestionados por el pp de Aldeaquemada de 2007 a 2011
manuelfdezvela
 
How best known brands were named
How best known brands were namedHow best known brands were named
How best known brands were named
Bhavna Vaja
 
Air pollution juan pedro jiménez
Air pollution   juan pedro jiménezAir pollution   juan pedro jiménez
Air pollution juan pedro jiménez
JuanPedro15
 
Volcano presentacion
Volcano presentacionVolcano presentacion
Volcano presentacion
JuanPedro15
 
Blessing to your world power pt
Blessing to your world power ptBlessing to your world power pt
Blessing to your world power pt
drsteveventola
 
敏捷的技术部 敏捷的产品
敏捷的技术部 敏捷的产品敏捷的技术部 敏捷的产品
敏捷的技术部 敏捷的产品
my101du
 
Csi ( las vegas )
Csi ( las vegas )Csi ( las vegas )
Csi ( las vegas )
JuanPedro15
 
Blessing To Your World Power Pt
Blessing To Your World Power PtBlessing To Your World Power Pt
Blessing To Your World Power Pt
drsteveventola
 
Air pollution juan pedro jiménez
Air pollution   juan pedro jiménezAir pollution   juan pedro jiménez
Air pollution juan pedro jiménez
JuanPedro15
 
Uranus
UranusUranus
Uranus
azetoc
 
Velázquez
VelázquezVelázquez
Velázquez
JuanPedro15
 
Volcano presentacion
Volcano presentacionVolcano presentacion
Volcano presentacion
JuanPedro15
 
Quick look at Web Components and Project Polymer - MKNET UG
Quick look at Web Components and Project Polymer - MKNET UGQuick look at Web Components and Project Polymer - MKNET UG
Quick look at Web Components and Project Polymer - MKNET UG
Bojan Veljanovski
 
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
Bojan Veljanovski
 
Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)
Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)
Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)
Bojan Veljanovski
 
Csi ( las vegas )
Csi ( las vegas )Csi ( las vegas )
Csi ( las vegas )
JuanPedro15
 
Proyectos gestionados por el pp de Aldeaquemada de 2007 a 2011
Proyectos gestionados por el pp de Aldeaquemada de 2007 a 2011Proyectos gestionados por el pp de Aldeaquemada de 2007 a 2011
Proyectos gestionados por el pp de Aldeaquemada de 2007 a 2011
manuelfdezvela
 
How best known brands were named
How best known brands were namedHow best known brands were named
How best known brands were named
Bhavna Vaja
 
Air pollution juan pedro jiménez
Air pollution   juan pedro jiménezAir pollution   juan pedro jiménez
Air pollution juan pedro jiménez
JuanPedro15
 
Volcano presentacion
Volcano presentacionVolcano presentacion
Volcano presentacion
JuanPedro15
 
Blessing to your world power pt
Blessing to your world power ptBlessing to your world power pt
Blessing to your world power pt
drsteveventola
 
敏捷的技术部 敏捷的产品
敏捷的技术部 敏捷的产品敏捷的技术部 敏捷的产品
敏捷的技术部 敏捷的产品
my101du
 
Csi ( las vegas )
Csi ( las vegas )Csi ( las vegas )
Csi ( las vegas )
JuanPedro15
 
Blessing To Your World Power Pt
Blessing To Your World Power PtBlessing To Your World Power Pt
Blessing To Your World Power Pt
drsteveventola
 
Air pollution juan pedro jiménez
Air pollution   juan pedro jiménezAir pollution   juan pedro jiménez
Air pollution juan pedro jiménez
JuanPedro15
 
Uranus
UranusUranus
Uranus
azetoc
 
Volcano presentacion
Volcano presentacionVolcano presentacion
Volcano presentacion
JuanPedro15
 
Quick look at Web Components and Project Polymer - MKNET UG
Quick look at Web Components and Project Polymer - MKNET UGQuick look at Web Components and Project Polymer - MKNET UG
Quick look at Web Components and Project Polymer - MKNET UG
Bojan Veljanovski
 
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
AngularJS + NancyFx + MongoDB = The best trio for ultimate SPA by Bojan Velja...
Bojan Veljanovski
 
Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)
Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)
Bojan Veljanovski - Modular Software Architecture and Design (Code Camp 2016)
Bojan Veljanovski
 

Similar to Real-world software design practices when developing ASP.NET web systems by Bojan Veljanovski (20)

ALM with TFS: From the Drawing Board to the Cloud
ALM with TFS: From the Drawing Board to the CloudALM with TFS: From the Drawing Board to the Cloud
ALM with TFS: From the Drawing Board to the Cloud
Jeremy Likness
 
The Essential Guide for Automating CMDB population and maintenance
The Essential Guide for Automating CMDB population and maintenanceThe Essential Guide for Automating CMDB population and maintenance
The Essential Guide for Automating CMDB population and maintenance
Stefan Bergstein
 
Knowledge-Based Analysis and Design (KBAD): An Approach to Rapid Systems Engi...
Knowledge-Based Analysis and Design (KBAD): An Approach to Rapid Systems Engi...Knowledge-Based Analysis and Design (KBAD): An Approach to Rapid Systems Engi...
Knowledge-Based Analysis and Design (KBAD): An Approach to Rapid Systems Engi...
Elizabeth Steiner
 
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
Alexandr Savchenko
 
"Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa..."Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa...
Fwdays
 
Skill_Level_ Strider
Skill_Level_ StriderSkill_Level_ Strider
Skill_Level_ Strider
Tushar R
 
(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies
BIOVIA
 
Chalam_JAVA_Portal
Chalam_JAVA_PortalChalam_JAVA_Portal
Chalam_JAVA_Portal
chalamaiah thiruveedhi
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices Architecture
Ashwini Kuntamukkala
 
L19 Application Architecture
L19 Application ArchitectureL19 Application Architecture
L19 Application Architecture
Ólafur Andri Ragnarsson
 
Node.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontendsNode.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontends
Eugene Fidelin
 
An Introduction to MongoDB Ops Manager
An Introduction to MongoDB Ops ManagerAn Introduction to MongoDB Ops Manager
An Introduction to MongoDB Ops Manager
MongoDB
 
Ci selenium
Ci seleniumCi selenium
Ci selenium
Sriram Angajala
 
How to Automate your Enterprise Application / ERP Testing
How to Automate your  Enterprise Application / ERP TestingHow to Automate your  Enterprise Application / ERP Testing
How to Automate your Enterprise Application / ERP Testing
RTTS
 
Product Development
Product DevelopmentProduct Development
Product Development
John Gibbon
 
Machine Learning Models in Production
Machine Learning Models in ProductionMachine Learning Models in Production
Machine Learning Models in Production
DataWorks Summit
 
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
All daydevops   2016 - Turning Human Capital into High Performance Organizati...All daydevops   2016 - Turning Human Capital into High Performance Organizati...
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
John Willis
 
QuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing WebinarQuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing Webinar
RTTS
 
DevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft AzureDevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft Azure
gjuljo
 
M. Riaz Resume
M. Riaz ResumeM. Riaz Resume
M. Riaz Resume
Muhammad Riaz Ahmad
 
ALM with TFS: From the Drawing Board to the Cloud
ALM with TFS: From the Drawing Board to the CloudALM with TFS: From the Drawing Board to the Cloud
ALM with TFS: From the Drawing Board to the Cloud
Jeremy Likness
 
The Essential Guide for Automating CMDB population and maintenance
The Essential Guide for Automating CMDB population and maintenanceThe Essential Guide for Automating CMDB population and maintenance
The Essential Guide for Automating CMDB population and maintenance
Stefan Bergstein
 
Knowledge-Based Analysis and Design (KBAD): An Approach to Rapid Systems Engi...
Knowledge-Based Analysis and Design (KBAD): An Approach to Rapid Systems Engi...Knowledge-Based Analysis and Design (KBAD): An Approach to Rapid Systems Engi...
Knowledge-Based Analysis and Design (KBAD): An Approach to Rapid Systems Engi...
Elizabeth Steiner
 
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
Alexandr Savchenko
 
"Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa..."Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa...
Fwdays
 
Skill_Level_ Strider
Skill_Level_ StriderSkill_Level_ Strider
Skill_Level_ Strider
Tushar R
 
(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies
BIOVIA
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices Architecture
Ashwini Kuntamukkala
 
Node.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontendsNode.js BFFs: our way to better/micro frontends
Node.js BFFs: our way to better/micro frontends
Eugene Fidelin
 
An Introduction to MongoDB Ops Manager
An Introduction to MongoDB Ops ManagerAn Introduction to MongoDB Ops Manager
An Introduction to MongoDB Ops Manager
MongoDB
 
How to Automate your Enterprise Application / ERP Testing
How to Automate your  Enterprise Application / ERP TestingHow to Automate your  Enterprise Application / ERP Testing
How to Automate your Enterprise Application / ERP Testing
RTTS
 
Product Development
Product DevelopmentProduct Development
Product Development
John Gibbon
 
Machine Learning Models in Production
Machine Learning Models in ProductionMachine Learning Models in Production
Machine Learning Models in Production
DataWorks Summit
 
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
All daydevops   2016 - Turning Human Capital into High Performance Organizati...All daydevops   2016 - Turning Human Capital into High Performance Organizati...
All daydevops 2016 - Turning Human Capital into High Performance Organizati...
John Willis
 
QuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing WebinarQuerySurge Slide Deck for Big Data Testing Webinar
QuerySurge Slide Deck for Big Data Testing Webinar
RTTS
 
DevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft AzureDevOps in the Cloud with Microsoft Azure
DevOps in the Cloud with Microsoft Azure
gjuljo
 

Recently uploaded (20)

Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdfSAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
SAP Modernization: Maximizing the Value of Your SAP S/4HANA Migration.pdf
Precisely
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Enhancing ICU Intelligence: How Our Functional Testing Enabled a Healthcare I...
Impelsys Inc.
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 

Real-world software design practices when developing ASP.NET web systems by Bojan Veljanovski

  • 1. Bojan Veljanovski Software Development Engineer | Technical Architect HASELT Ready Real-world software design practices when developing ASP.NET web systems
  • 2. General Sponsors Platinum Sponsors Gold Sponsors Silver Sponsors Bronze Sponsors Promoters Ready
  • 3. A quick chat • Users interact with apps by INTENT • Server processes ACTIONS • Who triggers those ACTIONS? Ready
  • 4. Example of User Intent in medical institution • Actor: Patient Ready – Request an appointment with the doctor – Cancel appointment – Re-schedule appointment • Actor: Doctor – Confirm requested patient’s appointment – Deny requested patient’s appointment – Check schedule – Look into historical medical records for the patient
  • 5. Example of a System Action • Patient Actions Ready – RequestNewAppointment – CancelRequestedAppointment – RequestAppointmentReschedule • Doctor Actions – ConfirmRequestedAppointment – DenyRequestedAppointment – GetSchedule – GetHistoricalRecordsForPatient
  • 6. Example of a System Action • Patient Actions Ready – RequestNewAppointment – CancelRequestedAppointment – RequestAppointmentReschedule • Doctor Actions – ConfirmRequestedAppointment – DenyRequestedAppointment – GetSchedule – GetHistoricalRecordsForPatient • WRITE • WRITE • WRITE • WRITE • WRITE • READ • READ
  • 7. Example of a System Action • Patient Actions Ready – RequestNewAppointment – CancelRequestedAppointment – RequestAppointmentReschedule • Doctor Actions – ConfirmRequestedAppointment – DenyRequestedAppointment – GetSchedule – GetHistoricalRecordsForPatient • Command • Command • Command • Command • Command • Query • Query
  • 8. Evolving Architecture Users work with apps by INTENT. Your UI should capture it! Your system should process it! Ready
  • 9. Agenda • Evolving Architectures • Command & Query Implementation • Component Oriented Single Page Modules • Evolutionary database development • Summary Ready
  • 10. Bojan Veljanovski Ready • Software Development Engineer and Technical Architect at HASELT • HyperLAB Coordinator • Technical Speaker • Microsoft Certified Professional • Former Microsoft Student Partner Favorite topics: – Software Architectures and Design – Code. Code. Code. – Emerging technologies
  • 11. Evolving Architectures (from high-level perspective) Ready
  • 12. Evolving Architecture Classical Layered Architecture Ready UI DTO ASP.NET DTO App Services Domain Object Data Access Logic Data Structure DB Validation Business Logic Data Reads Data Writes
  • 13. Evolving Architecture Adding Query Ready UI DTO ASP.NET DTO App Services Domain Object Data Access Logic Data Structure DB Validation Business Logic Some Data Reads Data Writes Query Handler Data Reads Query Result Domain Object
  • 14. Evolving Architecture Going further with the Query Data Reads Ready UI DTO ASP.NET DTO App Services Domain Object Data Access Logic Data Structure DB Validation Business Logic Some Data Reads Data Writes Query Result Query Handler Denorm Structure
  • 15. Evolving Architecture Adding Command Data Reads Ready UI DTO ASP.NET DTO App Services Domain Object Data Access Logic Data Structure DB Validation Business Logic Some Reads Writes Query Result Query Handler Denorm Structure Command Command Handler Domain Object
  • 16. Evolving Architecture Some cleaning Data Reads Ready UI ASP.NET Data Access Logic Data Structure DB Validation Business Logic Some Reads Writes Query Result Query Handler Denorm Structure Command Command Handler Domain Object
  • 17. Evolving Architecture Some cleaning Data Reads Ready UI ASP.NET Data Access Logic Data Structure DB Validation Business Logic Some Reads Writes Query Result Query Handler Denorm Structure Command Command Handler Domain Object Query Result Command
  • 18. Evolving Architecture What about collaborative systems, real-time and stuff? Ready
  • 19. Evolving Architecture Look ma’, real-time Ready UI ASP.NET DAL DB Query Handler Socket: PUSH Command Handler Event Handler Event
  • 20. Evolving Architecture Full-Featured CQRS (overview) Ready
  • 21. Command & Query Implementation Command & Query Implementation Ready
  • 23. Component Oriented Single Page Modules Ready
  • 24. Component Oriented Single Page Modules Common seen SPA structure • Controllers • Models • ViewModels • Views • Modules • Components • Utils • Services Ready
  • 25. Component Oriented Single Page Modules There is a better way • Modules • Components Ready – View – ViewModel • Shared – Events (message constant) – Actions (message constant) – MessageBus (pub/sub) • Data Services – API Calls – LocalStorage
  • 26. Component Oriented Single Page Modules Rules of thumb • One Module per Page • Focused modules • Cohesive components Ready – Not *everything* should be reusable • Components don’t TALK they: – REACT (to messages) – EMIT (messages) • Message types – Event – Action
  • 27. Component Oriented Single Page Modules Ready Message Bus Data Services API Module A Module B Module C pub sub pub sub pub sub
  • 28. Component Oriented Single Page Modules Flux Architecture Ready
  • 31. Evolutionary Database Development Evolutionary Database Development • A DB consist of Schema and Test Data • Schema is Source Code • Schema changes are tracked over-time • Version it in GIT • Every dev gets its own db instance • Devs make frequent integrations into shared master db • FluentMigration mechanisms help us build our db in any RDMS system we want Ready
  • 33. Summary • Users work with apps by INTENT • System processes ACTION triggered by INTENT • READS are different from WRITES Ready – Treat them as so, in your code, yo • Components are simple, inter-components communication is hard • Database schema is source code too – it evolves – Version it • Don’t fall into the tech hype hole – Think • There are no ‘best practices’, only ‘good practices in context’
  • 34. Questions Ready Complete the evaluation and earn the chance to win valuable prizes from our sponsors