25 people following this project (follow)

VITA: Application Framework

VITA is a framework for creating .NET applications that work with databases and use RESTful APIs to communicate over the network. It implements the elements of ORM, supports easy creation of RESTful Web services and clients. It supports data models distributed over multiple databases.

Highlights

  • Entities are defined as .NET interfaces - minimum coding required. Implementation classes are created at runtime using IL code generation.
  • Entities are self-tracking - they maintain original and modified property values, automatically register for update.
  • Database model is automatically created/updated from entity model. Existing data is preserved. Database schema follows c# code.
  • Database keys and indexes are defined through entity attributes in c# - you can define most of the database artifacts in c# code, including custom stored procedures using LINQ syntax.
  • Automatically generated CRUD stored procedures. Alternatively, application can use direct SQL queries.
  • Support for one-to-many and many-to-many relationships. Foreign keys are automatically inferred from c# entity references. Properties which are lists of related entities are automatically "filled-up" on first read.
  • Automatic sequencing of update operations to satisfy referential constraints.
  • Full support for identity columns and auto-generated GUIDs
  • Computed properties.
  • Automatic validation on submit. You can define a custom validation method for an entity - it will be automatically invoked before submitting changes to database.
  • Full LINQ support: you can run direct LINQ queries against entities.
  • Custom Stored Procedures - you can define custom stored procedures for SELECT, INSERT, UPDATE, DELETE operations in pure c# code, using LINQ syntax. The code will be compiled into stored procedures in database.
  • Top Performance - LINQ queries are compiled at startup into stored procedures. On the object/c# side, value storage in entities is organized as arrays and accessed by index, not by column name. Data readers are accessed by column index, not by column name.
  • Entities support INotifyPropertyChanged interface - readily usable in data binding and MVVM solutions.
  • Component Packaging Technology - with VITA we have a way to pack a set of entities/tables with the surrounding code into a self-contained component - entity module. Entity modules can cover specific areas of functionality, can be independently developed, tested and distributed, just like Windows Control libraries. The application is then assembled from independent modules, each covering specific part of functionality. More details here.
  • RESTful Web services - expose your model and operations as a RESTful Web service with minimal coding. Service help pages are generated automatically - see image below.
  • RESTful Web clients - create Web clients with no effort and use strongly-typed entity model on the client. The client-side code manipulating with entities is identical to the server-side code - the underlying Web protocol is transparent.
  • Standard modules - use pre-packaged modules of functionality coming with VITA. Currently available is an Error logging service, coming with log viewer. More modules to come soon.
  • Did I mention - supports enums?

Sample RESTful Web Service Help Page

tut_part8_bookhelp.jpg

Why New Application Framework?

As for ORM frameworks - it seems like we already have too many. And multiple Web frameworks are available too. So why a new one?
Very simply, because none existing is good enough. In every one I tried, I always find something missing, even if the overall architecture and design concepts are done well. Unfortunately, in all cases the missing parts are critical. Finally I decided to build the framework I wanted myself. And I hope you will find out that it is the one you always wanted too!

Quick Start

It is really easy to start by following the samples in the download package. Read the VITA Tutorial for step-by-step introduction to framework features.
Read the "Exploring the source code" article for instructions on using source code.

System Requirements

.NET 4.0, Visual Studio 2010 SP1. Developed and tested on Windows 7, 64-bit;
MS SQL Server 2008 R2
MS SQL CE 4.0 - optional
The framework uses LINQ-2-SQL for query execution and compilation to stored procedures.
Unfortunately LINQ-2-SQL coming with .NET framework supports MS SQL Server only. Projects like DbLink or LinqConnect may help with support for other servers.

Additional Links

Last edited Mar 22 at 4:20 AM by rivantsov, version 90