Wednesday, January 7, 2009


ESENT Managed Interop
ESENT is an embeddable database storage engine (ISAM) which is part of Windows. It provides reliable, transacted, concurrent, high-performance data storage with row-level locking, write-ahead logging and snapshot isolation. This is a managed wrapper for the ESENT Win32 API.

ESENT (Extensible Storage Engine) API in the Windows SDK

I’m not sure how many people know that Windows comes with an embeddable, transactional database engine which is available to developers through the Windows SDK. The ESENT database engine can be used whenever an application wants high-performance, low-overhead storage of structured or semi-structured data. This can range from something as simple as a hash table which is too large to store in memory to a complex application with many tables, columns and indexes. ESENT is used by the Active Directory, Windows Desktop Search, Windows Mail and several other Windows services and a slightly modified version of the code is used by Microsoft Exchange to store all its mailbox data. The ESENT API is available through the SDK and can be used on all versions of Windows from Windows Server 2000 on up.

The significant technical features of ESENT include:

· ACID transactions with savepoints, lazy commits and robust crash recovery.

· Snapshot isolation.

· Record-level locking — multi-versioning provides non-blocking reads.

· Highly concurrent database access.

· Flexible meta-data (tens of thousands of columns, tables and indexes are possible).

· Indexing support for integer, floating point, ASCII, Unicode and binary columns.

· Sophisticated index types including conditional, tuple and multi-valued.

· Individual columns can be up to 2GB in size. A database can be up to 16TB in size.

· Can be configured for high performance or low resource usage.

· No administration required (even the database cache size can adjust itself automatically).

· No download. Your application uses the esent.dll which comes with the operating system.

Caveats: ESENT should only be used for applications which have simple, predefined queries; applications that want to do ad-hoc queries should investigate a storage solution that provides a query layer. The database file cannot be shared between multiple processes simultaneously.

F# To Ship with Visual Studio 2010

Don Syme has announced that F# would ship as part of Visual Studio 2010 in his blog entry, F# to ship as part of Visual Studio 2010. F# combines the succinct, expressive, and compositional style of functional programming with the runtime, libraries, interoperability, and object model of .NET.

F# gives you:

The development in the first Visual Studio 2010 community technology preview focused on F# for exploratory programming with F# Interactive, programming with data and implementing parallel and asynchronous components.

S. Somasegar who leads Developer Division at Microsoft had announced a year ago that F# was to become one of Microsoft’s supported languages on the .NET platform. He wrote, "Language features such as lambda expressions in C# and generics in .NET 2.0 have roots in functional languages, and LINQ is directly based on functional programming techniques. Through LINQ and Parallel FX, ideas from functional languages are helping us address some of the biggest challenges facing the industry today, from the impedance mismatch between data and objects to the challenges of the multi-core and parallel computing space."

Luca Bolognese has released a .NET library that provides the full set of financial functions from Excel. You can download the library from Excel Financial functions for .NET.


SFS for Microsoft Visual Studio

Code generator, Entity Framework to any Layer using Text Transformation Templates in Microsot Visual Studio, and other tools for .edmx diagram.

The Visual Studio 10 CTP VPC expired! What should I do?

A couple of months ago, we unveiled Visual Studio 10 at several conferences and provided attendees a copy of a VPC with Visual Studio 10.  We also made the CTP available here.

Thanks to a lot of partners, customers, and hobbyists, we got a ton of great feedback on our bits and look forward to hearing more from the community.  Unfortunately, the CTP came with a timebomb and expired at the end of 2008.  We have not shipped another CTP since then so if you still want to play with the CTP VPC but have run into the expiration problem, follow the steps in Jeff Beehler's blog to disable the synchronization between your VPC and the host machine, then turn back the clock :)


Free Entity Framework eBook

Zeeshan Hirani has written a 500 pages book about the Entity Framework and has released it as a free eBook.  Wow!