Introducing Data Services

Adobe Enterprise Platform Data Services for JEE provides a set of services that lets you connect a client-side application to server-side data, and pass data among multiple clients connected to the server. Data Services synchronizes data sharing among clients, performs data push and data conflict management, and implements real-time messaging between clients.

A Data Services application consists of two parts: a client-side application and a server-side J2EE web application. The server-side web application consists of Java classes.

Note: For information about Data Services architecture, see Data Services Architecture.

Data Services features

The Data Services core features include the Remote Procedure Call (RPC) services, Message Service, Data Management Service, and Managed Remoting.

Remote Procedure Call (RPC) services

A client-side RPC component calls a remote service. The component then stores the response data from the service in an object from which you can easily obtain the data. The client-side RPC components are the HTTPService, WebService, and RemoteObject components.

Use RPC components when you want to provide enterprise functionality, such as proxying of service traffic from different domains, client authentication, whitelists of permitted RPC service URLs, server-side logging, localization support, and centralized management of RPC services. Data Services lets you use RemoteObject components to access remote Java objects without configuring them as SOAP-compliant web services.

Note: You can use Flex SDK without the Data Services proxy service to call HTTP services or web services directly. You cannot use RemoteObject components without Data Services or Adobe® ColdFusion®.

The Remote Procedure Call (RPC) services are designed for applications in which a call and response model is a good choice for accessing external data. RPC services let a client application make asynchronous requests to remote services that process the requests and then return data directly to the client. You can access data through client-side RPC components that include HTTP GET or POST (HTTP services), SOAP (web services), or Java objects (remote object services).

For more information, see Remote Procedure Call Services.

Message Service

The Message Service lets client applications communicate asynchronously by passing messages back and forth through the server. A message defines properties such as a unique identifier, Data Services headers, any custom headers, and a message body.

Client applications that send messages are called message producers. You define a producer in a Flex application by using the Producer component. Client applications that receive messages are called message consumers. You define a consumer in an application by using the Consumer component. A Consumer component subscribes to a server-side destination and receives messages that a Producer component sends to that destination. For more information on messaging, see Using the Message Service.

The Message Service also supports bridging to JMS topics and queues on an embedded or external JMS server by using the JMSAdapter. Bridging lets Flex client applications exchange messages with Java client applications. For more information, see Connecting to the Java Message Service (JMS).

Data Management Service

The Data Management Service lets you create applications that work with distributed data. By using the Data Management Service, you build applications that provide real-time data synchronization, data replication, on-demand data paging, and occasionally connected application services. You can manage large collections of data and nested data relationships, such as one-to-one and one-to-many relationships. You can also use data adapters to integrate with data resources, such as a database.

Note: The Data Management Service is not available in BlazeDS.

A client-side DataService component calls methods on a server-side Data Management Service destination. Use this component to perform activities such as filling client-side data collections with data from remote data sources and synchronizing the client and server versions of data. Changes made to the data at the client side are tracked automatically using property change events.

When the user is ready to submit their changes, the changes are sent to a service running on the server. This service then passes the changes to a server-side adapter, which checks for conflicts and commits the changes. The adapter can be an interface you write, or one of the supplied adapters that work with a standard persistence layer such as SQL or Hibernate. After the changes are committed, the Data Management Service pushes these changes to any other clients looking at the same data.

For more information, see Data Management.

Managed Remoting

Managed Remoting combines the ease of use of the Remoting Service with the powerful data processing capabilities of the Data Management Service. Managed Remoting supports the following features: Paging, Lazy Loading, Conflict resolution, and data synchronization. Managed Remoting uses annotations and also provides support for model-driven development.

For more information, see Managed Remoting.

Note: Managed Remoting was added to Data Services 4.6.

Data Services summary of features

The following table summarizes some of the main features of Data Services:

Feature

Description

Client-server synchronization

Automatic and manual synchronization of a common set of data on multiple clients and server-side data resources. Also supports offline client-side data persistence for occasionally connected clients.

Removes the complexity and potential for error by providing a robust, high-performance data synchronization engine between client and server. It also can easily integrate with existing persistence solutions to provide an end-to-end solution.

Multiple client support

Supports multiple clients such as Java, Flex, AIR, HTML 5/JS, Android, and IDevice client applications.

Collaboration

