NetKernel Development: Constrain
In NetKernel development, constraints may be considered quite late in the
development cycle and may be easily lifted when changes to a systems features are required
during a projects lifespan.
This is quite different from e.g. OO development where
constraints on interfaces and types are surfaced early. For example,
simply defining classes in an OO environment is an early constraint which can lead to
later inflexibility.
Constraint in NetKernel means enforcing structural or semantic requirements
on the information to be processed - usually this is done by transparently overlaying
the implementation of constraints without the application or services knowing.
Data Admittance
The most usual application of constraints is on the boundary of a system.
When information arrives through a transport that invokes a process on NetKernel
it is valuable to ensure that it conforms with the requirements and expectations of the
implementation.
It is quite straightforward to introduce a transparent filter that will examine the
supplied information and will permit or refuse admittance. The form of the externally supplied
information is entirely application specific - a frequently used resource type is XML messages
and a number of validation languages are supplied and can be used to constrain message structures.
Access Control
Access control is an important constraint. Any URI address space can be access controlled within NetKernel
using the URI gatekeeper
. Equally any request into a module can readily be routed to an access control manager
that can perform authentication of the supplied credentials before allowing access to the internal services of a module.