Software architecture design patterns

2019-01-30 07:31发布

问题:

Can you please educate me on what are the software architecture design patterns that are available?

To elaborate my question, I want to read through different architecture design patterns and decide what suits my project requirements?

For example, there are Enterprise application design patterns, Enterprise Integration design patterns, ESB patterns, SOA patterns etc.

回答1:

Patterns occur at many levels. Architecture patterns (i.e., architectural styles) are generally the largest in scope and cover the fundamental organization of the system. Design patterns are at the level of several collaborating objects. Bernd's suggestion of Fowler's and other enterprise patterns is a good one. Just recognize that those patterns tend to be more specific than these architectural patterns:

  • Layered (i.e., virtual machine pattern)
  • Big Ball of Mud
  • Pipe and Filter
  • Batch-Sequential
  • Model-Centered (Shared Data)
  • Publish-Subscribe
  • Client-Server (and N-Tier)
  • Peer-to-peer
  • MapReduce

Architecture patterns most often apply to the runtime structure of the system, but can also apply to its modules or its hardware allocation. One common mistake is to think that the Layered pattern applies to the runtime when it really applies to a system's modules (i.e., its compile-time dependencies). You can, of course, mirror your module structure in the runtime

These patterns are discussed in detail in my book, Just Enough Software Architecture, Fairbanks (2010). Most of them are also covered in other books including Garlan & Shaw (1996), Taylor, Medvidovic, & Dashovy (2009), and Documenting Software Architectures (SEI, 2010).

With the list of pattern names, you should be able to find plenty of web pages (I've marked this as a community Wiki so that we can add those links). The books are helpful too because they give you more insight on how to use the patterns.



回答2:

Read these books:

  • Martin Folwler: Patterns of Enterprise Application Architecture
  • Gregor Hohpe, Bobby Woolf: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions


回答3:

For architectural patterns, read Pattern-Oriented Software Architecture Volume 1: A System of Patterns. patterns discussed are:

  • Layers
  • Pipes & Filters
  • Blackboard
  • Broker
  • Model-View-Controller (MVC)
  • Presentation-Abstraction-Control (Hierarchical MVC)
  • Microkernel
  • Reflection


回答4:

Not very sure about your question! Your one tag is design pattern so I will say this: If you have not read design patterns book then you need to read design pattern books first. Head First Design Patterns is good. When you can understand about design patterns then Architecture design patterns can be understood.



回答5:

Also, take a look at Microsoft Application Architecture Guide from the patterns & practices group. Make sure to read the 2nd edition.

For a soft copy, go here: http://msdn.microsoft.com/en-us/library/dd673617.aspx