In the early days of .NET, there was no ORM provided by Microsoft, unlike today, when Micrsoft Entity Framework is readily available as part of .Net framework. During those days, developers had to use third party ORM like NHibernate, which essentially was port of Java based technologies.
The biggest drawback with NHibernate was auto generating SQL statements on fly, which were not optimized for the page speed standards prescribed for B2C Website.
At Net Solutions, we build websites and web applications which are optimized for page speed and follow best web standard practices. Ideally, the page load time had to be under 3 seconds and with data access occupying one of the biggest time slice in page request processing, we had to look for an alternative solution. Also the learning curve on NHibernate was steep. We need a component which could help us in Rapid Application Development.
The original idea of NSI DAAB (Net Solutions, proprietary Data Access Application Block technology) was to build a lightweight ORM which handles persisting plain .NET objects to and from an underlying relational database and could be used by Net Solution developers in their project without a steep learning curve.
NSI DAAB is based on Active Record pattern. Objects derived from NSI DAAB contain both data and behavior. NSI DAAB supports natural OO idiom; inheritance, polymorphism, composition and the .NET collections framework, including generic collections. NSI DAAB is based on custom SQL. Developers can specify the exact SQL that NSI DAAB should use to persist objects. Stored procedures are supported on Microsoft SQL Server.
The original team of Engineers at Net Solutions who collaborated on NSI DAAB over time received this feedback that only writing optimized queries will not suffice the requirements of getting the page speeds under 3 seconds. They had to look at concepts of caching and NO SQL to enable faster websites.
Caching was enabled in NSI DAAB in the next version. The caching module could use either in process caching or out process cache (memcache). We could even extend caching further to include other out of process cache system by writing a simple wrapper. Caching engine encapsulates all the business logic to store, retrieve and invalidate cached objects.
Key Features of NSI DAAB
|Powerful Object Model||Objects derived from NSI DAAB contains both data and behavior|
|Code Generation||A code generator applications reverse engineers any of the supported databases to generate C# objects|
|Caching||Supports both in process and out-process caching (memcache). Can be customized to connect to another caching system|
|Customizable and Extensible||Both Data and Caching engines can be customized and extended per users need.|
|Strongly Typed Object Model||All objects are strongly typed using generics. This enforces type safety at compile time. Also helps gain full advantage of IntelliSense|
|Stored procedures and Views||Supports Stored procedures and Views in a strongly typed manner.|
|Support for Complex Joins and Keys||All types of complex joins and keys are supported including Left, Right, and Outer joins. Keys with multiple columns are supported as well.|
|BLOBs and XML Field Support||XML Fields and BLOBs are fully supported.|
|Transactions||Complete support for ADO.NET transactions.|
|Server side Paging||Server side paging is supported via stored procedures.|
|Medium Trust Support||Is compatible with medium trust deployment scenarios|
|Database Independent||Can be connected to all industry standard databases.|
Developers at Net Solutions are now working on the next release of NSI DAAB. The focus on next release is to include NOSQL support, and the roadmap for NSI DAAB also has the following feature
- NO SQL Support( Mongo DB, Cassandra)
- Enhancing Caching module( Separation of first level and second level of cache)
- Batched SQL statements
- Lazy loading of data
To get more information on NSI DAAB technology, please feel free to contact us or you can also request a free consultation with one of our Microsoft Technology Expert by sending an e-mail to Net Solutions team