My de-facto standard of Open source Tools, Frameworks and Components for building scalable enterprise class systems.

I have listed my de-facto standard of open source tools, frameworks and components for building enterprise class systems for both Web & Mobile platforms in Microsoft .NET technologies (ASP.NET & MVC). One of our big prospects wanted to know the details of the open source frameworks we would be using in their project hence I wrote it as a small document for them which I thought would be helpful for others hence published here.

I have been using most of these frameworks and tools for many years i.e. Spring.Net, Nhibernate etc. and others are latest additions. So far we have been able to successfully implement these frameworks in our enterprise client projects, the benefits in-terms of productivity gain during development and adaptability to changes and enhancements are awesome.

Sl.No.

Frameworks and Components

Purpose

1

Twitter Bootstrap User Interface Design

2

Jquery User Interface Design

3

Nhibernate Data Access Component

4

Spring.NET Writing Loose Coupled & high cohesion enterprise application. Used in all layer (Presentation, Business, Data Access & Service Agent) for varieties of purpose like Dependency Injection, Exporting Plain .Net code into Web Service, Attaching additional Behaviour in run time through Aspect Oriented Programming, User Interface Templating, Enterprise Scheduling, RESTful API access, Resource Access etc.

5

Log4Net Crosscutting, mainly for debugging & instrumentation.

6

Sencha Touch Mobile User Interface design a.k.a. Cross platform
Mobile Application development

7

PhoneGap Packaging Sencha Touch Mobile Web App into Native App ready to distribute to Apple, Android, Palm, Symbian, and BlackBerry devices
8 NancyFx Writing light weight RESTful services
9 Ravendb Document Database
10 RabbitMQ Queuing & Messging
11 SignalR Adding Real-time web functionalities, it provides a very simple, high-level API for doing server to client RPC.

 

Twitter Bootstrap:


BootstrapTwitter Bootstrap, a front-end toolkit for rapidly developing web applications built at Twitter. The user interface developed using Bootstrap was made to not only look and behave great in the latest desktop browsers, but in tablet and Smartphone browsers via responsive design and CSS. It is packed with loads of features using some of the latest browser techniques, A 12-column responsive grid, dozens of components, JavaScript plugins, typography, forms, buttons, charts, navigation and other interface components, as well as optional JavaScript extensions

Jquery:


jqueryjQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. It offers writing maintainable JavaScript, supports unobtrusive scripting. It compliments with numerous plugins for writing modular and highly loosely coupled JavaScript s.

 

NHibernate:

 

nhibernateNHibernate is an object-relational mapping (ORM) solution for the Microsoft .NET platform: it provides a framework for mapping an object-oriented domain model to a traditional relational database. Its purpose is to relieve the developer from a significant portion of relational data persistence-related programming tasks. It handles persisting plain .NET objects to and from an underlying relational database.

 

Spring.NET:

 

spring.netSpring.NET is an application framework that provides comprehensive infrastructural support for developing enterprise .NET applications. It helps to develop smaller, cleaner and more flexible code base that is significantly easier to test, maintain and extend. Spring.Net has got many modules out of which we will be using the following predominantly

 

  • Spring. Core – To implement Dependency Injection for writing loosely coupled and highly cohesive system.
  • Spring.Aop – To perform Aspect-Oriented Programming (AOP). AOP centralizes common functionality that can then be declaratively applied across the application in a targeted manner
  • Spring.Services – Converting a plain .NET objects into a web Services and WCF services. These services can be configured via dependency injection and ‘decorated’ by applying AOP.
  • Spring.Scheduling.Quartz – Provides integration with the Quartz.NET job scheduler providing declarative configuration of Quartz jobs, schedulers, and triggers as well as several convenience classes to increase productivity when creating enterprise level job scheduling applications.
  • Spring.Template.Velocity – Helper classes to configure a NVelocity template engine in a Spring based application.
  • Resource abstraction – provides a common interface to treat the Input Stream from a file and from a URL in a polymorphic and protocol-independent manner.
  • Expression Language – provides efficient querying and manipulation of an object graphs at runtime.

Log4Net:

 

Log4net is a tool to help the programmer output log statements to a variety of output targets i.e. File system, Sql Table, ASP.NET Trace, Console, Event Log, SMTP Email etc.. In case of problems with an application, it is helpful to enable logging so that the problem can be located. With log4net it is possible to enable logging at runtime without modifying the application binary. The log4net package is designed so that log statements can remain in shipped code without incurring a high performance cost. It follows that the speed of logging (or rather not logging) is crucial. At the same time, log output can be so voluminous that it quickly becomes overwhelming.

Sencha Touch:

 

senchatouchSencha Touch, a high-performance HTML5 mobile application framework, built for enabling world-class user experiences. It is the only framework that enables developers to build fast and impressive apps that work on iOS, Android, BlackBerry, Kindle Fire, and more to look and feel like native apps. Beautiful user interface components and rich data management, all powered by the latest HTML5 and CSS3 web standards. The key features are:

  • Built on HTML5 Technology
  • Smoother Scrolling and Animations
  • Adaptive Layouts
  • Native Packaging

 

PhoneGap:

 

PHONEGAPThis is an open-source deployment framework from Adobe Systems which allows packaging Sencha Touch (JavaScript, HTML5 and CSS3, instead of device specific languages such as Objective-C) code and resources into a binary app ready to distribute to Apple, Android, Palm, Symbian, and BlackBerry devices. The framework’s other purpose is to bridge the gap between the APIs that devices expose to native apps, and those which are made available to web apps i.e. File, Accelerometer, Camera, Contacts, Geolocation, Compass, Notification etc.

NancyFX: Writing light weight RESTful services inspired by Sinatra in Ruby

Ravendb: Document Database

RabbitMQ: Messaging and Queuing (Pub/Sub) in building highly scalable and durable systems.

SignalR: Building Real-time applications and push notifications.

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s