123
Senior Member
Good to know; I was going to ask you if it scales well.
AutomationBrowser has two important architectural advantages over MiniBrowser:
Plugins
Each Premise object's appearance is defined separately, as a Plugin, and not within AutomationBrowser's code. Being independent, Changes can be made in one without affecting the other. I tried to mimic this concept in MiniBrowser, and it works more or less, but is not as modular as AutomationBrowser's Plugins. For example, a custom object must call the mbRenderHeader and mdRenderFooter globalscripts otherwise the resulting page is incomplete. This is housekeeping stuff that should not be handled by a custom object. The other thing that MiniBrowser lacks is the ability to render all standard Premise objects. It renders the 'usual suspects' and skips the rest. I added an enumeration to 'register' the objects it handles in an attempt to prevent overlap when MiniBrowser is enhanced by multiple developers but, again, not as flexible and slick as Plugins.
SysConnector
AutomationBrowser does not have to continuously poll the server to get updated status. SysConnector, albeit limited to use with IE, is a clever technique to deliver status updates only when status changes. The backend has far fewer requests to handle when the frontend is using SysConnector. This is more important that one may think. All Modules execute in a single thread. When servicing the frontend via AutomationBrowser or MiniBrowser, no other Module is being executed. Judicious use of "on error resume next" helps prevent buggy code from causing the interpreter to pause and suspend all Module execution. Similarly, a MiniBrowser that is busy as heck servicing polling requests, will cause other Modules to 'wait their turn' and seem slow. Premise is quite fast on modern PC's but it important to understand its limitations. There is no profiler available to give visibility into what is consuming Premise's time so that's why I like to test my apps on a slow PC. If it makes it suffer then I know I need to optimize it. I think polling a single object isn't going to cause problems but you should be aware of the potential problems it can cause if, for example, a UI page attempts to display and poll all lights in a home. The existing Status page, something I introduced to both AutomationBrowser and MiniBrowser, comes darn close to this scenario except it currently does not poll the objects in MiniBrowser (Sysconnector takes care of efficiently updating the status in AutomationBrowser).
AutomationBrowser has two important architectural advantages over MiniBrowser:
Plugins
Each Premise object's appearance is defined separately, as a Plugin, and not within AutomationBrowser's code. Being independent, Changes can be made in one without affecting the other. I tried to mimic this concept in MiniBrowser, and it works more or less, but is not as modular as AutomationBrowser's Plugins. For example, a custom object must call the mbRenderHeader and mdRenderFooter globalscripts otherwise the resulting page is incomplete. This is housekeeping stuff that should not be handled by a custom object. The other thing that MiniBrowser lacks is the ability to render all standard Premise objects. It renders the 'usual suspects' and skips the rest. I added an enumeration to 'register' the objects it handles in an attempt to prevent overlap when MiniBrowser is enhanced by multiple developers but, again, not as flexible and slick as Plugins.
SysConnector
AutomationBrowser does not have to continuously poll the server to get updated status. SysConnector, albeit limited to use with IE, is a clever technique to deliver status updates only when status changes. The backend has far fewer requests to handle when the frontend is using SysConnector. This is more important that one may think. All Modules execute in a single thread. When servicing the frontend via AutomationBrowser or MiniBrowser, no other Module is being executed. Judicious use of "on error resume next" helps prevent buggy code from causing the interpreter to pause and suspend all Module execution. Similarly, a MiniBrowser that is busy as heck servicing polling requests, will cause other Modules to 'wait their turn' and seem slow. Premise is quite fast on modern PC's but it important to understand its limitations. There is no profiler available to give visibility into what is consuming Premise's time so that's why I like to test my apps on a slow PC. If it makes it suffer then I know I need to optimize it. I think polling a single object isn't going to cause problems but you should be aware of the potential problems it can cause if, for example, a UI page attempts to display and poll all lights in a home. The existing Status page, something I introduced to both AutomationBrowser and MiniBrowser, comes darn close to this scenario except it currently does not poll the objects in MiniBrowser (Sysconnector takes care of efficiently updating the status in AutomationBrowser).