Managed execution environments are supposed to do away with messy things like memory management, pointers and raw buffer manipulation, so why are we promoting a raw memory management library for one of the premiere managed environments around?

While the .Net environment provides excellent memory management to the vast majority of modern applications, there is that 1%, or perhaps only .1%, of applications that need high performance or highly specialized memory access that is not provided by the .Net Framework. Access to many platform API calls depends on unmanaged memory allocation and complex data marshalling that is not provided out of the box by .Net.

Have you ever needed to share data between two applications? You probably used Remoting or WCF even though both applications were on the same machine and always would be. For most of these cases you were probably using the right approach but for a small but significant number using shared memory would have been not only the superior method, but far superior.

Have you ever needed to use a small subset of a huge data space? Not too many people do but in the small but significant number of cases where this is necessary (e.g. a spreadsheet type application) you probably allocated a huge array even when only a small portion of it was needed or maybe used a dynamic structure like a list and then jumped through hoops to ensure proper indexing and processing. In either case the large performance penalty would not have been necessary if you could have used a sparse array.

Have you ever used a very large set of data that ended up clogged up in the large object heap? Again, not too many situations lead to this problem but when you have it what would you give for the deterministic disposal of the large object?

They may be a small percentage of all use casess but there are a significant number of scenarios where better access to the many memory management facilities of the underlying operating system would provide far superior solutions to performance, reliability or architectural problems.

This, in a nutshell, is why AsproSet exists, to provide developers with access to superior solutions in those rare but important situations where simple managed memory is not adequate. So jump right in and enjoy. If you have any questions, suggestions or even nasty comments check back here for links to more AsproSet information.

Stephen Martin, Founder - Asprosys Inc.