Unicorn Architecture Overview
The basic mechanism of Unicorn is thus: after receiving a request from a user (via The Unicorn User Interface), the Unicorn Framework creates and sends a sequence of observation requests to a number of observers.
The observers (validators, checkers, anything...) perform, and then report their observations (a list of errors, warnings or information) back to the framework in their observation response.
The framework gathers and processes all observation responses, and displays the final result for user consumption.
Tasks and Observations
How does the framework decide what observation request to produce?
It uses Tasks such as "validation", "conformance checking" or "check for broken links". Each task is internally known by the framework as a sequence of observations, with different priorities given to different observations. If a high level priority observation returns one or more errors (e.g a well-formedness error or invalid markup), lower priority observations will not be requested, and the user will only be sent the results of the observations already processed.
The schema above shows how the tasks result in observations for an online Web document. Unicorn can also handle Upload or Direct input of a Web document - in which case, Unicorn will attach the document to its observation requests to each observer.
Unicorn can also serve as a "proxy" for observers that do not support all three (URI, Upload, Direct Input) methods. For example, if Unicorn is given a resource via Direct Input, and needs to send it to an observer which does not support this method but supports the upload method, Unicorn will create an upload request and send that to the observer.
What kind of Request does Unicorn send?
All Unicorn observers are online services (on the Web). At the moment, Unicorn can send any kind of HTTP GET or POST request.
At the moment there is no plan to extend that to cover the Web Services Stack. Unicorn is simply RESTful.
And how does Unicorn know what request to send to its observers?
Each observer publishes a description of its service, its options and the associated parameters. The syntax of this published contract is detailed in the Unicorn Contract Specification.
What do Observation Responses look like?
Unicorn understands observation responses made in a language specificed in the Unicorn Response Specification.