SlideShare uma empresa Scribd logo
1 de 48
Pragmatic Architecture in .NET
Cory House
@housecor | bitnative.com
The problem.
X is good It Depends
Three Simple Goals:
1. Cost vs benefit
2. Contrast extremes
3. Review our options in .NET
Why?
Save money.
Save effort.
Save time.
Why Not?
To improve my resume’.
To challenge myself.
To experiment.
Assumptions
1. Web based
2. RDBMS
3. Enterprise line of business app
Astronaut Assessment
We must use <shiny new technology> for this!
Reinvent the wheel
100% test coverage
Never ORM
Always code to an interface
Use all the patterns
Resume Driven Development
Consider Simplicity
1. Do simplest thing that could possibly work
2. Lean / Agile principles
3. YAGNI
4. 80/20 Rule
Consider Complexity
• Unit Testing
• Coding to an interface
• SOA
• Rich Domain Model
• Layered N-teir architecture
Which is better?
Tightly Coupled
No Tests
No Layers
No API
Coded to Interfaces
100% Test coverage
Rich Domain Model
Service Oriented
It depends.
What if I said…
• $250k over budget
• Customers hated it, or worse, ignored it
• Idea didn’t pan out
• Project funding dried up
• 1 month late = worthless
Work expands to fill available time.
Parkinson’s Law
Agile Estimation: Flex one.
Quality
Date Cost
Features*
Architecture
Reuse
Performance
Security
Testing
Scalability
Documentation
* Fat chance
Quality is reduced to meet deadlines.
Software quality is directly related to deadline sanity.
Deadline and manpower are often a constant.
Thus, software quality is directly related to deadline
sanity.
Quality software requires realistic deadlines.
Q: Is debt bad?
Later
Now
A: Is the deadline hard?
Hard vs Soft Deadlines
Trade show
Published advertising
X-team dependencies
1st to market or dead
Network effects
Single loud customer
WAG
Salesman misspoke
MS Project said so
Perfect architecture? Who cares.
Facebook
Twitter
StackOverflow
The problem is getting people to care.
We’re paid for solutions, not code.
Unit Testing
– Insurance
– Investment in the future (ease of maint)
– Potential long-term cost in complexity/manpower
Enough Theory…
Let’s get geeky.
Presentation
Service
Domain
Data
Web Forms vs MVC
JavaScript, CSS, jQuery, Knockout, Angular, IoC
Web API, WCF, ASMX, ServiceStack or POCOs
C#, VB.Net
Entity Framework, nHibernate, LLBLGen, Dapper, ADO.Net
UI
API
Business Logic
(BLL)
Data Access
(DAL)
Presentation
Service
Domain
Persistence
Layers vs Tiers
Logical Physical
Tiers
Scalability
Security
Abstract complexity
Minimize dependences
Reusable
Performance cost
Increased complexity
Layers
Separate concerns
Aid understanding
Abstract complexity
Support testing
Minimize dependences
Standardize
Enable reuse
Leak
More code
Small app?
methods = layers.
ORM honors DRY
1. Database
2. Class property
3. Select statements
4. Insert statements
5. Update statements
6. Delete statements
7. SQL marshalling code
1. Database
2. Class property
3. .hbm.xml file
When ORM?
Go for it:
• DRY = faster development
• Speedier changes
• RDBMS agnostic
• Type safe interface
• Avoid writing SQL
• SQL Injection protection
• Security, performance, ca
ching, mapping OOTB
Pass:
• Lose control over SQL
• DBAs lose control
• Security concerns
• Performance penalty
SOA
Heterogeneous systems
Autonomous
Reusable
Formal
Performance hit
Risky changes
Both sides must test
Architectural LevelsL1
Simplest
thing
L2
Somewhere
in between
L3
Every tool
in the shed
Level 1
Presentation
Domain &
Persistence
Web Forms
Active Record Pattern
Linq-2-SQL, Subsonic, Castle ActiveRecord
Active Record
Presentation
Domain
Data
Active Record
Customer Address Purchase
Customer Address Purchase
DB Tables
Classes
One instance = One row
Active Record
Simple & obvious
Speedy dev and changes
Compliments CRUD apps
Good for simple domain
No OR mismatch
Honors YAGNI
Rigid: Domain model = DB
Leads to God object
Low cohesion: Breaks SRP
Hard to test
Tricky transactions
Repository pattern = pain
Level 3
Presentation
Service
Domain
Persistence
ASP.Net MVC, Knockout/Angular
Repository Pattern
nHibernate, EF POCOs, Dapper
DDD with POCOs
WCF, ServiceStack
Domain Model
It’s all about the objects.
Domain Model
Customer Address Purchase
Customer
with list of addresses
Purchase
DB Tables
Classes
Note OR Mismatch
Business Layer Patterns: Domain Model
Complex business domain
Leverage design patterns
Speak business language
Abstracts ugly DB schema
Large team
Reusable
Learning curve
Time-consuming design
Long-term commitment
DB mapping overhead
Level 3 Summary
Testable
Manage object lifecycle
AOP via dynamic proxies
Swappable UI or DAL
Speaks in business language
Leverage design patterns
Slower initial dev
Larger initial dev cost
Learning curve
More places to change
Senior developers
Bottom Line: L1 vs L3
Points to Add a Feature
Level 1
1. UI
2. DB
3. Implement BL (in AR class)
4. Regen DAL
Level 3
1. UI
2. DB
3. Implement BL in POCO
4. Update/create interface
5. Update IoC bootstrap
6. Update DB mapping
7. Update/Add service call
8. Add/update tests
Choice by Complexity
Level 3
Level 2Level 1
Effort to
enhance
Application Complexity
Architectural Levels
Level 1 Level 2 Level 3
Centralized Data Access ?
Mockable Data Access ?
Central Lifetime Management ?
Separation of Concerns ?
Domain Driven Design ?
Unit Testing Friendly ?
Concurrent Development ?
Service Oriented ?
SOLID ?
SPA friendly ?
Simplest thing/YAGNI
Architecture Selection
MVP
Junior team
Small team
Simple Domain
Tight timeline
Throwaway
No security concerns
Little chance for reuse
Flagship product
Senior Team
Large Team
Complex domain
Flexible timeline
Long-term
Security matters
Other apps could reuse
Reading
Bottom Line
1. Consider the simplest thing that could possibly
work.
2. Context matters. X isn’t good or bad.
3. Best practices have a benefit and cost.
Pragmatic Architecture in .NET

