Online Book Reader

Home Category

AJAX In Action [89]

By Root 4111 0
behind some of these frameworks, and solutions will undoubtedly emerge as Ajax rises in popularity. The CommandQueue approach that we will introduce in section 5.5.3 may be one way forward for JSF and its cousins, although it wasn’t designed as such. For now, though, these frameworks tie the client a little too closely to their apron strings for my liking.

It will be interesting to see how these frameworks adapt to Ajax in the future. There is already significant interest in providing Ajax-enabled toolkits from within Sun and from several of the JSF vendors, and .NET Forms already support some Ajax-like functionality, with more being promised in the forthcoming Atlas toolkit (see the Resource section at the end of this chapter for URLs to all these). This raises the question of what a web framework would look like if designed specifically for Ajax. No such beast exists today, but our final step on the tour of web frameworks may one day be recognized as an early ancestor.

Licensed to jonathan zheng

170

CHAPTER 5

The role of the server

5.3.4 Working with service-oriented architectures

The final kind of framework that we’ll look at here is the service-oriented architecture (SOA). A service in an SOA is something that can be called from the network and that will return a structured document as a reply. The emphasis here is on data, not content, which is a good fit with Ajax. Web services are the most common type of service currently, and their use of XML as a lingua franca also works well with Ajax.

NOTE

The term Web Services, with capital letters, generally refer to systems using SOAP as transport. The broader term web services (in lower case), encompasses any remote data exchange system that runs over HTTP,

with no constraints on using SOAP or even XML. XML-RPC, JSON-RPC

and any custom system that you develop using the XMLHttpRequest

object are web services, but not Web Services. We are talking about the broader category of web services in this section.

When consuming a web service as its data feed, an Ajax client achieves a high degree of independence, similar to that of a desktop email client communicating to a mail server, for example. This is a different kind of reuse from that offered by the component-based toolkits. There, the client is defined once and can be exported to multiple interfaces. Here, the service is defined once and can be used by numerous unrelated clients. Clearly, a combination of SOA and Ajax could be powerful, and we may see separate frameworks evolving to generate, and to serve, Ajax applications.

Exposing server-side objects to Ajax

Many SOA and web service toolkits have appeared that make it possible to expose a plain-old server-side object written in Java, C#, or PHP directly as a web service, with a one-to-one mapping between the object’s methods and the web service interface. Microsoft Visual Studio tools support this, as does Apache Axis for Java. A number of Ajax toolkits, such as DWR (for Java) and SAJAX (for PHP, .NET, Python, and several other languages) enhance these capabilities with JavaScriptspecific client code. These toolkits can be very useful. They can also be misused if not applied with caution. Let’s look at a simple example using the Java DWR toolkit, in order to work out the right way to use these tools. We will define a server-side object to represent a person.

Licensed to jonathan zheng

The big picture: common server-side designs

171

package com.manning.ajaxinaction;

public class Person{

private String name=null;

public Person(){

}

public String getName(){

return name;

}

public void setName(String name){

this.name=name;

}

}

The object must conform to the basic JavaBeans specification. That is, it must provide a public no-argument constructor, and expose any fields that we want to read or write with getter and setter methods respectively. We then tell DWR to expose this object to the JavaScript tier, by editing the dwr.xml file:

match="com.manning.ajaxinaction.Person"/>

Return Main Page Previous Page Next Page

®Online Book Reader