In this thesis the concept was to make a study of the architecture for a new web-based software system using a commercial ERP system.
First I’ve made a study of the different cloud systems. Each of these cloud systems have their pros and cons. But for this system there are two possibilities, using either a hybrid cloud. With a hybrid cloud they can keep their data private, and they have the advantage of a public cloud that is the expansion of the servers. The other possibility is that they still use a private cloud, so everything is managed by the administrators. The downside with private cloud is that the cost of expansion is bigger than with a public cloud.
Then I studied the architecture style, REST and its constraints. When making an API with the use of a REST architecture style, it’s important that all constraints are fulfilled.
Otherwise the API can’t be called a REST-ful API.
The purpose of this thesis was to make an API that makes it possible to change the database without too much modification on the client side. The API that was build made an extra layer between the client and the server. So now it’s possible to change the database from e.g. MySQL to Oracle without much problems.
The architecture style REST is a very complex concept, this concept is not easy to apply in an API. But once the REST architecture is fully understood it’s a powerful concept.
6.1 Future work
To make an API REST-ful is not an easy task, but now the foundation of a REST-ful API is made. Regarding the thesis and the API, it’s possible to make the API more REST-ful. Later on there will be more frameworks that support REST, so then it can be made with a MVC framework which makes the work of the programmer easier.
Bibliography
Abeysinghe, S. (2008). RESTful PHP Web services. Birmingham: Packt Publishing Ltd.
Allamaraju, S. (2010). RESTful Web Services Cookbook. O’Reilly Media, Inc.
Anthony T. Velte, T. J. (2010). cloud computing a practical approach. MC Grawhi.
Beaver, S. (2013, April 9). How Do You Define a Hybrid Cloud? Retrieved May 26, 2013, from The Virtualization Practice:
http://www.virtualizationpractice.com/wp-content/uploads/2013/04/Hybrid-Cloud-Computing-Solution1.jpg
Bikeborg. (2013, May 23). File: Cloud_computing_layers. Retrieved May 25, 2013, from Wikipedia:
http://upload.wikimedia.org/wikipedia/commons/3/3c/Cloud_computing_layers.
png
Borko Furht, A. E. (2010). Handbook of cloud computing. Springer.
Bray, T. (2008, November 26). Extensible Markup Language (XML) 1.0 (Fifth Edition).
Retrieved May 27, 2013, from W3C: http://www.w3.org/TR/REC-xml/#sec-intro
Chng, P. (2009, May 5). Using cURL in PHP to access HTTPS (SSL/TLS) protected sites. Retrieved May 25, 2013, from unitstep:
http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
cloudtweaks. (2012, April). Cloud Computing types of cloud and their relevance part 2.
Retrieved May 26, 2013, from Cloudtweaks:
http://www.cloudtweaks.com/2012/04/cloud-computing-types-of-cloud-and-their-relevance-part-2/
Data, R. (2013). XML Tutorial. Retrieved May 27, 2013, from w3schools:
http://www.w3schools.com/xml/
doebertin, j. (2011, March 9). oAuth mit XAMPP unter Windows nutzen. Retrieved May 5, 2013, from jonas-doebertin: http://www.jonas-doebertin.de/2011/03/oauth-mit-xampp-unter-windows-nutzen/
Fielding. (1999, June). 14 Header Field Definitions. Retrieved May 23, 2013, from W3:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1
Fielding, e. a. (1999). Status Code Definitions. Retrieved May 25, 2013, from W3 : http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Fielding, R. (2008, October 20). REST APIs must be hypertext driven. Retrieved May 27, 2013, from Untangled: http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
Fielding, R. T. (2000). Architectural Styles and the Design of Network-based Software Architectures. UNIVERSITY OF CALIFORNIA.
Fowler, M. (2010, March 18). Richardson Maturity Model. Retrieved May 28, 2013, from MartinFowler:
http://martinfowler.com/articles/richardsonMaturityModel.html
Gazit, I. (2012). Authorization Code Grant. Retrieved May 27, 2013, from oauthlib:
https://oauthlib.readthedocs.org/en/latest/authcode.html
Gazit, I. (2012). Client Credentials Grant. Retrieved May 27, 2013, from oauthlib:
https://oauthlib.readthedocs.org/en/latest/credentials.html
Gazit, I. (2012). Implicit Grant. Retrieved May 27, 2013, from oauthlib:
https://oauthlib.readthedocs.org/en/latest/implicit.html
Gazit, I. (2012). Resource Owner Password Credentials Grant. Retrieved May 27, 2013, from oauthlib: https://oauthlib.readthedocs.org/en/latest/password.html Goodrich, G. (2012). php-logo. Retrieved May 25, 2013, from Roby Source:
http://cdn.rubysource.com/files/2012/09/php-logo.jpeg
Group, P. (2013, May 24). cURL Functions. Retrieved May 26, 2013, from Php:
http://www.php.net/manual/en/ref.curl.php
hansamann. (2012, July). OAuth: the Client Credentials Flow. Retrieved May 27, 2013, from techblog: http://techblog.hybris.com/wp-content/uploads/2012/07/Screen-Shot-2012-07-09-at-11.25.56-AM.png
hansamann. (2012, June 5). OAuth2: the Implicit Flow, aka as the Client-Side Flow.
Retrieved May 27, 2013, from techblog: http://techblog.hybris.com/wp-content/uploads/2012/06/oauth2_implicit_flow.png
hansamann. (2012, June 5). OAuth2: The Resource Owner Password Flow. Retrieved May 27, 2013, from techblog:
http://techblog.hybris.com/wp-content/uploads/2012/06/oauth2_resource_owner_password_flow.png
Hardt. (2012, October). The OAuth 2.0 Authorization Framework. Retrieved May 27, 2013, from IETF: http://tools.ietf.org/html/rfc6749#section-1
IBM. (2005). Secure sockets layer overview. Retrieved May 23, 2013, from IBM:
http://pic.dhe.ibm.com/infocenter/tivihelp/v2r1/index.jsp?topic=%2Fcom.ibm.it ame2.doc_5.1%2Fss7aumst18.htm
IBM. (2012, November 1). An overview of the SSL handshake. Retrieved May 20, 2013, from IBM:
http://publib.boulder.ibm.com/infocenter/wmqv6/v6r0/topic/com.ibm.mq.csqzas .doc/sy10660a.gif
IdentityManagement. (2012, May 15). OAuth2 into. Retrieved May 27, 2013, from IdentityManagement:
http://www.stallies.net/wp-content/uploads/2012/06/oauth2_abstract.png
Integration, E. C. (2012). History of Cloud Computing. Retrieved Maart 10, 2013, from EzeCastle Integration: http://www.eci.com/cloudforum/cloud-computing-history.html
Jansen, G. (2011). Resources. Retrieved May 5, 2013, from restful api design:
https://restful-api-design.readthedocs.org/en/latest/resources.html#representations
K.roshan. (2011, August 28). What is Https and SSL? and how it works? Explained in Simple English. Retrieved May 20, 2013, from Techieinspire:
http://www.techieinspire.com/https-and-ssl-and-how-it-works/
Kepes, B. (2011). Understanding the Cloud Computing Stack. Rackspace.
KUMARI, S. R. (2005). CLOUD COMPUTING: AN OVERVIEW. JATIT.
Llc., 1. (2012, February 9). Who is responsible for security in the Cloud? Retrieved May 5, 2013, from 10Jumps: http://10jumps.com/blog/who-responsible-security-cloud
Luis M. Vaquero, L. R.-M. (2009). A Break in the Clouds: Towards a Cloud Definition.
ACM SIGCOMM Computer Communication Review.
Massé, M. (2012). REST API Design Rulebook. United States of America: O’Reilly Media, Inc.
Meijer, G. (2012, October 3). How to Build a Hybrid Cloud. Retrieved March 23, 2013, from CloudProviderUSA: http://www.cloudproviderusa.com/how-build-hybrid-cloud/
Pastor, P. (2010, May 24). MVC for Noobs. Retrieved May 27, 2013, from Tutsplus:
http://net.tutsplus.com/tutorials/other/mvc-for-noobs/
Pavan. (2009, February 14). opencodez. Retrieved May 26, 2013, from Create SSL Certificate and install in Xampp: http://www.opencodez.com/apache/ssl-certificate-and-install-in-xampp.htm
PHP info. (n.d.). Retrieved May 25, 2013, from rubysource:
http://cdn.rubysource.com/files/2012/09/php-logo-300x210.jpeg
Pierobon, J. M. (2011, December). SSL Handshake Steps In Detail. Retrieved May 23, 2013, from pierobon: http://www.pierobon.org/ssl/ch2/detail.htm
Pomares, W. M. (2012, April 4). Evaluating REST Frameworks Part 1: A Maturity Model. Retrieved April 8, 2013, from DeveloperFusion:
http://www.developerfusion.com/article/141194/evaluating-rest-frameworks-part-1-a-maturity-model/
Poretsky, S. (2013). SSL Limitations. Retrieved May 23, 2013, from Opposing views:
http://science.opposingviews.com/ssl-limitations-2432.html
Prakash, N. (2012, October 26). Did You Know Cloud Computing Has Been Around Since the '50s? Retrieved May 26, 2013, from mashable:
http://mashable.com/2012/10/26/cloud-history/
Reese, G. (2009). Cloud Application Architectures Building Applications and infrastructure in the cloud. O'Reilly.
Rhoton, J. (2010). Cloud computing explained: Implementation Handbook for Enterprises. Rp.
Sameer Shelke, A. (2011, May 19). Microsoft Windows Azure – Secure Development.
Retrieved May 26, 2013, from CIO research Center:
http://cioresearchcenter.com/wordpress/wp-content/uploads/2011/05/sameer2.jpg
Sandoval, J. (2009). RESTful Java Web Services. Packt Publishing.
sourya. (2011, February 9). A History of Cloud Computing. Retrieved May 26, 2013, from Cloud tweaks: http://www.cloudtweaks.com/2011/02/a-history-of-cloud-computing/
Stenberg, D. (2013, May 25). Curl.1 the man page. Retrieved May 25, 2013, from Curl:
http://curl.haxx.se/docs/manpage.html
Syed A. Ahson, M. I. (2010). Cloud Computing and Software Services Theory and Techniques. CRC press.
TAMK. (2008). Kykylaakso. Retrieved March 20, 2013, from Kykylaakso:
http://kykylaakso.fi/palvelut/Index.php
Torben Wilson, Z. G. (2001). PHP Functions Essential Reference. Sams.
Weekly, C. (2009, March). A history of cloud computing. Retrieved April 3, 2013, from Computer Weekly: http://www.computerweekly.com/feature/A-history-of-cloud-computing
Wikipedia. (2013, May 20). HTTP Secure. Retrieved May 23, 2013, from wikipedia:
http://en.wikipedia.org/wiki/HTTP_Secure
Wikipedia. (2013, May 18). Uniform resource locator. Retrieved May 24, 2013, from Wikipedia: http://en.wikipedia.org/wiki/Uniform_resource_locator