Enables a client application to concurrently share data with other clients or servers. This model enables new application concepts like "co-browsing" and synchronous collaboration, which allow users to share experiences and work together in real time.

Data paging

Facilitates the paging of large data sets, enabling developers to focus on core application business logic instead of worrying about basic data management infrastructure.

Data push

Enables data to automatically be pushed to the client application without polling. This highly scalable capability can push data to thousands of concurrent users to provide up-to-the-second views of critical data. Examples include stock trader applications, live resource monitoring, shop floor automation, and more.

Data traffic control

Provides a set of features for managing data traffic, such as data throttling, deserialization validation, reliable messaging, message prioritization, message filtering, and measuring message processing performance.

Model-driven development

Use Adobe application modeling technology to facilitate the development of data-centric applications.

Occasionally connected client

Handles temporary disconnects, ensuring reliable delivery of data to and from the client application. Provides support for the development of offline and occasionally connected applications that run in the browser or on the desktop. Data Services takes advantage of the scalable local SQLite database in AIR to store data, synchronize it back to the server, and rationalize any changes or conflicts.

Portal service integration

Configure a Flex client applications as local portlets hosted on JBoss Portal, Oracle WebLogic Portal, or IBM WebSphere Portal.

Proxy service

Enables communication between clients and domains that they cannot access directly, due to security restrictions, allowing you to integrate multiple services with a single application. By using the Proxy Service, you do not have to configure a separate web application to work with web services or HTTP services.

Publish and subscribe messaging

Provides a messaging infrastructure that integrates with existing messaging systems such as JMS. This service enables messages to be exchanged in real time between browser clients and the server. It allows Flex clients to publish and subscribe to message topics with the same reliability, scalability, and overall quality of service as traditional thick client applications.

RIA-to-PDF generation

Users can generate template-driven PDF documents that include graphical assets from Flex applications, such as graphs and charts. The generated PDF documents can be orchestrated with other services and policy-protected to ensure only authorized access.

Software clustering

Handles failover when using stateful services and non-HTTP channels, such as RTMP, to ensure that Flex applications continue running in the event of server failure. The more common form of clustering using load balancers, usually in the form of hardware, is supported without any feature implementation.

Client-side applications

A Data Services client application can be one of the following clients:

  • A Flex or AIR application

  • A HTML5/JS Client application

  • A Java client application

  • A Flex AIR mobile application

  • An Android mobile application

  • An Objective C client application

The following illustration show different client applications interacting with Data Services.

Client applications use components to communicate with Data Services. These components include RemoteObject, HTTPService, WebService, Producer, Consumer, and DataService.

Data Services Reference Information

Data Services offers different APIs that you can use to create client applications. The following table lists the different types of Data Services reference documentation and where you can find them.

Reference

Description

Java API

Reference material for working with the Data Services Java APIs. You can use the Java APIs to create server-side logic. As of Data Services 4.6, you can use the Java API to create a Java client application. (See Creating a Java Desktop application that invokes Data Services.)

You can locate the Data Services Java API on the Data Services documentation web page.

ActionScript API

Reference material for working with the Data Services ActionScript API. You can use the ActionScript API to create Flex client or mobile AIR applications. (See Create mobile and web applications.)

You can locate the Data Services ActionScript API reference information on the Data Services documentation web page.

JavaScript API

Reference material for working with the JavaScript API. (See Creating web applications using HTML5/JavaScript Remoting and Messaging Client SDK.)

The reference documentation is located in a file named jsdocs.zip. You can locate this file in the following directory: [Data Services Install location]\resources\client-sdk\javascript

Objective C API

Reference material for working with the iOS Client SDK. (See Creating Data Services iDevice Applications.)

The reference documentation is located in a file named dataservices-client-iOS.zip. You can locate this file in the following directory: [Data Services Install location]\resources\client-sdk\iOS

Data Services Development Quick Starts

Data Services supports the following development patterns:

  • Code-Driven Development - you use Data Service APIs to create both server-side Java classes and client applications. Code driven development offers the most flexibility but requires solid programming knowledge.

  • Model-Driven Development - you use the Data Services tooling to create Rich Internet applications. Using Model-driven development, you do not write data synchronization or persistence code. Although there is some programming involved, there is less code when compared to code-driven development.

