Enterprise Integration Zone is brought to you in partnership with:

Behind DotNetBlocks.com is a software engineer with over 10 years of experience in Microsoft technologies and is currently obtaining a Masters in IT. His primary focus is typically on software architecture, web applications, and interactions amongst various systems. Todd is a DZone MVB and is not an employee of DZone and has posted 47 posts at DZone. You can read more from them at their website. View Full User Profile

Basic Application Architecture Breakdown of a Very Simple System

  • submit to reddit
Over the past 10 years I have been developing software as a one man IT department, software engineering team member, and/or acting as an independent software consultant. This mixed past has allowed me the opportunity to participate in various levels of the architectural process. I have been able to gain experience with creating applications based on a brief conversation with owners and managers without any sort of documentation to developing full systems that require me to create functional specifications to creating design documents that require Use Cases, Sequence Diagrams, Class Diagrams, Flow Charts, and so on.

Recently, I developed a new application in the form of an automated task that pushed data via an HTTP Post an external API and then processed the data that was return so that it could be entered back in to an internal system.  This project was broken up in to several components but the primary focus was on a managing component that spawned off requests to a worker component that basically encapsulated and each individual process away from the primary controlling component. I broke this application up in to the two main components so that I could have a better separation of concerns and this architecture allowed for more of a fault tolerant system because errors found in each individual request were suppressed to the managing component so that if a request returned back bad data then the request would still have the opportunity to process. Additionally, the main managing process handles the spinning off of requests as well as obtaining the list of items to be requested. If any errors were found in this layer of the application then no processing would occur in till all of the errors were eliminated during the management process.

Additional common components were created to allow for encapsulating data via Data Transfer Objects, accessing and manipulating data via Data Access Layer, and generic common component that allowed for code the be used amongst all of the other components.

For this basic application my thought process was to keep everything very simple and try to design the application so that it closely followed Uncle Bob’s Solid principles.

Published at DZone with permission of Todd Merritt, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)