What is NQ?

NQ is a small microkernel-based framework, that delivers the basis for a modular application design. This microkernel is a central part of the application, which coordinates its components and the way how they work together, actually acting as classical service locator. Further it specifies an architecture in order to integrate the components. An NQ application is a collection of such components on top of the microkernel, which together form a complete software. NQ is not specific to any domain, so it can be used to build a modular server as well as a GUI application. Although the current NQ Core is .NET-based, it could be implemented in any other object-oriented environment (Java, for example) using the same concepts.

A single component adds new functionality to the application or replaces existing functionality. So it mostly works like an usual plug-in. The most important point is that the whole application is build up using such plug-ins, only a small managing kernel (the microkernel) is needed to load the components and to control their communication. But of course components on themselves are not exciting enough. They are intended to share their functionality between each other. Therefore, they offer certain services that can be used by other components.

Services are actually the main organization unit of the NQ architecture. Shown from the object-oriented aspect a service is an object offering data and methods to be used by other services, from the same or from other components. The object is always abstracted by an interface (the service interface), so the implementation of the service can't be referenced directly by other components.

The central part of NQ is the Service Manager that plays the role of the microkernel. It holds all the information about loaded components and their available services and creates new instances of service objects. The Service Manager is the only way for a service to access any functions from other services.

What are the main advantages of NQ?

How does NQ differ from other component-oriented frameworks?

Further Information

More information about NQ and details on working with it can be found in the official documentation, that can can be downloaded with the current binary package of the NQ Core Library. Most of the information above is copied from there. It's not complete at the moment, but shows many basic aspects of NQ programming.

Current Stage

The NQ Core is stable, but still lacks documentation at some places.