{"title":"EmintWeb: Creation of embedded web applications in C++ for specific systems","authors":"Juan Domingo, Jose Ignacio Panach, Esther Dura","doi":"10.1016/j.softx.2024.101809","DOIUrl":null,"url":null,"abstract":"<div><p>Most contemporary web applications are primarily coded in interpreted languages (JavaScript, PHP, Python...) and are initiated by the web server. This requires solving the persistence issue: HTTP/HTTPS is a stateless protocol but user identity and computational state across consecutive requests must be preserved, typically using cookies and/or backend database servers.</p><p>This work develops embedded web applications: single compiled executable programs that encapsulate a web server. These applications are coded in a compiled language (in our case, C++). They initiate a separate thread for each session to establish optionally encrypted communication with the client and the HTML5 code for each page is dynamically generated at runtime.</p><p>This approach offers several advantages: it enhances security on both the server and client sides. On the server side there is only one file on disk (the executable) that can be altered. On the client side cookies are not needed and client-side code execution can be eliminated. Also, the use of compiled code enhances speed and faster application performance compared to interpreted languages.</p><p>This methodology is realized through a framework named EmintWeb (Embedded Interactive Web Development) which comprises a C++ code generator to create the HTML5 pages at runtime and link them with the business logic code of the application. Subsequently, it generates the executable that serves the application. An example of the same application developed using EmintWeb and PHP is provided to evaluate the speed and robustness of both implementations. This approach is not a replacement for current web frameworks but a software system to build web applications using C++ for systems that require the specific characteristics mentioned before.</p></div>","PeriodicalId":21905,"journal":{"name":"SoftwareX","volume":null,"pages":null},"PeriodicalIF":2.4000,"publicationDate":"2024-07-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://www.sciencedirect.com/science/article/pii/S2352711024001808/pdfft?md5=8ad0f1465c44b085b9a0f38d9c34169f&pid=1-s2.0-S2352711024001808-main.pdf","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"SoftwareX","FirstCategoryId":"94","ListUrlMain":"https://www.sciencedirect.com/science/article/pii/S2352711024001808","RegionNum":4,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q2","JCRName":"COMPUTER SCIENCE, SOFTWARE ENGINEERING","Score":null,"Total":0}
引用次数: 0
Abstract
Most contemporary web applications are primarily coded in interpreted languages (JavaScript, PHP, Python...) and are initiated by the web server. This requires solving the persistence issue: HTTP/HTTPS is a stateless protocol but user identity and computational state across consecutive requests must be preserved, typically using cookies and/or backend database servers.
This work develops embedded web applications: single compiled executable programs that encapsulate a web server. These applications are coded in a compiled language (in our case, C++). They initiate a separate thread for each session to establish optionally encrypted communication with the client and the HTML5 code for each page is dynamically generated at runtime.
This approach offers several advantages: it enhances security on both the server and client sides. On the server side there is only one file on disk (the executable) that can be altered. On the client side cookies are not needed and client-side code execution can be eliminated. Also, the use of compiled code enhances speed and faster application performance compared to interpreted languages.
This methodology is realized through a framework named EmintWeb (Embedded Interactive Web Development) which comprises a C++ code generator to create the HTML5 pages at runtime and link them with the business logic code of the application. Subsequently, it generates the executable that serves the application. An example of the same application developed using EmintWeb and PHP is provided to evaluate the speed and robustness of both implementations. This approach is not a replacement for current web frameworks but a software system to build web applications using C++ for systems that require the specific characteristics mentioned before.
期刊介绍:
SoftwareX aims to acknowledge the impact of software on today''s research practice, and on new scientific discoveries in almost all research domains. SoftwareX also aims to stress the importance of the software developers who are, in part, responsible for this impact. To this end, SoftwareX aims to support publication of research software in such a way that: The software is given a stamp of scientific relevance, and provided with a peer-reviewed recognition of scientific impact; The software developers are given the credits they deserve; The software is citable, allowing traditional metrics of scientific excellence to apply; The academic career paths of software developers are supported rather than hindered; The software is publicly available for inspection, validation, and re-use. Above all, SoftwareX aims to inform researchers about software applications, tools and libraries with a (proven) potential to impact the process of scientific discovery in various domains. The journal is multidisciplinary and accepts submissions from within and across subject domains such as those represented within the broad thematic areas below: Mathematical and Physical Sciences; Environmental Sciences; Medical and Biological Sciences; Humanities, Arts and Social Sciences. Originating from these broad thematic areas, the journal also welcomes submissions of software that works in cross cutting thematic areas, such as citizen science, cybersecurity, digital economy, energy, global resource stewardship, health and wellbeing, etcetera. SoftwareX specifically aims to accept submissions representing domain-independent software that may impact more than one research domain.