layered software architecture

36
Lars-Erik Kindblad Senior Consultant Blog: kindblad.com Layered Architecture

Upload: lars-erik-kindblad

Post on 24-May-2015

16.635 views

Category:

Technology


2 download

DESCRIPTION

A presentation on layered software architecture that goes through logical layering and physical layering, the difference between those two and a practical example.

TRANSCRIPT

Page 1: Layered Software Architecture

Lars-Erik KindbladSenior ConsultantBlog: kindblad.com

Layered Architecture

Page 2: Layered Software Architecture

| Sector, Alliance, Offering

Agenda Logical Layer Architecture Example Code Physical Tier Architecture Logical Layer vs Physical Tier Architecture Summary Questions

Page 3: Layered Software Architecture

| Sector, Alliance, Offering

LOGICAL LAYER ARCHITECTURE

Page 4: Layered Software Architecture

| Sector, Alliance, Offering

3-Layer Architecture

Page 5: Layered Software Architecture

| Sector, Alliance, Offering

Presentation Layer Also known as Frontend Layer, User Interface (UI) Layer

Responsible for creating and displaying the user interface and handling user interaction

Data shown is fetched from the Domain Layer

Page 6: Layered Software Architecture

| Sector, Alliance, Offering

Service Layer Also known as Web Service Layer

Responsible for exposing a web service API and returning the method result as XML or JSON

Data returned is retrieved from the Domain Layer

Page 7: Layered Software Architecture

| Sector, Alliance, Offering

Domain Layer Also known as Business Layer

Responsible for all the business logic in the application Consists of a Domain Model and Domain Services

Page 8: Layered Software Architecture

| Sector, Alliance, Offering

Domain Model Also known as Business Model, Business Objects, Entities etc.

Responsible for having a model that reflects how the business stakeholders look at the world

Consists of entities with relationships and behavior Similar to a database model but a domain model is richer

Page 9: Layered Software Architecture

| Sector, Alliance, Offering

Domain Service Also known as Business Services, Business Managers etc.

Business logic that does not belong within an entity

Page 10: Layered Software Architecture

| Sector, Alliance, Offering

Infrastructure Layer Also known as Data Access Layer, Repository Layer etc.

Responsible for querying a database, calling a web service, sending e-mail etc.

Page 11: Layered Software Architecture

| Sector, Alliance, Offering

Example

We want to create a banking application with customers and related accounts. An account consist of an account number, a balance and a credit limit.If the account has been overdrawn then the account and customer is considered to be “sick”, otherwise “healthy”

Use Case 1: As a user I want to see if a customer is healthy or sick Use Case 2: As a user I want to retrieve if a customer is healthy or

sick through a web service

Technology: .NET, ASP.NET MVC, WCF

Page 12: Layered Software Architecture

| Sector, Alliance, Offering

What do we need?

1. Domain Model for Customer and Account

2. Business logic for deciding if an account and customer is healthy or sick

3. 2 Classes: Fetching Customer and fetch list of Accounts from the database

4. Service Class for building up a Customer Entity with Accounts

Use Case 1:

5. MVC Controller and a View to display the health status for a given customer

Use Case 2:

6. WCF Service for returning whether a customer is healthy or not

Page 13: Layered Software Architecture

| Sector, Alliance, Offering

Domain Model

Page 14: Layered Software Architecture

| Sector, Alliance, Offering

Domain Model

Page 15: Layered Software Architecture

| Sector, Alliance, Offering

Progress

Page 16: Layered Software Architecture

| Sector, Alliance, Offering

Infrastructure – Fetch Customer

Page 17: Layered Software Architecture

| Sector, Alliance, Offering

Infrastructure – Fetch Accounts

Page 18: Layered Software Architecture

| Sector, Alliance, Offering

Progress

Page 19: Layered Software Architecture

| Sector, Alliance, Offering

Domain Service – Build a Complete Customer

Page 20: Layered Software Architecture

| Sector, Alliance, Offering

Progress

Page 21: Layered Software Architecture

| Sector, Alliance, Offering

Use Case 1: Show the result to the user

Page 22: Layered Software Architecture

| Sector, Alliance, Offering

Progress

Page 23: Layered Software Architecture

| Sector, Alliance, Offering

Use Case 2: Return the result through a Web Service

Page 24: Layered Software Architecture

| Sector, Alliance, Offering

Completed

Page 25: Layered Software Architecture

| Sector, Alliance, Offering

Visual Studio Project Structure

Page 26: Layered Software Architecture

| Sector, Alliance, Offering

Why should you have many layers?

Less code per layer Reduced complexity Easier to maintain code Easier to add new functionality Easier to test Allows for reuse code across the application

Page 27: Layered Software Architecture

| Sector, Alliance, Offering

PHYSICAL TIER ARCHITECTURE

Page 28: Layered Software Architecture

| Sector, Alliance, Offering

Logical Layer vs Physical Tier A Logically Layer is how you logically divide the code in the

application A Physical Tier is how you divide your application into multiple sub-

applications that can run on separate servers

Page 29: Layered Software Architecture

| Sector, Alliance, Offering

2-Tier Windows Client Architecture

Page 30: Layered Software Architecture

| Sector, Alliance, Offering

3-Tier Windows Client Architecture

Page 31: Layered Software Architecture

| Sector, Alliance, Offering

3-Tier Web Architecture

Page 32: Layered Software Architecture

| Sector, Alliance, Offering

4-Tier Architecture

Page 33: Layered Software Architecture

| Sector, Alliance, Offering

Why have many tiers? Reuse logic across applications Improve security, e.g. restrict database access for the client by going

through a service Improved performance, the performance critical tiers can be scaled

across multiple servers

Page 34: Layered Software Architecture

| Sector, Alliance, Offering

Summary Logical Layers

• How you logically divide the code in the application• Three Layer Architecture is most commonoPresentation Layer or Service LayeroDomain Layer with a Domain Model and Domain Serviceso Infrastructure layer for communicating with data sources

Physical Tiers• How you divide the application into many sub-applications

Page 35: Layered Software Architecture

| Sector, Alliance, Offering

QUESTIONS?

Page 36: Layered Software Architecture

www.capgemini.com

The information contained in this presentation is proprietary. ©2010 Capgemini. All rights reserved