SlideShare une entreprise Scribd logo
1  sur  35
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

Contenu connexe

Tendances

Integration Best Practices
Integration Best PracticesIntegration Best Practices
Integration Best PracticesGabriel 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.0Gabriel Michaud
 
Best Practice In Software Development
Best Practice In Software DevelopmentBest Practice In Software Development
Best Practice In Software DevelopmentSARCCOM
 
Kentico CMS 7 – Mobile web development
Kentico CMS 7 – Mobile web developmentKentico CMS 7 – Mobile web development
Kentico CMS 7 – Mobile web developmentThomas Robbins
 
Enterprise beans
Enterprise beansEnterprise beans
Enterprise beansvpulec
 
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 glanceKetan 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 presentationRajat 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 OSGimfrancis
 
Web ml Explained
Web ml ExplainedWeb ml Explained
Web ml ExplainedWaseem 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.1WSO2
 
PowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application DeploymentPowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application Deploymentzulmach .
 
Pal gov.tutorial3.session7
Pal gov.tutorial3.session7Pal gov.tutorial3.session7
Pal gov.tutorial3.session7Mustafa Jarrar
 
Tom van gaever-sp_serviceapplications_spsbe17
Tom van gaever-sp_serviceapplications_spsbe17Tom van gaever-sp_serviceapplications_spsbe17
Tom van gaever-sp_serviceapplications_spsbe17BIWUG
 
Basic fundamentals of web application development
Basic fundamentals of web application developmentBasic fundamentals of web application development
Basic fundamentals of web application developmentsofyjohnson18
 

Tendances (20)

Integration Best Practices
Integration Best PracticesIntegration Best Practices
Integration Best Practices
 
Cucumber_Capybara
Cucumber_CapybaraCucumber_Capybara
Cucumber_Capybara
 
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
 
Best Practice In Software Development
Best Practice In Software DevelopmentBest Practice In Software Development
Best Practice In Software Development
 
Kentico CMS 7 – Mobile web development
Kentico CMS 7 – Mobile web developmentKentico CMS 7 – Mobile web development
Kentico CMS 7 – Mobile web development
 
Enterprise beans
Enterprise beansEnterprise beans
Enterprise beans
 
Kentico CMS
Kentico CMSKentico CMS
Kentico CMS
 
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...
 
Web fundamentals
Web fundamentals Web fundamentals
Web fundamentals
 
Jdbc
JdbcJdbc
Jdbc
 
Microservice at a glance
Microservice at a glanceMicroservice at a glance
Microservice at a glance
 
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
 
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
 
Basics of Silverlight 1
Basics of Silverlight 1Basics of Silverlight 1
Basics of Silverlight 1
 
Web ml Explained
Web ml ExplainedWeb ml Explained
Web ml Explained
 
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
 
PowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application DeploymentPowerBuilder 11 .Net Application Deployment
PowerBuilder 11 .Net Application Deployment
 
Pal gov.tutorial3.session7
Pal gov.tutorial3.session7Pal gov.tutorial3.session7
Pal gov.tutorial3.session7
 
Tom van gaever-sp_serviceapplications_spsbe17
Tom van gaever-sp_serviceapplications_spsbe17Tom van gaever-sp_serviceapplications_spsbe17
Tom van gaever-sp_serviceapplications_spsbe17
 
Basic fundamentals of web application development
Basic fundamentals of web application developmentBasic fundamentals of web application development
Basic fundamentals of web application development
 

En vedette

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 2011manuelfdezvela
 
How best known brands were named
How best known brands were namedHow best known brands were named
How best known brands were namedBhavna Vaja
 
Air pollution juan pedro jiménez
Air pollution   juan pedro jiménezAir pollution   juan pedro jiménez
Air pollution juan pedro jiménezJuanPedro15
 
Volcano presentacion
Volcano presentacionVolcano presentacion
Volcano presentacionJuanPedro15
 
Blessing to your world power pt
Blessing to your world power ptBlessing to your world power pt
Blessing to your world power ptdrsteveventola
 
