Software Engineering, Project Management, and Effectiveness
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 / DevelopersOur primary audience is solution architects, developer leads, and developers.
Principles, Patterns, and PracticesI'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:
TopicsHere's some of the areas we're looking at for the guide:
Your FeedbackWhat would you like to see in the guide?
The Patterns and Practices team is *finally* updating their architectural guidance. You can see J. D
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.
Those of you who remember ye olde days of yore when .NET 1.0 and 1.1 were the latest and greatest thing
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.
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
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)
@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.
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.
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?
@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.
well its about time!!!! u gots me worried there
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? :-)
good matarials. also add WOA vs SOA
@Anthony - no worries.
@Martin - really good point on the arch descriptions.
@Vishal - WOA got me thinking.