Mais conteúdo relacionado

Mais procurados

Is your code SOLID enough?
 Is your code SOLID enough? Is your code SOLID enough?
Is your code SOLID enough?SARCCOM
 
Is Groovy better for testing than Java?
Is Groovy better for testing than Java?Is Groovy better for testing than Java?
Is Groovy better for testing than Java?Trisha Gee
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021DicodingEvent
 
Software Development Essential Skills
Software Development Essential SkillsSoftware Development Essential Skills
Software Development Essential SkillsJohn Choi
 
The five expertise of a software architect
The five expertise of a software architectThe five expertise of a software architect
The five expertise of a software architectLior Bar-On
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentSamnang Chhun
 
Deploy your Rasa Chatbots like a Boss with DevOps | Rasa Summit 2021
Deploy your Rasa Chatbots like a Boss with DevOps | Rasa Summit 2021Deploy your Rasa Chatbots like a Boss with DevOps | Rasa Summit 2021
Deploy your Rasa Chatbots like a Boss with DevOps | Rasa Summit 2021Rasa Technologies
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringAndy Maleh
 
Mobile engineering at GOJEK Scale
Mobile engineering at GOJEK ScaleMobile engineering at GOJEK Scale
Mobile engineering at GOJEK Scaleraditya gumay
 
Good Code / Bad Code
Good Code / Bad CodeGood Code / Bad Code
Good Code / Bad CodeKelly Harrop
 
How to sustain a tool building community-driven effort
How to sustain a tool building community-driven effortHow to sustain a tool building community-driven effort
How to sustain a tool building community-driven effortJordi Cabot
 
Low-code vs Model-Driven Engineering
Low-code vs Model-Driven EngineeringLow-code vs Model-Driven Engineering
Low-code vs Model-Driven EngineeringJordi Cabot
 
Software quality
Software qualitySoftware quality
Software quality5minpause
 
