The Extensible Session Framework (ESF) is designed to help create APIs that provides access to or control of a "session". That session could configure and control an instrument (like an IVI session), it could manage a communication link between two processes or devices on a network, it could open and manage a file in memory...we don't limit what a session is allowed to do, as long as it's characterized by the definition "a period of time devoted to a specific activity".
The framework uses a single LabVIEW class -- your API is a child of that class -- to add several features to your API. It does this via two functions that are named "Obtain Session" and "Release Session" by default.
Multiple instances - You can create multiple unique instances of your session, each with a unique string name to identify it. So if you have a session named "Serial Waveform" and want to generate multiple different serial messages in your program, you can do so by simply creating multiple objects and naming them uniquely.
Multiple accessors - Because the sessions are uniquely named, you can obtain a reference to any session that already exists from anywhere in your application space. This is analogous to the behavior provided by LV Notifiers and Queues.
LV Class features - Your session is implemented as a class in LabVIEW, so you get all of the features of classes: encapsulation and inheritance, password protection of private methods, and native property nodes.
Simple interface to C and TestStand - The session handle is a DVR to your class. This means that your methods, when called from TestStand or C/C++, only have to pass an integer (the DVR) to the caller. This is much much simpler than passing a cluster.
"Obtain Session" and "Release Session" are required in your API, but you can rename them and edit most of their behavior to act however you like. The attached slides provide a description and list of benefits. The demo projects are also attached as examples of using the framework.
VI packages for ESF are provided below and the latest version is available on the LabVIEW Tools Network VIPM repository.
Version 1.1 supports LabVIEW 2009 and later
Version 2.4 supports LabVIEW 2011 and later
The attached ZIP files contain additional examples showing APIs implemented using ESF.
Please post questions, comments and feedback in the comments below.