{"id":2686,"date":"2019-03-25T17:40:45","date_gmt":"2019-03-25T20:40:45","guid":{"rendered":"http:\/\/xexeu.elipse.com.br\/pt\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/"},"modified":"2025-08-06T16:08:07","modified_gmt":"2025-08-06T19:08:07","slug":"guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks","status":"publish","type":"post","link":"https:\/\/kb.elipse.com.br\/en\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/","title":{"rendered":"Guide for building E3 applications operated via Web, in slow or high-latency networks."},"content":{"rendered":"<div style=\"text-align: justify;\">This article discusses some important topics for improving performance in applications with some kind of network restriction (speed, latency, lateness, errors, etc.).<\/p>\n<p><span style=\"font-weight: bold;\">1) Avoid Synchronous Operations <\/span><\/p>\n<p>Try to avoid all kinds of <span style=\"font-weight: bold;\">synchronous <\/span>operations between the Viewer and the Server. Synchronous operations are all those operations that need a response from the other end to proceed with the normal process flow.<\/p>\n<p>For example, consider Viewer scripts that retrieve the value of a server tag through the functions <span style=\"font-style: italic;\">Application.GetObject<\/span> or <span style=\"font-style: italic;\">Application.GetValue<\/span>. Until the value required by the function is finally retrieved (or until there is a timeout error, for example), the process flow will stall.<\/p>\n<p>In such cases, you should move the scripts to another object in the server (internal tags, data objects, data libraries &#8211; XObjects, etc.), and then pass to the Viewer only the final value of process, via links.<\/p>\n<p>Another kind of synchronous operation to be avoided happens in E3Chart, which has two possible ways of updating historical data: methods <span style=\"font-style: italic;\">Queries.UpdateData<\/span> and <span style=\"font-style: italic;\">LoadData<\/span>. <span style=\"font-style: italic;\">LoadData <\/span>method must only be used to print reports, because it is a synchronous operation, which means it will only go to the next line in script after all data from the query are at E3Chart, allowing the report to be printed only if the chart is complete.<\/p>\n<p>To update queries on screen, use <span style=\"font-style: italic;\">UpdateData <\/span>method, because it will cause the chart to receive data as the query is being completed, which will allow the user to better browse between screens.<\/p>\n<p><span style=\"font-weight: bold;\">2) Use Asynchronous Operations <\/span><\/p>\n<p>The <span style=\"font-weight: bold;\">asynchronous <\/span>operations between the Viewer and the Server are those executed only on demand and happening in the background, with no explicit requisition from the application. A classic example is the links between objects. The value of a tag linked to a screen display, for example, will only generate communication the moment there is a change on the tag&#8217;s value in the server. Still, this operation will happen asynchronously, that is, in a separate process and on the background, which will incur neither in late processing for the Viewer nor in issues for the user (that is, screen browsing, value input, etc., will occur independently).<\/p>\n<p><br style=\"font-weight: bold;\" \/><span style=\"font-weight: bold;\">3) Avoid unnecessary traffic <\/span><\/p>\n<p>Even when using links, try to avoid the traffic of unnecessary information. For example: how can you have a display on screen showing the current time? There are many ways to do the same thing, but the most common one is to create a demo tag inside a data folder in the server, set as type<span style=\"font-style: italic;\"> 3-CurrentTime<\/span>, and link it to the display. However, the user will be able to choose the tag&#8217;s update period, in milliseconds. Therefore, a poor setting for this time can generate hundreds of communications per second for the Viewer.<\/p>\n<p>If the Viewer does not necessarily need to view the exact time of the server, you can create this time tag inside the Viewer itself, by right-clicking it over the Viewer object (in the Studio) and selecting the option <span style=\"font-style: italic;\">Insert<\/span>. This way, there will be no traffic from the Viewer to the Server.<\/p>\n<p>Another example is the creation of &#8220;report&#8221;-like screens, which are used to fill the search intervals in databases, to set initial and final date intervals.\u00a0 You can use the screen objects&#8217; <span style=\"font-style: italic;\">Value <\/span>properties directly to store these values, instead of linking tags (which are in the server) to these objects. In the first method, there is no communication with the server, or there will only be when the query is taking place; in the second method, however, each operation with the objects will demand communication with the server.<\/p>\n<p><span style=\"font-weight: bold;\">4) Avoid using images <\/span><\/p>\n<p>Whenever possible, try to use the drawing primitive tools of E3 instead of image files.\u00a0 Image files, depending on the network, will take a long time to be downloaded; however, once they are copied to the Viewer&#8217;s machine, they will require only local process to be opened. In this case, there is also the issue of drawing performance, especially higher for the former objects.<\/p>\n<p>If you really have to use image files though, always prefer compacted formats (.GIF, .JPG) to bitmaps (.BMP).<\/p>\n<p><span style=\"font-weight: bold;\">5) Queries to the Database <\/span><\/p>\n<p>Queries to the database should be restricted whenever possible. Avoid especially unfiltered queries, because as the database grows, data will increase significantly, up to the point where its volume is unpractical for the network&#8217;s infrastructure, for the application, and for the database itself.<\/p>\n<p>Also avoid queries that return the same data multiple times (for example, disable E3Browser&#8217;s automatic updates), and query data only when required by the user.<\/p>\n<p><span style=\"font-weight: bold;\">6) Use Libraries <\/span><\/p>\n<p>Use E3 libraries for objects that occur multiple times in your application. There are many advantages for doing so, from smaller screens for download to better planning and maintenance of the system for the future.<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>This article discusses some important topics for improving performance in applications with some kind of network restriction (speed, latency, lateness, errors, etc.). 1) Avoid Synchronous Operations Try to avoid all&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0},"categories":[768],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Guide for building E3 applications operated via Web, in slow or high-latency networks. - Elipse Knowledgebase<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Guide for building E3 applications operated via Web, in slow or high-latency networks.\" \/>\n<meta property=\"og:description\" content=\"This article discusses some important topics for improving performance in applications with some kind of network restriction (speed, latency, lateness, errors, etc.). 1) Avoid Synchronous Operations Try to avoid all&hellip;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/\" \/>\n<meta property=\"og:site_name\" content=\"Elipse Knowledgebase\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/elipsesoftware\" \/>\n<meta property=\"article:published_time\" content=\"2019-03-25T20:40:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-06T19:08:07+00:00\" \/>\n<meta name=\"author\" content=\"Elipse Software\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Elipse Software\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/\"},\"author\":{\"name\":\"Elipse Software\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87\"},\"headline\":\"Guide for building E3 applications operated via Web, in slow or high-latency networks.\",\"datePublished\":\"2019-03-25T20:40:45+00:00\",\"dateModified\":\"2025-08-06T19:08:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/\"},\"wordCount\":808,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"articleSection\":[\"WebViewer\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/\",\"url\":\"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/\",\"name\":\"[:pt]Guide for building E3 applications operated via Web, in slow or high-latency networks.[:] - Elipse Knowledgebase\",\"isPartOf\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#website\"},\"datePublished\":\"2019-03-25T20:40:45+00:00\",\"dateModified\":\"2025-08-06T19:08:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\/\/kb.elipse.com.br\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guide for building E3 applications operated via Web, in slow or high-latency networks.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kb.elipse.com.br\/#website\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"name\":\"Elipse Knowledgebase\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kb.elipse.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kb.elipse.com.br\/#organization\",\"name\":\"Elipse Software\",\"url\":\"https:\/\/kb.elipse.com.br\/\",\"sameAs\":[\"http:\/\/www.facebook.com\/elipsesoftware\"],\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"contentUrl\":\"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png\",\"width\":161,\"height\":58,\"caption\":\"Elipse Software\"},\"image\":{\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87\",\"name\":\"Elipse Software\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g\",\"caption\":\"Elipse Software\"},\"url\":\"https:\/\/kb.elipse.com.br\/en\/author\/webmasterelipse-com-br\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Guide for building E3 applications operated via Web, in slow or high-latency networks. - Elipse Knowledgebase","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/","og_locale":"en_US","og_type":"article","og_title":"[:pt]Guide for building E3 applications operated via Web, in slow or high-latency networks.[:] - Elipse Knowledgebase","og_description":"This article discusses some important topics for improving performance in applications with some kind of network restriction (speed, latency, lateness, errors, etc.). 1) Avoid Synchronous Operations Try to avoid all&hellip;","og_url":"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/","og_site_name":"Elipse Knowledgebase","article_publisher":"http:\/\/www.facebook.com\/elipsesoftware","article_published_time":"2019-03-25T20:40:45+00:00","article_modified_time":"2025-08-06T19:08:07+00:00","author":"Elipse Software","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Elipse Software","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/#article","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/"},"author":{"name":"Elipse Software","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87"},"headline":"Guide for building E3 applications operated via Web, in slow or high-latency networks.","datePublished":"2019-03-25T20:40:45+00:00","dateModified":"2025-08-06T19:08:07+00:00","mainEntityOfPage":{"@id":"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/"},"wordCount":808,"commentCount":0,"publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"articleSection":["WebViewer"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/","url":"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/","name":"[:pt]Guide for building E3 applications operated via Web, in slow or high-latency networks.[:] - Elipse Knowledgebase","isPartOf":{"@id":"https:\/\/kb.elipse.com.br\/#website"},"datePublished":"2019-03-25T20:40:45+00:00","dateModified":"2025-08-06T19:08:07+00:00","breadcrumb":{"@id":"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kb.elipse.com.br\/guide-for-building-e3-applications-operated-via-web-in-slow-or-highlatency-networks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/kb.elipse.com.br\/en\/"},{"@type":"ListItem","position":2,"name":"Guide for building E3 applications operated via Web, in slow or high-latency networks."}]},{"@type":"WebSite","@id":"https:\/\/kb.elipse.com.br\/#website","url":"https:\/\/kb.elipse.com.br\/","name":"Elipse Knowledgebase","description":"","publisher":{"@id":"https:\/\/kb.elipse.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kb.elipse.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/kb.elipse.com.br\/#organization","name":"Elipse Software","url":"https:\/\/kb.elipse.com.br\/","sameAs":["http:\/\/www.facebook.com\/elipsesoftware"],"logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","contentUrl":"https:\/\/kb.elipse.com.br\/wp-content\/uploads\/2019\/05\/schererelipse-com-br\/logoElipse.png","width":161,"height":58,"caption":"Elipse Software"},"image":{"@id":"https:\/\/kb.elipse.com.br\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/def69ea453ea60b250497b89225a9f87","name":"Elipse Software","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/kb.elipse.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ff1f7ec38f4687b06f6851d97b3cd2d0?s=96&d=mm&r=g","caption":"Elipse Software"},"url":"https:\/\/kb.elipse.com.br\/en\/author\/webmasterelipse-com-br\/"}]}},"_links":{"self":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/2686"}],"collection":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/comments?post=2686"}],"version-history":[{"count":1,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/2686\/revisions"}],"predecessor-version":[{"id":17219,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/posts\/2686\/revisions\/17219"}],"wp:attachment":[{"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/media?parent=2686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/categories?post=2686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kb.elipse.com.br\/en\/wp-json\/wp\/v2\/tags?post=2686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}