patterns & practices App Arch Guide 2.0 Project

It's long overdo, but we're kicking off a project for v2 of the patterns & practices Application Architecture Guide.  You might be familiar with Tom Hollander's post "Application Architecture for .NET" 2 - The Revenge.  Well, now it's time for results.

Solution Architects / Dev Leads / Developers
Our primary audience is solution architects, developer leads, and developers.

Principles, Patterns, and Practices
I'm a principles, patterns, and practices kind of a guy, so expect the guide to be principle-based, durable, and evolvable.

CodePlex Community Site
It's a work in progress and it's early, but you can follow along here:

Topics
Here's some of the areas we're looking at for the guide:

Macro

  • App Types
  • Arch Styles
  • Patterns
  • Layers, Tiers, and Components
  • Architectural Hot Spots
  • Presentation Layer
  • Business Layer
  • Data Access Layer
  • Services Layer
  • Services Design
  • Quality Attributes
  • Trends
  • Security Engineering
  • Performance Engineering
  • Baseline Architectures
  • Deployment Patterns

Micro

  • Choosing Presentation Technologies
  • Choosing Data Access Technologies
  • Choosing Workflow Technologies
  • Inline SQL vs. sprocs
  • MVC vs. MVP
  • Domain model driven vs. structure driven

Your Feedback
What would you like to see in the guide?

Published 02 September 08 07:52 by J.D. Meier
Filed under:

Comments

# abe said on September 3, 2008 6:31 AM:

Great. Some info REST vs SOAP, usage of JSON, POX etc would be great. Info on optimizing over the wire.

Other bits to cover include identity management and health models

# Jon Kruger said on September 3, 2008 11:02 AM:

I'm really excited about this, you guys did a phenomenal job with the WCF guidance site.

I'd include information about how to make your code testable.  We use mocking frameworks (like Rhino Mocks) on our projects, and we've found that you have to design your code a certain way to make it testable (usually by using interfaces more and concrete classes less).

Another debate that we have is when you're using web services, when should you use DTOs and when is it OK to send your entity objects across the wire?

# J.D. Meier said on September 3, 2008 4:32 PM:

Hey Jon

Great to hear!

Testability is definitely a hot spot these days.

How to pass data across the layers/tiers is a classic issue -- we definitely need to nail that.

# J.D. Meier said on September 3, 2008 7:27 PM:

Hey Abe -

Identity management, health, REST vs. SOAP are definitely hot spots!

# alikl said on September 6, 2008 7:33 AM:

Great list!

I'd love to see:

- DFO (design for operations) which relates to SLA's that are super relevant in S+S and multitenant scenarios.

- Production monitoring.

- Production incident management and resolution.

I think all these somehow related to AOP which hides somewhere in between Layers, Tiers, and Components

# J.D. Meier said on September 6, 2008 11:22 PM:

Thanks Alik.  

It sounds like you're focused on the end in mind.  Production puts your runtime patterns to the test.

# Inside Architecture said on September 8, 2008 4:02 PM:

A friend and colleague, J.D. Meyer, asked me to consider this question, and I have to admit that it's

# Adwait Ullal said on September 8, 2008 8:07 PM:

Will you also address how Cloud Computing affects some of the architecture attributes, etc?

# J.D. Meier said on September 9, 2008 3:17 AM:

Hey Adwait

Good question -- yes, cloud is on the radar.  It's a definite trend in today's world.

# Tom Hollander's blog said on September 10, 2008 3:56 AM:

Those of you who have been paying attention may have remembered a post I did over a year ago announcing

# Colin Jack said on September 10, 2008 7:50 AM:

Distribution including REST/SOAP/Messaging, domain modelling using DDD and other approaches, patterns within MVC, mapping between layers...mind you the topics you guys have described sounds good.

One question, are you going to reach out to the community for content or advice?

# Eric said on September 10, 2008 8:21 AM:

Great that the guide will be updated!

I would like to see som more information about async work (multiple threads) both on server side and in the client. For example who to handle async wcf calls in the gui so that data always is moved to UI Thread and so that exception is handled and showed (also from the UI Thread) and so on.

# Eric said on September 10, 2008 8:24 AM:

I also forgot to add occasionally connected clients with Microsoft Sync Framework would be an interesting area.

# Jeremy D. Miller -- The Shade Tree Developer said on September 11, 2008 7:36 PM:

The Patterns and Practices team is *finally* updating their architectural guidance. You can see J. D

# J.D. Meier said on September 11, 2008 7:57 PM:

@Colin - you bet.  Community input is a good thing.  The best way for now is the codeplex project site, but I'm exploring some additional ways.

@Eric - good point.  Occasionally connected is a very interesting area.

# Community Blogs said on September 11, 2008 8:19 PM:

The Patterns and Practices team is *finally* updating their architectural guidance. You can see J. D

# Mirrored Blogs said on September 11, 2008 8:36 PM:

The Patterns and Practices team is *finally* updating their architectural guidance. You can see J. D

# Scott said on September 11, 2008 9:24 PM:

