On Jan 28, 2020, at 2:00 PM Ronnie wrote:

> I have an application running in a hospital environment for a number of years.
> In the light of the increasing awareness of data security, the client’s IT in 
> their own words are looking at "redoing the whole 4dcis database onto 2 or 3 
> tier system where there is a database separation from application layer”
> 
> The current setup is a v15 client-server application, with about 80 
> concurrent client licenses serving users located at 2 separate locations.
> 
> As it stands, a 4D application already has a 2-layer architecture being a 
> client-server application.  
> We could perhaps enhance it a little to make it a 2-tier environment by 
> moving the segregating the 4D Server software and the 4D structure files 
> (business logic) on to one server and the 4D data files (database) on to a 
> separate server.  Doing that however has no effect on the 4D database 
> architecture, it still remains a 2-layer database architecture.
> 
> Apart from re-developing the application into a complete web-based 
> application, how can a 4D application be refreshed into a 3-tier system?
> 
> I would like to tap on the collective wisdom of the forum to gather some 
> views on the plausibility of the above.

If a “3 tier system” a hard requirement, then introduce another 4D Client layer 
running a web server. You create some kind of API — maybe a REST interface — 
that would be accessed by running 4D Web Server — or NTK — on 4D Client. Then 
you have end user 4D Clients connect to this new 4D Client web server. 

The new 4D Client web server machines connects to 4D Server directly and act as 
a relay between the 4D Client at the user end.  You would run 2 4D Server 
instances. Probably on different machines. One stores the data and it what the 
4D Client web server machines connect to. 

Your end user 4D Clients connect to another 4D Server and this is purely an 
application server. It just serves the 4D structure to 4D Clients. The database 
would be empty. 

Looks something like this:

4D Client End User —> 4D Client Web Server —> 4D Server with data
              |
              |---------------------------------------------------> 4D Server 
with no data (serving the application layer)

That’s a complex system. You’ve got too good of a system. Too easy. You need to 
add more layers and complexity. But maybe that is what IT wants. More layers 
because they think that means more places to add more control and more security 
protections. 

You could also make the case that your new API web server interface — that will 
be running on 4D Client — could be used by a newly created web app running in 
the browser. The web app would connect to 4D Client web server using the same 
API that the 4D Client end user machines use. That way, if IT really has the 
idea they want to move to a pure web app front end, you could provide this with 
your 4D backend. And your 4D backend is a 2 tier system — 4D Client -> 4D 
Server. 

Setting up a system like this would allow end users to continue to use 4D 
Client and keep the same UI they are used to. Once you have your REST API 
working, you switch out all SAVE RECORD and QUERY and database access commands 
that 4D Client now uses to use your new REST API. 

Get that all working and then you can provide that API to the web app 
developers. They build a web app using the same calls that 4D Client is using. 
The 4D Client web server does not know or care if requests are coming from a 4D 
Client doing an HTTP Request or from a web browser. 

Tim

*****************************************
Tim Nevels
Innovative Solutions
785-749-3444
timnev...@mac.com
*****************************************

**********************************************************************
4D Internet Users Group (4D iNUG)
Archive:  http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**********************************************************************

Reply via email to