A set of Application Frame project templates (also called AppFrame) can serve as the basis for applications that
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.
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.
xxx_MonoSDI | SDI 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_MonoMDI | MDI 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_pzlMono | SDI 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_httpBackEnd | The 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_httpFrontEnd | SDI 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_pzlHttpFrontEnd | SDI 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_pzlHttpBackEnd | The 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 |