Strategies to improve Middle Tier performance

This forum is for programmers who have questions about the source code.
Post Reply
User avatar
Posts: 896
Joined: Tue Jul 31, 2007 7:18 am
Location: Keller, TX

Strategies to improve Middle Tier performance

Post by wjstarck » Thu Jun 23, 2022 11:08 am

What are some strategies I could implement to improve Middle Tier performance?

It's OK right now but could be better. My forms have a *lot of controls which is unavoidable. I notice that OD moved away from listBoxes in favor of grids on some forms (eg., FormPerio). Is this the reason?

Any other helpful hints or suggestions are appreciated.

Bill Starck, DDS
Big Idea Software, LLC
Developer, EASy(Electronic Anesthesia System) for Open Dental

Posts: 91
Joined: Tue Aug 26, 2008 8:45 pm

Re: Strategies to improve Middle Tier performance

Post by afeuer » Mon Jul 11, 2022 12:16 pm

I'm also very interested in what possible solutions there are here. We recently moved from a daisy chain replication model to a cloud hosted VPS with a middle tier server. The database and middle tier are on the same machine. The data gets routed through a VPC and then there is a site to site VPN with very good speeds. We're still getting a couple of seconds of lag between each screen and sometimes longer. The server resources are not maxing out and neither is our bandwidth. Any suggestions?

User avatar
Posts: 1494
Joined: Tue Nov 30, 2010 1:33 pm

Re: Strategies to improve Middle Tier performance

Post by jsalmon » Fri Jul 29, 2022 5:15 pm

Controls have no impact on Middle Tier performance. Methods that have RemotingRole (now known as MiddleTierRole) checks at the top of them are typically methods that run queries against the database which are what cause Middle Tier slowness. You want to minimize the number of times you invoke such methods. Don't make database calls in loops, events that get fired a lot (like OnPaint), etc.
Sometimes Middle Tier can be sped up with something as simple as changing the signature of a method from wanting a list of objects as a parameter to taking in a list of primitives. E.g. a Delete() method that takes in a list of patients would take much longer than invoking a Delete() method that takes in a list of longs even if the guts of the both methods were nearly identical.
The best thing about a boolean is even if you are wrong, you are only off by a bit.

Jason Salmon
Open Dental Software

Post Reply