Dissertação

{en_GB=Dynamic Invocation} {} EVALUATED

{pt=Hoje em dia, há um grande interesse em invocar remotamente a functionalidade disponibilizada por aplicações de software (e.g., editores de texto, ferramentas Computer-Aided Design (CAD), ferramentas Building Information Modeling (BIM), motores de jogos). Para este fim, é necessário aceder remotamente à funcionalidade disponibilizada pelas aplicações de software a partir das suas Application Programming Interfaces (APIs). Desta forma, os plug-ins destas aplicações têm de implementar um mecanismo que possibilite a Remote Procedure Invocation (RPI). No entanto, as abordagens correntes, utilizando Interface Description Languages (IDLs) para estruturar mensagens de pedido e resposta, e a interface remota de um servidor, afetam negativamente a produtividade durante o desenvolvimento dos plug-ins. Isto porque, quando é preciso adicionar novos procedimentos, a especificação desta informação tem de ser feita manualmente em ficheiros IDL. Por isso, nós introduzimos a Dynamic Invocation (DI), um mecanismo que, baseado nas capacidades de linguagens de programação, usa metadados para invocar remotamente os procedimentos implementados num plug-in, melhorando a produtividade. A DI utiliza técnicas de metaprogramação para abstrair detalhes de uma RPI, por exemplo, a definição da estrutura das mensagens, ordem de serialização, e a forma de invocação de um procedimento. Como o esforço para implementar DI depende das capacidades de metaprogramação das linguages, nós vamos apresentar uma implementação de DI em C++, uma linguagem que possui estas capacidades através de métodos complexos. Vamos demonstrar como as características dos C++ templates ajudam a contornar esta dificuldade para obter uma solução que não afete a produtividade de forma tão acentuada como as outras abordagens., en=Nowadays, there is considerable interest in remotely invoking the functionality provided by software applications (e.g., source code editors, Computer-Aided Design (CAD) tools, Building Information Modeling (BIM) tools, game engines). To this end, it is necessary to remotely access the functionality provided by the software application's Application Programming Interface (API). As such, software application plug-ins need to implement a mechanism which enables Remote Procedure Invocation (RPI). However, most RPI approaches, using Interface Description Languages (IDLs) as a neutral language to structure request and response messages, and specify server remote interfaces, negatively impact the productivity of plug-ins during development. That is because when new procedures are added, this information needs to be manually written in an IDL file. Therefore, we introduce Dynamic Invocation (DI) as the mechanism that could, based on high-level programming language capabilities, use metadata to remotely invoke a plug-in's procedures (API), reducing the overheads of previous approaches, thus, increasing productivity. DI utilizes mainly metaprogramming techniques to abstract most details of a RPI, such as, definition of message's structure, order of serialization and deserialization of procedure parameters, and the invocation of the function that implements the procedure. As the effort to implement DI in a programming languages heavily depends on its metaprogramming capabilities, we will present an implementation of DI in C++, a language which possesses complex means for metaprogramming. We will showcase how one can use the properties of C++ templates to bypass this difficulty, and compare the productivity to approaches which rely on IDL to make RPI. }
{pt=Remote Procedure Invocation, Interface Description Language, Produtividade, Metaprogramação, Dynamic Invocation, Templates, en=Remote Procedure Invocation, Interface Description Language, Productivity, Metaprogramming, Dynamic Invocation, Templates}

Dezembro 2, 2019, 10:30

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

António Paulo Teles de Menezes Correia Leitão

Departamento de Engenharia Informática (DEI)

Professor Auxiliar