NetKernel
Encyclopedia
NetKernel is an implementation of the resource oriented computing
Resource oriented computing
Resource Oriented Computing is a simple abstract computing model used for describing, designing, and implementing software and software systems...

 (ROC) abstraction.
ROC is a logical computing model that resides on top of but is completely isolated from
the physical realm of code and objects.
In ROC information and services are identified by logical addresses which are resolved to physical endpoints
for the duration of a request and then released.
Logical indirect addressing results in flexible systems that can be changed
while the system is in operation.
In NetKernel the boundary between the logical and physical layers is intermediated
by an operation-system caliber microkernel that can perform various transparent
optimization.

The idea of using resources to model abstract information stems from the REST
Rest
Rest may refer to:* Leisure* Human relaxation* SleepRest may also refer to:* Rest , a pause in a piece of music* Rest , the relation between two observers* Rest , a 2008 album by Gregor Samsa...

 architectural style
and the World Wide Web
World Wide Web
The World Wide Web is a system of interlinked hypertext documents accessed via the Internet...

.
The idea of using a uniform addressing model stems from the Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...

 operating system.
NetKernel can be considered a unification of the Web and Unix implemented as a
software
operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

 running on a
microkernel
Monolithic kernel
A monolithic kernel is an operating system architecture where the entire operating system is working in the kernel space and alone as supervisor mode...

 within a single computer.

NetKernel was developed by 1060 Research and is offered under a dual open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 and commercial software license.

Resource

A resource is identifiable information within a computer system.
Resources are an abstract notion and they cannot be manipulated directly.
When a resource is requested, a concrete, immutable representation
is provided which captures the current state of the resource.
This is directly analogous to the way the World Wide Web functions.
On the Web, a URL address identifies a globally accessible resource.
When a browser issues a request for the resource it is sent a representation of the resource
in the response.

Addresses

A resource is identified by an address within an address space
Address space
In computing, an address space defines a range of discrete addresses, each of which may correspond to a network host, peripheral device, disk sector, a memory cell or other logical or physical entity.- Overview :...

.
In NetKernel Uniform Resource Identifier
Uniform Resource Identifier
In computing, a uniform resource identifier is a string of characters used to identify a name or a resource on the Internet. Such identification enables interaction with representations of the resource over a network using specific protocols...

 (URI) addresses are used to identify all resources.
Unlike the Web, which has a single global address space, NetKernel supports an unlimited number of address spaces and supports relationships between address spaces.

NetKernel supports a variety of URI scheme
URI scheme
In the field of computer networking, a URI scheme is the top level of the Uniform Resource Identifier naming structure. All URIs and absolute URI references are formed with a scheme name, followed by a colon character , and the remainder of the URI called the scheme-specific part...

s and introduces new ones
specifically applicable to URI addressing within a software system.

Request

The fundamental operation in NetKernel is a resource request, or request.
A request consists of a resource URI address and a verb.
Supported verbs include
SOURCE, SINK, NEW, DELETE, EXISTS and META.
Each request is dispatched to a microkernel
Monolithic kernel
A monolithic kernel is an operating system architecture where the entire operating system is working in the kernel space and alone as supervisor mode...

 which resolves the URI address to a physical endpoint and assigns and schedules a
thread
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...

 for processing.
When the endpoint completes processing the microkernel returns the response to the initiating client.

Programming

The fundamental instruction in NetKernel is a resource request,
specified by a URI. Mechanisms that sequence URI requests are
located above the microkernel. In the current Java-based
implementation, requests are dispatched using a Java API.
This implies that any language that can call a Java API can
be used to program NetKernel.

The set of languages currently (November 2007) supported
includes: Java, Ruby, JavaScript, Python, Groovy, Beanshell, PHP,
DPML, and XML related languages such as XQuery, etc.
The URI specification itself has sufficient richness to express
a functional programming language.

Active URI Scheme

The
active URI scheme was proposed by Hewlett-Packard as a means to encode
a functional program within a URI.


active: {function-name} [+ {parameter-name} @ {parameter-value-URI}]*


For example, the following URI calls a random number generator

active:random


and the following uses an XSLT
XSLT
XSLT is a declarative, XML-based language used for the transformation of XML documents. The original document is not changed; rather, a new document is created based on the content of an existing one. The new document may be serialized by the processor in standard XML syntax or in another format,...

 service to transform an XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....

 document with an XSLT stylesheet:

active:xslt+operator@file:/style.xsl+operand@file:/document.xml


Because the argument values may be URI addresses themselves, a tree-structured set of
function calls can be encoded in a single URI.

Transports

Transports are a mechanism used to introduce requests from outside
of NetKernel to the NetKernel address space.
Transports are available for the HTTP protocol,
JMS (Java Messaging Service), and CRON.
Other transports can be easily added as they are independent from
the rest of NetKernel.

The role of the transport is to translate an external request
based on one protocol into a NetKernel request with a URI and a
specific verb (SOURCE, SINK, etc.) and then to send the returned
representation back to the client via the supported protocol.

Two mappings are handled by a transport. The first is between
the address space of the externally supported protocol to
the internal NetKernel address space. And the second is between
the verb or action specified externally into a NetKernel verb.

For example, in the case of the HTTP transport, the
external address space is a sub-space of a URL.
The following mapping illustrates this point.

http://www.mywebsite.com/publications/...

|
v

file:/src/publications/...

In addition, the HTTP protocol supports methods such as GET, PUT, HEAD, etc.
which are mapped to NetKernel verbs.

Scripting Languages

A mechanism is needed to issue the URI requests, capture
the returned representations, and communicate with clients.

Scripting languages are executed by their runtime engine, which is itself a
service.
For example, the Groovy language runtime will run a program contained in the file
file:/program.gy with the following:


active:groovy+operator@file:/program.gy

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK