SlideShare a Scribd company logo
1 of 23
There are only 3 
operations in a web 
application 
(or maybe 2)
History 
Worked on lots of web applications 
Seems to be lots of attempts at the same 
problems 
Typically non-SOLID solutions
History 
Without SOLID web applications are 
Difficult to maintain 
Buggy 
Difficult to scale
Back to basics 
As any other application 
Identify the entities 
Identify the operations these entities execute
Back to basics 
Web applications have lots of entities 
Customer … Order … Hotel … Basket … Page 
… Section … SubSection … etc.
Back to basics 
However the stateless nature of the web 
plus user expectations lead to …..
The big idea. 
… A limited number of operations 
1. Find 0 or more entities 
2. Add a new entity 
3. Change an entity
The big idea. 
… A limited number of operations 
1. Find 0 or more entities 
2. Add a new entity 
3. Change an entity 
Sometimes combined into a ‘Crupdate’
The big idea. 
Sign up? Add item to basket? Log error? 
Add new entity 
Login? Get Hotel Details? View sale items ? 
Find 0 or more entities 
Update password? 
Change an entity
The big idea 
So … can we make a framework that 
abstracts away all the common parts of 
these operations, allowing us to produce 
SOLID software with the minimum of 
changes?
The big idea 
So … can we make a framework that 
abstracts away all the common parts of 
these operations, allowing us to produce 
SOLID software with the minimum of 
changes? ….. MAYBE?
The big idea. 
How about creating a suite of “Micro 
services” for each entity. 
The service contains all the (validation) 
business logic for the entity, returning the 
results in a consistent way. ….
The big idea. 
These micro services can only be reached 
through a message, making them fully 
decoupled from the consuming application.
The Message 
A POCO class whose single responsibility is 
to transmit information between the 
provider and the producer
The Message Processor 
A POCO class whose sole responsibility is to 
update the state of the message. 
Simple to test. 
Simple to read. 
Only place for business logic.
Consuming with MVC 
Can be consumed by any .net framework. 
As there is no business logic consuming is 
simple. 
Every message is consumed in the same 
way, so consuming code follows a similar, 
simple pattern.
Epilogue 
● Normalising code to its common 
components reduces repeated code. 
● Normalising code to its common 
components reduces the amount of code 
needed. 
● Normalising code to its common 
components encourages SOLID software.
Questions...

More Related Content

Viewers also liked

Producing Quality Software
Producing Quality SoftwareProducing Quality Software
Producing Quality SoftwareSimon Smith
 
Implementing Soa
Implementing SoaImplementing Soa
Implementing SoaSimon Smith
 
Prototype and Test - Idea 1
Prototype and Test - Idea 1Prototype and Test - Idea 1
Prototype and Test - Idea 1Nadine Rothermel
 
Liberal Democracy by Muhammad Muinul Islam
Liberal Democracy by Muhammad Muinul IslamLiberal Democracy by Muhammad Muinul Islam
Liberal Democracy by Muhammad Muinul IslamMuinul Polin
 
我的32個臉孔
我的32個臉孔我的32個臉孔
我的32個臉孔tuberose6
 
愛德華的神奇旅行
愛德華的神奇旅行愛德華的神奇旅行
愛德華的神奇旅行tuberose6
 
HMES Imágenes
HMES ImágenesHMES Imágenes
HMES Imágeneslaura016
 
Fiesta En Santa Clara
Fiesta En Santa ClaraFiesta En Santa Clara
Fiesta En Santa Claraguest8bac10
 

Viewers also liked (12)

Generics
GenericsGenerics
Generics
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
Producing Quality Software
Producing Quality SoftwareProducing Quality Software
Producing Quality Software
 
Implementing Soa
Implementing SoaImplementing Soa
Implementing Soa
 
Io e Wikipedia
Io e WikipediaIo e Wikipedia
Io e Wikipedia
 
Prototype and Test - Idea 1
Prototype and Test - Idea 1Prototype and Test - Idea 1
Prototype and Test - Idea 1
 
Liberal Democracy by Muhammad Muinul Islam
Liberal Democracy by Muhammad Muinul IslamLiberal Democracy by Muhammad Muinul Islam
Liberal Democracy by Muhammad Muinul Islam
 
我的32個臉孔
我的32個臉孔我的32個臉孔
我的32個臉孔
 