This section introduces you to Data Service Quick Starts based on the two development patterns. If you are interested in code-driven development, then the quick starts specfied in the code-driven quick starts will interest you. Likewise, if you are interested in creating a model-driven application, then view the table in the Model-Driven quick starts.

Note: Quick Starts can help you accelerate your efforts to develop programs that interact with Data Services. Quick Starts are complete programs that you can copy and paste into your own projects and use as a starting point. You can run a Quick Start to see how it behaves and modify it for your own needs. Before you follow a Quick Start, it is recommended that you first read Building and deploying Data Services applications.

Code-Driven Quick Starts

The following table lists the code-driven quick starts.

Name

Description

Create a Data Services application that returns data using APIs

Demonstrates how to create a Data Service application that returns the data that is passed to the server. This application uses the Remoting Service. The client applicatioin is a Flex application.

See Create a Data Services application that returns data using APIs.

Create a Data Services application that displays messages using APIs

Demonstrates how to create a Data Service application that displays messages. This application uses the Message Service. The client applicatioin is a Flex application that subscribes to a server destination.

See Create a Data Services application that displays messages using APIs.

Create a Data Services application that retrieves data from the sample database using APIs

Demonstrates how to create a Data Service application that retrieves data from a relational database. This application uses the sample database that is available with Data Services. This application uses the Data Management Service. This application uses a custom assembler. That is the assembler in this quick start implements AbstractAssembler.

See Create a Data Services application that retrieves data from the sample database using APIs.

Create a Data Services application that retrieves data from the sample database using a Hibernate Assembly

Demonstrates how to create a Data Service application that retrieves data from a relational database. This application uses the sample database that is available with Data Services. This application uses the Data Management Service. This application uses the Hibernate assembler.

See Create a Data Services application that retrieves data from the sample database using a Hibernate Assembly.

Create a Managed Remoting application

Demonstrates how to create a Managed Remoting application that is based on a sample bank application. This quick start involves creating both the server-side Java classes and a Flex client application. The server-side Java classes make use of Managed Remoting annotations.

See Create a Managed Remoting application.

Create a Spring JDBC database application using the Remoting Service

Demonstrates how to create a Data Service application that retrieves data from a relational database. This application uses the sample database that is available with Data Services. This quick start demonstrates how to integrate the Spring framework with the Remoting Service.

See Create a Spring JDBC database application using the Remoting Service.

Secure the JDBC database application using Spring Security

Demonstrates how to create a Data Service application that uses Spring security. A user must login in order to view application data.

See Secure the JDBC database application using Spring Security.

Create a trader application using the Message Service and the Spring framework

Demonstrates how to create a Data Service application that displays messages. This quick start demonstrates how to integrate the Spring framework with the Message Service.

See Create a trader application using the Message Service and the Spring framework.

Create an Android application that invokes Data Services

Demonstrates how to create an Android application by using the Data Services Java API and the Android SDK.

See Creating an Android application that invokes Data Services.

Create an AIR Android application that invokes Data Services

Demonstates how to create an Android application by uisng AIR and Data Services client Flex APIs. This Android application uses the Remoting Service.

See Creating an AIR Android application that invokes Data Services.

Create a Java Desktop application that invokes Data Services

Demonstrates how to create a Java client application that subscibes to a destination and displays messages. This quick start uses the Data Services Java API.

See Creating a Java Desktop application that invokes Data Services.

Create an AIR Desktop application that subscribes to a Message destination

Demonstates how to create an AIR desktop application by uisng AIR and Data Services client Flex APIs. This desktop application uses the Message Service.

See Creating an AIR Desktop application that subscribes to a Message destination.

Create Occasionally Connected Applications

Demonstates how to create a Data Services application that is occasionally connected.

See Creating Occasionally Connected Applications.

Create a Data Services Objective-C Application

Demonstartes how to create a Data Services iDevice application by using the Data Services Objective C SDK.

See Creating a Data Services Objective-C Application.

Model-driven Quick Starts

The following table lists model-driven quick starts.

Name

Description

Creating you first model-driven application

This quick starts demonstrates how to create a model-driven application.

See Develop a model-driven ADEP application.

Creating a SAP model-driven application

This quick starts demonstrates how to create a model-driven application based on a SAP system.

See Create a model-driven SAP client.