18 lines
4.3 KiB
HTML
18 lines
4.3 KiB
HTML
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<title>Description Assignment 2 (DL 12.03)</title>
|
|
<meta charset="utf-8">
|
|
|
|
</head>
|
|
<body>
|
|
<p><strong>Note:</strong> This is an individual assignment<br></p><p>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.</p><p>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.</p><p>The source code should implement the requirements stated below:<br></p><h3>Basic Requirements ( 1-7 points )</h3><p>The client should be able to:<br></p><p></p><ul><li>Ask the user for input & send it to server</li><li> Topic, Text, and timestamp for the note</li><li> If the topic exists on the XML, the data will be appended to the structure</li><li> If not, a new XML entry will be made</li><li>Get the contents of the XML database based on given topic</li></ul><p>The server should be able to:</p><p></p><ul><li>Process the client's input</li><li>Save data on a local database mock (XML)</li><li>Handle multiple client requests at once</li></ul><p>Attached on the assignment page is an XML file, that shows how the XML database mock could be structured.<br></p><h4>Additional requirements ( 8-10 points )</h4><p>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.<br></p><p>The client should be able to:</p><p></p><ul><li>Name search terms to lookup data on wikipedia</li><li>Append the data to an existing topic</li></ul><p></p><p>The server should be able to:</p><p></p><ul><li>Query wikipedia for user submitted articles</li><li>Add relevant information to user submitted topic</li><li> At minimum, the server should give a link to a wikipedia article found</li></ul>How usable the Wikipedia results are is not a priority, the main idea is to communicate through the API. Opensearch protocol, which is available in the link below, is good enough for this assignment.<br><p></p><p></p><h4>Return Instructions:</h4><p>The deadline for submission of this assignment is <strong>12 March 2023 (latest by 23:59).</strong><br></p><p>The submission package must include:<br></p><ul><li> A video, max 10 minutes, that includes code execution and a short rundown on the code base.</li></ul><ul><li> Emphasis of the video should be on how remote procedure calls are made and how failures are handled.</li></ul><ul><li>
|
|
The solution should also cover the design challenges noted on Lecture
|
|
1. It's however not important to go through them, since that was done
|
|
in the previous assignment</li></ul><div>Not fulfilling these
|
|
instructions may lead to a worse grade than what the requirements below
|
|
state. Video & Code clarity is also taken into account. You can also
|
|
paste a sharepoint/youtube link for the video, and github for the
|
|
submission.</div><div><br></div><div><strong>Links to get started on Python:</strong></div><p>https://docs.python.org/3/library/xmlrpc.html<br></p><p>https://docs.python.org/3/library/xml.etree.elementtree.html<br></p><p>https://requests.readthedocs.io/en/master/<br></p><h5>Wikipedia API:</h5><p>https://www.mediawiki.org/wiki/API:All_search_modules</p><br><p><br></p>
|
|
</body>
|
|
</html> |