Note: This is an individual assignment
In this assignment, a distributed system using Remote Procedure Calls (RPC) will be created. On Java, RPC is handled commonly through Java remote method invocation (RMI). For web applications, Representational state transfer (REST) is the most commonly linked term. In essence, RPC allows for a client to make a request for the server to run some functionalities based on given requirements. In this task, an RPC client-server system is created. It's first made to function between N clients and a single server. For 8-10 points on the assignment, the amount of servers linked has to be increased.
For this task, you have to create a client and a server that communicate through Remote Procedure Calls. The system's main functionality is to serve as a notebook. Communication between the server and the client can be done with the tool-set that fits you the best. Python is especially recommended for this, as XML-RPC provides simple client-server communication.
The source code should implement the requirements stated below:
The client should be able to:
The server should be able to:
Attached on the assignment page is an XML file, that shows how the XML database mock could be structured.
One of the key challenges in distributed systems is the interoperability of different platforms. For full marks on this assignment, the server should communicate with other sources of data for information. Add a functionality, that will query the Wikipedia API for more information of the given topic. For this tasks, an additional library can be used for queries, such as 'requests' on python or 'fetch' on Javascript.
The client should be able to:
The server should be able to:
The deadline for submission of this assignment is 12 March 2023 (latest by 23:59).
The submission package must include:
https://docs.python.org/3/library/xmlrpc.html
https://docs.python.org/3/library/xml.etree.elementtree.html
https://requests.readthedocs.io/en/master/
https://www.mediawiki.org/wiki/API:All_search_modules