I'd like to see more guidance and best practices on the styles/flavours of business layers/tiers and the like. This may come in under MVC but it always seems to be the area of an application that suffers the most.

# David Hill's WebLog said on September 12, 2008 1:51 PM:

Those of you who remember ye olde days of yore when .NET 1.0 and 1.1 were the latest and greatest thing

# ydramu said on September 12, 2008 4:34 PM:

Thank you for taking this initiative, we are looking for new version of this guide. As we got lot of changes in the VS2005 and 2008 how the application can be designed using APP_Code folders and APP_Data folders, I was in a little confusion whether to go with Class Library to create DAC and BLL or go with App Folders. I hope you will cover these when you discuss different layers of application.

We also want some sort of guidelines interms of selecting the application design moving towards SOA and having distributed architecture like, having the system integrations with SharePoint, Workflows, BizTalk Orchestration, Custom ASP.NET Application, WCF Services. How all these can be integrated in a SOA application to give a complete picture of MS Technologies how we can utilize these in real scenario.

# Gabriel said on September 13, 2008 2:26 AM:

Hi,

This is a fantastic guide and will be very helpfule to many people.

Million Dollar question.

Would it be possible to have a demo Application where these guidelines are put into practice?

Not everybody can translate very high level concepts into real world code.

Sometimes a picture does more than a 1000 words.

Well done again

Gabriel

# Mark L said on September 14, 2008 8:23 PM:

hiya - another suggestion - kind of related to the "Cloud computing" one: SaaS/S+S....

Also, what about Silverlight vs Ajax (given that these can be considered to be alternative approaches to the same basic problem)

Mark

# J.D. Meier said on September 15, 2008 4:15 AM:

@Scott - Layers/tiers are a key focus.  How you structure your app and where you put the bits and pieces really shapes how flexible and maintainable your application is, and we want to help you build durable, but evolvable apps.

@ydramu - I agree -- those are important areas.  The guide will be higher level -- more the principles, patterns, and practices around layers, components, tiers, quality attributes, and relevant principles/patterns/practices.  We'll also cover how to choose relevant technologies, from a scenario perspective.

We do have some information on structuring projects in our Team Development with TFS guide - http://blogs.msdn.com/jmeier/archive/2007/03/14/structuring-web-projects-for-source-control-in-team-foundation-server.aspx

@Gabriel - Great question and I agree -- codifying concepts helps a ton.  After we assemble the initial guidance (the guide, the KB with checklists, guidelines, Q&A, practices, how tos, patterns. ....), I'd like to have a reference application that puts it into practice, as well as what I call "arch nuggets" (end to end arch spikes with tests).  Meanwhile, have you seen the Layered sample in codePlex? ( http://www.codeplex.com/LayerSample/Release/ProjectReleases.aspx?ReleaseId=11916)

@Mark - SaaS/S+S are in scope -- at least to the point where you have a way to think about when and where they might fit in for your scenario.  As far as Ajax vs. Silverlight, we already have a matrix in progress to help you navigate the paths.  We're trying to keep it scenario-based and calling out benefits and liabilities (patterns style).  We're still hashing it out.

# John Rusk said on September 15, 2008 5:49 AM:

I'd love to see a "how to use this guidance" section.  I'd like to to explain what Microsoft's intentions are for how the guidance should be used.  

For instance, I think that your intention will be for architects to consider all the points in your guidance, weigh up the points, and then make a decision relevant to their own particular project.  

However, I fear that it will be (mis)interpreted as an intellectual straightjacket -- by both its fans and its detractors.

# Ken said on September 15, 2008 5:15 PM:

I'd love to see the new technologies integrated into the guide:

- When to use entity framework? How does it fits into layered application? Perfomance compaired to SP?

- When to use WCF and how and when to combine it with WF?

- What type of UI (ASP, Silverlight, WPF) match different business scenarios? calssis ASP.Net vs ASP.Net MVC?

# J.D. Meier said on September 16, 2008 1:00 AM:

@John - Good point.  While we can share generalized patterns and practices, ultimately the user needs to map it to their scenario and see if it's relevant.

@Ken - Yes, choosing relevant technologies for workflow, presentation, and data access is key.

# Anthony giwa said on September 16, 2008 6:56 AM:

well its about time!!!!  u gots me worried there

# Martin said on September 16, 2008 8:01 AM:

Some suggestions for the guide:

- A micro section on the measurement of Quality attributes should be included

- A micro section on " guidance for architecture descriptions" would be nice

- Formal guidance on Model Driven Development (DSL's) vs Model Driven Architecture would be excellent

- Development practices is also something that is not centrally documents (i.e. TDD, Continuous integration, etc.)

From my perspective community involvement is key especially when it comes architecture. Where can I sign up? :-)

# vishal kulshreshtha said on September 16, 2008 11:20 PM:

good matarials. also add WOA vs SOA

# J.D. Meier said on September 17, 2008 3:19 AM:

@Anthony - no worries.

@Martin - really good point on the arch descriptions.  