Using Rasa to Power an Immersive Multimedia Conversational Experience | Rasa ...
Using Rasa to Power an Immersive Multimedia Conversational Experience | Rasa ...Using Rasa to Power an Immersive Multimedia Conversational Experience | Rasa ...
Using Rasa to Power an Immersive Multimedia Conversational Experience | Rasa ...Rasa Technologies
 
How to become a software developer
How to become a software developerHow to become a software developer
How to become a software developerEyob Lube
 
Clean code and Coding Standards
Clean code and Coding StandardsClean code and Coding Standards
Clean code and Coding StandardsMahesh Salaria
 

Mais procurados (20)

Is your code SOLID enough?
 Is your code SOLID enough? Is your code SOLID enough?
Is your code SOLID enough?
 
Is Groovy better for testing than Java?
Is Groovy better for testing than Java?Is Groovy better for testing than Java?
Is Groovy better for testing than Java?
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021
 
Software Development Essential Skills
Software Development Essential SkillsSoftware Development Essential Skills
Software Development Essential Skills
 
The five expertise of a software architect
The five expertise of a software architectThe five expertise of a software architect
The five expertise of a software architect
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Deploy your Rasa Chatbots like a Boss with DevOps | Rasa Summit 2021
Deploy your Rasa Chatbots like a Boss with DevOps | Rasa Summit 2021Deploy your Rasa Chatbots like a Boss with DevOps | Rasa Summit 2021
Deploy your Rasa Chatbots like a Boss with DevOps | Rasa Summit 2021
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
 
Design Smells
Design SmellsDesign Smells
Design Smells
 
Mobile engineering at GOJEK Scale
Mobile engineering at GOJEK ScaleMobile engineering at GOJEK Scale
Mobile engineering at GOJEK Scale
 
Good Code / Bad Code
Good Code / Bad CodeGood Code / Bad Code
Good Code / Bad Code
 
How to sustain a tool building community-driven effort
How to sustain a tool building community-driven effortHow to sustain a tool building community-driven effort
How to sustain a tool building community-driven effort
 
Low-code vs Model-Driven Engineering
Low-code vs Model-Driven EngineeringLow-code vs Model-Driven Engineering
Low-code vs Model-Driven Engineering
 
(A)TDD The what, why and how
(A)TDD The what, why and how(A)TDD The what, why and how
(A)TDD The what, why and how
 
Software quality
Software qualitySoftware quality
Software quality
 
Software development fundamentals
Software development fundamentalsSoftware development fundamentals
Software development fundamentals
 
A CQRS Journey
A CQRS JourneyA CQRS Journey
A CQRS Journey
 
Using Rasa to Power an Immersive Multimedia Conversational Experience | Rasa ...
Using Rasa to Power an Immersive Multimedia Conversational Experience | Rasa ...Using Rasa to Power an Immersive Multimedia Conversational Experience | Rasa ...
Using Rasa to Power an Immersive Multimedia Conversational Experience | Rasa ...
 
How to become a software developer
How to become a software developerHow to become a software developer
How to become a software developer
 
Clean code and Coding Standards
Clean code and Coding StandardsClean code and Coding Standards
Clean code and Coding Standards
 

Destaque

Pragmatic Architecture
Pragmatic ArchitecturePragmatic Architecture
Pragmatic Architectureguestedb3ee
 
Pragmatic Architecture, Today (v2)
Pragmatic Architecture, Today (v2)Pragmatic Architecture, Today (v2)
Pragmatic Architecture, Today (v2)Bart Blommaerts
 
Modelo de expediente para arquitectura
Modelo de expediente para arquitecturaModelo de expediente para arquitectura
Modelo de expediente para arquitecturaDanny Guevara
 
ea2009 Enterprise Architecture keynote Final
ea2009 Enterprise Architecture keynote Finalea2009 Enterprise Architecture keynote Final
ea2009 Enterprise Architecture keynote FinalMarc Caltabiano
 
Proceso metodológico del diseño arquitectónico
Proceso metodológico del diseño arquitectónicoProceso metodológico del diseño arquitectónico
Proceso metodológico del diseño arquitectónicoJorge Granados Valencia
 

Destaque (7)

Pragmatic Architecture
Pragmatic ArchitecturePragmatic Architecture
Pragmatic Architecture
 
