Choosing an application framework
by a reluctant coder:
An application framework is more that a collection of its components. An application framework includes additional software that integrates its components into a systems paradigm that simplifies common, difficult or repetitive tasks by using a library of reusable code. The code provides additional features toward a consistent solution set for increased utility. Each application framework solves problems in a unique way or with a unique set of components.
For a web application framework or full stack, the component web server, programming language and database are optimized for particular kinds of use. There are interfaces between components and interfaces between client and server including for data transfer, sessions management and other resource management.
Migrating from one framework to another could require re-writing all the app code. Choose a full featured framework to avoid creating some extra difficult hurdles later. These questions identify some parts of a web framework’s completeness by offering proof-of-concept:
- Does the stack have a library of useful tools for meeting common needs found in most all apps, such as a notifications system?
- Does the stack have an existing content management system (CMS)?
- Does the stack have ways to communicate with other computers, such as via XML or REST? These are often used with social networking services as well as for ecommerce and importing data from other sites.
- Does the stack have Object Relational Mapping (ORM) tools or library?
- Does the stack have groupware, such as message boards, wiki, blog, file sharing?
Even if your app doesn’t need these features, it might need one or more at some point later. If a feature is not available, are there any obvious or hidden hurdles blocking development of it? You might have to overcome a hurdle at some point. You might have to code it yourself. If another framework has proof-of-concepts, consider it instead.
Read the first post on how to make your own killer app.