|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface IscServer
The SmartGWT Server is a set of Java libraries, servlets and tools that provide the key server-side components needed to build a complete application in the modern web architecture.
The SmartGWT Server can be 'integrated'
into any pre-existing Java
application, and is designed to rapidly connect SmartGWT visual components to
pre-existing Java business logic or persistence engines. SmartGWT's Ajax request
processing facilities can be easily integrated into Struts Actions,
'Spring controllers'
, or custom servlets and JSPs.
Alternatively, the SmartGWT Server provides a complete SQL and Hibernate-based persistence engine for new applications, with out-of-the-box servlets for processing Ajax data requests.
The SmartGWT Server is optional, and SmartGWT's client-side Ajax engine can be integrated with any server that provides HTTP access, using XML, JSON, SOAP or proprietary data protocols. However any server in a modern web application will be required to provide most or all of the features of the SmartGWT Server (described below), and the SmartGWT Server represents a best-of-breed implementation of these facilities with a long history of high-volume production deployments.
Validator
Data passed from the browser can be automatically validated by the SmartGWT Server.
In contrast, when using 'client-side integration'
,
data arrives as HTTP params or XML messages, and you must parse values into the correct
types (eg java.util.Date) and validate them, or use a server framework that does so.
The SmartGWT Server delivers data to and from the browser using a proprietary, maximally efficient protocol, providing simple Java APIs for sending and receiving data.
SmartGWT's data protocol is:
dropExtraFields
and
valueXPath
only the data you want the browser to see
SmartGWT provides special client and server-side support for 'file
upload'
, which allows single and multiple-file HTTP uploads to be performed as a background
Ajax request without reloading the page or launching sub-windows.
Uploaded files arrive at the SmartGWT server as Java InputStreams accessible from the DSRequest object, and can optionally be automatically stored via SmartGWT's SQL subsystem.
Any request transmitted to the SmartGWT Server can be combined into a "queue" transmitted
as a single HTTP request, with in-order execution for all queued operations.
RPCManager.startQueue()
starts a queue and
RPCManager.sendQueue()
transmits it; queueing is transparent to the code
that initiates the individual requests. This enables:
'Visual Builder'
is included with the SmartGWT Server, and uses
server features such as automatic SQL binding to provide a rapid prototyping environment.
Provides a powerful, type-safe data
for moving
data between a Java server and the browser.
Any Java objects, including Java Beans, POJOs, Java Collections, XML DOMs and all Java primitives, with any level of nesting, can be automatically serialized and delivered as JavaScript Objects to the SmartGWT client-side components.
JavaScript Objects existing in the browser can likewise be automatically transmitted to a Java Server and translated to Java Objects, with any level of nesting and automatic preservation of primitive types.
DataSource of serverType:"sql" or serverType:"hibernate" can generate and execute queries
against popular SQL engines or against the Hibernate ORM system, providing SmartGWT's
DataBoundComponent
s with the four standard CRUD operations (create, retrieve, update,
delete) without writing any server-side code. For rapid prototyping, these DataSources can
even generate SQL tables based on the DataSource declaration, using the
AdminConsole
visual tool.
Server-side APIs allow server-side modification of the request before it is executed (for example, to enforce security) and post-processing of the request after execution (for example, to provide calculated values).
Both serverType:"sql" and serverType:"hibernate" support the field-operator-value queries
that can be generated by using the FilterBuilder
component (see
${isc.DocUtils.linkForExampleId('filterBuilderBracket', 'example')}).
The SmartGWT Server provides a standardized request and response protocol designed for data-oriented "CRUD" operations (create, retrieve, update, delete).
This standardized protocol automatically handles DSRequest
(paging
parameters, requested sort order, original values of data being modified) and
DSResponse
(error handling, cache management, session expiration etc).
Similar to the impact of Struts on early web applications, this standardized protocol avoids developers in different groups inventing their own incompatible and redundant request/response protocols, and allows developers to more easily learn code they didn't author.
Most UI designs do not directly reflect the underlying Object model and so some degree of translation is necessary in order to populate UI components with data and apply user changes to the Java Object model. This is often accomplished with brittle, difficult to understand data translation code sprinkled throughout the system, done in a different way for every screen or component.
SmartGWT provides a standard, valueXPath
to
adapting any Java-based Object model to the requirements of the UI design. Data relevant to
the application UI is centrally extracted in the server-side DataSource
layer, so
that all UI components have a consistent, unified view of the data model for both loading
and saving data.
The SmartGWT Server can compensate for facilities
'missing or disabled in certain browsers'
,
including ActiveX being disabled in IE6 and missing XML support in some versions
of Apple's Safari browser.
com.smartgwt.client.rpc.RPCManager#sendProxied
allows SmartGWT applications to access web
services, RSS feeds, HTML content and other data services in a secure manner regardless of
where they are located: across the enterprise or publicly available.
'Network Performance'
ModuleProvides:
com.smartgwt.client..FileLoader
of SmartGWT and other assets for zero
user-perceived load time
The ${isc.DocUtils.linkForDocNode('messaging', 'Messaging')} module allows the server to "push" messages to the client, without client polling, for real-time monitoring/dashboarding applications.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |