How to build an Enterprise Framework for .NET based web application

We started developing web applications using .NET back in 2008 and one of the major questions we faced at that time is how to properly plan out, develop and maintain a large scale application. Although there were few CMS solutions available like DotNetNuke, mojoPortal etc., we were worried of losing our fluent programming style and getting bind to specific platform. We were in need of something that simplified our coding & still maintain scalable paradigm. So we started building our own framework with all that in mind.

As no ORM tool like Linq2Sql existed at that time, we had to built our own Object To Sql Generation Library. As and when new features were added to .NET Framework, we upgraded our framework to stay up to date. Over the years we have learnt a lot as this framework evolved. Last year we focused on improving User Experience (UX) by using Knockoutjs, Web API and SignalR along with our framework. We even built a new JavaScript framework to achieve simplicity, scalability & maintainability just like we did for .NET.

What is Enterprise Framework?
An enterprise framework is framework that delivers the architecture, knowledge and patterns for building scalable & secure web applications. It is actual code, guidance templates and building blocks in a single package for creating enterprise applications and to reduce the risk of re-designing and implementing your own framework, and will save on the initial construction planning, and later maintenance overheads.

We understand that our journey till here would not be possible without the help of numerous online communities of web developers and programmers. We have learnt a lot from them whenever we are in need of help and want to give something back to the community. Our aim with this series of articles is to share our knowledge and experiences with others who want to learn about Enterprise Level Application Development using .NET.

This is first in a series of articles that are targeted to cover a wide range of topics related to the subject. Anyone who is into web application development will surely learn something new from this series. This series should interest both who are new to web application development as well as who are creating web applications for years using .NET Framework. You guys will not only benefit from the theoretical knowledge but we will also publish links to example source code on GitHub as the series progress.

An overview of what will be covered in this series is given below:

  • Introduction
  • Tools & Technologies
  • Design Patterns (Dependency Injection | Repository Pattern | Provider Pattern |Unit Of Work Pattern |Factory Pattern)
  • Framework Components Design
  • IoC Framework
    • Implementing lightweight IoC Container.
    • Application activation Pre-Start & Post-Start.
    • Benchmark with other IoC Containers.
  • Serialization Framework.
    • Implementation
    • Test
  • Configuration Framework
    • Build Provider based configuration.
  • Logging Framework
    • Default File Provider
    • Build IoC Logging.
  • Caching Framework
    • Default Memory Provider
  • Implementing Message Queue Framework.
    • Default Memory Provider
  • A Rest Client.
    • Rest Client Implementation.
    • OAuth1 & OAuth2 Clients.
  • Data Access Framework
    • Why Entity Framework?
    • Linq Extensions.
    • Repository Pattern Style (Domain Driven Design) Objects
    • Implement Database Logging Provider.
    • Enable EF Logging
  • Implementing Services
    • Mustache Style Template Parser.
    • Email Queue.
    • Virtual File System.
  • Custom Claims based Membership Implementation.
    • Security Design
    • Generic User & Roles Implementation
  • Web Extensions
    • MVC & WebApi Extensions
    • Custom Filters Support using IoC
    • Implement Mustache View.
    • Building Custom Filters & Attributes.
    • Security Filters.
    • Localization Filters.
    • Bootstrapper Support.
  • A Client side framework using Knockoutjs, jQuery, Underscorejs
    • JavaScript Extensions.
    • Knockout Extensions
    • Knockout Custom Bindings
    • Knockout Model Generation With Localization Using C# Classes.
    • Knockout Ajax Model Implementation.
  • Build a Basic CMS Using Framework.
    • Implement User & Roles.
    • Build Html Pages from Admin.

The success of this series will depend on the participation of fellow web developers and programmers. We invite you to give us your valuable feedback, let us know what you think of it and anything we may be missing that is critical to building such a framework.

We’ll be posting next article of the series very soon, so stay tuned…