{"id":1759,"date":"2013-05-06T08:38:58","date_gmt":"2013-05-06T03:08:58","guid":{"rendered":"http:\/\/www.prasadgupte.com\/blog\/?p=1759"},"modified":"2015-04-07T09:06:45","modified_gmt":"2015-04-07T03:36:45","slug":"choosing-best-web-application-framework","status":"publish","type":"post","link":"https:\/\/www.prasadgupte.com\/blog\/choosing-best-web-application-framework\/","title":{"rendered":"Choosing the best web application development framework"},"content":{"rendered":"<p style=\"text-align: justify;\">I&#8217;ve discussed <a title=\"Rapid application development &amp; web frameworks\" href=\"http:\/\/www.prasadgupte.com\/blog\/rapid-application-development-web-frameworks\/\">web frameworks<\/a> before and how they can help in rapid development. In this post, I&#8217;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.<\/p>\n<p><a href=\"http:\/\/commitstrip.com\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/buffer-pictures.s3.amazonaws.com\/e359b85b33c288a27c37b700f4385721.e66db9a66ac06737de9cc43dee32d942.jpg\" alt=\"\" width=\"650\" height=\"888\" \/><\/a><\/p>\n<h2 style=\"text-align: justify;\">What to look at in a framework?<\/h2>\n<p style=\"text-align: justify;\">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&#8217;s capability.<\/p>\n<ul style=\"text-align: justify;\">\n<li>Scaffolding code: What is the <strong>ETD to get a web-form with basic CRUD running<\/strong>?<\/li>\n<li>Does it offer the <strong>flexibility to choose between convention &amp; configuration?<\/strong><\/li>\n<li>How is input <strong>data validation<\/strong> achieved?<\/li>\n<li>Is the View layer simplified with a <strong>template engine<\/strong>?<\/li>\n<li>Does it employ <strong>object-oriented design patterns<\/strong>? and demand OOP?<\/li>\n<li>Does it <strong>follow MVC<\/strong> (Model-View-Controller) pattern? How is routing (URL management) achieved?<\/li>\n<li>What <strong>ORM tools<\/strong> (object relation mapper) does it support?<\/li>\n<li>Does it have <strong>built-in support for multi-tenancy<\/strong>?<\/li>\n<li>Does it <strong>support I18n &amp; L10n<\/strong> out-of-the-box? (Internationalization &amp; Localization)<\/li>\n<li>How is <strong>Authentication &amp; Authorization<\/strong> managed: inbuilt, using a module or plug-in?<\/li>\n<li>Does it allow <strong>rapid development\/deployment in line with Agile<\/strong> principles?<\/li>\n<li>Are there cases of <strong>proven success for enterprise class applications<\/strong>?<\/li>\n<li>What is the <strong>performance benchmark<\/strong> vis-a-vis other frameworks?<\/li>\n<li>Is there in-built support\/plugins for <strong>caching, unit &amp; scenario testing<\/strong>?<\/li>\n<li>Is it <strong>easy to debug<\/strong> applications, and if possible with in-built support through an IDE?<\/li>\n<li><strong>Associated costs &amp; TCO<\/strong>: to build developer &amp; infrastructure expertise, hosting,\u00a0licensing, support?<\/li>\n<li>Does the <strong>licensing permit free use for all purposes<\/strong> and the right to modify code as necessary?<\/li>\n<li>Does it have a <strong>clear product roadmap<\/strong>, sufficient documentation &amp; an <strong>active community<\/strong>?<\/li>\n<\/ul>\n<h3 style=\"text-align: justify;\">The decision<\/h3>\n<p style=\"text-align: justify;\">Don&#8217;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&#8217;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.\u00a0Take a weighted approach to evaluating a framework based on the evaluation criteria above and make sure you have enough reason to be convinced.<\/p>\n<p style=\"text-align: justify;\"><em>This post is part of the <a title=\"SaaS Application Development series\" href=\"http:\/\/www.prasadgupte.com\/blog\/tag\/dissertation\/\" target=\"_blank\">SaaS Application Development series<\/a>, extracted from my final dissertation submission at BITS, Pilani that closely looked at rapid-development of SaaS-based applications.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve discussed web frameworks before and how they can help in rapid development. In this post, I&#8217;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 &hellip; <a href=\"https:\/\/www.prasadgupte.com\/blog\/choosing-best-web-application-framework\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Choosing the best web application development framework<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":2441,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[134],"tags":[543,655,72,266,828,826],"class_list":["post-1759","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engineering","tag-dissertation","tag-internet-web-apps","tag-mvc-framework","tag-orm-framework","tag-rapid-development","tag-saas"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/www.prasadgupte.com\/blog\/wp-content\/uploads\/2013\/05\/framework.png","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/posts\/1759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/comments?post=1759"}],"version-history":[{"count":0,"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/posts\/1759\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/media\/2441"}],"wp:attachment":[{"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/media?parent=1759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/categories?post=1759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.prasadgupte.com\/blog\/wp-json\/wp\/v2\/tags?post=1759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}