I’ve discussed web frameworks before and how they can help in rapid development. In this post, I’m presenting some general guidelines around selecting the best web development framework, based on your requirements, in the the preferred language: Java, Ruby, PHP, Python. The main criterion is evaluating the non-functional requirements it provides out-of-thebox, which can greatly aid rapid development.
What to look at in a framework?
You should know how the design considerations mentioned below are addressed by the frameworks you are evaluating. Depending on the business needs, some might be redundant, but tend to provide a holistic view of the framework’s capability.
- Scaffolding code: What is the ETD to get a web-form with basic CRUD running?
- Does it offer the flexibility to choose between convention & configuration?
- How is input data validation achieved?
- Is the View layer simplified with a template engine?
- Does it employ object-oriented design patterns? and demand OOP?
- Does it follow MVC (Model-View-Controller) pattern? How is routing (URL management) achieved?
- What ORM tools (object relation mapper) does it support?
- Does it have built-in support for multi-tenancy?
- Does it support I18n & L10n out-of-the-box? (Internationalization & Localization)
- How is Authentication & Authorization managed: inbuilt, using a module or plug-in?
- Does it allow rapid development/deployment in line with Agile principles?
- Are there cases of proven success for enterprise class applications?
- What is the performance benchmark vis-a-vis other frameworks?
- Is there in-built support/plugins for caching, unit & scenario testing?
- Is it easy to debug applications, and if possible with in-built support through an IDE?
- Associated costs & TCO: to build developer & infrastructure expertise, hosting, licensing, support?
- Does the licensing permit free use for all purposes and the right to modify code as necessary?
- Does it have a clear product roadmap, sufficient documentation & an active community?
Don’t get carried away by flashy white-papers, classy developer events or generalized case studies. Your application is going to be different (a reason why you’re building that product in the first place) and while it is good to use guidelines, you need to see what fits your requirement best. Take a weighted approach to evaluating a framework based on the evaluation criteria above and make sure you have enough reason to be convinced.
This post is part of the SaaS Application Development series, extracted from my final dissertation submission at BITS, Pilani that closely looked at rapid-development of SaaS-based applications.