Thanks for taking the time to explore Aloe Express and for your feedback. I appreciate it.
Due to Xojo’s use of cooperative/non-preemptive threading, it is still possible for Aloe apps to block on I/O operations. However, by processing each request in its own thread, the frequency and severity of blocking in an Aloe Express-based app are, to some extent anyway, reduced and mitigated.
Perhaps a better way to describe Aloe Express’s multi-threaded model is that it’s as close to non-blocking as we’re going to get.
The impact of I/O operations will be dependent on many factors, including the purpose of the app itself, the load that it is under, the environment that it is running in, what you are interfacing with, etc. Those are factors that are beyond Aloe Express’s control.
But there are steps that you can take to improve performance and “scale” your apps. For example, I highly recommend running Aloe Express-based apps behind something like nginx, HAProxy, etc. Doing so gives you the ability to scale by load balancing multiple instances of your app. It also provides SSL termination, authentication, rate/connection/bandwidth limiting, and more. I’ll be providing more best practices on the Aloe Web site soon, and covering them in my XDC session.
Yes, when using Aloe Express in Xojo Web projects, the framework’s standard ServerSocket and event loop are substituted.
Regardless of whether you’re using Aloe Express with the Xojo Web or console framework, I think that its most important benefits are easy access to request attributes, easy methods for building responses, and complete control over the responses.