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?

Comments (55)

  1. abe says:

    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

  2. Jon Kruger says:

    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?

  3. J.D. Meier says:

    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.

  4. J.D. Meier says:

    Hey Abe –

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

  5. alikl says:

    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

  6. J.D. Meier says:

    Thanks Alik.  

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

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

  8. Adwait Ullal says:

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

  9. J.D. Meier says:

    Hey Adwait

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

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

  11. Colin Jack says:

    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?

  12. Eric says:

    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.

  13. Eric says:

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

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

  15. J.D. Meier says:

    @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.

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

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

  18. Scott says:

    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.

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

  20. ydramu says:

    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.

  21. Gabriel says:

    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

  22. Mark L says:

    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

  23. J.D. Meier says:

    @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.

  24. John Rusk says:

    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.

  25. Ken says:

    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?

  26. J.D. Meier says:

    @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.

  27. Anthony giwa says:

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

  28. Martin says:

    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? 🙂

  29. vishal kulshreshtha says:

    good matarials. also add WOA vs SOA

  30. J.D. Meier says:

    @Anthony – no worries.

    @Martin – really good point on the arch descriptions.  

    @Vishal – WOA got me thinking.

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

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

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

  34. J Healy says:

    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.

  35. vmsanthosh.chn says:

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

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

  36. J.D. Meier says:

    @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.

  37. L Spidell says:

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

  38. J.D. Meier says:

    @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.

  39. Josh Brown says:

    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.

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

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

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

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

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

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

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

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

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

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

  50. Artech says:

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

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

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

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

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

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