I'll add what I can, but until I have a demo (which I'm just now starting) for now just food for thought.

I posted this idea on the CGIDEV2 forum and it didn't get very far, so I'll pass on a little of it here but focus on getting it coded. It will be unencumbered open source (no licensing, in public domain, etc.) and hopefully will be of use to others.

Also, as to Renaissance I looked at their doc a couple of weeks ago and they also use dataq servers, although you can include all the logic in the CGI program if you choose. But that's how they architect their web apps. I had a dicussion with Kevin Turner on this who at least gave it a good go to try to understand what I was proposing. :)

The idea is similar to Aaron's, dataq servers but coded UI independent, that is, has no EXFMT's (of course) but also no HTML or XML generation, etc. That's up to the user interface generation program, be it CGI, 5250 interactive, or even none with batch program.

The difference in my idea is that I'm going to code all the global variables in each dataq server program in one or more data structures and DIM the data structures to a maximum number of concurrent session users, to be bold here, let's say 10,000.

Then when a dataq entry is written to the server, along with it comes a session id that was assigned from 1 to 10,000 when the user logged in. For example, Rennaissance assigns a session id in their environment that would be correlated to a number between 1 and max users. That number will then be a data structure index in the program. Every statement will access variables as x(sess_idx) = something rather than x = something.

This is equivalent of 10,000 session programs and their data, but only one program and the data in 10,000 data structure arrays.

The key point here is making all web processing the same as 5250 processing as far as state goes. Everything that is in a variable is still there from last processing, just as we expect and program to in 5250 or any desktop programming, etc.

Of course, all code that can go into subprocedures would go there, along with their local variables. That should be done anyway, and cuts down on global variables that would need to be in the persistent data in data structure arrays in my design.

What I would like to see is an iseries RPG open source framework code for business processing that would be more powerful than any other environment, due to the huge overhead of Java and the slowness of script processing, and added to both the overhead of context switching to restore state as each web page comes in.

To sum up the CGIDEV2 discussion (which this idea works with as well anything else), Kevin supports the standard architecture of stateless, multi-server instances (horizontal scaling), with the idea that multiple jobs will handle restoring state and processing the incoming page in a timely manner. In fact, he doesn't see restoring state as that big of a deal and I do.

Whereas I am proposing a non-standard single instance of each logic server arrayed to max number of potential sessions, and processing all incoming for each server out of memory resident data structures. All IO for a program would go through just the open paths of that single program.

There's higher memory overhead for what I propose, but I believe it is still significantly less than Java, and I believe the stable logic processing against files would turn around output at phenomenal speeds.

The DIM can be much less than 10,000, whatever concurrent logins you expect to support for that app system.

I have more plans within the logic but that's enough to start.

rd


Aaron Bartell wrote:
What if you could create a programming experience that allowed the RPG
programmer to code just like they were communicating with a green screen as
far as program state is concerned, but instead be communicating with the
browser?



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.