The relationship between packages, modules, components and interfaces is summarised in this graph.

Package

A package consists of a manifest file and the files for the module(s) within the package. Typically a package represents an entire product or system of functionality such as Web Proxy, Script Engine or Logging.

Module

Within a package you have modules that represent distinct parts of your package/product. If you require engine side functionality you will have a module that runs in the WinGate engine. If you need to present a user interface then you may want to have a separate UI module that runs in the WinGate Management Console. Each module shows up in the Modules panel of the WinGate Management Console and can be enabled or disabled by the administrator if the appropriate setting is in the manifest file for that module.

To expand on the example graph above, you may be providing a product called "Ultimate Monitoring System" that may consist of modules for:

In this example you would have a total of 6 modules in your package.

Modules have at least one DLL called the Entry Point DLL which is the DLL loaded by the host framework and initialised via the Required module functions.

Component

Within a module you have components which are sets of common functionality that you register with WinGate. Although in practice there is normally one component registered for each module, a module can register more than one component if it wishes just like the Qbik Schema module which houses the components for both the engine and UI in one module.

Interface

One or more groups of functionality that your components register with WinGate, often to make it available for others to use. Using our "Ultimate Monitoring System" example, the Malware scanning engine component may decide to provide a couple of interfaces for client software to use.

The global threat assessment module might expose interfaces for: