|
||||
Introduction1060 NetKernel Standard Edition may appear to be an XML Application Server, however XML-Processing is just one, though possibly the most important, application domain. 1060 NetKernel is a brand-new infrastructural technology platform that provides a new abstraction for internet-based resource processing. NetKernel has a true micro-kernel core and a layered modular component architecture. It has had more than three years of gestation inside Hewlett-Packard Labs and a further year of development by 1060 Research. GeneralizationNetKernel offers a generalization of several classes of technology. How do you describe a generalization? Since NetKernel is a general purpose platform it is, or rather can be, a web-server, an Application Server, a Web-Service host, an XML pipeline processor, an Email application server, a Web-client ... This is not fruitful since it can be configured to be whatever you like. Instead let's tackle the abstraction head on. The Abstraction
The conventional way to architect a Web-server is to provide a public interface, the HTTP server, and to serve or generate resources based upon a URL request on that interface. This has been characterized by Fielding as the Representation State Transfer architecture or REST. Behind the REST interface the resource is provided by a non-Web system: in the case of Apache it could be direct file access, mod_perl etc, for a J2EE App Server it is a servlet and EJB container. In short, today's Web-servers and Application Servers have a relatively flat interface which creates a hard boundary between Web and non-Web. This boundary defines the zone of URI addressable resources. What if the REST interface (URI address space) didn't end at the edge of your external interface? NetKernel uses REST-like service interfaces for all software components. The services are fully encapsulated in modules which export a public URI address space. A module may import other module's address spaces, in this way service libraries may be combined into applications. NetKernel Universal Resource AccessorsNetKernel is an operating system for managing modules and scheduling URI resource requests on the REST-like service interfaces. NetKernel directs a URI request to a Universal Resource Accessor (URA). A URA is a natural endpoint for a URI request. A URA is simply a software component that serves or generates a resource - you could think of a URA as a generalization of the Servlet, though it has a true REST URI interface and is more like a combined generalization of both a Web-Server and Web-Client.
What is a resource? A resource is anything at all - it could be an HTML page, an SQL result set, an image file, an XML event stream ... anything; but all resources come from URAs. How does the NetKernel know to issue a request to a URA? A URA has a URI which is exported in a public URI address space. A URA resides within a module, a module defines a public and private URI address space and exports URA's. The NetKernel uses the public address space of a module to schedule requests. [Note: 'public' should be interpreted in the object oriented sense not the World Wide Web sense. Modules and their address spaces are internal to the NetKernel unless explicitly published externally]. The key point of the NetKernel abstraction is that a URA can issue further resource requests which may be received by other URA's. Therefore an application such as a DPML process, on NetKernel is a managed sequence of re-entrant URA requests. The external public interface to NetKernel is provided by one or more Transports. An external transport request URI is mapped by the transport to an internal request URI which is received by the NetKernel Scheduler and which initiates a URA request sequence. All NetKernel resources are packaged in modules which expose public interfaces and define internal private address spaces. Therefore NetKernel ensures encapsulation of private resources and guarantees address space isolation. It is upon this clean self-consistent architecture that higher-level applications, XML processes and Web-services may be built, and since the underlying architecture is consistent the high-level applications inherit a clean architecture themselves. Dependency-based CacheA highest level request for a resource can produce a tree of requests for lower-level resources required to generate the resource. Each node of the tree is a resource which depends on the higher-branches which ultimately depend upon the leaf resources. The NetKernel architecture ensures that every resource has a dependency chain for all the resources it is generated from. Therefore each node in the tree is a cacheable resource with a dependency model. NetKernel allows resources to be transparently cached and ensures that if any low level resource is changed the higher-level cached resources that depend on it are invalidated. Therefore the NetKernel ensures that the minimal recomputation is required for any resource request. This is extremely powerful and allows for very high performance optimisations. Application Set1: XML ProcessingThe discussion above has gone deep into the abstract model of the NetKernel. What does this model do for us in reality? This current distribution provides a set of modular XML processing technologies which allow us to create sophisticated XML processes. All XML technologies are implemented inside URA's. High-level runtimes, such as DPML, sequence an XML process as a series of URA requests. The dependency-based cache optimizes the cost of generating any resource. Since any number or types of external transport can be enabled XML applications can be created for web-publishing, business messaging, business-process integration ... anything that requires fluid, modular, maintainable, adaptable, XML processing. Why is NetKernel such a powerful abstraction? It means that applications are modular, scalable, adaptive to change, and maintainable. Development can be layered allowing specialists to encapsulate their work behind interfaces. True service-oriented architectures are enabled. Whole classes of resource processing, such as XML processing, can be abstracted from the low level procedural APIs. Most importantly the declarative Web can be manipulated by declarative applications. However it doesn't stop with XML. The NetKernel is an architecture for internet applications and can process any resource type. Consider, for example, realtime images, PDF reports, XForms, Swing GUIs ...
|
||||
|
© 2003,2004, 1060® Research Limited
1060 registered trademark, NetKernel trademark of 1060 Research Limited
|
||||