[Feedhenry-raincatcher] Raincatcher 2.0 architecture
Wojciech Trocki
wtrocki at redhat.com
Fri Apr 21 10:58:23 UTC 2017
Dear Raincatcher developers
After consultations with team and community we decided to propose new
architecture of Raincatcher solution. Main target for Raincatcher 2.0 is to
remove most of the problems related with module development and simplify
our API.
New Architecture
Raincatcher will still use modular based aproach with dedicated modules
(plugins) for:
- Server side code
- Client side code
- UI components and frameworks.
We think that plugin/module aproach is really effective and valuable for
developers.
Modules can be developed in reusable way providing both UI and logic in
organized and supportable manner.
Architecture changes:
*1) Removing mediator and event driven api*
After more than 2 years we decided that our implementation of mediator
pattern is not as effective and easy as we initially thought. Describing
API using topics is not as clear as direct method calls.
*2) Replacing mediator with direct module method calls*
After removing mediator Raincatcher modules will communicate directly by
using javascript object passed to module from top level app. This object
will expose all module interfaces.
This change will affect how Raincatcher modules are build and talk to each
other.
For most of the use cases migration to new architecture will require
updating versions of all Raincatcher modules and making small modifications
to top level application.
*Code changes*
Old mediator call:
*[image: Inline image 4]*
New direct module call:
[image: Inline image 1]
*modules *object is singleton containing all module interfaces.
Modules object contain fixed namespaces that allows users to provide custom
implementation with extended API. For example:
* modules.storage *field can be assigned to
* fh-wfm-simple-store* or* fh-wfm-mongoose-store* module as they
implement the same api.
*3) Using promises to return results between modules*
Modules will interact with with each other using promises (Bluebird
library)
We currently doing investigation around rxjs library
*4) Adding ability to generate modules [Optional]*
We also planning to add generator that would help with bootstrapping new
modules.
Regards
WOJCIECH TROCKI
SOFTWARE ENGINEER
Red Hat Mobile <https://www.redhat.com/>
IM: wtrocki
<https://red.ht/sig>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/feedhenry-raincatcher/attachments/20170421/2f97348d/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screen Shot 2017-04-19 at 9.11.23 PM.png
Type: image/png
Size: 56901 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/feedhenry-raincatcher/attachments/20170421/2f97348d/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screen Shot 2017-04-21 at 11.36.20 AM.png
Type: image/png
Size: 60233 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/feedhenry-raincatcher/attachments/20170421/2f97348d/attachment-0001.png>
More information about the Feedhenry-raincatcher
mailing list