{"id":19563,"date":"2022-12-06T09:56:02","date_gmt":"2022-12-06T08:56:02","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/?p=19563"},"modified":"2022-12-06T09:56:06","modified_gmt":"2022-12-06T08:56:06","slug":"developing-industrial-iot-applications-with-blazor","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/","title":{"rendered":"Developing Industrial IoT Applications with Blazor"},"content":{"rendered":"\n<h2 class=\"gb-headline gb-headline-9c4bccec gb-headline-text\">Why is Blazor becoming so popular?<\/h2>\n\n\n\n<p>Web applications have been developed for approximately 30 years, and during this period both hardware and software technologies have undergone drastic changes. <strong>However, the nature of web applications and websites has essentially remained the same<\/strong>: we have a front-end layer exposed to the user and to the world, and a back-end layer, which contains internal data and logic.<\/p>\n\n\n\n<p>This means that building such an application requires at the very least a two-layered technological stack \u2013 with 3+ layer stacks being common to take care of databases, services, containers, etc. In the past, the internal complexity of web applications made many developers specialise in a specific layer of the stack.<strong> Front-end and back-end development is still an important issue in web development<\/strong>, and the promise of full-stack developers seems to be difficult to accomplish if we (as users or managers) also want all-round proficiency.<\/p>\n\n\n\n<p>Unsurprisingly, independent technologies evolved for both front-end and back-end development, the archetypical example being the divide <strong>between <a href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/javascript-ultimate-guide\/\" target=\"_blank\" aria-label=\"Javascript  (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Javascript <\/a>and Java, which only have in common their C-like syntax<\/strong>. Later on, frameworks appeared on the market, but they were mostly containers for other technologies.<\/p>\n\n\n\n<p>The first actual improvement came with Node.js, which allowed the use of a single language both for front and back-end development, as well as for storage (e.g. in the MEAN stack).<\/p>\n\n\n\n<p>A similar breakthrough occurred with Blazor, which provides tools to fully develop and deploy web applications through a <strong>.NET interface that can also be installed on Linux and Mac OS<\/strong>. The idea is to let the developer use C# for each application-related need and to use XML and JSON configuration files.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"529\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1058408164-1024x529.jpg\" alt=\"Blazor allows to develop Industry-Grade IoT solutions.\" class=\"wp-image-19575\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1058408164-1024x529.jpg 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1058408164-300x155.jpg 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1058408164-768x397.jpg 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1058408164.jpg 1425w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Blazor enables industry-grade IoT solutions.<\/figcaption><\/figure>\n\n\n\n<p>Thus, <strong>Blazor lets the C# programmer use their mother tongue both for back and front-end<\/strong> development, and to fully leverage .NET libraries and the .NET underlying environment to build client applications. Moreover, and since it\u2019s interoperable with Javascript, Blazor can be integrated with existing front-end libraries if needed, calling them from C#.<\/p>\n\n\n\n<p>Razor-specific configuration files are used to describe components, which are UI widgets that can be used inside the client and that can interact with back-end logic. Blazor allows writing applications on the server to build UI components, and facilitates interaction in real-time via SignalR, an open-source library whose API allows to invoke functions on the client via server code (with .NET Core running on the server side).<\/p>\n\n\n\n<p>All in all, and due to these features, Blazor is convenient when a web application shares one or more of the following features:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Apps with high-frequency updates from the server.<\/li>\n\n\n\n<li>Apps that require notifications.<\/li>\n\n\n\n<li>Dashboards and monitoring apps (remember this item, as it\u2019s the use case of IoT HMIs!).<\/li>\n\n\n\n<li>Collaborative apps.<\/li>\n<\/ul>\n\n\n\n<p>In fact, the SignalR feature underlying Blazor makes it push content instantly on the clients and provides full support for real-time applications.<\/p>\n\n\n\n<p>Moreover, Blazor provides a \u201chybrid\u201d feature, which can be used with a mix of desktop and mobile native client frameworks. In other words, <strong>Hybrid Blazor app is a native client app that avoids the use of WebAssembly to translate and execute served code inside a browser<\/strong>, and instead renders the UI in an embedded Web View control via an interop channel. To get such a result, Blazor can interact with different technologies, such as .NET Multi-platform App UI, WPF (perhaps the most well known) and Windows Forms.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-f4679227 gb-headline-text\">Using Blazor for industry-grade IoT solutions<\/h2>\n\n\n\n<p>The features we just mentioned make Blazor suitable to provide support to IoT solutions. First of all, Blazor\u2019s Hybrid feature allows running Razor components natively on the client device. A component is any element that contributes to a web page application and is located to some URI. A single component provides a UI and the corresponding logic needed to describe its dynamic behavior. And as the word \u201ccomponent\u201d suggests, it can be used to compose complex UIs (actually, components are a feature of Razor, a markup syntax for embedding .NET-based code into webpages, with the familiar .cshtml extension).<\/p>\n\n\n\n<p>In other words, within Blazor Hybrid, client UI components don\u2019t run inside a browser, but instead they are rendered into a native client framework. For example, one can use .NET MAUI, the cross-platform that sits on top of the .NET Base Class Library across devices using different operating systems, such as Android, iOS, Mac OS and, of course, Windows. <strong>With MAUI, one can render Blazor components into Web View via the BlazorWebView control<\/strong>. This control also works for WPF and Windows Forms, popular frameworks for building apps.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"751\" height=\"418\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/Hybrid-net-blazor.jpg\" alt=\"\" class=\"wp-image-19590\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/Hybrid-net-blazor.jpg 751w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/Hybrid-net-blazor-300x167.jpg 300w\" sizes=\"auto, (max-width: 751px) 100vw, 751px\" \/><figcaption class=\"wp-element-caption\">Hybrid apps with .NET and Blazor.<\/figcaption><\/figure>\n\n\n\n<p>The main outcome of this architecture is that applications built with Blazor Hybrid are native apps that have complete access to all device features through the .NET API layer. Programming with them means having full access to the device&#8217;s capabilities.<\/p>\n\n\n\n<p>For example, this can be exploited to integrate Blazor with General-Purpose I\/O (GPIO) and Windows compliant controllers.<strong> These can interact via Blazor apps, as they are usually able to use functions in peripherals, such as interrupts, signaling, etc. <\/strong>.NET classes used to program drivers can be used to implement IoT applications, e.g. GpioController.<\/p>\n\n\n\n<p>In general, .NET IoT libraries provide the means to access and use devices attached to Common IoT boards (such as the Raspberry Pi) via C#, via Blazor or through an app. The System.Device.Gpio package supports not only GPIO, but also serial ports and other interaction protocols with low-level hardware pins. <strong>The Iot.Device.Bindings package provides device bindings to several kinds of devices that are commonly used in IoT, such as displays, GPIO expanders, touch sensors, LED drivers, USB, accelerometers, etc<\/strong>. The <a href=\"https:\/\/learn.microsoft.com\/en-us\/dotnet\/iot\/\" class=\"ek-link\">Microsoft learn page<\/a> provides examples and further explanations on this topic.<\/p>\n\n\n\n<p>Another possible and equally interesting integration involves Azure IoT. This is a cloud solution that enables communication with IoT applications, and hence with the devices behind it. Azure IoT provides a reliable and safe communication channel with IoT devices: the cloud-to-device message. The following layers are needed to manage an IoT system with Azure IoT and Blazor:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An IoT Hub with message routing enabled.<\/li>\n\n\n\n<li>Azure Function with IoT Hub\/EventHub trigger.<\/li>\n\n\n\n<li>Server-side Blazor web application with API controller integration.<\/li>\n<\/ul>\n\n\n\n<p>Using Blazor simplifies the handling of business logic and makes it easier to focus on the configuration side, to let those layers talk to each other (for example, to define and configure Azure resources, including the IoT type, to set up the routing, etc.). Therefore, there are several ways in which a Blazor web application can be used inside an IoT infrastructure, based on equipment and needs.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-d7649961 gb-headline-text\">Case study: iTools HMI by SACMI<\/h2>\n\n\n\n<p>HMI stands for Human-Machine Interface and refers to applications, usually in the form of dashboards, that are used to connect a human operator with a set of devices. <strong>Although this generic definition can refer to standard GUI uses, it\u2019s mainly used to describe a dashboard specifically built to monitor hardware devices<\/strong> or any kind of industrial asset connected to digital sensors that can be accessed by the dashboard.<\/p>\n\n\n\n<p>To achieve this, <a href=\"https:\/\/www.iprel.it\/en-US\/iTools\" target=\"_blank\" aria-label=\"SACMI iTools HMI (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">SACMI iTools HMI<\/a> provides a complete web application based on the Blazor technology to <strong>build up the user interface<\/strong> and to exploit the features we described above, especially the possibility to connect to devices, get and set information to and from such devices, and more.<\/p>\n\n\n\n<p>Since it\u2019s built on a platform-free technology such as Blazor, <strong>iTools HMI can run on different operating systems<\/strong> <strong>and, of course, inside a docker or from the cloud<\/strong>. The key point is that iTools HMI users need to focus on their business and on their equipment, so the tool has to support them and not to introduce new complexities once it\u2019s deployed. Since the application features built-in drivers for more than 50 devices, it can be configured with no dependencies on other IT assets.<\/p>\n\n\n\n<figure class=\"wp-block-image alignfull size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"660\" height=\"350\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/sacmi1.jpg\" alt=\"\" class=\"wp-image-19593\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/sacmi1.jpg 660w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/sacmi1-300x159.jpg 300w\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" \/><figcaption class=\"wp-element-caption\">SACMI iTools HMI<\/figcaption><\/figure>\n\n\n\n<p>Moreover, since it exposes a web interface to its users, iTools HMI communicates with the user via widgets, animations, etc., making the user experience very easy and intuitive and letting users quickly obtain the monitoring information they require. <strong>Of course, being a web application, it can be accessed with different grants<\/strong>, whose administration can be done inside the dashboard itself.<\/p>\n\n\n\n<p>But the actual strength of the product is displayed when creating new projects. Through them, it\u2019s possible to define the widgets and controls needed to monitor and <strong>manage IoT devices in a comprehensive way<\/strong>, and always tailored to the user\u2019s operational needs. For example, the following screenshot gives an idea of the IDE that is provided to the program, via Blazor, a complete dashboard fulfilling our needs:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"472\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/Sacmi2-1024x472.jpg\" alt=\"Blazor, Sacmi, IoT\" class=\"wp-image-19594\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/Sacmi2-1024x472.jpg 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/Sacmi2-300x138.jpg 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/Sacmi2-768x354.jpg 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/Sacmi2.jpg 1203w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The choice of components and controls can be made between the <strong>built-in drivers<\/strong>. Alternatively, and since it is an open framework application, iTools HMI can be easily extended and configured to be tailored around specific use cases and needs.<\/p>\n\n\n\n<h2 class=\"gb-headline gb-headline-eefa8d66 gb-headline-text\">Conclusion: Why Blazor will be even more important in the future<\/h2>\n\n\n\n<p>It is usually said that we live in a connected world. This is true not only because we can communicate with each other, <strong>but because we can communicate with devices<\/strong> and devices can communicate between themselves.<\/p>\n\n\n\n<p>While standard web frameworks account just for the communication between the user and a remote application and database, <strong>there\u2019s an increasingly pressing need for a web framework that can connect a user with its client devices and also to the type of IoT infrastructure needed for business purposes<\/strong>. As we have seen, Blazor can certainly fulfil these needs and provide the foundation to build IoT-connected web applications, as shown in the iTools HMI case study. The latter is just one of the products that SACMI has released to the market to facilitate the life of people involved in the industries and processes where HMI play an important role.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/www.google.com\/url?q=https:\/\/careers.sacmi.com\/it-it?utm_source%3Dsacmisite%26utm_medium%3Dtopmenu%26utm_term%3Dit&amp;sa=D&amp;source=docs&amp;ust=1670262838074543&amp;usg=AOvVaw1sJj0e4QwtBhRDxRBXT6M_\"><img loading=\"lazy\" decoding=\"async\" width=\"976\" height=\"250\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/Banner_Mag_Sacmi.png\" alt=\"\" class=\"wp-image-19583\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/Banner_Mag_Sacmi.png 976w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/Banner_Mag_Sacmi-300x77.png 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/Banner_Mag_Sacmi-768x197.png 768w\" sizes=\"auto, (max-width: 976px) 100vw, 976px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Why is Blazor becoming so popular? Web applications have been developed for approximately 30 years, and during this period both hardware and software technologies have undergone drastic changes. However, the nature of web applications and websites has essentially remained the same: we have a front-end layer exposed to the user and to the world, and&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/\">Read more<\/a><\/p>\n","protected":false},"author":5,"featured_media":19574,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":7,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[9883],"tags":[9978],"collections":[],"class_list":{"0":"post-19563","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-iot","8":"tag-blazor","9":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Developing Industrial IoT Applications with Blazor - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"Combining machine data with Blazor, an open-source framework launched by Microsoft, results in apps with a high degree of modularity.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Developing Industrial IoT Applications with Blazor\" \/>\n<meta property=\"og:description\" content=\"Combining machine data with Blazor, an open-source framework launched by Microsoft, results in apps with a high degree of modularity.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-06T08:56:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-06T08:56:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1254\" \/>\n\t<meta property=\"og:image:height\" content=\"836\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Paolo Caressa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@www_caressa_it\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Paolo Caressa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/iot\\\/developing-industrial-iot-applications-with-blazor\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/iot\\\/developing-industrial-iot-applications-with-blazor\\\/\"},\"author\":{\"name\":\"Paolo Caressa\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/11b502309bc50a6923aafd79c6259f85\"},\"headline\":\"Developing Industrial IoT Applications with Blazor\",\"datePublished\":\"2022-12-06T08:56:02+00:00\",\"dateModified\":\"2022-12-06T08:56:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/iot\\\/developing-industrial-iot-applications-with-blazor\\\/\"},\"wordCount\":1635,\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/iot\\\/developing-industrial-iot-applications-with-blazor\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/iStock-1145886786.jpg\",\"keywords\":[\"Blazor\"],\"articleSection\":[\"IoT\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/iot\\\/developing-industrial-iot-applications-with-blazor\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/iot\\\/developing-industrial-iot-applications-with-blazor\\\/\",\"name\":\"Developing Industrial IoT Applications with Blazor - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/iot\\\/developing-industrial-iot-applications-with-blazor\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/iot\\\/developing-industrial-iot-applications-with-blazor\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/iStock-1145886786.jpg\",\"datePublished\":\"2022-12-06T08:56:02+00:00\",\"dateModified\":\"2022-12-06T08:56:06+00:00\",\"description\":\"Combining machine data with Blazor, an open-source framework launched by Microsoft, results in apps with a high degree of modularity.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/iot\\\/developing-industrial-iot-applications-with-blazor\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/iot\\\/developing-industrial-iot-applications-with-blazor\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/iot\\\/developing-industrial-iot-applications-with-blazor\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/iStock-1145886786.jpg\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/iStock-1145886786.jpg\",\"width\":1254,\"height\":836,\"caption\":\"Hands holding tablet on blurred automation machine as background\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/iot\\\/developing-industrial-iot-applications-with-blazor\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Backend\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/backend\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"IoT\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/backend\\\/iot\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Developing Industrial IoT Applications with Blazor\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Codemotion.Italy\\\/\",\"https:\\\/\\\/x.com\\\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/11b502309bc50a6923aafd79c6259f85\",\"name\":\"Paolo Caressa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b55795d60b54b1cc8b605f9967dbbe68b3fcf826249490cecafd797ee4f18d4c?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b55795d60b54b1cc8b605f9967dbbe68b3fcf826249490cecafd797ee4f18d4c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b55795d60b54b1cc8b605f9967dbbe68b3fcf826249490cecafd797ee4f18d4c?s=96&d=mm&r=g\",\"caption\":\"Paolo Caressa\"},\"description\":\"I spent the first part of my life enjoying studies up to a math BS+MS and PhD. Next I worked both as math researcher (differential geometry) and as IT consultant (R&amp;D, feasibility studies, business analysis). Eventually I left academia and worked some years in finance (maths &amp; implementation of derivative pricings and risk management models), then again in IT (as technical consultant and writer, project manager, program manager). In the meanwhile I write books and articles on maths and computer science and I give lectures on workshops and conferences (applied maths, AI, etc.). I also serve as adjunct professor in the Engineering Department of \\\"Sapienza\\\" University of Rome (calculus and CS classes).\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/paolocaressa\\\/\",\"https:\\\/\\\/x.com\\\/www_caressa_it\"],\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/author\\\/paolo-caressa\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Developing Industrial IoT Applications with Blazor - Codemotion Magazine","description":"Combining machine data with Blazor, an open-source framework launched by Microsoft, results in apps with a high degree of modularity.","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:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/","og_locale":"en_US","og_type":"article","og_title":"Developing Industrial IoT Applications with Blazor","og_description":"Combining machine data with Blazor, an open-source framework launched by Microsoft, results in apps with a high degree of modularity.","og_url":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2022-12-06T08:56:02+00:00","article_modified_time":"2022-12-06T08:56:06+00:00","og_image":[{"width":1254,"height":836,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786.jpg","type":"image\/jpeg"}],"author":"Paolo Caressa","twitter_card":"summary_large_image","twitter_creator":"@www_caressa_it","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Paolo Caressa","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/"},"author":{"name":"Paolo Caressa","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/11b502309bc50a6923aafd79c6259f85"},"headline":"Developing Industrial IoT Applications with Blazor","datePublished":"2022-12-06T08:56:02+00:00","dateModified":"2022-12-06T08:56:06+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/"},"wordCount":1635,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786.jpg","keywords":["Blazor"],"articleSection":["IoT"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/","url":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/","name":"Developing Industrial IoT Applications with Blazor - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786.jpg","datePublished":"2022-12-06T08:56:02+00:00","dateModified":"2022-12-06T08:56:06+00:00","description":"Combining machine data with Blazor, an open-source framework launched by Microsoft, results in apps with a high degree of modularity.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786.jpg","width":1254,"height":836,"caption":"Hands holding tablet on blurred automation machine as background"},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/iot\/developing-industrial-iot-applications-with-blazor\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Backend","item":"https:\/\/www.codemotion.com\/magazine\/backend\/"},{"@type":"ListItem","position":3,"name":"IoT","item":"https:\/\/www.codemotion.com\/magazine\/backend\/iot\/"},{"@type":"ListItem","position":4,"name":"Developing Industrial IoT Applications with Blazor"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/11b502309bc50a6923aafd79c6259f85","name":"Paolo Caressa","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/b55795d60b54b1cc8b605f9967dbbe68b3fcf826249490cecafd797ee4f18d4c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b55795d60b54b1cc8b605f9967dbbe68b3fcf826249490cecafd797ee4f18d4c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b55795d60b54b1cc8b605f9967dbbe68b3fcf826249490cecafd797ee4f18d4c?s=96&d=mm&r=g","caption":"Paolo Caressa"},"description":"I spent the first part of my life enjoying studies up to a math BS+MS and PhD. Next I worked both as math researcher (differential geometry) and as IT consultant (R&amp;D, feasibility studies, business analysis). Eventually I left academia and worked some years in finance (maths &amp; implementation of derivative pricings and risk management models), then again in IT (as technical consultant and writer, project manager, program manager). In the meanwhile I write books and articles on maths and computer science and I give lectures on workshops and conferences (applied maths, AI, etc.). I also serve as adjunct professor in the Engineering Department of \"Sapienza\" University of Rome (calculus and CS classes).","sameAs":["https:\/\/www.linkedin.com\/in\/paolocaressa\/","https:\/\/x.com\/www_caressa_it"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/paolo-caressa\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786-600x400.jpg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786-600x600.jpg","author_info":{"display_name":"Paolo Caressa","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/paolo-caressa\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786.jpg",1254,836,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786-150x150.jpg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786-300x200.jpg",300,200,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786-768x512.jpg",768,512,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786-1024x683.jpg",1024,683,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786.jpg",1254,836,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786.jpg",1254,836,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786.jpg",100,67,false],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786-180x128.jpg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786-896x504.jpg",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786-400x225.jpg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786-600x400.jpg",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2022\/12\/iStock-1145886786-600x600.jpg",600,600,true]},"uagb_author_info":{"display_name":"Paolo Caressa","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/paolo-caressa\/"},"uagb_comment_info":0,"uagb_excerpt":"Why is Blazor becoming so popular? Web applications have been developed for approximately 30 years, and during this period both hardware and software technologies have undergone drastic changes. However, the nature of web applications and websites has essentially remained the same: we have a front-end layer exposed to the user and to the world, and&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/19563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=19563"}],"version-history":[{"count":15,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/19563\/revisions"}],"predecessor-version":[{"id":19596,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/19563\/revisions\/19596"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/19574"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=19563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=19563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=19563"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=19563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}