Skip to main content

Inside-Out and Outside-In Integration of Webapps: Services and Extensions

In terms of integrating your webapp with other webapps and another way around I see two different integration types:

1. Inside-Out Integration
This is the standard way and almost every webapps available use this possibility. For other webapps to be able to use some functionalities of your webapp you often offer Web services (mostly in RESTful manner) which can be called from outside or other webapps easily.

In this area you offen need following strategies and standards:
  • Webservice protocol: REST for allowing to define the functionalities you want to export to other webapps.
  • OAuth (two and three legged) for allowing other webapps to calls your webapp services, authorization.
  • Sometimes OpenID for allowing other webapps to use the same login, authentification.

2. Outside-In Integration
This is still not commonly used in webapps development. In some desktop apps we know this as a concept of Extensions and/or Plugins (I use these terms exchangeable). This integration lets other webapps run in the context of your webapp.

Mostly this is the second step after you implement the first step above (Inside-Out integration) because you need all the things from the first step. All in all you'll need following strategies and standards:
  • Webservice protocol: REST for allowing to define the functionalities you want to export to other webapps.
  • OAuth (two and three legged) for allowing other webapps to calls your webapp services, authorization.
  • Sometimes OpenID for allowing other webapps to use the same login, authentification.
Additionally you also need following strategies and standards:
  • OpenSocial Gadgets to allowing other webapps integrating their Plugins or Extensions into your webapp. Users of your webapp will be able to install such Plugins or Extensions for their own needs.
  • AppStore or Market Place or WebStore (I use these terms exchangeable) to let your webapp users' easily browse, select, buy, install and review the Plugins or Extensions from a central repository.
  • Sometimes OSGi to let people extends your webapp with some new functionalities. This is however a tight integration of Plugins or Extensions with your webapp which is not easily done and needs more mature concept of your webapp (security, dependencies). Such an integration will not be available per user basis, instead it will be an extension per webapp. The system administrator of your webapp will likely install such Plugins or Extensions.

The main idea of doing these two integration concepts is to build a big ecosystem for your webapp so that a lot of people will use your webapp. By doing these two steps you will be able to open your webapp, not only that other webapps can integrate some functionalities or services of your webapp in theirs but also they will be able to extend the functionalites or services within the context of your webapp.

Let's take a short look of some successful webapps and how they support the two types of integration concepts I mentioned above:

1. Facebook: No doubt, both integrations have been done here. You have Facebook API (e.g.: Like Button) for the first and Facebook Apps (Canvas app) for the second.

2. Twitter: This webapp only supports the first integration as a collection of Twitter API (e.g.: Tweet Button, REST API). They still do not support the concept of Extensions for the second integration type.

3. Google Mail: This webapp supports both integration types. For the first type they offer e.g.: Email Settings API and OAuth Access to IMAP and SMTP API. For the second type you can use Sidebar Gadgets for visual Plugins and Contextual Gadgets for non-visual Plugins. For more information please take a look at this API documentation.



In my opinion, if you want your webapp to be successful, you need to think about both integration concepts directly in the beginning of your development. Don't create a webapp without a concept of ecosystem anymore!

Next time I'll take a look at how you can plan and implement both integration steps in a simple webapp project. What are the things you need to take care of.

Cheers,
Lofi.

Comments

Popular posts from this blog

Creating Spring Bean dynamically in the Runtime

In my training someone asked me whether it is possible to create an object (a Spring Bean) dynamically so you can choose which implementation you want to have in the runtime. So at the compile time you don't know what object actually should be created yet. The application should decide what object to be created based on a property file.

1. We create an annotation so we can mark the method which should be able to create the object dynamically:

...
package your.package;
...
@Retention(RetentionPolicy.RUNTIME)
public @interface InjectDynamicObject {
}
...
2. Use the new created annotation in your method which should be able to create the object dynamically:
... @Named("customerBo") public class CustomerBoImpl implements CustomerBo { ...     @Override @InjectDynamicObject public Customer getDynamicCustomer() {         return this.dynamicCustomer; } ...
3. Write an aspect with Pointcut and Advise which change the object returned by the method in the step 2:
... @Named @Aspect public class Dyn…

Enterprise Applications Customization with Microservice

Introduction Today in highly paced enterprise environment you, as the leader of enterprise IT division, need to be fast. Simplicity is the key for the speed. What are the key factors to simplify your IT? Three different areas are very important to take care of: Technology, Organisation and Environment(TOE Framework: http://goo.gl/tQlX5z). Here are some detail points for technology and organisation:

1. Technology: in most enterprises there are already one or more ERP and CRM solutions the so called Enterprise Applications. We need to manage them carefully as they support the business processes. In context of the core compentencies most enterprises customize the enterprise applications to fit their needs. We need to manage the customizations in detail as they represent the core competencies and at the same time the differentiation of our enterprise to other competitors. 2. Organisation: working in a small team with different roles and functions is already proved as the best …

Smart Home Sweet Home with Gigaset Elements?

Introduction
Last week I had a chance to try the Smart Home solution from Gigaset Elements. I read some articles about this product which said how easy to install this product for dummy users. Those articles woke my interest and I began to google products for Smart Home solutions.

In this article (German language) you will find a nice overview about some products for Smart Home, which can be bought in Germany. The Nest product from Google is still not available in Germany. Although it seems that RWE will offer Nest products in Germany in couple of months.

The installation of Gigaset Elements was really easy. The problem I encountered was to add the sirensensor. I had to push hard the button on the siren sensor at the same time with the button on the base, so that they can communicate with each other. After about one hour I managed to install everything properly.

Points to mention
Generally the idea is very nice. Gigaset Elements try to push KISS (Keep it Simple Stupid) principle. Howev…