Dissertação de mestrado integrado em Engenharia de ComunicaçõesExistem atualmente diversas Application Programming Interfaces (APIs)
que ajudam na programação de aplicações distribuídas. Na maior parte dos
casos, estas utilizam de forma in exível um único tipo de protocolo aplicacional
e interface, cando dependente dos protocolos de transporte já existentes
e do sistema operativo. Para o programador, a stack de protocolos e o tipo
de interface têm que ser decididos explicitamente antes do estabelecimento
da comunicação entre os processos.
Algumas APIs facilitam a programação ocultando alguns aspetos espec
í cos dos mecanismos e protocolos de comunicação utilizados, disponibilizando
uma interface mais homogeneizada. No entanto, a programação continua
a não ser totalmente transparente e independente dos protocolos de
comunicação utilizados, dos sistemas operativos e da localização relativa dos
processos comunicantes. Além disso, estas APIs não tomam decisões sobre
o mecanismo de comunicação a utilizar quando existem várias alternativas
possíveis, sendo esta decisão da responsabilidade do programador.
Num contexto de implementação de simuladores distribuídos e modulares
para protocolos de redes de computadores e sistemas de comunicação,
seria vantajoso poder-se utilizar uma API para comunicação dos processos
de simulação que disponibilizasse apenas um único interface de programação
e que decidisse de forma transparente o mecanismo ou protocolo comunicacional
mais e ciente, tendo em conta a localização relativa dos processos.
Nesta dissertação são abordadas as soluções semelhantes já existentes e
é estudada uma API que pretende preencher estas lacunas. A arquitetura
desta API será depois apresentada, assim como uma solução com base na
investigação realizada. Por m, os resultados dos testes serão analizados e a
conclusão apresentada.
Esta dissertação foi desenvolvida no contexto do projeto RoutUM, um
simulador de redes de computadores atualmente a ser desenvolvido pela Universidade
do Minho.There are several Application Programming Interfaces (APIs) available to
simplify the development of distributed applications. In most cases, they invariably
use one type of application protocol and interface, being dependent
of the existing transport protocols and operating system. To the programmer,
the protocol stack and the type of interface must be explicitly chosen
before initiating communication between processes.
Some APIs simplify programming by hiding some speci c aspects about
the communication protocols and mechanisms, revealing a more homogenized
interface. However, the programming is still not completely transparent
and independent from the communication protocols, the operating
system and the relative location of the communicating processes. Also, they
are unable to decide which communication mechanism to be used when there
are several available possibilities, leaving that responsibility to the programmer.
On the context of implementation of distributed and modular simulators
for network protocols and communication systems, it would be desirable to
be able to use an API that would allow communication between the processes
while providing only one programming interface. It would then transparently
decide the most e cient mechanism or communication protocol from the relative
location of the communicating processes.
This dissertation will present and discuss the currently available solutions
and the problems associated with the development of an API which
attempts to ll the missing features indicated above. The API's architecture
will then be shown and developed into a solution based on the results from
the investigation. In the end, this solution will be tested and the nal results
will be presented.
This dissertation was developed in the context of the RoutUM project,
a network simulator being currently developed in the University of Minho