@Vishal - WOA got me thinking.

# Mike Walker's Ramblings about Industry Architecture said on September 17, 2008 5:42 PM:

I ran across an interesting post on J.D. Meier's Blog that describes the Patterns & Practices project

# DiegumZone. Policy Of Simplicity said on September 18, 2008 12:16 AM:

A new friend I got, J.D. Meier , is leading a project intended to provide renewed Architecture Guidance

# Mostly Technical Content said on September 22, 2008 5:02 AM:

Im Jahr 2002 hat die " Patterns & Pratices " Gruppe einen Design-Guide für verteilte

# J Healy said on September 25, 2008 7:24 PM:

JD, this all looks good, but following up on Adwait's comment - I'm hoping some guidance around Oslo and the new repository will be in the offing as soon as possible after the PDC. I know doing a real credible and comprehensive job on that front is probably way out on P&P's radar, but it would be good if P&P or the Oslo/Cloud groups could put out some preliminary guidance just so we all have our heads screwed on right coming out of the gate.

Also, I'd love to see a similar guidance package come out of the ALT.NET community - not so much by any particular luminary, but rather some form of consensus document putting some architectural context and scenarios around DDD, TDD, and SOLID.

# Santhosh Veeraraman said on September 26, 2008 11:24 AM:

Its really a great work! Thanks for bringing this out to us.

How about adding a few topics about SOA and Agile model?

# J.D. Meier said on September 26, 2008 10:02 PM:

@J Healy - I agree that having at least a frame and path would be helpful ... and pave the way for deeper guidance downstream.

@Santhosh - SOA makes sense.  We're mostly focused on "structure" vs. "process" but it could make sense to call some key forces and responses, at least in terms of trends.

# L Spidell said on September 27, 2008 6:21 PM:

Do you have an approximate date of when the guide will be published?

# J.D. Meier said on September 28, 2008 4:36 PM:

@L Spidell - Yes - Jan 15, obviously subject to change.  We'll ship modules incrementally though on CodePlex so you'll get to follow along.  So far, we've been shipping on Wednesdays.

# Josh Brown said on September 29, 2008 2:29 AM:

I am really looking forward to reading this once it comes out. I've got a software architecture blog and can't wait to incorporate some new ideas into it. I got a chance to write an article for the Patterns & Practices group at Microsoft and it was a great experience.

# J.D. Meier's Blog said on October 1, 2008 10:17 PM:

As part of our patterns & practices App Arch Guide 2.0 project , we'll be creating step-by-step How

# mszCool's thoughts and cents revealed said on October 2, 2008 3:36 PM:

For a long time the application architecture guidance from the patterns & practices team remained

# J.D. Meier's Blog said on October 5, 2008 12:01 PM:

Today we posted our Arch Frame to CodePlex.  Wednesdays are ship days (I don't ship on Fridays.) 

# J.D. Meier's Blog said on October 8, 2008 10:58 PM:

As part of our patterns & practices Application Architecture Guide 2.0 project , we've been hunting

# J.D. Meier's Blog said on October 11, 2008 4:42 PM:

As part of our patterns & practices App Arch Guide 2.0 project , we've put together an arch frame. 

# J.D. Meier's Blog said on October 11, 2008 4:43 PM:

As part of the App Arch Guidance project , we've created an organizing frame to help think about application

# J.D. Meier's Blog said on October 11, 2008 4:44 PM:

As part of our App Arch Guide 2.0 project , we're creating scenario frames to organize customer problems

# J.D. Meier's Blog said on October 21, 2008 10:26 AM:

As part of our patterns & practices Application Architecture Guide 2.0 project , we've been hunting

# J.D. Meier's Blog said on October 27, 2008 6:24 PM:

Today we released our patterns & practices App Arch Guide 2.0 Beta 1 .  This is our guide to

# DiegumZone. Policy Of Simplicity said on October 27, 2008 9:10 PM:

Better than just making promises is offering some realities and this is coming real After the auspicious

# Artech said on October 28, 2008 3:29 AM:

[FromJ.DMeier’sBlog:http://blogs.msdn.com/jmeier/default.aspx]Todaywereleasedourpatterns

# J.D. Meier's Blog said on November 5, 2008 11:31 PM:

I presented our new patterns & practices Agile Architecture Method for the first time at the patterns

# J.D. Meier's Blog said on November 7, 2008 2:35 PM:

Today we posted our updated software architecture best practices at a glance to CodePlex, as part of

# J.D. Meier's Blog said on November 11, 2008 6:52 PM:

How do you choose among the Microsoft .NET presentation technologies?  Use scenario-based evaluation. 

# J.D. Meier's Blog said on November 14, 2008 5:14 PM:

As part of our patterns & practices Application Architecture 2.0 project , we created a set of application

# J.D. Meier's Blog said on November 17, 2008 7:30 PM:

Today we released our patterns & practices Application Architecture Guide 2.0 Beta 2 .  This

New Comments to this post are disabled

Search

This Blog

Syndication

Page view tracker