Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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!

share|improve this question

closed as not constructive by gnat, Walter, ChrisF Oct 17 '12 at 20:24

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

Frameworks have security that's already been scrutinized. That alone makes it worth using one. – Jimmy Hoffa Oct 5 '12 at 18:17
@JimmyHoffa: Some do. Others introduce more security issues than they solve. – tdammers Oct 5 '12 at 19:12
Both ways are valuable. I get it that you are wary of adding code you don't understand to solve problems you don't know you have. Reinventing the wheel yourself at least once will be an excellent companion to learning the theory. – Jano Oct 5 '12 at 19:26
@tdammers Which you know of due to the scrutiny I was referring to, so you already have public resources to know which ones to avoid, the one he rolls on his own won't come with such resources to notify him it is (or is not) secure. – Jimmy Hoffa Oct 5 '12 at 20:07
up vote 6 down vote accepted

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.

share|improve this answer
Nice, thanks! I got it when you said to focus on the unique parts – ton Oct 6 '12 at 13:47

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.

share|improve this answer

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!

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.