Pragmatic Architecture, Today (v2)
Pragmatic Architecture, Today (v2)Pragmatic Architecture, Today (v2)
Pragmatic Architecture, Today (v2)
 
Modelo de expediente para arquitectura
Modelo de expediente para arquitecturaModelo de expediente para arquitectura
Modelo de expediente para arquitectura
 
ea2009 Enterprise Architecture keynote Final
ea2009 Enterprise Architecture keynote Finalea2009 Enterprise Architecture keynote Final
ea2009 Enterprise Architecture keynote Final
 
Teoria funcional
Teoria funcionalTeoria funcional
Teoria funcional
 
Metodos de diseño arquitectonico
Metodos de diseño arquitectonicoMetodos de diseño arquitectonico
Metodos de diseño arquitectonico
 
Proceso metodológico del diseño arquitectónico
Proceso metodológico del diseño arquitectónicoProceso metodológico del diseño arquitectónico
Proceso metodológico del diseño arquitectónico
 

Semelhante a Pragmatic Architecture in .NET

Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstEnea Gabriel
 
2010-07-19_rails_tdd_week1
2010-07-19_rails_tdd_week12010-07-19_rails_tdd_week1
2010-07-19_rails_tdd_week1Wolfram Arnold
 
J2EE Performance And Scalability Bp
J2EE Performance And Scalability BpJ2EE Performance And Scalability Bp
J2EE Performance And Scalability BpChris Adkin
 
SPCA2013 - Test-driven Development with SharePoint 2013 and Visual Studio
SPCA2013 - Test-driven Development with SharePoint 2013 and Visual StudioSPCA2013 - Test-driven Development with SharePoint 2013 and Visual Studio
SPCA2013 - Test-driven Development with SharePoint 2013 and Visual StudioNCCOMMS
 
Usemon; Building The Big Brother Of The Java Virtual Machinve
Usemon; Building The Big Brother Of The Java Virtual MachinveUsemon; Building The Big Brother Of The Java Virtual Machinve
Usemon; Building The Big Brother Of The Java Virtual MachinvePaul René Jørgensen
 
Application Architecture April 2014
Application Architecture April 2014Application Architecture April 2014
Application Architecture April 2014Lars-Erik Kindblad
 
Asp.Net_ Developer Resume Remotely
Asp.Net_ Developer Resume RemotelyAsp.Net_ Developer Resume Remotely
Asp.Net_ Developer Resume RemotelySumitKumar2504
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technologyEldos Kuriakose
 
MongoDB Evenings Toronto - Monolithic to Microservices with MongoDB
MongoDB Evenings Toronto - Monolithic to Microservices with MongoDBMongoDB Evenings Toronto - Monolithic to Microservices with MongoDB
MongoDB Evenings Toronto - Monolithic to Microservices with MongoDBMongoDB
 
Linq To The Enterprise
Linq To The EnterpriseLinq To The Enterprise
Linq To The EnterpriseDaniel Egan
 
IT Modernization For Process Modernization
IT Modernization For Process ModernizationIT Modernization For Process Modernization
IT Modernization For Process ModernizationDheeraj Remella
 
Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)Steve Lange
 
RailswayCon 2010 - Command Your Domain
RailswayCon 2010 - Command Your DomainRailswayCon 2010 - Command Your Domain
RailswayCon 2010 - Command Your DomainLourens Naudé
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicDavid Solivan
 
Syllabus for Technical courses
Syllabus for Technical coursesSyllabus for Technical courses
Syllabus for Technical coursesMontek1Learning
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arpGary Pedretti
 

Semelhante a Pragmatic Architecture in .NET (20)

Elements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code FirstElements of DDD with ASP.NET MVC & Entity Framework Code First
Elements of DDD with ASP.NET MVC & Entity Framework Code First
 
Day1
Day1Day1
Day1
 
2010-07-19_rails_tdd_week1
2010-07-19_rails_tdd_week12010-07-19_rails_tdd_week1
2010-07-19_rails_tdd_week1
 
J2EE Performance And Scalability Bp
J2EE Performance And Scalability BpJ2EE Performance And Scalability Bp
J2EE Performance And Scalability Bp
 
