.NET Architecture for Enterprises
-
Upload
wade-wegner -
Category
Technology
-
view
2.678 -
download
0
Transcript of .NET Architecture for Enterprises
![Page 1: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/1.jpg)
.NET Architecturefor Enterprises
Wade WegnerArchitect, Microsoft [email protected]://www.architectingwith.net/
![Page 2: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/2.jpg)
First, a story …
![Page 3: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/3.jpg)
First, a story …personal^
![Page 4: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/4.jpg)
There once was a developer …
![Page 5: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/5.jpg)
… who really enjoyed coding …
![Page 6: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/6.jpg)
.NET
Python
JavaScript
HTML
Web Services
BizTalk
Tibco
SQL Server
OracleAS/400
Window Server
Apache
IIS
SOA
![Page 7: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/7.jpg)
… and then one day …
![Page 8: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/8.jpg)
… through no fault of his own …
![Page 9: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/9.jpg)
… someone called him an architect.
![Page 10: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/10.jpg)
![Page 11: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/11.jpg)
How did this happen?
![Page 12: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/12.jpg)
Was he suddenly adifferent person?
![Page 13: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/13.jpg)
Did he now need to careabout different things?
![Page 14: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/14.jpg)
![Page 15: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/15.jpg)
Goals
![Page 16: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/16.jpg)
Leave with a better understandingof architecture
Goals
![Page 17: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/17.jpg)
Leave with a better understandingof architecture
Goals
software^
![Page 18: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/18.jpg)
Understand the practical aspectsof architecture in .NET
Goals
![Page 19: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/19.jpg)
![Page 20: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/20.jpg)
What is architecture?
![Page 21: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/21.jpg)
Why should I care?
![Page 22: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/22.jpg)
![Page 23: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/23.jpg)
How is software architecturedifferent?
![Page 24: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/24.jpg)
![Page 25: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/25.jpg)
Determining how to do something
![Page 26: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/26.jpg)
Making expensive andhard-to-change decisions
![Page 27: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/27.jpg)
Who is the architect?
![Page 28: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/28.jpg)
![Page 29: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/29.jpg)
Are there different typesof architects?
![Page 30: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/30.jpg)
Are architects project managers?
![Page 31: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/31.jpg)
Should architects write code?
![Page 32: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/32.jpg)
Do architects just focuson abstractions?
![Page 33: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/33.jpg)
![Page 34: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/34.jpg)
Poor software typicallyhas one of two causes …
![Page 35: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/35.jpg)
… insufficient skills.
![Page 36: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/36.jpg)
… contradictory and ambiguousrequirements.
![Page 37: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/37.jpg)
Anyone can write codethat just works.
![Page 38: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/38.jpg)
![Page 39: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/39.jpg)
Our goal should be …
![Page 40: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/40.jpg)
… to write good codethat works.
![Page 41: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/41.jpg)
Why?
![Page 42: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/42.jpg)
![Page 43: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/43.jpg)
For poorly written code“that just works”…
![Page 44: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/44.jpg)
… maintenance is expensive
![Page 45: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/45.jpg)
… maintenance is frustrating
![Page 46: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/46.jpg)
… maintenance is time consuming
![Page 47: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/47.jpg)
![Page 48: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/48.jpg)
How do we write good codethat works?
![Page 49: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/49.jpg)
![Page 50: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/50.jpg)
![Page 51: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/51.jpg)
![Page 52: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/52.jpg)
Tenets of Structured Design
![Page 53: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/53.jpg)
Cohesion
Tenets of Structured Design
![Page 54: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/54.jpg)
Coupling
Tenets of Structured Design
![Page 55: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/55.jpg)
Low coupling &High cohesion
Tenets of Structured Design
![Page 56: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/56.jpg)
![Page 57: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/57.jpg)
Separation of Concerns
![Page 58: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/58.jpg)
Identifying the concerns
Separation of Concerns
![Page 59: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/59.jpg)
Modularity
Separation of Concerns
![Page 60: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/60.jpg)
Information hiding
Separation of Concerns
![Page 61: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/61.jpg)
![Page 62: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/62.jpg)
So, what are some principles that make this easier?
![Page 63: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/63.jpg)
Find Pertinent Objects First
Principles
![Page 64: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/64.jpg)
Find Pertinent Objects First
Principles
To view all orders placed by a customer, the user indicates the customer ID. The program displays an error message if the customer does not exist. If the customer exists, the program displays name, address, date of birth, and all outstanding orders. For each order, the program gets ID, date, and all order items.
![Page 65: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/65.jpg)
Favor Low Coupling
Principles
![Page 66: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/66.jpg)
Favor Low Coupling
Principles
Program to an interface, not an implementation
![Page 67: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/67.jpg)
Favor Code Reuse
Principles
![Page 68: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/68.jpg)
This is great, we know this …so, what else is there?
![Page 69: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/69.jpg)
Open/Closed Principle
Advanced Principles
![Page 70: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/70.jpg)
Liskov’s Substitution Principle
Advanced Principles
![Page 71: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/71.jpg)
Dependency Inversion Principle
Advanced Principles
![Page 72: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/72.jpg)
Dependency Inversion Principle
Advanced Principles
public class Foo{
IDoSomething _doSomething = null;
public Foo(IDoSomething doSomething){
_doSomething = doSomething;}
}
![Page 73: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/73.jpg)
![Page 74: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/74.jpg)
Patterns
![Page 75: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/75.jpg)
Design Patterns
Patterns
![Page 76: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/76.jpg)
Architectural Patterns
Patterns
![Page 77: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/77.jpg)
Antipatterns
Patterns
![Page 78: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/78.jpg)
Patterns are not …
![Page 79: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/79.jpg)
… a verb
Patterns are not …
![Page 80: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/80.jpg)
… superhuman
Patterns are not …
![Page 81: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/81.jpg)
… inherently good nor evil
Patterns are not …
![Page 82: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/82.jpg)
![Page 83: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/83.jpg)
Testability & Security
![Page 84: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/84.jpg)
![Page 85: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/85.jpg)
Testability
![Page 86: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/86.jpg)
Software Testing
Testability
![Page 87: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/87.jpg)
Software Contracts
Testability
![Page 88: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/88.jpg)
Unit Testing
Testability
![Page 89: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/89.jpg)
Dealing with Dependencies
Testability
![Page 90: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/90.jpg)
Fakes to Mocks
Testability
![Page 91: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/91.jpg)
![Page 92: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/92.jpg)
Security
![Page 93: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/93.jpg)
Security as a requirement
Security
![Page 94: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/94.jpg)
Security Development Lifecycle
Security
![Page 95: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/95.jpg)
Layering
Security Development Lifecycle
![Page 96: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/96.jpg)
Componentization
Security Development Lifecycle
![Page 97: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/97.jpg)
Roles
Security Development Lifecycle
![Page 98: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/98.jpg)
Threat models
Security
![Page 99: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/99.jpg)
![Page 100: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/100.jpg)
Okay, is this it?
![Page 101: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/101.jpg)
Interesting, but abstract
![Page 102: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/102.jpg)
How does this help me design my system?
![Page 103: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/103.jpg)
![Page 104: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/104.jpg)
Let’s look at the common layers of any system …
![Page 105: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/105.jpg)
The Business Layer
![Page 106: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/106.jpg)
The Service Layer
![Page 107: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/107.jpg)
The Data Access Layer
![Page 108: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/108.jpg)
The Presentation Layer
![Page 109: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/109.jpg)
![Page 110: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/110.jpg)
The Business Layer
![Page 111: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/111.jpg)
What is it?
The Business Layer
![Page 112: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/112.jpg)
Domain’s Object Model
The Business Layer
![Page 113: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/113.jpg)
Domain Entities
The Business Layer
![Page 114: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/114.jpg)
Business Rules
The Business Layer
![Page 115: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/115.jpg)
Validation
The Business Layer
![Page 116: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/116.jpg)
Business Process & Workflow
The Business Layer
![Page 117: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/117.jpg)
![Page 118: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/118.jpg)
Where do you deploy it?
The Business Layer
![Page 119: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/119.jpg)
The Gray Areas
The Business Layer
![Page 120: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/120.jpg)
Data Formatting
The Business Layer – Gray Areas
![Page 121: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/121.jpg)
CRUD
The Business Layer – Gray Areas
![Page 122: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/122.jpg)
Stored Procedures
The Business Layer – Gray Areas
![Page 123: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/123.jpg)
![Page 124: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/124.jpg)
Patterns
The Business Layer
![Page 125: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/125.jpg)
The Transaction Script Pattern
The Business Layer
![Page 126: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/126.jpg)
The Table Module Pattern
The Business Layer
![Page 127: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/127.jpg)
The Active Record Pattern
The Business Layer
![Page 128: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/128.jpg)
The Domain Model Pattern
The Business Layer
![Page 129: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/129.jpg)
![Page 130: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/130.jpg)
The Service Layer
![Page 131: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/131.jpg)
What is it?
The Service Layer
![Page 132: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/132.jpg)
What’s service orientation?
The Service Layer
![Page 133: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/133.jpg)
What about SOA?
![Page 134: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/134.jpg)
Service-Oriented Architecture
The Services Layer
![Page 135: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/135.jpg)
Tenets of SOA
The Services Layer
![Page 136: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/136.jpg)
Boundaries Are Explicit
Tenets of SOA
![Page 137: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/137.jpg)
Services Are Autonomous
Tenets of SOA
![Page 138: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/138.jpg)
Use Contracts, Not Classes
Tenets of SOA
![Page 139: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/139.jpg)
Compatibility Is Based on Policy
Tenets of SOA
![Page 140: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/140.jpg)
What SOA is not …
![Page 141: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/141.jpg)
… a revolution
SOA is not …
![Page 142: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/142.jpg)
… a technology
SOA is not …
![Page 143: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/143.jpg)
… a web service
SOA is not …
![Page 144: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/144.jpg)
… a goal
SOA is not …
![Page 145: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/145.jpg)
![Page 146: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/146.jpg)
The Data Access Layer
![Page 147: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/147.jpg)
What is it?
The Data Access Layer
![Page 148: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/148.jpg)
Requirements
The Data Access Layer
![Page 149: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/149.jpg)
Database Independence
DAL: Requirements
![Page 150: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/150.jpg)
Configurable as a Plug-in
DAL: Requirements
![Page 151: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/151.jpg)
Persisting the Application’sObject Model
DAL: Requirements
![Page 152: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/152.jpg)
Responsibilities
The Data Access Layer
![Page 153: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/153.jpg)
CRUD services
DAL: Responsibilities
![Page 154: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/154.jpg)
Query services
DAL: Responsibilities
![Page 155: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/155.jpg)
Transactions
DAL: Responsibilities
![Page 156: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/156.jpg)
Concurrency
DAL: Responsibilities
![Page 157: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/157.jpg)
Separated Interface Pattern
The Data Access Layer
![Page 158: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/158.jpg)
The Plugin Pattern
The Data Access Layer
![Page 159: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/159.jpg)
![Page 160: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/160.jpg)
Should you write your own DAL?
The Data Access Layer
![Page 161: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/161.jpg)
O/RMs
The Data Access Layer
![Page 162: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/162.jpg)
Entity Framework
EntitySpaces
NHibernate
Genome
LINQ-to-SQL
LLBLGen Pro
![Page 163: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/163.jpg)
Using an O/RM Tool
The Data Access Layer
![Page 164: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/164.jpg)
Stored Procedures?
The Data Access Layer
![Page 165: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/165.jpg)
SPs are faster than SQL code
DAL: Stored Procedure Myth #1
![Page 166: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/166.jpg)
SPs are more secure than SQL code
DAL: Stored Procedure Myth #2
![Page 167: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/167.jpg)
SPs can be used to fend off SQL injection
DAL: Stored Procedure Myth #3
![Page 168: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/168.jpg)
SPs can be used to reduce brittleness of SQL code
DAL: Stored Procedure Myth #4
![Page 169: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/169.jpg)
![Page 170: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/170.jpg)
Stop! What are you saying?
![Page 171: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/171.jpg)
Do we still need DBAs?
![Page 172: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/172.jpg)
![Page 173: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/173.jpg)
![Page 174: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/174.jpg)
The Presentation Layer
![Page 175: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/175.jpg)
Responsibilities
The Presentation Layer
![Page 176: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/176.jpg)
Validation?Formatting?
Styling?Usability?
PL: Responsibilities
![Page 177: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/177.jpg)
Independence from graphics
PL: Responsibilities
![Page 178: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/178.jpg)
Independence from UI Technology
PL: Responsibilities
![Page 179: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/179.jpg)
Testability
PL: Responsibilities
![Page 180: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/180.jpg)
Independence from data model
PL: Responsibilities
![Page 181: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/181.jpg)
Patterns
The Presentation Layer
![Page 182: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/182.jpg)
Model-View-Controller (MVC)
PL: Patterns
![Page 183: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/183.jpg)
Model-View-Presenter (MVP)
PL: Patterns
![Page 184: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/184.jpg)
How do I choose a pattern?
The Presentation Layer
![Page 185: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/185.jpg)
![Page 186: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/186.jpg)
Summary
![Page 187: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/187.jpg)
Defined Architecture
Summary
![Page 188: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/188.jpg)
Described Architects
Summary
![Page 189: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/189.jpg)
Maintainability
Summary
![Page 190: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/190.jpg)
Low coupling & high cohesion
Summary
![Page 191: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/191.jpg)
Principles of software architecture
Summary
![Page 192: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/192.jpg)
Design patterns
Summary
![Page 193: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/193.jpg)
Architecture patterns & antipatterns
Summary
![Page 194: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/194.jpg)
Testability & Security
Summary
![Page 195: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/195.jpg)
The Business Layer
Summary
![Page 196: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/196.jpg)
The Services Layer
Summary
![Page 197: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/197.jpg)
The Data Access Layer
Summary
![Page 198: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/198.jpg)
The Presentation Layer
Summary
![Page 199: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/199.jpg)
![Page 200: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/200.jpg)
Closing thoughts …
![Page 201: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/201.jpg)
“It” depends
Closing thoughts …
![Page 202: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/202.jpg)
Requirements
Closing thoughts …
![Page 203: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/203.jpg)
Reuse is a nice side effect
Closing thoughts …
![Page 204: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/204.jpg)
Separation of Concerns
Closing thoughts …
![Page 205: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/205.jpg)
Maintainability
Closing thoughts …
![Page 206: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/206.jpg)
Don’t trust your users
Closing thoughts …
![Page 207: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/207.jpg)
Security and testability by design
Closing thoughts …
![Page 208: .NET Architecture for Enterprises](https://reader037.fdocuments.us/reader037/viewer/2022110118/554f867ab4c905d25b8b4cd9/html5/thumbnails/208.jpg)
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
[email protected]://architectingwith.net