|
From: "Loyd Goodbar" <loyd@blackrobes.net> > I'm always on the lookout for more (and hopefully) > better ways of handling web interfaces... I'd better jump on your lead, Loyd. It gives me an opportunity to explain a bit about my framework, Relational-Web. Programmers who have skill with ILE languages may be interested. In my opinion, there are a few essential requirements of a Web framework. I'll list them. Programmers shouldn't have to parse input from the browser. They should be able to simply reference HTML form variables, query string parameters, environment variables, and cookie variables by name. A change in the user interface should not require a change in the program. For example, an RPG program should have NO imbedded HTML, XML, or JavaScript. There may be a few exceptions. But as a rule, the framework should support Model-View-Controller architecture. User interface, presentation control, and database / business logic should be in separate source files. It makes applications change resilient and easier to maintain. A single instance of a Web application may be supporting dozens of concurrent users. Therefore, the framework should make it easy to maintain a session for each user. The framework should make it easy for a single program to handle multiple types of requests. Most frameworks don't. For various reasons, most CGI, Net.Data, and Java programs handle only one type of request. This often leads to the redundant allocation of files and other objects across multiple programs. For example, a dozen or more types of requests may be required to implement a database inquiry and maintenance program. You could end up with a dozen programs allocating the same files and other shared objects. Highly interactive applications should run as servers. Otherwise, performance is poor. CGI and Net.Data programmers can partially overcome the performance problem through the use of named activation groups. However, the use of named activation under the HTTP server has a few downsides. The programs themselves are trickier to write. Memory variables are not initialized from one request to the next. With named activation, multiple instances of each program become activated over time. These instances are never deactivated until the HTTP server is shut down. For example, if the HTTP server is configured to run up to 40 threads and there are 100 CGI programs, it is possible to have up to 4000 CGI programs active after a period of time. It puts an unnecessary burden on OS/400 resource management. A better idea is to enable an operator to control whether a program is active or not. For example, when you need to backup a database, you may need to deactivate a program. Any browser who tries to use a deactivated program should immediately receive an alternative message (not the HTTP Server timeout message a few minutes later). Servers perform better. For example, under stress testing (JMeter www.apache.org), Relational-Web programs provide approximately double the performance of Net.Data, and somewhat more than double the performance of Easy400 CGI. Even though the latter both use "named activation". If anyone is interested in the details: http://www.relational-data.com/products/rweb/cgi/mainfs.htm Best Wishes, Nathan M. Andelin www.relational-data.com
As an Amazon Associate we earn from qualifying purchases.
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.