Better Living through Better Code’s
Organized Thought Paradigm
We will be exploring a collection of Design Principles and Design Patterns that work together as a Single Organized Thought Paradigm:
Successfully Processing a Client’s Request by
Returning a Robust Response Object
within a Stateless Web Environment
The Science we will be using in this series is ASP.NET 4.5 and the C# Object Oriented Programming Language.
This series targets a recurring problem in designing and developing great code for Web Clients:
How to create a Bulletproof, Scalable,
and Extensible Stateless Information Exchange Process
Each article in this series will be supporting the ability for a Web Client, to REQUEST Information in Serialized JSON and receive a RESPONSE in Serialized JSON or HTML.
A Web Client is defined as a Native or Hybrid Mobile Application, an Application Server using Microservices or a Single Page Application using the Web Browsers.
The Series Article Posts:
-
The Command Query Separation Design Pattern
-
What CQS pattern solves
-
When to use CQS
-
How CQS is used in this series
-
-
The Request/Response Design Pattern
-
What the Request/Response Design Pattern solves
-
What are the Request/Response Design Pattern components
-
Feature Request and Response DTOs
-
CodeMessagesRequestDTO
-
CodeMessagesResponseDTO
-
-
Request and Response Common Base DTOs
-
BaseRequestDTO
-
BaseResponseDTO
-
-
Web State Common Request and Response DTOs
-
BaseStateRequestDTO
-
BaseStateResponseDTO
-
-
Error Handling Response State: The Response Packing List
-
ErrorCommonDTO
-
IErrorCommon
-
ILogger
-
IMessaging
-
-
-
How is the Request/Response Design Pattern is used in this series
-
-
The Error Handling, Logging and Messaging Pattern
-
What this pattern solves
-
What are the pattern components
-
IErrorCommon
-
ILogger
-
IMessaging
-
-
How this pattern is used in this series
-
-
The Onion Layer Pattern
-
What this pattern solves
-
What are the pattern components
-
Services
-
Factories
-
-
How this pattern is used in this series
-
The main attention of this series is focused on the Request/Response pattern as it encompasses all of the above patterns and base principles.
Each component will be demonstrated in real working best practice C# 4.51 code created using the Test First Principle. All Code Test Suites will be available as well.
All Software Developers are Artists!!!
… Some are Really Good Artists
…… And Some are Really Bad Artists
BUT All Software Developers are Artists!!!
Better Living through Better Code’s
Organized Thought Paradigm
We will be exploring a collection of Design Principles and Design Patterns that work together as a Single Organized Thought Paradigm:
Successfully Processing a Client’s Request by
Returning a Robust Response Object
within a Stateless Web Environment
The Science we will be using in this series is ASP.NET 4.5 and the C# Object Oriented Programming Language.
The Artist Palette will include the following Tools:
-
Visual Studio 2012 as the Integrated Development Environment (IDE)
-
MS Test as the Unit and Integration Test Suite Framework
-
SQL Server 2012 for Data Persistence
-
Entity Framework 6 as a ORM Data Access Layer (DAL)
-
Unity 3 for the Object Management Factory Inversion of Control Container (IOC)
-
MS Test as the Unit and Integration Test Suite Framework
The Palette will also include these Design Principles:
-
Single Responsibility Principle (SRP)
-
Open / Closed Principle (OCP)
-
Dependency Inversion Principle (DIP)
-
Dependency Injection: DI
-
Object Factories: IOC
-
-
Don’t Repeat Yourself Principle (DRY)
-
Inversion Of Control Principle (IOCP)
-
Data Transfer Object Role Principle (DTORP)
-
Request / Response Complex Data Transfer Objects: DTOs
-
State Management and Error Reporting: The Response Package “Packing List”
-
-
Test First Principle (TFP)
-
RED, GREEN and REFACTORING
-
Acceptance Criteria Defined in the Gherkin Language Syntax
-
Adding these Design Patterns to Complete the Palette:
-
Request / Response Design Pattern
-
Command Query Separation Pattern: CQS
-
The Onion Layer Pattern
-
The Error Handling Extension Pattern: IErrorCommon
-
The Data Access Extension Pattern: IDataAccess
-
Error & Information Database Messaging Pattern: IMessaging
The Artist Palette will include the following Tools:
-
Visual Studio 2012 as the Integrated Development Environment (IDE)
-
MS Test as the Unit and Integration Test Suite Framework
-
SQL Server 2012 for Data Persistence
-
Entity Framework 6 as a ORM Data Access Layer (DAL)
-
Unity 3 for the Object Management Factory Inversion of Control Container (IOC)
-
MS Test as the Unit and Integration Test Suite Framework
The Palette will also include these Design Principles:
-
Single Responsibility Principle (SRP)
-
Open / Closed Principle (OCP)
-
Dependency Inversion Principle (DIP)
-
Dependency Injection: DI
-
Object Factories: IOC
-
-
Don’t Repeat Yourself Principle (DRY)
-
Inversion Of Control Principle (IOCP)
-
Data Transfer Object Role Principle (DTORP)
-
Request / Response Complex Data Transfer Objects: DTOs
-
State Management and Error Reporting: The Response Package “Packing List”
-
-
Test First Principle (TFP)
-
RED, GREEN and REFACTORING
-
Acceptance Criteria Defined in the Gherkin Language Syntax
-
Adding these Design Patterns to Complete the Palette:
-
Request / Response Design Pattern
-
Command Query Separation Pattern: CQS
-
The Onion Layer Pattern
-
The Error Handling Extension Pattern: IErrorCommon
-
The Data Access Extension Pattern: IDataAccess
-
Error & Information Database Messaging Pattern: IMessaging
Concluding Thoughts
The Better Living through Better Code Development Series is NOT an abstract concept of what “Could Be”.
This series is based on a Real Enterprise Implementation of the above Design Principles and Design Patterns to solve a Real World Web Development Requirement:
Sourcing a Request from a Web Page
and Returning a Response
that the Requesting Page
can process for User Interactions
All of the above Best Practices will be demonstrated in C# 4.51 code and explained in detail as to the “Value Added” by using these Patterns and Principles.
Stay Tuned for More of the Series …
How Good is Your Code Really?
Wisdom Pearl # 121 – Work Quality Concept
Your Work is Only as Good
… As How it is Perceived by the Next Person who Touches It
Positive Acceptance of your Work is Your Preeminent Responsibility
The following two tabs change content below.
I am a Principal Architect at Liquid Hub in the Philadelphia area specializing in Agile Practices as a Certified Scrum Master (CSM). I use Test Driven Development (TDD) and Acceptance Test Driven Development (ATDD) with Behavior Driven Development (BDD) as my bridge to Agile User Stories Acceptance Criteria in a Domain Driven Design (DDD) implementing true RESTful services
Latest posts by Brad Huett (see all)
- DevOps: A Bridge to Your DevOps Culture - March 25, 2016
- Embracing Test Driven Development (TDD) - March 25, 2016
- DevOps: Delivering Agile Projects - March 25, 2016