Skip to content

Architecture Overview

Gary Pollice edited this page Jun 17, 2013 · 1 revision

The WPI Suite system follows the basic client-server architecture:

  • Client
    • used to access projects
    • display module GUIs
  • Server (Core)
    • provides user and project management functionality
    • coordinates storage and retrieval of project and module data
    • implements the public REST API

Architecture Diagram

Architecture diagram for the WPI Suite system

The diagram above shows the main components of the WPI Suite system. These components consist of the following:

Desktop Swing Client

The desktop client is implemented in Java. It consists of a library that is used to generate, send, and manage HTTP requests/responses and sessions as well as a Swing-based application that dynamically loads and displays the client-side GUIs for each WPI Suite module.

Janeway

The swing application that displays module GUIs is known as Janeway. Each WPI Suite module provides a .jar file containing a class that implements the IJanewayModule interface. The Janeway client loads all necessary modules from their .jar files dynamically when the client is run. Each module can make use of the network library to make requests to the server.

Network Library

The network library simplifies the process of creating HTTP requests to send and receive model entities from the core. The library provides a Network factory that can be used to easily create requests. Clients using the library can simply create a request, add an observer to be notified when the response is received, and then send the request. The network library takes care of spawning a new thread to send the request, allowing all HTTP requests to be asynchronous without clients needing to manage threads. More detailed information on the network library can be found on the Networking with janeway page.

Core

The core consists of all the components that manage users and projects, implement the public REST API, handle retrieving and storing models, and persist model data.

Public REST API

The public REST API is used by client applications to communicate with the core. It is accessed using HTTP, so it is accessible by almost any type of client implementation. The primary functions of the API are storing and retrieving models. It also manages login and authentication and project selection. Data is passed back and forth by the API using JSON. This necessitates that models be serialized into JSON before being transferred, and then be deserialized upon being received. This article explains the concept of a REST API very well. For more specific details on the functionality of the WPI Suite API, visit the REST API page.

Core Servlet

put content here

Manager Layer

put content here

Session Manager

put content here

Entity Managers

put content here

Database

put content here