Changes between Version 6 and Version 7 of ArchitectureOverview


Ignore:
Timestamp:
08.05.2013 15:45:40 (11 years ago)
Author:
jri
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ArchitectureOverview

    v6 v7  
    33= Architecture Overview = 
    44 
    5 DeepaMehta features an OSGi-based modular architecture that shares features with an service-oriented architecture (SOA). Each module's service can be consumed as an OSGi service. At the same time DeepaMehta can publish a module's service as a RESTful web service without requiring the module developer to do extra coding.  
     5DeepaMehta features an OSGi-based modular software architecture that shares features with a service-oriented architecture (SOA). Each module's service can be consumed as an OSGi service. At the same time DeepaMehta can publish a module's service as a RESTful web service without requiring the module developer to do extra coding.  
    66 
    7 In a distributed (client-server) DeepaMehta setup the OSGi container runs at the server-side. Clients access the server via HTTP. The representation format is JSON. 
     7In a distributed (client-server) DeepaMehta installation the OSGi container runs at the server-side. Clients access the server as a RESTful web service (via HTTP). The representation format is JSON. 
    88 
    99[[Image(Architecture.png)]] 
     
    1717* The DeepaMehta Core mediates between the DeepaMehta plugins and the underlying OSGi environment. In particular the DeepaMehta Core ... 
    1818  * registers the plugin's service as an OSGi service. 
    19   * additionally publishes the plugin's service as a RESTful web service via OSGi's HTTP service. 
    20   * publishes the plugin's web resources (images, scripts, CSS) via OSGi's HTTP service. 
     19  * publishes the plugin's service as a RESTful web service via the OSGi HTTP service. 
     20  * publishes the plugin's web resources (images, scripts, CSS) via the OSGi HTTP service. 
    2121  * tracks the plugin services the plugin want to consume. 
    2222 
    23 * The //DeepaMehta Core Service// provides transactional access to the DeepaMehta database. There are high-level methods for dealing with the basic DeepaMehta application objects (Topics, Associations, Topic Types, Association Types) and complex composite structures. The DeepaMehta Core Service also provides basic query (including fulltext) and traversal capabilities. 
     23* The //DeepaMehta Core Service// provides transactional access to the DeepaMehta database. There are high-level methods for dealing with the basic DeepaMehta application objects (Topics, Associations, Topic Types, Association Types) and with complex composite structures. The DeepaMehta Core Service also provides basic query capabilities (including fulltext) and traversal capabilities. 
    2424 
    2525  Every DeepaMehta plugin has access to the DeepaMehta Core Service. External applications can access the DeepaMehta Core Service as a RESTful web service (via HTTP). 
     
    2929* The //Migration Manager// ensures the database model and content is compatible with the installed plugins. It does so by running database migrations when a plugin is installed or updated. 
    3030 
    31 * The low-level //Storage Layer// access methods are specified in a DB-agnostic service provider interface. By implementing this interface developers can deploy any database system as the DeepaMehta storage. 
     31* The low-level //Storage Layer// access methods are specified by a DB-agnostic service provider interface. 3rd-party developers can deploy any database system as the DeepaMehta storage by implementing that interface. 
    3232 
    3333The DeepaMehta Core is an OSGi bundle. 
     
    4141* **A data model**. The data model is a collection of domain-specific topic types and/or association types. 
    4242 
    43 * **Server-side logic**. Server-side logic comes in form of a) event handlers, and/or b) service methods. Server-side logic is written in Java. 
     43* **Server-side logic**. Server-side logic comes in form of a) service methods, and/or b) event handlers. Server-side logic is written in Java. 
    4444 
    45 * **Client-side logic**. Client-side logic runs inside the DeepaMehta Webclient. Client-side logic comes in form of a) event handlers, b) custom renderers, and/or c) public API methods. Client-side logic is written in JavaScript. 
     45* **Client-side logic**. Client-side logic runs inside the DeepaMehta Webclient. Client-side logic comes in form of a) custom renderers, b) event handlers, and/or c) public API methods. Client-side logic is written in !JavaScript. 
    4646 
    4747A DeepaMehta plugin is an OSGi bundle. 
     
    4949== DeepaMehta Webclient == 
    5050 
    51 The DeepaMehta Webclient is a HTML5/JavaScript/AJAX-based single-page web application. It features the known graph-based DeepaMehta GUI along with the detail panel and main toolbar. In particular it provides the standard topicmap renders and detail panel renderers, most notably the HTML5 Canvas-based default topicmap renderer. The HTML5 History API is used to fight the problems inherent to single-page AJAX applications: a) each application resource get an unique URL which appears in the browser's address bar, and b) the browser's back and forward buttons work as usual. 
     51The DeepaMehta Webclient is a HTML5/JavaScript/AJAX-based single-page web application. It features the known graph-based DeepaMehta GUI along with the detail panel and main toolbar. In particular it provides the standard topicmap renders and detail panel renderers, most notably the HTML5 Canvas-based default topicmap renderer. 
    5252 
    53 Technically the DeepaMehta Webclient is itself a DeepaMehta plugin that consist mainly of web resources (scripts, images, CSS). 
     53The HTML5 History API is used to fight the problems inherent to single-page AJAX applications: a) each application resource get an unique URL which appears in the browser's address bar, and b) the browser's back and forward buttons work as usual. 
    5454 
    55 What is special about the DeepaMehta Webclient plugin is that it establishes a client-side application framework along with an event mechanism. This enables other DeepaMehta plugins to hook-in custom code in order to extend the DeepaMehta Webclient. Thus DeepaMehta plugins can e.g. provide custom renderers and widgets, add controls to the toolbar, or add commands to the context menus and the detail panel. Furthermore a DeepaMehta plugin can provide a client-side public (JavaScript) API, callable by other DeepaMehta plugins. 
     55The DeepaMehta Webclient is itself a DeepaMehta plugin. It consist mainly of web resources (scripts, images, CSS). 
     56 
     57What is special about the DeepaMehta Webclient plugin is that it establishes a client-side application framework along with an event mechanism. This enables other DeepaMehta plugins to hook-in custom code in order to extend the DeepaMehta Webclient. Thus DeepaMehta plugins can e.g. provide custom renderers and widgets, add controls to the toolbar, or add commands to the context menus and the detail panel. Furthermore a DeepaMehta plugin can provide a domain-specific public client-side API (!JavaScript), callable by other DeepaMehta plugins. 
    5658 
    5759== Storage Implementation == 
    5860 
    5961The standard storage implementation is based on Neo4j and Apache Lucene. Neo4j and Lucene are embedded and accessed via the respective Java API. 
     62 
     63A DeepaMehta storage implementation is an OSGi bundle.