Publication
Reactive web templates
dc.contributor.advisor | Carvalho, Fernando Miguel Gamboa de | |
dc.contributor.author | Fialho, Pedro Filipe Gonçalves | |
dc.date.accessioned | 2024-06-15T10:44:12Z | |
dc.date.available | 2024-06-15T10:44:12Z | |
dc.date.issued | 2023 | |
dc.description | Dissertação para obtenção do Grau de Mestre em Engenharia Informática e de Computadores | pt_PT |
dc.description.abstract | Técnicas de renderização otimistas no lado do servidor (SSR) requerem uma thread dedicada por pedido HTTP, limitando assim o número de pedidos concurrentes às threads do servidor disponíveis. Além disso, essa abordagem mostra-se impraticável para servidores modernos com um baixo número de threads, como WebFlux, VertX e Express Node.js. Para alcançar renderização progressiva, modelos de dados assíncronos fornecidos por APIs não bloqueantes devem ser utilizados. No entanto, este método pode introduzir uma sobreposição indesejável entre o processamento de visualização do modelo e o acesso a dados, potencialmente resultando em documentos HTML malformados. Alguns template engines oferecem remédios parciais tirando partido de dialetos específicos, mas enfrentam duas limitações. Em primeiro lugar, a sua compatibilidade é restrita a tipos específicos de APIs assíncronas, como a API reativa Publisher. Em segundo lugar, geralmente suportam apenas um modelo de dados assíncrono. Nesta pesquisa, propomos uma abordagem alternativa de templates web que abrange qualquer API assíncrona (por exemplo, Publisher, promessas, funções de suspensão, flux, etc.) e permite várias fontes de dados assíncronos. A Nossa abordagem é implementada usando como base o HtmlFlow, uma DSL (Linguagem de Domínio Específica) baseada em Java para escrever HTML usando forte tipificação de tipos. Foi avaliado em servidores reativos de última geração, especificamente o WebFlux, e comparamos com idiomas populares de templating, como Thymeleaf e KotlinX.html. Nossa proposta supera as limitações das abordagens existentes. | pt_PT |
dc.description.abstract | Naive server-side rendering (SSR) techniques require a dedicated server thread per HTTP request, thereby limiting the number of concurrent requests to the available server threads. Furthermore, this approach proves impractical for modern low-thread servers likeWebFlux, VertX, and Express Node.js. To achieve progressive rendering, asynchronous data models provided by non-blocking APIs must be utilized. Nevertheless, this method can introduce undesirable interleaving between template view processing and data access, potentially resulting in malformed HTML documents. Some template engines offer partial remedies through specific templating dialects, but they encounter two limitations. Firstly, their compatibility is confined to specific types of asynchronous APIs, such as the reactive stream Publisher API. Secondly, they typically support only a single asynchronous data model at a time. In this research, we propose an alternative web templating approach that embraces any asynchronous API (e.g., Publisher, promises, suspend functions, flow, etc.) and allows for multiple asynchronous data sources. Our approach is implemented on top of HtmlFlow, a Javabased DSL for writing type-safe HTML. We evaluated against state-of-the-art reactive servers, specifically WebFlux, and compared it with popular templating idioms like Thymeleaf and KotlinX.html. Our proposal effectively overcomes the limitations of existing approaches. | |
dc.description.version | N/A | pt_PT |
dc.identifier.citation | FIALHO, Pedro Filipe Gonçalves - Reactive web templates. Lisboa: Instituto Superior de Engenharia de Lisboa, 2023. Dissertação de Mestrado. | pt_PT |
dc.identifier.tid | 203459601 | |
dc.identifier.uri | http://hdl.handle.net/10400.21/17497 | |
dc.language.iso | eng | pt_PT |
dc.peerreviewed | yes | pt_PT |
dc.rights.uri | http://creativecommons.org/licenses/by-nc-nd/4.0/ | pt_PT |
dc.subject | Templates Web | pt_PT |
dc.subject | Renderização no servidor | pt_PT |
dc.subject | IO não-bloquente | pt_PT |
dc.subject | API assíncrona | pt_PT |
dc.subject | Programação concorrente | pt_PT |
dc.subject | Web templates | |
dc.subject | Server-side rendering | |
dc.subject | Non-blocking | |
dc.subject | Asynchronous | |
dc.subject | Concurrent | |
dc.title | Reactive web templates | pt_PT |
dc.type | master thesis | |
dspace.entity.type | Publication | |
oaire.citation.conferencePlace | Lisboa: Instituto Superior de Engenharia de Lisboa | pt_PT |
rcaap.rights | openAccess | pt_PT |
rcaap.type | masterThesis | pt_PT |