BeNOW Web API
Andrew Taylor <andy@benow.ca>
Overview
Tutorials
Walkthru
Javadoc
(This is just a brief overview of the web api, for more complete documentation, see the tutorials and music library walkthru.)

The Web API enables rapid web application development. It builds on top of many of the benow apis, and as such, packs a big punch in a small package. As with most of the benow stuff, it is designed to be easy to program, above all... with all time consuming and repetitive tasks facilitated. It is also designed to facilitate designing and publishing pages involving complex operations. A goal is to make the public run-time face of the web api easy enough for a beginner to make a page composed of non-trivial components and to be able to organize a site. Also a consideration is application deployment and administration, hopefully approaching the point where there is very little to need to know and do to get a basic site up and going quickly.

The basic function of the web service is to deliver web pages. These web pages may composed of static html, or dynamic html corresponding to requested operations, or a combination of both. As the primary usage of the intended web site is to 'do stuff', the web api is tied in with the service api, which 'does stuff' well and in a defined manner that makes presenting returned stuff easy. By using the service api, things to do (ie services) can be easily discovered and exposed. Stuff usually spans time, and as such is stored somewhere. The repository api is used for persisting and fetching objects. It makes storing and fetching linked networks of well defined objects quite easy.

HTML is delivered from the web app. This html is typically created via an XSL transform, which uses an XSL stylesheet to place and manipulate XML resulting from the request. The XML which is transformed is the result of a marshalling of the objects resulting from the request by the benow-castor api. The XSL transforms themselves can draw from XSL libraries, which allows for the grouping of often execute presentation logic to ease implementation. Through libraries, it becomes very easy to change the look and feel of an entire site via small changes. The typical web page rendering pipeline is: request - parse - fetch from repository - marshall to xml - run xsl template - deliver html. Again, the focus is on ease of implementation, and all xsl (for both pages and services) is automatically generated. Web applications are shared and rely heavily on security to protect sensitive areas. The security api is tightly integrated to keep people from inadvertantly or maliciously causing mis-operation.

Despite the complexity, the web api is surprisingly fast, due to fast backends and performance optimizations (caching, etc). By facilitating the page creation process, more time may be devoted to content creation and beautification.


Tutorials
There are many tutorials which explain use and behaviour of the various components that make up the web api.


Walkthru
For a larger example of web api usage, there's the Music Library Application Walkthru, which details the process of creating a simple custom application with the web API.


Javadoc
Javadocs can be built via 'ant javadoc'. Once built, they may be viewed here.