Universal Resource Infrastructure Design
Architecture and Design
Release Notes
Developing with NetKernel
Module Development Guide
Active Accessor Guide
Data Accessor Guide
Request Guide
Universal Resource Infrastructure Design
Universal Resource Request Design
Representational Aspects
Transreptor Development Guide
Session Guide
Mod DB Guide
Compound URI Guide
License
Change History
NetKernel History
Acknowledgements

Universal Resource Infrastructure

A technical design summary of com.ten60.netkernel.urii

The urii package contains the key interfaces for Universal Resource Infrastructure abstraction. This is THE key abstraction in the NetKernel. It defines how URIs relate to accessors and in-memory representations of the state of a URI. Also see the urrequest design page for details on how this abstraction is made dynamic.

UML Diagram

URIdentifier

Every resource has an identity. URI stands for Uniform Resource Identifier. URIs are not universally unique. In Netkernel they are only guaranteed unique within a module.

IURAccessor

URIs define identity but don't define how they can be resolved. There are standard URI schemes such as http: and file that have standard ways to be resolved. An IURAccessor is an implementation of a resolver for a set of URIs. It can optionally implement any of the following request types on a URI

  • source get the current data state of the URI
  • sink set the current state of the URI
  • exists check to see if the URI actually has any state
  • delete remove all state for the URI so that it in effect no longer exists
  • new create and return a new URI for the given state information

IURRepresentation

When the current state of a URI is brought "into memory" it is represented as an IURRepresentation. This representation contains metadata about the URI and a set of Aspects on the data state of the URI. A key point is that they are immutable if you wish to change the state of a URI you must transform a representation and then sink that representation back to the accessor.

IURAspect

An IURRepresentation has a number of Aspects. Aspects are APIs for accessing the state of an accessor. Different types of URI have different aspects with varying capabilities. XML typed data is an interesting example as it can have aspects which expose DOM, SAX events, character streams or raw binary streams.

IURMeta

The IURMeta is metadata about a URI. It contains information on its type, validity and its cost of retrieval.

IURAccessorMeta

An IURAccessor is itself and IURRepresentation. It has a little more metadata than the basic. It contains information on thread safety and supported request types.

ITransreptor

Accessors are free to create the simplest aspect of a URI in any representations that they create. If a client process of that representation wants it in a specialised form that it must be transrepresented, its representation must be changed. Using the XML example, this might mean parsing the binary representation of a document into an aspect that can emit SAX events.

Take a look at urrequest design this shows how IURAccessors and ITransreptors are orchestrated to the satisfy requests of client processes


1060® NetKernelTM Documentation
(C) 2003-2004 1060 Research Limited

Send Feedback

© 2003,2004, 1060® Research Limited
1060 registered trademark, NetKernel trademark of 1060 Research Limited