There are many Web development frameworks, can you simply categorize at least two of these frameworks according to:
In order to avoid having to build applications from the ground up, there are essentially three approaches to leveraging the investment of others:
1) Build on top of a predefined framework. Frameworks are essentially code bases that you extent to add your application specific functionality. Some examples of frameworks are Microsoft MFC, C++ STL, and JavaServer Faces. While frameworks provide a great foundation to quickly build an application, once the application is build on the framework it is essentially locked-in. You have to depend on features from the framework, build the features yourself, or totally rewrite on top of a different framework. So, while frameworks often help write an application quickly, the trade-off is long term flexibility and reuse.
2) Use components. Unlike frameworks, components are not "extended", but are instead used via a predefined generalized (not component specific) API and set of design patterns. Some examples of component models are Microsoft OLE and COM, and JavaBeans. While components, unlike frameworks, don't provide a foundation for an application, they allow applications to leverage capabilities, such as graph rendering, which are not inherently app specific. One advantage is that, since the APIs and design patterns are standardized, swapping components is relatively easy. One downside of components is that, by their very design, they are distributed with an application -- so leveraging updates from the original author requires re-releasing all of the applications that use it. In addition, components typically need to be stateless and stand-alone -- they can't easily depend on external (to the application owner) data sources without causing applications to be brittle. This limits the use cases for components -- though they are effective when the data is local to the application.
3) Use services. Services, in some ways, are like "hosted components". Someone else manages and maintains the service, but the consumer of the service can leverage it effectively. This allows the service owner to version the service with consumers taking advantage of it immediately, without having to upgrade their applications. In addition, services can have their own persistent data stores hidden from consumers. The downside is that services are not effective when they need to access a lot of data which resides at the consumer (when dealing with a large volume of data, the computation should typically be moved to the data's location, not the data moved to the computation's location).
In the end, there's no one model which works for all applications. Services, components, and frameworks should each be used where they are appropriate -- most applications will take advantages of multiple of these models.
Dig Deeper on Topics Archive
Related Q&A from Daniel Foody
Daniel Foody defines end-to-end security and discusses the different parts of security to consider. Continue Reading
Dan Foody discusses the capability of using Web services for ASP applications. Continue Reading
Daniel Foody discusses the "find-bind-execute" paradigm and secure service directories. Continue Reading
Have a question for an expert?
Please add a title for your question
Get answers from a TechTarget expert on whatever's puzzling you.