I realize my posts haven’t been quite as frequent as you (or I) might like. That’s because I spend a good portion of my day architecting and developing a large enterprise line-of-business application called Back Office. It contains most of the highly specialized functionality that my employer, SIPC, relies on to provide protection to investors (as an aside, if you don’t know what SIPC does it’s worth checking out our site and reading up if you currently invest or plan to invest through a US-based brokerage firm). I started working on Back Office from scratch a couple years ago as a platform to replace and integrate many different (and often antiquated) applications. Over time it’s grown to be an extremely flexible framework that we use to rapidly create applications and functionality designed to make life easier for the examiners, lawyers, and other hard-working staff here. I’m very proud of what we’ve built and I think a lot of the ideas have general applicability. To that end, I’m going to start a blog series examining how the system works from the ground up.
This is what Back Office currently looks like:
It is an HTML5 web application running behind our firewall. It is fully-responsive to support out-of-office usage scenarios, which are relatively common (including small-screen devices). We use the following technologies and libraries (in no particular order). We also use a hand full of other support libraries, but not extensively enough to warrant further discussion.
- ASP.NET MVC (currently on MVC 4 – planning to upgrade to MVC 5 in the fall)
- Entity Framework (using Code First and currently on EF 5 – planning to upgrade to EF 6 in the fall)
- Kendo UI
- Attribute Routing (might switch to MVC attribute routing when we upgrade to MVC 5 depending on whether it covers all of our use cases)
Starting with my next post, this series will first examine the data model and how it’s designed to provide support for efficient universal entity identification, entity extensions that work kind of like mix-ins, full automatic auditing, and some other goodies. From there I’ll move to the front-end and examine what we’ve done in ASP.NET MVC to enable automatic attribute-based navigation generation, HTML helpers for Bootstrap, customizable entity appearance, and more. Hopefully by the time I’m done you’ll have a good feel for how to implement some or all of these concepts in your own line-of-business application.
Keep an eye out for the first article in the series, coming within the next week or so. As I post new articles, I’ll link to them below (the unlinked titles are where I’m thinking the series will go, but are obviously subject to change):
- Universal Entity Identification
- Hooking into Save Changes
- Automatic Model Change Auditing
- Validating Entity Relationships
- Eager Loading for Validation