Frequently I see the same question in many forms; “How do I design a web application architecture”. The simple answer is that all application architectures are different, depending on the actual needs. Instinctively most programmers know what’s required, or at least we think that we do.
The true skill is to realise that we are often wrong and that any architecture design needs to be validated.
Pragmatic approach to application architecture
Pragmatism is one of those often misapplied terms that is often used interchangeable with “in my experience”.
Removal Of Control is a mechanism that will improve the usability, reliability and readability of code. I use commonly, it's similar in what I'm achieving but very different to IoC. The defining difference for me with ROC is:
Removal Of Control allows objects to be less tangled.
Filtering a listbox, datagrid, or any list control within WPF for a given entity from an entity framework collection should be easy; and it is once you've figured out how it should work.
Recently I was fortunate enough to be in the position of having a completely free hand to choose the technologies for a desktop application, which is a double edged sword. The only technical brief was that it had to be a Windows Desktop application
Often when designing anything it is all to easy to forget the simple fact that when you add 1 to a number you will eventually be doing ADDQ.L #1, D2.
I follow, but not rigidly, the following rules of thumb
If you have a design with 2 classes you probably should be writing something procedural.
If you have a design with more than 30 classes it's probably time to revisit the design.
I've just realised that effectively I'm breaking my own rule of thumb No.4 "You don't need to write an application framework", and here I am writing one.
On a page where there are lots of views but all from the same entity there is an interesting challenge when an individual item is updated within a view. Normally this is catered for during a full postback simply because the entire page is recreated dynamically, so it is enough that the post is processed during the construct phase.
However this isn't true when we are using an ajax update to modify an item.
There will always come a point in any software system where the original developers move on and yet someone has to maintain
A tranquil haven away from the hustle and bustle of pressured modern life, development is performed in a small stone room in the corner. The only fortifications are the firewalls, and the stone walls, just enough to think creatively. Here I ponder the intricacies of coding, sometimes complex distributed systems, othertimes the more mundane, and in my spare time the personal coding and pet projects. You don't have to like it.
I've been developing software (or programming as we used to call it) since 1982, in the rough order: Basic -> 6502 assembler -> APL -> Pascal -> C -> C++ , and ending up with Java, C# and PHP. The last three are my preferred languages, the choice depends on the requirements of any given task. Add in database design and the ability to write efficient SQL.
Site Mission Statement
Apparently, according to management consultants, its important to have a Mission Statement, so here it is.
This site is primarily my place to keep track of ideas and concepts, the journal is there for the same reason, it tracks my thoughts and rather like a diary or one of those reassuringly navy blue Engineering Notebooks that we were given at certain companies to fill in with all our thoughts and then leave behind as an eternal record for whoever followed.
I'm probably not as clever as I'd like to think I am, so so don't expect everything to work
The trouble with developers is that it's always in a state of development
Rules of thumb
- any given non-trivial project will take no less than three months full time.
- Don't change anything without a compelling reason; c.f. "If it isn't broken it doesn't need fixing"
- HTML for content, CSS for layout
- You don't need to write a framework
- You do need version control from day one
- You haven't just found a bug in the compiler
- If you haven't tested it then there is a 5-sigma certainty that it won't work