Copyright (c) Prolog Development Center SPb

Application Frame. Introduction

Appointment

A set of Application Frame project templates (also called AppFrame) can serve as the basis for applications that 

and have the following distinctive features:

A set of Application Frame project templates was created based on the experience of developing the WorkspaceManager project (WSM, see SpbVipTools\Bin\wsmAppData\WorkSpaceManagerEn.pdf).
Done by V. Yukhtenko (Prolog Development Center SPb). Andrey Basukinsky assisted in Http-communication.

Architecture

The application architecture is focused on the strict separation of the user interface and the logical part.

The structure of the mono application is shown in the following figure.

Here, the blue arrows show the connections inside BackEnd and FrontEnd, respectively, and the red arrows show the organization of the relationship between BackEnd and FrontEnd.

ObjectRegistry is a component of the Pzl system.

Inside these structures, modules access other modules through the BE (FE) -Connector, which accesses the register of ObjectRegistry objects.

Events arising on the initiative of the opposite side are processed by the FE-Requests and BE-Responces modules, respectively, which call BE (FE) Tasks modules for execution. Those, in turn, refers to the rest of the BackEnd modules (FrontEnd). Having received data for the opposite side, the BE (FE) Tasks module sends a message through the BE (FE) Event module. The opposite string subscribes to data source events for it.

The initiator of data exchange is always FrontEnd, which initiates the execution of tasks in BackEnd. 

Work occurs in asynchronous mode: by sending a request, FrontEnd returns to its work. BackEnd, having received the request, performs the task and, possibly, initiates the transfer of data to FrontEnd. This can be either a single message or a sequence of messages that must be processed in FrontEnd.

Plug-ins extension modules are DLLs that are organized according to certain rules and are connected via the PZL (PuZzle) system.

This application structure allows you to almost seamlessly switch to the option of separate applications (BackEnd and FrontEnd) interacting via the http protocol, adding and including the Http Server and Http Client.

The structure of such an application is shown in the following figure.

Client  and Server  themselves convert the data and arrange for their transfer between BackEnd and FrontEnd. At the same time, both FrontEnd and BackEnd contain in their composition a PZL-system : this makes it possible to use Plug-in (s) in both BackEnd and FrontEnd.  

Technology

When developing WSM, PDC VIP v.9 technologies were used, as well as proprietary technologies and techniques:

Set of patterns

Based on the proposed concept, a number of templates have been built that have the following features (xxx is the conditional name of the project)

xxx_MonoSDISDI Mono application template in which BackEnd and FrontEnd are combined in one xxx.Exe file. It is the basis for creating and debugging all other variants of SDI applications
xxx_MonoMDIMDI Mono application template in which BackEnd and FrontEnd are combined in one xxx.Exe file. It is the basis for creating and debugging all other variants of MDI applications
xxx_pzlMonoSDI template Mono pzl components in which BackEnd and FrontEnd are combined in one pzl component. It can fully perform all the functions provided for in the framework of the project based on xxx_MonoSDI. Placed in the same PZL container. It can be connected as a plug-in to any application that has the properties of a PZL port.
xxx_httpBackEndThe BackEnd application template that can fully perform the BackEnd functions provided for in the framework of the project based on xxx_Mono (SDI / MDI). Is an http server for clients based on the templates xxx_httpFrontEndMDI or xxx_httpFrontEndSDI
xxx_httpFrontEndSDI FrontEnd application template that can fully fulfill the FrontEnd functions provided by the project based on xxx_MonoSDI. It is an http client for working with the xxx_httpBackEnd http server.
xxx_pzlHttpFrontEndSDI template FrontEnd pzl-components that can fully perform the FrontEnd functions provided for in the framework of the project based on xxx_MonoSDI. It is a pzl component and can be connected as a plug-in to any application that has the properties of a PZL port. It is an http client for working with the xxx_httpBackEnd http server.
xxx_pzlHttpBackEndThe BackEnd template of pzl components that can fully perform the BackEnd functions provided for in the framework of the project based on xxx_Mono (SDI / MDI). It is both a pzl component and an http server for clients based on the xxx_httpFrontEndMDI or xxx_httpFrontEndSDI templates

Project templates do not contain any information related to the purpose of the application. They contain only mechanisms that support the main properties of the application: