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 **********************************************************************