愛德華的神奇旅行
愛德華的神奇旅行愛德華的神奇旅行
愛德華的神奇旅行
 
HMES Imágenes
HMES ImágenesHMES Imágenes
HMES Imágenes
 
Fiesta En Santa Clara
Fiesta En Santa ClaraFiesta En Santa Clara
Fiesta En Santa Clara
 
我感恩
我感恩我感恩
我感恩
 

Similar to 3 Operations Web Apps Find Add Change Entities

Software as a Service - Concepts and Implementation
Software as a Service - Concepts and ImplementationSoftware as a Service - Concepts and Implementation
Software as a Service - Concepts and Implementationogglog
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary SoftwareYun Zhi Lin
 
Ncrafts.io - Refactor your software architecture
Ncrafts.io - Refactor your software architectureNcrafts.io - Refactor your software architecture
Ncrafts.io - Refactor your software architectureJulien Lavigne du Cadet
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teamsJamie Thomas
 
Managing Large Flask Applications On Google App Engine (GAE)
Managing Large Flask Applications On Google App Engine (GAE)Managing Large Flask Applications On Google App Engine (GAE)
Managing Large Flask Applications On Google App Engine (GAE)Emmanuel Olowosulu
 
Joomla in a world of ubiquitous computing
Joomla in a world of ubiquitous computingJoomla in a world of ubiquitous computing
Joomla in a world of ubiquitous computingChris Davenport
 
Welcome to the world of micro-applications
Welcome to the world of micro-applicationsWelcome to the world of micro-applications
Welcome to the world of micro-applicationsSander Hoogendoorn
 
The Big Picture - Integrating Buzzwords
The Big Picture - Integrating BuzzwordsThe Big Picture - Integrating Buzzwords
The Big Picture - Integrating BuzzwordsAlessandro Giorgetti
 
Enterprise integration primer
Enterprise integration primerEnterprise integration primer
Enterprise integration primerCharles Wade
 
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and MicroservicesRedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and MicroservicesRedis Labs
 
Web services & com+ components
Web services & com+ componentsWeb services & com+ components
Web services & com+ componentsGowriLatha1
 
Creating a workflow with Azure Logic and API Apps
Creating a workflow with Azure Logic and API AppsCreating a workflow with Azure Logic and API Apps
Creating a workflow with Azure Logic and API AppsAvanade Nederland
 
Introduction to Serverless. Oracle Fn Project.
Introduction to Serverless. Oracle Fn Project.Introduction to Serverless. Oracle Fn Project.
Introduction to Serverless. Oracle Fn Project.Rolando Carrasco
 
Small is beautiful
Small is beautifulSmall is beautiful
Small is beautifulVivek Singh
 
RabbitMQ in Microservice Architecture.docx
RabbitMQ in Microservice Architecture.docxRabbitMQ in Microservice Architecture.docx
RabbitMQ in Microservice Architecture.docxShakuro
 
Microsoft Microservices
Microsoft MicroservicesMicrosoft Microservices
Microsoft MicroservicesChase Aucoin
 

Similar to 3 Operations Web Apps Find Add Change Entities (20)

Let's talk about... Microservices
Let's talk about... MicroservicesLet's talk about... Microservices
Let's talk about... Microservices
 
Software as a Service - Concepts and Implementation
Software as a Service - Concepts and ImplementationSoftware as a Service - Concepts and Implementation
Software as a Service - Concepts and Implementation
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary Software
 
Ncrafts.io - Refactor your software architecture
Ncrafts.io - Refactor your software architectureNcrafts.io - Refactor your software architecture
Ncrafts.io - Refactor your software architecture
 
Going open source with small teams
Going open source with small teamsGoing open source with small teams
Going open source with small teams
 
Managing Large Flask Applications On Google App Engine (GAE)
Managing Large Flask Applications On Google App Engine (GAE)Managing Large Flask Applications On Google App Engine (GAE)
Managing Large Flask Applications On Google App Engine (GAE)
 
Joomla in a world of ubiquitous computing
Joomla in a world of ubiquitous computingJoomla in a world of ubiquitous computing
Joomla in a world of ubiquitous computing
 
Welcome to the world of micro-applications
Welcome to the world of micro-applicationsWelcome to the world of micro-applications
Welcome to the world of micro-applications
 
