Introducing the “Welcome to Xojo” Bundle!

New to Xojo and looking for guidance? We've put together a terrific bundle to welcome you! Xojo Bundle

This bundle includes six back issues of the magazine -- all of year 21 in printed book and digital formats -- plus a one-year subscription (beginning with 22.1) so you'll be learning all about Xojo for the next year. It's the perfect way to get started programming with Xojo. And you save as much as $35 over the non-bundle price!

This offer is only available for a limited time as supplies are limited, so hurry today and order this special bundle before the offer goes away!

Article Preview

Buy Now

Issue 15.3 ('Xojo Beginner's Guide')
Instant purchase and download via GumRoad!


To Proxy or Not To Proxy... That is the Confusing Question

Deploying multiple standalone Web Apps

Issue: 15.3 (May/June 2017)
Author: Mark Strickland
Author Bio: Mark Strickland has been a fan of many dialects of BASIC since it was on the Radio Shack TRS-80 and Digital Equipment PDP-11 mini computers. More recently, he has worked in a University Medical School setting using his MacGyver-like Information Technology and Ethical Hacker skills to solve problems, almost always with Xojo. In his small software company (SimplyBASICsoftware.com), he has been using Xojo to build things like a Web-based home health care package that keeps caregivers on task with text messaging. Usually his MacGyver skills don't make things blow up, but occasionally users might disagree.
Article Description: ion>No description availa
Article Length (in bytes): 14,558
Starting Page Number: be
Article Number: 15303
Resource File(s):

Download Icon project15303.zip Updated: 2017-04-30 19:21:50

Related Web Link(s):

Excerpt of article text...

I have a Xojo Web App that is a multiple-choice testing engine. It was originally deployed as a CGI app. It uses lots of checkboxes for answers to a question and it is written in a general way so the user-interface adapts to the number of questions and the number of answers for each question.

The questions are loaded from a database table onto the page for each new question. The main web page contains one question at a time that can have up to 12 checkboxes. In every case, only one check is allowed, and if you turn on one checkbox it turns off all of the other checkboxes.

At this point some of you are saying I should have used Radio Buttons, since more of the work would have been done in the browser when clicking a selection and turning off others. Well, I assume that is true anyway. The biggest challenge may have been the formatting. The number of words in the test answers varies from one line to up to 4 lines, and with checkboxes I can control the spacing of each individual check box rather than letting it go to the default in the radio button group. I think radio button groups would not have been as cosmetically pleasing as individual checkboxes. But that is not the point of this story.

Almost all of my Web Apps, up until now, have been deployed as CGI apps on Windows with the Abyss Webserver. This made a fairly easy to deploy and maintain combination. Abyss makes certificate management very simple when compared to my experience with Apache. For the most part, I have not had too many performance problems, but most of the Web Apps probably have less than 10 concurrent users.

As I built this test engine, I thought it was a pretty elegant solution to the problem. Everything went okay until we started our first production run when 20 people showed up to take the test at the same time. After about six people logged in and started testing, the Web App became unresponsive even on a high speed LAN connection. It is not the back-end work that is slow. It appears that "tons" of traffic is interchanged with the browser to handle the checkboxes dynamically.

That testing session was a disaster, but another was coming up in a few weeks. I knew that standalone Web Apps in Xojo were more load-tolerant, but I could not figure out why the practical limit was maybe four concurrent users with CGI nor could I find a solution. A bit of quick testing showed that a standalone version of the exact same code could handle many more concurrent users. At that point, I put up a standalone version on a non-standard port and all went well for the next couple of testing sessions.

...End of Excerpt. Please purchase the magazine to read the full article.