{"id":410,"date":"2015-04-19T18:14:52","date_gmt":"2015-04-19T18:14:52","guid":{"rendered":"http:\/\/blog.soton.ac.uk\/skillted\/?p=410"},"modified":"2015-04-30T21:12:22","modified_gmt":"2015-04-30T21:12:22","slug":"standards-and-protocols","status":"publish","type":"post","link":"https:\/\/blog.soton.ac.uk\/skillted\/2015\/04\/19\/standards-and-protocols\/","title":{"rendered":"Standards and Protocols"},"content":{"rendered":"<p>As already illustrated in the <a href=\"http:\/\/blog.soton.ac.uk\/skillted\/2015\/04\/11\/architectural-design\/\">Architectural Design<\/a>, our system follows a traditional client-server infrastructure, where the mobile application is the client that communicates with a centralised server over a REST API using JSON. The reason why we chose REST over SOAP is because REST is<\/p>\n<ul>\n<li><span class=\"text_exposed_show\">simple (it uses standard HTTP methods like GET, PUT, POST and DELETE),<\/span><\/li>\n<li><span class=\"text_exposed_show\">infrastructure friendly (all network components like firewalls, proxies or load balancers are optimised for RESTful traffic),<\/span><\/li>\n<li><span class=\"text_exposed_show\">cacheable,<\/span><\/li>\n<li><span class=\"text_exposed_show\">scalable (REST is stateless and hence very scalable) and<\/span><\/li>\n<li><span class=\"text_exposed_show\">efficient.<\/span><\/li>\n<\/ul>\n<div class=\"text_exposed_show\">\n<p>The implementation of the mobile application depends on the platform it is build for. Our application\u00a0will be provided for both iOS (using Swift, which is more powerful than Objective-C) and Android (using JAVA and the Android Software Development Kit (SDK)). Both applications will be hybrid, which means that they are a combination of a web application and a native application. For the web part, technologies like HTML, CSS and JavaScript will be used. However, since the app needs to access device capabilities (GPS), it needs to be hosted inside a native application, which will be downloadable from Google\u2019s and Apple\u2019s app store, respectively.<br \/>\nThe mobile application will then communicate with the server using JSON,\u00a0which is a data-interchange format similar to XML. The server itself will be developed using JAVA and MySQL. It is divided into two layers, the logic tier and the data tier. The logic tier is responsible for<\/p>\n<ul>\n<li>processing all the requests from the clients,<\/li>\n<li>matching users depending on their skills and interests,<\/li>\n<li>storing and retrieving data from the database,<\/li>\n<li>converting data back to JSON and sending it back to the client.<\/li>\n<\/ul>\n<p>Moreover, it will send push notifications to Apple and Google, which in turn will forward them to the clients (All mobile devices from Apple and Google have a persistent and encrypted connection to their push notification servers).<\/p>\n<p>The data tier (MySQL server) is responsible for the storage of all personal user information as well\u00a0as their current location. Whenever a user opens his application, his current location will be send to our centralised server, which will update the current location to its new one. The matching algorithm is based on the last sent location of each user.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>As already illustrated in the Architectural Design, our system follows a traditional client-server infrastructure, where the mobile application is the client that communicates with a centralised server over a REST API using JSON. The reason why we chose REST over SOAP is because REST is simple (it uses standard HTTP methods like GET, PUT, POST and DELETE), infrastructure friendly (all&#8230;<span class=\"path-read-more\"><a class=\"more-link\" href=\"https:\/\/blog.soton.ac.uk\/skillted\/2015\/04\/19\/standards-and-protocols\/\" title=\"Standards and Protocols\">  Read more &rarr; <\/a><\/span><\/p>\n","protected":false},"author":97391,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[30844],"tags":[8901,918020,431126,8900],"class_list":["post-410","post","type-post","status-publish","format-standard","hentry","category-system-design","tag-protocols","tag-skillted","tag-software-design","tag-standards"],"_links":{"self":[{"href":"https:\/\/blog.soton.ac.uk\/skillted\/wp-json\/wp\/v2\/posts\/410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.soton.ac.uk\/skillted\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.soton.ac.uk\/skillted\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.soton.ac.uk\/skillted\/wp-json\/wp\/v2\/users\/97391"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.soton.ac.uk\/skillted\/wp-json\/wp\/v2\/comments?post=410"}],"version-history":[{"count":2,"href":"https:\/\/blog.soton.ac.uk\/skillted\/wp-json\/wp\/v2\/posts\/410\/revisions"}],"predecessor-version":[{"id":422,"href":"https:\/\/blog.soton.ac.uk\/skillted\/wp-json\/wp\/v2\/posts\/410\/revisions\/422"}],"wp:attachment":[{"href":"https:\/\/blog.soton.ac.uk\/skillted\/wp-json\/wp\/v2\/media?parent=410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.soton.ac.uk\/skillted\/wp-json\/wp\/v2\/categories?post=410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.soton.ac.uk\/skillted\/wp-json\/wp\/v2\/tags?post=410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}