My earliest experience with computers came while serving in the United States Navy, after which I decided to pursue a degree in Computer Science. About the same time, IBM introduced the PC and I discovered very quickly I wanted to program the PC. I thought the PC would be the future and wanted to program for it.
For several years I worked as a programmer doing software development in an ad hoc manner without any real direction or concept of how to really develop software. The industry was still young and there were a lot of ideas about managing software development and what a programmer should be doing, but nothing concrete. I did have a concept that we should create a layered approach where the lowest layer was a set of primitive functions used by other higher level functions in the system.
When I first started programming for Windows, it was all done in Microsoft C using the Windows API. It was a lot of coding to get the simplest things to work. After that, C++ and other library vendors entered the market place and eventually I ended up using Microsoft C++/MFC for doing windows applications. It was during this time frame that I became interested in developing business frameworks.
When Microsoft came out with .NET/C# and Web Forms for doing web development I knew I needed to change directions in what software development tools I need to work with when developing software. I’d have to say my first introduction to the concept of a layered architecture was at Glenayre, but the concepts didn’t really take until I was working as a contractor at Texas Education Agency.
My knowledge and expertise in web application architecture and development began to really form when I was a Team Lead at Texas Water Development Board. This is where I created a business framework for developing web applications in .NET/C#. The business framework I created had the primary purpose of creating consistency between how development projects were structured as well as making the user interface consistent between applications. It was a bumpy road to get started, but every year the process, business framework, and application development kept evolving and getting better.
I’m at the Texas Education Agency again, this time as a full-time employee. This is a situation where a legacy system written in classic asp is still being used and because of my .NET experience, we’re now in the process of updating the classic asp system to .NET. We’re creating new .NET applications that are integrated into the existing system. By that, I mean the user interface has been duplicated for the menuing system and the general page content layout.
Doing a system rewrite in this manner allows us to modify, rewrite or add new pages in a way so the end user will not notice anything. Management likes it because we’re not requiring additional resources for the rewrite. It’s a win win for everyone.
Conceptually, the problem domain is the same as TWDB, but the business framework is different and how the applications are structured is different. It’s a matter of different needs and requirements that has dictated the solution, but the concepts are the same.
Instead of being one monolithic application the new .NET system consists of three MVC web applications and several Web Api applications. The MVC web applications are using .NET MVC 5, Bootstrap, and AngularJS. The Web Api applications are for the restful web services and broken up by functionality to create micro applications or services for the MVC applications. All applications use the same core libraries for models, security, extensions, logging, and data transfer objects.