敏捷的技术部 敏捷的产品
敏捷的技术部 敏捷的产品敏捷的技术部 敏捷的产品
敏捷的技术部 敏捷的产品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 Ptdrsteveventola
 
Air pollution juan pedro jiménez
Air pollution   juan pedro jiménezAir pollution   juan pedro jiménez
Air pollution juan pedro jiménezJuanPedro15
 
Uranus
UranusUranus
Uranusazetoc
 
Volcano presentacion
Volcano presentacionVolcano presentacion
Volcano presentacionJuanPedro15
 
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 UGBojan 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
 

En vedette (17)

Csi ( las vegas )
Csi ( las vegas )Csi ( las vegas )
Csi ( las vegas )
 
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
 
How best known brands were named
How best known brands were namedHow best known brands were named
How best known brands were named
 
Air pollution juan pedro jiménez
Air pollution   juan pedro jiménezAir pollution   juan pedro jiménez
Air pollution juan pedro jiménez
 
Volcano presentacion
Volcano presentacionVolcano presentacion
Volcano presentacion
 
Mesyuarat sukan
Mesyuarat sukanMesyuarat sukan
Mesyuarat sukan
 
Blessing to your world power pt
Blessing to your world power ptBlessing to your world power pt
Blessing to your world power pt
 
敏捷的技术部 敏捷的产品
敏捷的技术部 敏捷的产品敏捷的技术部 敏捷的产品
敏捷的技术部 敏捷的产品
 
Csi ( las vegas )
Csi ( las vegas )Csi ( las vegas )
Csi ( las vegas )
 
Blessing To Your World Power Pt
Blessing To Your World Power PtBlessing To Your World Power Pt
Blessing To Your World Power Pt
 
Air pollution juan pedro jiménez
Air pollution   juan pedro jiménezAir pollution   juan pedro jiménez
Air pollution juan pedro jiménez
 
Uranus
UranusUranus
Uranus
 
Velázquez
VelázquezVelázquez
Velázquez
 
Volcano presentacion
Volcano presentacionVolcano presentacion
Volcano presentacion
 
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
 
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 - 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)
 

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

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 CloudJeremy 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 maintenanceStefan 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_ StriderTushar R
 
(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application StrategiesBIOVIA
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitectureAshwini 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 frontendsEugene Fidelin
 
An Introduction to MongoDB Ops Manager
An Introduction to MongoDB Ops ManagerAn Introduction to MongoDB Ops Manager
An Introduction to MongoDB Ops ManagerMongoDB
 
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 TestingRTTS
 
Product Development
Product DevelopmentProduct Development
Product DevelopmentJohn Gibbon
 
Machine Learning Models in Production
Machine Learning Models in ProductionMachine Learning Models in Production
Machine Learning Models in ProductionDataWorks 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 WebinarRTTS
 
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 Azuregjuljo
 

Similaire à 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
 
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
 
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...
 
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 ...
 
"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...
 
Skill_Level_ Strider
Skill_Level_ StriderSkill_Level_ Strider
Skill_Level_ Strider
 
(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies(ATS6-DEV02) Web Application Strategies
(ATS6-DEV02) Web Application Strategies
 
Chalam_JAVA_Portal
Chalam_JAVA_PortalChalam_JAVA_Portal
Chalam_JAVA_Portal
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices Architecture
 
L19 Application Architecture
L19 Application ArchitectureL19 Application Architecture
L19 Application Architecture
 
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
 
An Introduction to MongoDB Ops Manager
An Introduction to MongoDB Ops ManagerAn Introduction to MongoDB Ops Manager
An Introduction to MongoDB Ops Manager
 
Ci selenium
Ci seleniumCi selenium
Ci selenium
 
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
 
Product Development
Product DevelopmentProduct Development
Product Development
 
Machine Learning Models in Production
Machine Learning Models in ProductionMachine Learning Models in Production
Machine Learning Models in Production
 
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...
 
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
 
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
 
M. Riaz Resume
M. Riaz ResumeM. Riaz Resume
M. Riaz Resume
 

Dernier

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Dernier (20)

How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

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