Detail
Design
©
Domicel Systems
All rights reserved
Design Goals
- Domicel
objects
are Web Services (WS-Objects)
- A Domicel is a
virtual construct consisting of the aggregation of objects from many
Hosts
- Nevertheless, a Domicel has a unitary
appearance to the user, as if it's in one location
- No
difference between inter-Domicel interactions and intra-Domicel
interactions
- No difference between inter-Host
interactions and intra-Host interactions
- Any
Domicel can interact with any object on any Domicel (Given access
rights)
- Any Domicel can link to any object on any
other Domicel (Given access rights)
- All Domicel
interactions are transactions – either completed or rolled
back
- Domicel provides a secure environment in which
users can be identified with certainty
- Security
is controlled on a
per-object, per-Domicel, and per-Host basis
- Security
is controlled by the end-user in an intuitive fashion
- Security
cannot be compromised Domicel-wide by a rogue application
- Security
of each Host is independent of all other Hosts
- However,
access groups
can be shared, to simplify maintenance
- Domicel
provides search infrastructure on object attributes or by keywords
- No
installation of classes or services needed to create objects in a
Domicel
- The Domicel owner has complete control of
all activity on his or her Domicel
- The Domicel
owner can view the history of all activity on his or her Domicel
- No
central point of failure: If one Host is disabled, activity not
directly involving that Host continues uninterrupted
- No
bottlenecks: Numbers of Hosts and Domicels are infinitely scalable
Implementation
Domicel
is written in Java as pure server-side software, currently using Apache
Tomcat and mySQL, but designed to be independent of server and
database. The front end uses a standard web browser (though it is only
tested with MS Explorer and Mozilla Firefox).
Objects
Objects
are the
basic building block of Domicel Applications. They are defined by the
Services they support, and
implemented by Classes.
Every object supports the Domicel
Base Service, plus zero or more user-defined services.
Objects are identified by an Object ID, a Domicel ID, and a Host ID.
Host IDs and Domicel IDs are unique system-wide. Object IDs are unique
to a particular Domicel on a particular Host.
Services
Services
define an object's messages and attributes. Services,
themselves,
are defined by XML files which are isomorphic to a subset of the Web
Service standard (the intention is to make them identical to the Web
Service standard in the future).
Domicel Base Service
The
Domicel Base Service defines the methods that all objects support.
Every class must explicitly support this service
(the reason: so that new versions of the Domicel Base Service can be
created without making old objects obsolete). The methods in this
service are described by Domicel Base Messages. Services are identified by a Host ID and a Service ID.
Classes
Objects
are instances of classes. Whereas services are system-wide, classes are
specific to the host on which its objects (instances) reside. Classes
explicitly implement zero or more services (the Domicel Base Service
is implemented implicitly). Non-base-service functionality is
implemented by a Java class which is specified by the Domicel class.
Methods
Methods are defined by services. The service defines the input SOAP message, and the output SOAP message.
Attributes
Methods which begin with the prefix: GetAttr
define attributes. The type of the attribute is determined by the
output message of the method. When a Host creates a class, the class's
services are read. A SQL table is created by the host for implementing
objects which are instances of the class: one column for every
attribute.