Currently we are developing social network, which includes apps inside, for example Games. There is no public API for developers to make their apps, instead Apps developed ourself.
Our platform is based on Zend Framework. Also we have XMPP protocol implementation (clientside-strophe, serverside-java) for chat, notifications and for other pushing tasks. XMPP will be used in apps.
We want to separate apps from social network code, so we can keep it simple, lightweight.
What strategy you can suggest for such separation? Our desire is to keep architecture and code simple and clean.
Since this is an architectural question, I’m sure there are many way of doing what you need. Here is my 2 cents. Keep your apps server completely separated from the social media server. Use client side JS scripts to embed and render the apps on your social media site.
Think it like this: You know Facebook social plugins that allow embedding Facebook components in external sites. Below is a screenshot of Facebook LikeBox embedded in a completely separate DNN portal.
In your scenario, assume DNN as your social media site. And the LikeBox as your app. Architecturally they are well separated, even can be served from different severs. But integration happens on the client side.
If you need these apps to interact with the social media site, either you can do it via a REST API. Or you can use DOM events or simple JS function calls.
Few days ago I wrote a blog post on a similar architecture and can be found at: http://blog.hasith.net/2012/06/traditional-portals-are-dead-long-live.html