The Big Picture - Integrating Buzzwords
The Big Picture - Integrating BuzzwordsThe Big Picture - Integrating Buzzwords
The Big Picture - Integrating Buzzwords
 
Enterprise integration primer
Enterprise integration primerEnterprise integration primer
Enterprise integration primer
 
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and MicroservicesRedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
 
Isset Presentation @ EECI2009
Isset Presentation @ EECI2009Isset Presentation @ EECI2009
Isset Presentation @ EECI2009
 
Web services & com+ components
Web services & com+ componentsWeb services & com+ components
Web services & com+ components
 
Micro Front Ends : Divided We Rule by Parth Ghiya - AhmedabadJS
Micro Front Ends : Divided We Rule by Parth Ghiya - AhmedabadJSMicro Front Ends : Divided We Rule by Parth Ghiya - AhmedabadJS
Micro Front Ends : Divided We Rule by Parth Ghiya - AhmedabadJS
 
Creating a workflow with Azure Logic and API Apps
Creating a workflow with Azure Logic and API AppsCreating a workflow with Azure Logic and API Apps
Creating a workflow with Azure Logic and API Apps
 
Introduction to Serverless. Oracle Fn Project.
Introduction to Serverless. Oracle Fn Project.Introduction to Serverless. Oracle Fn Project.
Introduction to Serverless. Oracle Fn Project.
 
Designingapplswithnet
DesigningapplswithnetDesigningapplswithnet
Designingapplswithnet
 
Small is beautiful
Small is beautifulSmall is beautiful
Small is beautiful
 
RabbitMQ in Microservice Architecture.docx
RabbitMQ in Microservice Architecture.docxRabbitMQ in Microservice Architecture.docx
RabbitMQ in Microservice Architecture.docx
 
Microsoft Microservices
Microsoft MicroservicesMicrosoft Microservices
Microsoft Microservices
 

Recently uploaded

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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"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
 
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
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
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
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
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
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Recently uploaded (20)

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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"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
 
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!
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
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
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
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
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 

3 Operations Web Apps Find Add Change Entities

  • 1. There are only 3 operations in a web application (or maybe 2)
  • 2. History Worked on lots of web applications Seems to be lots of attempts at the same problems Typically non-SOLID solutions
  • 3. History Without SOLID web applications are Difficult to maintain Buggy Difficult to scale
  • 4. Back to basics As any other application Identify the entities Identify the operations these entities execute
  • 5. Back to basics Web applications have lots of entities Customer … Order … Hotel … Basket … Page … Section … SubSection … etc.
  • 6. Back to basics However the stateless nature of the web plus user expectations lead to …..
  • 7. The big idea. … A limited number of operations 1. Find 0 or more entities 2. Add a new entity 3. Change an entity
  • 8. The big idea. … A limited number of operations 1. Find 0 or more entities 2. Add a new entity 3. Change an entity Sometimes combined into a ‘Crupdate’
  • 9. The big idea. Sign up? Add item to basket? Log error? Add new entity Login? Get Hotel Details? View sale items ? Find 0 or more entities Update password? Change an entity
  • 10. The big idea So … can we make a framework that abstracts away all the common parts of these operations, allowing us to produce SOLID software with the minimum of changes?
  • 11. The big idea So … can we make a framework that abstracts away all the common parts of these operations, allowing us to produce SOLID software with the minimum of changes? ….. MAYBE?
  • 12. The big idea. How about creating a suite of “Micro services” for each entity. The service contains all the (validation) business logic for the entity, returning the results in a consistent way. ….
  • 13. The big idea. These micro services can only be reached through a message, making them fully decoupled from the consuming application.
  • 14. The Message A POCO class whose single responsibility is to transmit information between the provider and the producer
  • 15.
  • 16.
  • 17. The Message Processor A POCO class whose sole responsibility is to update the state of the message. Simple to test. Simple to read. Only place for business logic.
  • 18.
  • 19.
  • 20. Consuming with MVC Can be consumed by any .net framework. As there is no business logic consuming is simple. Every message is consumed in the same way, so consuming code follows a similar, simple pattern.
  • 21.
  • 22. Epilogue ● Normalising code to its common components reduces repeated code. ● Normalising code to its common components reduces the amount of code needed. ● Normalising code to its common components encourages SOLID software.