Your organization (XYZ Industries) took on a new initiative, which involves the exposure of XYZ systems’ functionality via Application Programming Interface (API) for business partners, who wish to integrate their systems with XYZ’s. API is estimated to consist of more than 25 different functions that business partners can utilize. Such initiative is believed to eliminate much of the manual work (via emails and phone calls) performed by XYZ and its many business partners and promote more automated, efficient, and well-integrated inter-organizational business processes.
As a member of the architecture team, you have been tasked with analyzing and evaluating three architectural alternatives for the realization of the API:
ALT-1 TCP server/multiple TCP clients – develop a TCP server along with multiple TCP clients. The TCP clients will be written in different programming languages to accommodate the needs of various business partners, this is essential to avoid confining partners to a particular programming language. This option involves the design of a proprietary wire protocol. APIs can be invoked by calling the appropriate member functions of the TCP client objects/classes.
ALT-2 SOAP/XML web services – develop a SOAP service with XML for message and data exchange. SOAP service by definition is language-neutral, business partners can develop their systems to access the SOAP service using a SOAP client library of their choice.
ALT-3 REST/JSON service – a RESTful service with JSON for data exchange. Similar to a SOAP service (ALT-2), a RESTful service is language-neutral, however, it is more lightweight than SOAP.
The new API must –
- Allow a business partner the choice to pick up the client-side technology stack of his choice, with no limitation on the programming language.
- Make it easy for a business partner to experiment with API without having to write code. In other words, a business partner should be able to invoke various APIs, experiment with functionality, and get results in less than one day.
- Keep XYZ and the partner systems independent and secure from each other. In other words, XYZ cannot ask the business partners to run any software agent on the partner’s private network, and vice versa.
- API must be accessible from the public Internet.
Perform an architectural evaluation and a presentation for the rest of the team of your findings.
TCP server/multiple TCP clients:
This architecture allows multiple clients to connect with a single server. This architecture can be implemented in various programming languages like C, C++, JAVA, and Python.
- This removes the limitation on the choice of technology and language for the business partners to connect with the XYZ system.
- This architecture has reduced the application development time as it divides the functions of sharing information into both client and server. This will allow business partners to get results within no time.
- In this architecture, communication is done between the server and the client. This means there cannot be direct communication between different clients directly. This way the XYZ organization can keep its partner systems independent and secure from each other. The architecture of the web(internet) is also client/server. This will allow the XYZ Organization’s API to be accessible from the public internet.
SOAP/XML web services:
SOAP is a protocol based on XML used for accessing web services. The XML markup language is understood by every programming language.
- This allows applications built using different programming languages to communicate with each other easily using SOAP as an intermediate language. As a result, this will allow business partners of XYZ organization to select client-side technology without any limitation on the language.
- SOAP is independent of the operating system and independent of the platform. This means that business partners can access the XYZ system using applications of any language and from any kind of operating system. SOAP is generally used for data exchange between applications.
- The application from one partner can communicate with the application of another partner. This doesn’t give security to the partners of the XYZ organization.
- SOAP runs on HTTP protocol and this protocol is used by all web applications by default. This makes it easy for SOAP protocol to run on the World wide web. As a result, the XYZ organization’s API is accessible from the public internet.
In this architecture, the response from the server is in JSON format. There is no freedom for the client-side on the selection of the programming language.
- With this architecture, it is not allowed for business partners to work with the API without writing the code. A JSON code needs to be written in order to experiment with the API functions.
- The REST/JSON service API works in a client-server fashion. This means clients connect with the server and there is no direct connection between the clients. This provides security for different business partners of the XYZ organization.
- Similar to SOAP architecture, the REST/JSON architecture also works on the HTTP protocol which is by default used by all web applications.
As a result, the REST/JSON architecture is accessible from the public internet.Step-by-step explanation
The TCP server/ multiple TCP clients architecture allows multiple clients to connect with one server. This is done using a unique port that is generated each time a client requests to connect with the central server. When two clients from the same machine request to connect with the same server, the operating system of the client machine will generate a unique port for each client.
SOAP is a protocol based on XML language for accessing web services. It was developed as an intermediate language that can be used to connect various applications developed in different programming languages. There are many web applications that are developed in different programming languages. These applications cannot talk with each other directly. However, with the introduction of SOAP, this barrier has been removed.
REST is an architectural paradigm for creating Web Services that establishes a set of rules. In a client-server communication, REST recommends creating an object of the data requested by the client and sending the object’s contents to the user as a response.
The analysis of the given architectures based on the requirements of the API is given below:
- Based on the freedom of programming language selection for the business partner, the best architecture is SOAP/XML. This is because the XML markup language is understood by almost every programming language.
- Based on the easiness of experimenting with the API, the TCP server/multiple TCP clients is the best-suited architecture as it divides the functions between client and server for data sharing. This in turn reduces the application development time.
- Based on the security and independence of the business partners, the TCP server/multiple TCP clients is the best-suited architecture as it does not allow direct communication between the clients. It is necessary for information to go through the server every time communication takes place.
- Based on the accessibility of the internet, both SOAP/XML and REST/JSON architecture are the best as both the architecture runs on HTTP protocol which is used by almost every web application. This allows easy access from the public internet.