Any tips on how to architect a big app?

at least I don’t need to worry about big apps :slight_smile:

Re: Using multiple web container to get other controls in a listbox / “grid” looking control.
I can see where that could answer several of the issues… but I have to wonder how you would handle resizing columns since in effect you are trying to change the layout of even just 50 of these “rows”. Sorting the rows would be interesting as well. I wonder if you try to sort the “data” in the row and then re-assign data to the row containers or if you actually shuffle the row containers. Seems like it would be less intuitive to looks at the values of one web control in relation to the values of another web control. Infragistics has a very nice HTML5 / jQuery Grid control that does all sorts of magic….well… one of it’s tricks is making $500 disappear :stuck_out_tongue: – still for a large project with a bigger budget… I know that jQuery controls can be wrapped so that jQuery events have some communication with the XOJO framework. I wonder how painful wrapping a complex control like a grid would be? The Infragistics people are heavily slanted towards Visual Studio…but tout that their HTML5 controls can be easily added to strait HTML and added to a web page using a simple text editor.

One of the things that I would do with any web app is ‘page’ the data. If you can ever bring back more than a couple of hundred rows of data you should probably do this. Your web app will be really unresponsive if you try and load 10,000 rows of data into a WebListBox. If you do that one simple thing, I think your app will be mostly responsive.

The 200+ simultaneous users is a bit of a concern but you can distribute the load between multiple servers (I have not done this so I am no expert). The question to ask is what will all 200 of them be doing at any given moment. If they’re just viewing/entering data it might not be so bad, but if they’re running complex operations it might be noticeable.

Another perspective to take into consideration outside of the great posts above specifically relating to Xojo is the environment providing your service. I am not sure if your app is hosted by your company’s Datacenter or a hosted DC already. Either way these are things from my experience that has taken down our enterprise Cloud offering unfortunately. Our company does not provide IAAS services for customers just ourselves.

Questions I would ask you:
Are you going to use a front end App load balancing solution such as an F5, Barracuda ADC, or Cisco ACE? Your SQL environment will it contain primary/secondary replication? How about SQL Proxy for redundancy? How about your storage environment? Do you have fast enough disk and/or enough IOPS to handle the heaviest load? Ugh it can go on, but I think you may get my point.

Your design need to encompass not only your code, but also the systems that support/interact with it forming a total solution.

This is the main reason why IAAS services like 1701 Software, Amazon AWS, etc. are best for enterprise apps. These companies do this 100% of the time and not on a part time basis which results in a stellar platform for your App.

The best advice I can give you is don’t make your WE app do anything that would take a long time. Delegate delegate delegate! Xojo gives you a great Shell class. Builder helper console apps to fire off emails, post tweets, generate reports, etc. Using a scheduling system so your processes are all working together to maximize memory/cpu available.

These days the average VPS you can get has way more CPU power than a Xojo app can utilize. So it’s best to farm out things so that your WE is focused solely on keeping the browsers nice and up to date.