Part 1 - Introduction - This post
Part 2 - The Architecture
Part 3 - The DTOs

I like code demos. They're good for getting you familiar with how a specific technology works. However, many times, it's hard to get a feel for how different technologies work together to create a larger ecosystem in the enterprise environment.

For instance, when I started my latest job back in June of 2017, I was instantly able to begin contributing to the team in a productive manner. Initially, I was assigned regular maintenance duties on the existing website, but there were plans in place to move to a different architecture that utilized Entity Framework, Web API, and .NET Core.

Many people would argue that Entity Framework and .NET are dead. I disagree. I find that .NET and C# are constantly evolving to meet my needs. Sure, they may not be the latest hotness, but they're based on a firm foundation and build upon a great language.

It seemed daunting at first, but I worked with the other architects on the team and we have successfully built a full Continuous Integration/Continuous Deployment environment that manages our ASP.NET Core Web API, Entity Framework, and "classic" ASP.NET MVC applications.

I'd like to cover as much of what we're doing as I can without revealing any proprietary information as I feel there is a lot to learn from what we've accomplished.

Some topics I'd like to cover are:

  • How to integrate WebApi in an enterprise environment where the API is more strongly coupled to the applications that consume it
  • A cross-platform Web Api client that can be used from ASP.NET MVC or from Xamarin (UWP, Android, and iOS)
  • A common library that contains shared Data Transfer objects (DTOs), enabling maximum code reuse across the application layers
  • Strategies for abstracting Web Api endpoints at the client level, making it easier to code for less experienced developers (and avoiding the pitfalls of hard coding paths in requests)
  • A method to communicate type information to the Web Api server for all calls to enable more maintainable infrastructure on the backend