I'm working on a short paper / presentation that describes my position on what an application platform is, the services it provides, and what it does for the application developer. This is this initial outline. This doesn't talk about a specific (LOB) application platform, but instead talks about a set of requirements that a platform should meet. One of the things that started me down this path was noticing partners using the Microsoft CRM application as a platform. I'm curious to understand how other people think about this "problem" and whether there's any benefit in pursuing the definition.
I want to set the stage by talking about what I mean by "application" first. This paper will look at large-scale line of business applications. This isn't to say that productivity applications such as Office aren't applications, it's just that they're not the class of application that necessarily has this set of requirements.
Diversion
Caveat
Then I'll talk about the necessary and sufficient requirements for a platform. I'm trying to keep this list as short as possible because most application logic tends to leak "down" into a platform thereby making the platform less applicable to other applications.
Platform services
Identity and roles
Rich type library
Security
Storage and persistence
Extensibility
Process identification and execution
Solution packaging and containment
Deployment models