Architecture

Software architecture.

The angle bracket is mightier than the pen

Indeed it has been known for many centuries that the written word could depose rulers more swiftly than any sword. "The indispensable catalyst is the word, the explanatory idea. More than petards or stilettos, therefore, words - uncontrolled words, circulating freely, underground, rebelliously, not gotten up in dress uniforms, uncertified - frighten tyrants." -- Ryszard Kapuscinski, Shah of Shahs In the modern world however the typed word and even the encoded word has become the more powerful entity. Newspapers yield their control of popular media to an internet of blogs and the world finds itself more dependent upon technology than ever...

Dynamic OrderBy in LINQ

Have you ever found yourself writing this code? switch (columnName) {     case "Name":         return objList.OrderBy(o => o.Name);     case "Address":         return objList.OrderBy(o => o.Address);     ... etc ... } If so then you have probably wished you could do this:     return objList.OrderBy(columnName); However, that's not going to work because the LINQ method is looking for an expression tree rather than a column name. There are a few libraries out there such as the Dynamic LINQ Library, but if that feels a little heavyweight for you then the following solution may help. This class is a generic sorter for collections of type T. There are two...

Designing for Testability

Automotive manufactures have long been on the vaunted TDD bandwagon.  For years they have harnessed the amazing potential of unit testing, verifying components individually prior to the expensive and time-consuming exercise of assembling them to make a completed vehicle.  Integration testing in the automotive world is very expensive and to find that a single component failure has wasted a fleet of test vehicles as well as many months of construction and fabrication is close to unacceptable.  However, they have also long faced the question of when and where to design for testability; a line still not clearly defined in any...

VSLive! Day Three - Creating Custom WCF Behaviors

Presenter: Rob Daigneau Code: http://www.designpatternsfor.net I think it must either be Rob Daigneau or the topic of Windows Communication Foundation because this was yet again another superb talk.  WCF was of little interest to me when I first arrived at this conference, however now I found myself extremely interested in learning more about how it might improve the architecture of my projects.  It doesn't feel, like so many unfortunately do, like a technological solution in search of a problem.  I can already see where I could apply WCF to bring a robust communication framework into the design of my applications. Aspect-Oriented Programming Aspects encapsulate the handling of...

VSLive! Day Two - Implementing SOA Design Patterns with WCF

Presenter: Rob Daigneau (Chief Architect, SynXis) Blog: http://www.designpatternsfor.net Author of an upcoming book on SOA Design Patterns published by Addison Wesley. This was definitely the most interesting talk of the conference so far.  It's pleasing to see an advanced course that really got into some great architectural discussions and provided applicable techniques for solving difficult SOA problems such as maintenance, versioning, forward, and backward compatibility.  This session is geared towards the WCF developer who is looking to improve their service oriented design architecture.     There are two typical types of SOA services: Domain Services These are the elemental building blocks upon which everthing else is built. Enterprise...