This is an old revision of this page, as edited by Nescio (talk | contribs) at 10:58, 3 April 2007 (Reverted 1 edit by 208.255.152.227 (talk) to last revision (119734262) by Sleepyhead81 using VP). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Revision as of 10:58, 3 April 2007 by Nescio (talk | contribs) (Reverted 1 edit by 208.255.152.227 (talk) to last revision (119734262) by Sleepyhead81 using VP)(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)Ajax framework forms part of Ajax, a technology to build dynamic web pages on the client side. Data is read from the server or sent to the server by JavaScript requests. However, some processing at the server side is required to handle requests, i.e., finding and storing the data. This is accomplished more easily with the use of a framework dedicated to process Ajax requests. In the article that coined the "Ajax" term, J.J. Garrett describes the technology as "an intermediary...between the user and the server." This Ajax engine is intended to suppress waiting for the user when the page attempts to access the server. The goal of the framework is to provide this Ajax engine and associated server and client-side functions.
Benefit of a framework
A framework eases the work of the Ajax programmer at two levels: on the client side, it offers JavaScript functions to send requests to the server. On the server side, it processes the requests, searches for the data, and transmits them to the browser.
Some frameworks are very sophisticated and provide a complete library to build web applications.
Types of frameworks
Ajax frameworks can be loosely grouped into categories according to the features they offer and the skills required of the user:
Direct Ajax frameworks
These frameworks require HTML, CSS and Ajax expertise: a developer is expected to author pages directly in HTML, and framework APIs deal directly with HTML elements. Cross-browser APIs are provided for a variety of purposes, commonly including communications, DOM manipulation, event handling, and sizing/moving/animating HTML elements.
These frameworks are generally smaller. They are commonly used for a web site such as a shopping experience, but not for a web application such as web-based email, at least not without further frameworks layered on top. An example is script.aculo.us.
Ajax component frameworks
These frameworks offer pre-built components, such as tabbed panes, which automatically create and manage their own HTML. Components are generally created via JavaScript or XML tags, or by adding special attributes to normal HTML elements. These frameworks are generally larger, and intended for web applications rather than web sites.
Some component frameworks require the developer to have extensive HTML/CSS/Ajax experience and hence to do cross-browser testing. For example, grids, tabs and buttons may be provided, but user input forms are expected to be authored directly in HTML/CSS and manipulated via Ajax techniques. Other frameworks provide a complete component suite such that only general XML and/or JavaScript abilities are required.
Ajax component frameworks can enable more rapid development than direct Ajax frameworks, but with less control, hence it is key that an Ajax component framework provides:
- customization APIs, eg, an event that fires when the user stops editing within a grid
- skinning facilities, where appearance can be changed without affecting behavior or layout
- programmatic control, eg, dynamically adding tabs, or dynamically creating components based on user data
- extensibility, ideally, creation of new components based on other components, so that the benefits of a component-based framework aren't lost
Server-driven Ajax frameworks
Several frameworks offer a server-side component-based development model with some degree of Ajax support.
Components are generally created and manipulated on the server using a server-side programming language. Pages are then rendered by a combination of server-side and client-side HTML generation and manipulation. User actions are communicated to the server via Ajax techniques, server-side code manipulates a server-side component model, and changes to the server component model are reflected on the client automatically.
These frameworks offer familiarity for server-side developers at the expense of some degree of power and performance. Ajax frameworks that handle presentation completely within the browser are more scalable because they do not run presentation code on the server at all. In a server-driven model, some UI interactions can become chatty, for example, an input field that is dynamically enabled or disabled based on server-side code may cause many network requests. Still, this approach is popular, especially in situations where the benefits of a full Ajax architecture can't be captured anyway.
Extending such a framework may require the developer to understand which parts of the presentation are handled on the client vs on the server, and to write a mixture of Ajax and server-side code.
Examples include frameworks that offer Ajax for JSF, and Google's GWT.
JavaScript and server technology independent frameworks
Main article: JavaScript libraryMany AJAX frameworks and libraries rely solely upon JavaScript and contain no server components, therefore no server technology dependencies. Such AJAX libraries and frameworks include:
- Apache XAP. Open Source Ajax Framework for large scale JavaScript applications
- Clean AJAX. Easy-to-use AJAX engine based on messages.
- Dojo Toolkit. Uses packages and reusable components.
- Helmi Open Source RIA Platform. Flexible open sourced rich internet applications / AJAX framework.
- JackBe. A commercially licensed framework.
- Jmaki. Provides a lightweight model for creating JavaScript centric Ajax-enabled web applications using Java, PHP, and Phobos
- JQuery Lightweight JavaScript framework that emphasizes the interaction between JavaScript and HTML
- Mootools. A compact, modular, Object-Oriented javascript framework. Open Source and compatible with Safari, internet explorer 6 and 7, Firefox and Opera.
- Prototype. Is the base of several other frameworks.
- SmartClient. Full GUI stack, SOA-style declarative integration with XML or JSON services, using XPath.
- Yahoo! UI Library. A client-side framework that bundles several API's including an AJAX API, several DHTML interface components, implementations for extended behaviour.
Such frameworks are agnostic as to what server-side technology you choose to use. Usually such frameworks are optimized to consume XML, though JSON is becoming popular as well.
C++ API
C++ Toolkits are interfaces to AJAX technology
- WT, WT(witty) is a WebToolkit, allowing programmers to write code in C++ (without knowledge of real AJAX), generating content rich AJAX GUI. OpenSource Licence.
Java frameworks
Such frameworks permit the use of Java web services interactively with web pages. The most common Ajax specific frameworks are:
- DWR, a remoting toolkit (see also Reverse Ajax) and DHTML library
- Echo, an open source framework for developing AJAX web applications in pure Java (no HTML/Javascript knowledge required)
- Google Web Toolkit, a widget library with Java to Javascript compiler
- IT Mill Toolkit, a user interface library for developing Ajax -based web applications in plain Java run in server
- ZK, an AJAX/XUL Web Application Framework
.NET frameworks
These tools run only on the .NET platform, and thus under Windows and perhaps some compatible ports as Mono and others.
- ASP.NET AJAX (previously Microsoft Atlas) works best with .NET services behind it, even if it has JavaScript libraries that can run without .NET.
- Ajax.NET Professional serialize .NET data to the JSON format..
- Gaia Ajax Web Widgets NoJavaScript type of framework.
Python frameworks
These frameworks require the Python programming language to run, and the goal is to bring together several Python components designed to help in building web applications. Examples of Python frameworks include:
See also
External links
- Listing of Ajax Libraries hosted by Open Source Applications Foundation