Good ideas Ralph! I love these types of discussions. As I challenge you in
the following post please know I am trying to come up with the best possible
collective solution to move forward with.

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.

It seems this would immediately put a limitation on the framework being used
for public purposes because it would be limited by the RPG language vs.
being limited by processing power (you can buy more processing power, but
you can't buy more RPG DIM element entries). One could argue that 10,000
users is a lot, but in my mind that number could be eaten up pretty fast
based on current RPG customers using this framework to take online orders
and such.

Maybe I don't understand how your approach is working entirely. How long
does an entry in the DIM exist before being timed out and removed for
somebody else to use? I would imagine you would have to have such a timeout
feature.

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.

I can see how this approach would work for retaining state of variables
(global and local), but how would it work at retaining state of things that
you don't have immediate control over like DB files and SQL cursors? If you
potentially have two users making use of the same job (one after another)
then you can't rely on record positioning and cursors to be in the same
place and instead have to initialize from ground zero which takes us back to
regular CGI programming. Note the V6R1 PF handlers might be able to be held
in a DIM.

The point I hope to get to with this framework is to capitolize on all of
RPG's wonderful features as it relates to the whole environment (i.e. the
OS, DB2, ODP, SQL cursors, etc).

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

Yahoo! I agree with you man. And the crazy thing is that I think it is
within reach. The important thing is that it is differentiated enough from
other frameworks, and I think that lies in using RPG's fudemental features
"as-is" as much as possible, and the data queues thing gives us that. If
you look around this is exactly what many other frameworks have been trying
to get to for many years. They are making solid progress, but like I stated
in another post on the EGL list, they are shooting for what we have had with
RPG/5250 for decades.

All IO for a program would go through just the open paths of that single
program.

I can understand how reusing open paths would save on processing, but how do
you share an open path from one invocation to the next when multiple users
will be using that same job?

Are you open to combining our efforts in an online repository like
Assembla? I picked Assembla because it is free and we can fairly easily
store RPG code in there by using WDSC's iSeries Projects (I can post a video
showing how). This has to be a community effort otherwise it won't fly. As
I understand it the Renasianseframework is completely open source as long as
you submit enhancements back which I have no problem with.

Aaron Bartell
http://mowyourlawn.com


On Thu, Jun 5, 2008 at 9:24 PM, Ralph Daugherty <rdjfc@xxxxxxxxxxxxx> wrote:


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?


--
This is the Web Enabling the AS400 / iSeries (WEB400) mailing list
To post a message email: WEB400@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/web400.



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.