SPCA2013 - Test-driven Development with SharePoint 2013 and Visual Studio
SPCA2013 - Test-driven Development with SharePoint 2013 and Visual StudioSPCA2013 - Test-driven Development with SharePoint 2013 and Visual Studio
SPCA2013 - Test-driven Development with SharePoint 2013 and Visual Studio
 
Usemon; Building The Big Brother Of The Java Virtual Machinve
Usemon; Building The Big Brother Of The Java Virtual MachinveUsemon; Building The Big Brother Of The Java Virtual Machinve
Usemon; Building The Big Brother Of The Java Virtual Machinve
 
Application Architecture April 2014
Application Architecture April 2014Application Architecture April 2014
Application Architecture April 2014
 
Asp.Net_ Developer Resume Remotely
Asp.Net_ Developer Resume RemotelyAsp.Net_ Developer Resume Remotely
Asp.Net_ Developer Resume Remotely
 
Latest trends in information technology
Latest trends in information technologyLatest trends in information technology
Latest trends in information technology
 
MongoDB Evenings Toronto - Monolithic to Microservices with MongoDB
MongoDB Evenings Toronto - Monolithic to Microservices with MongoDBMongoDB Evenings Toronto - Monolithic to Microservices with MongoDB
MongoDB Evenings Toronto - Monolithic to Microservices with MongoDB
 
Linq To The Enterprise
Linq To The EnterpriseLinq To The Enterprise
Linq To The Enterprise
 
IT Modernization For Process Modernization
IT Modernization For Process ModernizationIT Modernization For Process Modernization
IT Modernization For Process Modernization
 
Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)
 
CV_SwapnilGupta
CV_SwapnilGuptaCV_SwapnilGupta
CV_SwapnilGupta
 
RailswayCon 2010 - Command Your Domain
RailswayCon 2010 - Command Your DomainRailswayCon 2010 - Command Your Domain
RailswayCon 2010 - Command Your Domain
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs Public
 
Syllabus for Technical courses
Syllabus for Technical coursesSyllabus for Technical courses
Syllabus for Technical courses
 
Shaloo Verma
Shaloo VermaShaloo Verma
Shaloo Verma
 
Kasi Resume
Kasi ResumeKasi Resume
Kasi Resume
 
Onion Architecture with S#arp
Onion Architecture with S#arpOnion Architecture with S#arp
Onion Architecture with S#arp
 

Último

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 

Último (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 

Pragmatic Architecture in .NET

Notas do Editor

  1. Unit testingDomain Driven DesignSOAEvery abstraction has a cost. Know what you&apos;re getting and giving.
  2. not games, embedded software)
  3. http://www.xprogramming.com/Practices/PracSimplest.htmlGet 80 of the benefit from 20% of the features.
  4. 6 months: Annual trade show, Ad campaign,
  5. Quality: Features, Scope, Architecture, Reuse, Performance, Security
  6. Note: Rarely is scope decreased, deadlines moved, or manpower added.
  7. Often deadlines are arbitrary – you estimate so executives know about when something will be released. Real deadline
  8. Facebook uses PHPTwitterStackOverflow - used Linq-2-SQL (Active record pattern). Now #85 globallyThe problem is getting people to care
  9. Peformance Cost: Translation. Often offset by performance tuning, via encapsulation (e.g. caching queries)
  10. Reusable: HTTP, Telnet, SSH use TCP/IPLeaky: Update all layers to add UI fieldPerformance Cost: Translation. Often offset by performance tuning, via encapsulation (e.g. caching queries)
  11. Escalate to separate classes and modules as complexity justifies
  12. On the other hand, you know how it works. You can debug it. It&apos;s all right there in your own persistence layer, not buried in the bowels of a 3rd party tool.
  13. Note under pass - Sprocs can be used to please DBAs, but lose are required by DBAs (mitigates benefits)
  14. http://www.martinfowler.com/eaaCatalog/activeRecord.htmlhttp://www.mehdi-khalili.com/orm-anti-patterns-part-1-active-record
  15. Each object owns the logic that is relevant to its piece.
  16. UseDataMapper pattern to resolve variant relational object schemas
  17. Insert chart from pg 29Note: Not mutually exclusive. Can use each as needed in diff contexts.
  18. .Net architecturePOEAADDD