Sunday, February 10, 2008

M13

M13 Application Development Paradigms for large-scale enterprise applications:
  1. All business functionality is thought of in terms of one or more services. An application includes a set of services and their implementers/providers.
  2. A Service does not automatically imply Web Service.
  3. A Service is defined by a Java interface and its implementers are Java classes. A Service can have multiple implementers.
  4. Service definitions and implementers are independent of how the services are provisioned (Web Service, Java API, EJBs etc.), and are independent of the UI Channel (Browser DHTML, Browser Flash, Adobe AIR, MS WPF, Java Swing etc.).
  5. Service provisioning is declarative meta-data driven.
  6. Service implementers can be switched with configuration entry changes and without any code change. Services can optionally be versioned and it is possible to have multiple versions of a service active in the system at the same time.
  7. For remote clients, a client-side service API is available for clients to code against.
  8. Services produce and consume strongly typed objects and not XML. Optimized binary formats are preferred over text-based formats for data transfer across the wire
  9. UI Components bind to strongly-typed, well-defined data models produced directly by the services without any intermediate transformations.
  10. A common canonical form for clients across UI Channels is impractical and infeasible for any real-life application. Clients are written separately for each UI Channel in its own technology but they share the same services layer.
  11. All application data can be broken up into 2 clear and distinct categories - meta-data and data.
  12. Application structure and flow is meta-data driven.
  13. All meta-data is efficiently query-able and stored in a relational data store. Meta-data is versionable and upgradable, and it is possible to have multiple versions of a meta-data element active in the system at the same time.

No comments: