Repository logo
 
Publication

Reactive web templates

dc.contributor.advisorCarvalho, Fernando Miguel Gamboa de
dc.contributor.authorFialho, Pedro Filipe Gonçalves
dc.date.accessioned2024-06-15T10:44:12Z
dc.date.available2024-06-15T10:44:12Z
dc.date.issued2023
dc.descriptionDissertação para obtenção do Grau de Mestre em Engenharia Informática e de Computadorespt_PT
dc.description.abstractTé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.abstractNaive 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.versionN/Apt_PT
dc.identifier.citationFIALHO, Pedro Filipe Gonçalves - Reactive web templates. Lisboa: Instituto Superior de Engenharia de Lisboa, 2023. Dissertação de Mestrado.pt_PT
dc.identifier.tid203459601
dc.identifier.urihttp://hdl.handle.net/10400.21/17497
dc.language.isoengpt_PT
dc.peerreviewedyespt_PT
dc.rights.urihttp://creativecommons.org/licenses/by-nc-nd/4.0/pt_PT
dc.subjectTemplates Webpt_PT
dc.subjectRenderização no servidorpt_PT
dc.subjectIO não-bloquentept_PT
dc.subjectAPI assíncronapt_PT
dc.subjectProgramação concorrentept_PT
dc.subjectWeb templates
dc.subjectServer-side rendering
dc.subjectNon-blocking
dc.subjectAsynchronous
dc.subjectConcurrent
dc.titleReactive web templatespt_PT
dc.typemaster thesis
dspace.entity.typePublication
oaire.citation.conferencePlaceLisboa: Instituto Superior de Engenharia de Lisboapt_PT
rcaap.rightsopenAccesspt_PT
rcaap.typemasterThesispt_PT

Files

Original bundle
Now showing 1 - 1 of 1
No Thumbnail Available
Name:
PedroFialho_41418_MEIC.pdf
Size:
1.13 MB
Format:
Adobe Portable Document Format
License bundle
Now showing 1 - 1 of 1
No Thumbnail Available
Name:
license.txt
Size:
1.71 KB
Format:
Item-specific license agreed upon to submission
Description: