Click here to Skip to main content
Click here to Skip to main content
Technical Blog

How to Build an Enterprise Framework for .NET Based Web Application

, 29 Jan 2014 CPOL
Rate this:
Please Sign up or sign in to vote.
How to Build an Enterprise Framework for .NET Based Web Application

Introduction

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 about losing our fluent programming style and getting bind to specific platform. We were in need of something that simplified our coding and still maintained 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 a 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 the next article of the series very soon, so stay tuned…

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Gaurav5582
Business Analyst Luce & Morker
India India
I am an Entrepreneur, co-founder of Luce & Morker, a tech enthusiast, car lover, movie buff and foodie. I write posts for our company blog which are mostly about providing helpful tips, advice, and insights related to web design, web development, web technologies etc.
 
I love reading articles and I like to keep myself updated with latest tech and business related news.
Follow on   Twitter   LinkedIn

Comments and Discussions

 
QuestionLooks like you had the same motivation as the guys at ServiceStack. PinmemberRobert Cooley29-Jan-14 6:51 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.141216.1 | Last Updated 29 Jan 2014
Article Copyright 2014 by Gaurav5582
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid