|
Sponsored Links
Resources
.NET Research Library
Get .NET related white papers, case studies and webcasts
|
News
News
News
|
Messages: 11
Messages: 11
Messages: 11
Printer friendly
Printer friendly
Printer friendly
Post reply
Post reply
Post reply
XML
XML
XML
|
 |
Humor: .NET Architectural Anti-Patterns
There are many books and articles on architectural patterns available. Despite these, systems with bad architecture seem far more endemic than good architecture. Here's a quick taxonomy of the anti-patterns of architecture that I've spotted in systems over the last couple of years:
Catastrophe oriented architecture (or worst-case architecture) - a common anti-pattern that I've previously discussed in a Blog entry. This is where, rather than designing a system based on the current requirements, effort is focused on dealing with designing in support for the possible negative impacts that may occur, leading to a system designed as though every undesirable feature has been made into a requirement. For instance, designing a .NET application to be built in J#, and to only make use of Java compatible functionality, on the off chance that the enterprise strategy changes to a Java platform in the future.
Pattern oriented architecture - A trend that's found in systems created by architects who've recently read and digested books on architectural patterns and come to the conclusion that implementing patterns (such as front-controller, etc) is the key to a successful architecture. Rather than determining if common patterns are appropriate, and picking the most suitable one, all patterns that can be applied are done so, on top of one another, creating an entangled, schizophrenic system.
Enterprise oriented architecture - This is found in applications that sit within a larger Enterprise, where overly-engineered facets are put in place "for the sake of the Enterprise. For instance, using a data-center scale database server for logging exceptions as "it's the enterprise standard", or using an application framework that's larger than the application itself. The impact of this anti-pattern is the increased infrastructural cost and lowered agility of a system.
Interface oriented architecture - Noticeable by the number of interfaces in a system dwarfing the number of classes that actually implement them. This pattern regularly evolves for similar reasons to pattern oriented architecture, where certain more "advanced" features of systems (in this case interfaces), are thought to imbue quality into a system. A good example of this is a system where Customer and Employee both inherit from a base Person, even though there are no common functions in a system that could perform operations on both object-types.
Service dis-oriented architecture - Service dis-orientation is a recent anti-pattern that occurs when the technical principle of SOA gets introduced to an architect without the supporting body of knowledge. The principle, having communication via loosely-coupled Web services, is a technique that's useful in circumstances where where distribution and interoperation are a requirement, but it also introduces many drawbacks (transactional incapability, for one). Service dis-orientation usually manifests itself as an architecture where internal objects or large datasets are exposed via the services, ignoring one of the key reasons for using them - abstracting the communication to that of business document, rather than the internal implementation.
XML oriented architecture - a design created by those that have jumped on the XML bandwagon and see it as a panacea to all. Systems designed using this anti-pattern are permeated by XML being passed through all layers - XML in the database, XML between layers, XML & XSLT for the presentation, generally resulting in an architecture with fairly loose tiering. XML is a great way of communicating between heterogeneous systems and represeting complex data structures, but, like every technology, it has its limitations. For instance, linking data and functionality is difficult with XML, as, potentially, is storing and manipulating it relationally.
Read more from JS Greenwood Reprinted with Author's Permission
|
|
Message #130507
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
One more antipattern
Architecture generated by Microsoft VisualStudio wizards is the worst antipattern (or is it the best _anti_pattern?).
|
|
Message #130572
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Humor: .NET Architectural Anti-Patterns
One more: Super Object oriented architecture - a design created by those that have jumped on the OO bandwagon and see it as a panacea to all. Systems designed using this anti-pattern are permeated by 'Business Objects' being passed through all layers - Objects in the database, Objects between layers, Objects presenting their own UI and external representation, generally resulting in an architecture with fairly muddled tiering. Objects are a great way of implementing embedded systems or text book examples where data and application always evolve in sync, but like every technology, it has its limitations. For instance, separating data from functionality is difficult with Objects, as, potentially, is storing and manipulating it relationally.
|
|
Message #130581
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Object-sprawl oriented architecture
Alexander, funny you should add that anti-pattern. I was considering having another item in the list when I wrote it of "object-sprawl oriented architecture". This is where people try and link every item in the system with another, creating one giant object hierarchy that's intertwined, and passed around between layers.
I totally agree with the data/functional separation issues with OO, and thankfully that's where SOA (if/when done correctly) should help.
-JS (http://weblogs.asp.net/jsgreenwood)
|
|
Message #130598
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Well, I can think of one more antipattern
This pattern is quite widespreaded in .NET community: Hard Vendor Lock-In Antipattern.
|
|
Message #130737
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Re: funny but
> a follow up with descriptions of good architecture would be nice
Good idea - most of the architectural articles don't do a side-by-side comparison, they focus on one area/problem. I'll work on a simple(ish) one this week and post it on my Blog. Will possibly turn that into a better article (or series of ~) for some site or other when I get the time, too.
-JS [http://weblogs.asp.net/jsgreenwood]
|
|
Message #174228
Post reply
Post reply
Post reply
Go to top
Go to top
Go to top
|
 |
Anti-Patterns still might be better than no patterns at all
Remember there are still a lot of developers even in the .NET community that are writing procedural code and skipping OO altogether. This is true particularly with WinForms and while patterns evangelism has done much to educate developers on OO design, there is still quite a lot of work to be done just to get buy-in from the entire .NET community (I'm thinking mostly of the community of developers that are just heads-down and don't contribute to forums like this one)
This article is basically refering to the fact that it is easy to swing the pendulum too far in over-engineering, but my point is that this danger is far less acute than the time-pressured temptation to under-engineer.
|
|
 |
| |
|
New content on TheServerSide.NETNew content on TheServerSide.NETNew content on TheServerSide.NET |
 |
 |
Language "mashups" will become more prominent, and developers will become polyglots, one programmer suggests.
SearchWinDevelopment.com offers an introduction to the language, performance, testing and data management improvements in VS 2008.
VBCode.com code snippets cover all aspects of application development, from data binding to security to the user interface.
Get up to date on XAML best practices with a variety of articles, tutorials and webcasts. [SearchWinDevelopment.com]
One team's experience with the VSTS DB edition suggests that it can improve workflow for dev teams. It also enhanced Agile efforts.
(June 24, Article)
Microsoft has begun to include DSL tools in the VSTS kit. A new book by Steve Cook and other VSTS team members helps set the stage.
(June 24, Article)
Cartoon: Be it ever so humble there is no place like your home after you get a Microsoft Home Server .
(June 18, Cartoon)
Microsoft's Thom Robbins says new technology to highlight in NET 3.5 includes AJAX, LINQ for both C# and VB, as well as tooling enhancements intended to ease the task of building WPF, WF and WCF apps.
(June 29, Podcast)
Venkat Subramaniam discusses AJAX bottlenecks, the tenets of Agile development and more. He spoke at the Ajax Experience.
(June 25, Tech Talk)
In the second of a two-part series, Michele Leroux Bustamente discusses design decisions related to the claims-based security model. Read the story and walk through the process for creating a set of claims-based utilities to encapsulate claims authorization at the service tier.
(May 24, Article)
Understanding why the Entity Framework exists and learning where it can fit into your projects can get you prepared for the eventual release early next year.
(May 10, Article)
Resource: This learning guide gives you quick access to useful links on Windows Communication Foundation security information.
(April 24, Article)
TSS.NET's Jack Vaughan spoke recently spoke with Microsoft's Brad Abrams to find out what he is seeing in the field and what the chefs in Redmond are cooking. Along the way he discusses patterns of AJAX frameworks.
(April 11, Article)
In a two-part series, Michele Leroux Bustamente explains how claims-based security is supported by WCF, and how you can implement a claims-based security model for your services.
(March 29, Article)
Windows Workflow Foundation is a new technology that many developers will need to get their heads around. In a brief excerpt adapted from Programming Windows Workflow Foundation: Practical WF Techniques and Examples using XAML and C#, K.Scott Allen considers aspects of workflow definition.
(March 22, Chapter Excerpt)
|
|