I’m about to make a simple web application with just image uploading and user management. I’m browsing through several web app frameworks I could use yet I’m still thinking if I should still make use of them or just make one from scratch for this specific application.
Any suggestions from experienced web app developers? Thanks!
4
For pretty much every major language, there are already web frameworks that provide user management and can handle image uploading. If you go with one of them, you immediately get all the benefits of the upstream community’s work on security, performance, browser and web server interoperability, and more. If you roll your own, then you’ll be figuring out all of that yourself, plus rolling your own user management and image uploading, which it sounds like have very little to do with what you’re actually trying to accomplish.
So by all means, yes, use a web framework, in pretty much whatever language you want, so you can focus on the part of your application that’s unique, and not the part of your application that does what a thousand other websites already do.
1
It depends on the application domain is the only correct answer.
Frameworks give the pro’s of
- already battle tested code
- will get updates
- feature rich
- and a community to help.
- saves on time!
Ultimately that means there is less work for you. There is no point re-inventing the wheel, if you can just take one off a shelf.
However I personally am always weary of frameworks:
- often filled with cruft, or overly complex abstractions and boiler plate
- you can be writing your application for the framework, instead of writing an application that uses a framework
- unwanted features are loaded, or worse, must be used
- you don’t get exactly what you want
There are plenty of examples out there of popular frameworks, which have all of the above issues.
What I would say, is that you should have a framework: either one off the shelf, or one you have built yourself. The advantage is that it forces you to modularize your code.
make a simple web application with just image uploading and user management
I would skip addition of any unnecessary framework to the implementation, just for the sake of having it. However, if there are good functional and security gains from using one, then i would double check that framework to make sure that it suits my project needs.
Basically, i would skip adding dependency of web-framework to my project if there are no gains/benefits from it. Adding layer of abstraction (some third-party framework) to the project potentially increases complexity and dependency matrix of your project. Thus keep it simple stupid and don’t over engineer it.
However, there are some type of functionality which is supported out of the box in natural in the web-framework of your primary programming language. Take C# as an example, ASP.NET MVC is a framework that naturally support user management, data validation, model-binding, routing, etc....
What is left is just configuring the functionality, and you are done!
I think it’s more a question of do you want to learn and use a framework on a continual basis. All frameworks have pros and cons and some may be more suited to certain projects; however, you only have so much life and so you probably won’t bother learning a new framework for each project you do. If you’re going to learn or use something, do it because you plan on using it again and again so that you get a return on investment.
Ultimately, learning a framework may mean it takes you longer on this project, but over several projects you’ll save time. Choose whatever’s most expedient based on whether you care more about the long or short term.
Going with frameworks is better thing to do, because you get some great things readily available. You have user management in your application, you might have role based access as well. Here you will be benefited from frameworks. You can use spring framework. Spring has it’s security framework as well. You can manage authentication and authorization with the help of spring security.
You can have internationalization (i18n) also in your application. Frameworks help do things faster.
Using MVC frameworks makes it easy to write reusable code. It segregates you view technology, controllers and database access (dao )layer. So it is always easy to port any ORM framework in the backend by just replacing some code in DAO layer.
I love spring & struts.