Technology

CloudBuddy Architecture

CloudBuddy is developed using a multi layer architecture and built on top of .NET 3.0. The CloudBuddy client is a thin layer which has only UI related logic. The CloudBuddy API layer encapsulates all the neccessary logic to be used by the client layer.

CloudBuddy Service

The service layer is implemented using WCF and provides multiple service endpoints for the 'client(s)' to upload,download and create buckets. The service endpoints specify the contract, which defines the business methods of the service class that are exposed and accessible via the WCF endpoints. The Cloudbuddy service is hosted as a windows service and the API layer communicates using NetNamedPipe binding.

CloudBuddy Service Proxy

This layer acts as a proxy object, which exposes the service endpoints for the WCF client layer. All method calls to the CloudBuddy Service Proxy would be routed to the CloudBuddy Service and the proxy layer would return the results by the service to caller.The CloudBuddy Service proxy layer communicates to the WCF service layer using the NetNamedPipe binding mechanism, in which service can be invoked as a method call.

CloudBuddy API Interface

The CloudBuddy API interface layer hosts the set of APIs for the thin UI client to register and access the WCF Service layer. The CloudBuddy API Interface layer is essentially the WCF client layer of the architecture.The conventional binding model a typical desktop client with the UI is re-architected by introducing the API layer hence making the UI a 100% thin client application. The client would essentially use the APIs to programmatically get the UI rendered and also perform action events.The CloudBuddy API interface layer consists of the UI related APIs, which actually render the total UI to a thin client and the Non-UI APIs perform the action events based on the functionality.

CloudBuddy Client Layer

The CloudBuddy client layer is usually a thin layer programmed with C#.NET. This layer makes use of the API layer to get the UI rendered and also submit the action events.

CloudBuddy Utility Layer

The CloudBuddy utility layer separates the utility services such as exception handling and activity logging and is accessible across the layers. The logging mechanism uses the Microsoft Enterprise Library Logging Block.

The CloudBuddy service layer and API layer have direct access to the Amazon Cloud using REST and SOAP based protocols.

CloudBuddy Data Flow

The entire application data flow for CloudBuddy across the layers is illustrated below.

  1. The component registration happens to the CloudBuddyFactory from the client layer.
  2. The CloudBuddyFactory registers the same to the Notification handler.
  3. Client requests the CloudBuddyUIFactory to render the UI.
  4. The CloudBuddyUIFactory calls CloudBuddyFactory to access the service to get the UI and renders the same.
  5. When a user action is performed on the client, the client posts an asynchronous / synchronous message to the CloudBuddyService through the CloudBuddyFactory layer.
  6. The CloudBuddyFactory layer makes a call (REST / SOAP) to the Amazon Cloud to get the required details.
  7. The same call is posted to the CloudBuddyServiceProxy (generated layer), which acts as a proxy object to the service layer.
  8. The CloudBuddyService layer makes a REST based call to the Amazon Cloud and performs the service request.
  9. On completion of successful execution of the task, the CloudBuddyService layer passes the response notification via the Notification handler to the CloudBuddyFactory.
  10. CloudBuddyFactory passes the notification to the corresponding registered client component.