Image

About Nvigorate

Modified: Thursday, 11 June 2009 02:52 PM by rsimmons - Categorized as: General
Edit

What Is It?

Nvigorate is a rapid application development library for the .Net Framework. If that sounds like I'm using empty buzz-words, I promise it means something. Keep reading to find out what.

Edit

Design Philosophy

Developers never seem to have enough time to dedicate to all the different specialized areas of production systems. Having a core framework to provide a baseline for functionality and design allows development teams to focus more on delivering the end product rather than having to build the entire system from the ground up. Nvigorate is also designed to have minimal impact on existing code bases in the event that major refactoring or redesign is warranted. With that in mind here are the core design values or design goals I have for Nvigorate:

Low Entry/Adoption Cost
Many frameworks have a lot of specific requirements for how you have to write your code or classes. While that's not entirely avoidable when using a framework, I've tried to minimize these kinds of restrictions.

The API itself is under constant review and undergoing refinement to try and create expressive, readable code that's easy to learn and easy to use.

Extensible
The framework is designed for extensibility and customization from the ground up. Many of the sub systems are highly configurable through dependency injection and configuration file sections. Often times subsystems are loosely coupled enough that you can leverage large portions of the code to develop your own customized solution.

Performant
By leveraging the PostSharp AOP library for compile-time code-injection, expression trees and other recent features in the .Net framework, we are constantly improving the performance of the Nvigorate sub-systems.

Relevant
As mentioned above, Nvigorate utilizes the newest framework features, AOP and advanced design patterns like Strategy, Visitor and Fluent Interface to find the right balance between practice and practicality.

Edit

Features & Subsystems

Reflector API
Trivializes and accelerates Reflection. You'll never want to reflect without it.

Command-Line Argument Processing
Object oriented command line argument processing tool which uses attributes to define validation rules and feedback messages to allow the quick creation of command line tools.

Levenshtein String Distance Functionality
Levenshtein's string distance algorithm provides a low-cost way to quantitatively measure the 'likeness' between strings. There are some great applications for this.

A powerful custom TypeCaster
Tired of Convert.ChangeType? So was I. TypeCaster takes the pain out of some common .Net type conversion scenarios.

Database Agnostic Data Access Layer
Why worry with ADO.Net when you can work against a full-featured API which will handle transactional interaction with the database, manage connections, build tables, data sets, call stored procs, handle parametrized sql and much more. If you need to interact with the database, this is hard to beat.

A Rich Query Domain Model
Say good-bye to frameworks that force you to customize queries with t-sql passed around in strings and utilize a fluent model for building database-agnostic query structures which the DAL will translate, parametrize and execute for you. The entire model is XML serializable for use with WCF services.

Record Auditing
Need domain model driven activity auditing? Rob Simmons has written a great, extensible Auditing subsystem that's easy to use and extend. By simply adding an attribute to your methods, you can inject calls to the auditing system. Could it be any easier? (no, it really couldn't)

Logging Sub-system
Sure it's not Log4Net, but it's highly extensible and dead simple to use. Just like the auditor, you can inject calls to the log manager through method attributes.

ORM Framework
Nvigorate's most compelling feature set is currently in the ORM functionality it provides. Provide mapping metadata through XML, Attributes or a fluent map model and enjoy the powerful binding and persistence functionality which utilize the DAL and Query model in conjunction with an advanced expression-tree based binding engine that compiles custom binders on-the-fly. Extension methods and a powerful state tracking aspect provide a simple and elegant ORM solution that will allow you to focus on your domain model.

Edit

The Author and Contributors

I started this framework back in 2003 with just the DataInterface and Reflector classes to start with. It's undergone a lot of changes since then and gone through several versions until in 2006 I decided I wanted to name it something and make it an open source project. Unfortunately, I've had to learn a lot before I could get it close to something people would actually want to use over an alternative.

Craig Israel, Rob Simmons and Rachel Twyford are all experienced .Net developers who have patiently and graciously spent a lot of time contributing to Nvigorate through unit test development, bug fixes, code contribution, and so many white-board discussions I've lost count. Matt Honeycutt is another .Net developer who has played an important role in helping me understand what's important in an ORM to other over-worked dev teams. I hope the list of contributors continues to grow :)

ScrewTurn Wiki version 2.0.36. Some of the icons created by FamFamFam.



Sharp Learning Curve Ahead

↑ Grab this Headline Animator