Software Design and Architecture in .NET

Home » Software Architecture and Design » Software Design and Architecture in .NET
Photograph of columns in old building

The reason for me producing this blog in the first place is that I wanted to share and develop my knowledge of object orientated design, including layered and tiered software and software architecture in general.

To do proper justice to these subjects could take more time than I have had available in the past few months, with a house move and lots of work commitments. Hence it has not yet been attempted.

I am intending to put the effort in though especially with having some time available over the christmas break. This post is the first of hopefully many on these two subject areas.

Just to define Design and Architecture for the purpose of this blog.

In this blog, design is the effort you put into designing an individual application or database to meet your user requirements.

Architecture is relating to the relationship between different components, in particular the relationship between different applications in a system that is made up of well, different applications.

So for example, talking about layered architecture is really design if these are layers (i.e. classes in the same app) or architecture if there are multiple tiers (e.g. part of the app in a WCF service, the other part in MVC or WPF).

In coming posts I am going to explore both angles.

Software Design

I see too many systems that just kind of expand outwards, into what are called “Thick Client” type of applications. That is, all code goes into a single code behind class (or possibly stored procedures and views in the database – resulting in a Thick Database, which is just as bad). Also systems I have worked on are both “Thick Client” and “Thick Database” with nothing much in-between!

These systems are common in my experience and are very easily done when your DBA says he/she always wants stored procedures, it might be difficult to make changes to the database, and the software itself expands out in the code behind as new features are added without time (or tests) to allow easy refactoring of the client side code.

While there are plenty of ways to design a system correctly, there are also plenty of ways to get it wrong also (what’s the definition of right or wrong – well you decide that – if you are happy with your system, if its reliable, meets your users needs, easy to maintain and enhance, then there is nothing “wrong” with it – most systems can usually improved in one way or another though, because nothing is perfect). We are going to journey from examples of such a system in various directions that undoubtedly improve matters, giving the reader the information and tools to be able to make better decisions about where to put the code.

Software Architecture

Software Architecture is a different subject. How should components and systems talk to each other? In the case of components where to put the breaks in tiers, what classes go in what tier. How to change if you get it wrong, etc. In the case of systems often it is a case of finding out what the published interface is if any and using that, or if not, making a WCF service that uses SSL transport that can access the database and at least make a start at making it secure over the internet. But how to design these services? How to make them resilient? Talking of resilient, how to handle one system, one database, or one component being down and unavailable? Showing users the error page isn’t always acceptable.

Also the methods used to integrate different systems together have changed over the years. Years ago it was “Best of Breed” and “Enterprise Integration” that were the buzzwords. Then SOA (Service Orientated Architecture). You cannot say you are using SOA just because you are using WCF! There is a lot more to it than that. What I am looking for is a low cost way that just allows developers to concentrate on business logic rather than plumbing code, so we will look at brokers like Microsoft Biztalk and its more developer friendly alternative Windows Workflow Foundation (WF) and also products like NServiceBus (to be fair Biztalk can act like a Bus as well as a broker).

During my career I have been lucky enough to be able to work on lots of different systems I can add some really valuable posts. Watch this space!

About Phil

I have been working as a software developer since 1983. This blog could have been called "From Fortran 77, C and Cobol to C# in 20 (not so) easy years", but it doesn't sound quite right somehow. Besides I'm talking about what's happened since 2003, not before!

Leave a Reply

Your email address will not be published.


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">




Top Posts & Pages

Categories

Recent Posts

Recent Comments

Archives

Blogroll

  • Mike Cohn's Blog
  • Scott Hanselman's Blog
- mike@mountaingoatsoftware.com

I wrote 25 blog posts during 2018. In case you missed some of them, here are the most popular. [...]

- mike@mountaingoatsoftware.com

The iterative and incremental nature of agile makes an agile approach seemingly less compatible with [...]

- mike@mountaingoatsoftware.com

Velocity can be great for predicting how much a team can deliver in a given period. But it needs to [...]

- mike@mountaingoatsoftware.com

Succeeding with agile isn’t just about knowing where to start, it’s about knowing where to go next—w [...]

- mike@mountaingoatsoftware.com

Here’s what to do when facing a complex user story that cannot be split but is too large for one spr [...]

- Scott Hanselman

As I said on social media today, it's 2019 and I'm updating the Firmware on a Zune, fight [...]

- Scott Hanselman

I'm going to try to finished my Relationship Hacks book in 2019. I've been sitting on it t [...]

- Scott Hanselman

My son and I were working on an Adafruit NeoTrellis M4 Mainboard over the holidays. This amazing lit [...]

- Scott Hanselman

I'm on vacation for the holidays and I'm finally getting some time to play video games. I [...]

- Scott Hanselman

I blogged about DOSBox five years ago! Apparently I get nostalgic around this time of year when I [...]

Meta