Distributed Application Platform (DAP)

DAP is a software platform for general distributed computing applications. DAP contains the following major parts:

  • node -- a client/server (or peer) program provides DAP services. The key service is to establish programmable net connecting a group of nodes in application specific topology for inter-component communication. Node also provides distributed file services for file operations and cluster management services for node discovery and task assignments. By default, a node program runs on a nodebase of OSGi framework, so that application components (bundles) can be installed/uninstalled. JBoss-AS (EAP) is an alternative nodebase to host the node program.
  • console -- a client program provides a Command Line Interface (CLI) for operating nodes by commands or scripts. There are two types, Clojure console uses Clojure commands and scripts, Python console uses Python commands and scripts.
  • guicp -- a Graphical User Interface Control Panel is a GUI console for operating nodes by pointing devices. It has Windows to display connection relations of nodes, as well as Clojure and Python terminals for command line operations.
  • SDK -- a Software Development Kit contains DAP's core library, APIs and tools for distributed application development.

DAP is a cross-platform software solution with both Java and C++ implementations. Both Java nodes and C++ nodes use our Reconfigurable Interconnection Network Gateway (RING) protocols and can communicate with each other. The Java node runs on nodebase with Apache Felix OSGi framework (http://felix.apache.org/). DAP-Java also contains a node bundle for JBoss-AS (7.1.1) and EAP (6.1) with OSGi support. C++ nodebase uses CppMicroServices (http://cppmicroservices.org/) for OSGi framework. DAP-Java Clojure console uses Clojure (http://clojure.org/) and DAP-Java Python console uses Jython (http://www.jython.org/). DAP-CPP Clojure console uses tinyclojure, a tiny C++ implementation of Clojure language by Steele Duncan (https://github.com/steeleduncan/TinyClojure). That means only a small subset of Clojure functions are available for the C++ console. DAP-CPP Python console uses the native Python (https://www.python.org/). All these DAP consoles use the same set of RING functions and can be used to operate both Java nodes and C++ nodes.

DAP applications can be developed in three ways: rapid applications, native applications and embedded applications. Going which way depends on the form of application components. Rapid applications are in the forms of Clojure/Python scripts, i.e., computing components are written in Clojure/Python. The inter-component communications are through RING Clojure/Python API function calls. Native applications are developed using the node native languages, C++ or Java, and DAP APIs. Embedded applications are applications embedded with RING functions for inter-communication with other nodes or another embedded application. Embedded applications are developed by using RING libraries. DAP-SDK provides tools for building DAP applications in the three ways. For instance, Leiningen build tool for rapid application development in Clojure, Ant tool for native applications, and Maven tool for JBoss-AS based native applications.

DAP comes with default application bundles of Clojure, Python and Jetty (for DAP-Java). Clojure and Python enable the rapid applications in forms of Clojure and Python scripts. Jetty bundle supports Servlet and DAP APIs and provides a light web interface for distributed applications.

Smart Grid Communication Middleware (SGCM)

Publications and demo video

  1. Abolfazl Mosaddegh, Claudio A. Canizares, Kankar Bhattacharya, Hongbing Fan, Distributed Computing Architecture for Optimal Control of Distribution Feeders with Smart Loads, IEEE Transactions on Smart Grid, Vol.8, No.3, 1469 - 1478, May 2017.
  2. H. Fan, Y.L. Wu, C.C. Cheung: Design Automation Framework for Reconfigurable Interconnection Networks. The Computer Journal, 56(2): 258-269,(2013)
  3. H. Fan and Y.L. Wu, Structured Overlay Network for File Distribution. COCOA(2) LNCS6509, 292-302,2010
  4. H. Fan, Y.A. Chen and Y.L. Wu, R-NoC: An Efficient Packet-Switched Reconfigurable Networks-on-Chip, Proc.Internatinal Symposium on Applied Reconfighurable Computing (ARC) 2012, pp.365-371
  5. H. Fan and Y.L. Wu, Structured Overlay Network for File Distribution. Annual International Conference on Combinatorial Optimization and Applications 2010, LNCS6509, pp.292-302.
  6. A video demo of RING for SGCM