Username: Password:

Technical White Paper



Rich clients can now be created on top of the web services infrastructure of the Internet itself, without being tethered to any particular server. The old style of client side application programming is particularly inappropriate for this new world. DreamFactory directly addresses the next paradigm of aggregating XML from anywhere, binding the data to sophisticated user interface controls and rich media, and then broadcasting the results back to the Internet on the fly.

Overview

DreamFactory enables the enterprise professional to quickly build high-performance user interface front-ends that are loosely bound to web services on the middleware tier. These applications reside on the client and run in the browser, providing total control over every aspect of interactivity, user interface, rich media, and server communication. This allows the server side to focus on web services instead of HTML page generation, which streamlines design, enhances user experience, reduces traffic, and lowers cost. The environment is capable of building complex user interfaces and rich media projects that run faster than Java or C# and are much easier to maintain. But the BIG difference between DreamFactory and everything else is that you can author and build applications in the browser, change them while they are running, and see your changes immediately.

DreamFactory turns the browser itself into a development platform. This is an important advantage in the chaotic world of rapidly changing web services, and a gigantic improvement over traditional methods of creating and deploying web applications. The capacity for persistent self-modification and browser-based tool building really sets DreamFactory apart from other environments that are divided into a "development environment" and a "runtime." Rich clients can now be created on top of the web services infrastructure of the Internet itself, without being tethered to any particular server. The old style of client side application programming is particularly inappropriate for this new world. DreamFactory directly addresses the next paradigm of aggregating XML from anywhere, binding the data to sophisticated user interface controls and rich media, and then broadcasting the results back to the Internet on the fly.

Over 5 years in development, DreamFactory consists of a software engine and a folder for additional files and projects. The engine is either an ActiveX control, Netscape Plug-in, or stand-alone executable. The folder is named "DreamFactory" and contains help files, default scripts, plug-ins, a download folder, and other system text files. The DreamFactory document type uses the extension ".dfac" and the registered MIME type "application/dreamfactory." DreamFactory runs in mirror identical fashion on Macintosh System 7, 8, 9, and 10 and on Windows NT, 95, 98, 2000, ME, and XP. Both Internet Explorer, Netscape Navigator, and Mozilla browsers are supported with a 400K one time control download.

Every document is identical pixel for pixel, platform for platform, no mater where it is displayed. This concept of "draw once, run anywhere" allows designers to build complex user interfaces with complete confidence that they will look perfect in any browser or on any platform. The fact that DreamFactory is a MIME type means that it can run full screen or as multiple instances on a web page, and can be sent directly as an e-mail extension. DreamFactory runs in a variety of memory footprints, a runtime only version (no scripting or media import/export) is in development for Pocket PC and Palm OS. A Linux version is also in development. DreamFactory's Security Architecture is covered in more detail in the Security White Paper.

A DreamFactory Project in Internet Explorer

Much has been made in recent years of the open source movement. DreamFactory is the next logical step: immediate source. If there is something that you want to modify, you can open that object's self-documenting script, change it in context right now, and continue working. Powerful security features also allow for the protection of functionality if desired. This is light-years beyond the normal procedure of tracking down the source code, finding a programmer, fixing the problem, compiling the executable, uploading it to a website, and returning to the application. Much has also been made of the object-oriented nature of Java and C ++. But with DreamFactory, objects are not just static definitions used by programmers, the object hierarchy can be expanded or modified while the application is running, and living controls can be cut out of one project and pasted into another at will. In the world of rapidly changing SOAP services -- where new capabilities arrive daily and old capabilities change or disappear -- this kind of dynamic functionality is a major advantage. Consumers who want to build a personal tool kit of SOAP based web widgets can gather them from DreamFactory pages anywhere. Service-based web companies can use DreamFactory to deliver client side applications capable of rapid update in the field if necessary and customization by their own user base if desired.

This kind of dynamic functionality provides a deep solution to the aggregation and integration problem discussed by the OASIS working group on

Web Services for Interactive Applications

. DreamFactory currently implements the best component object model for dynamic web services, and going farther, our ability to copy graphical user interfaces from page to page offers an unprecedented solution to the enterprise aggregation and integration challenge. Companies can now publish DreamFactory front-ends to their web services, which can travel across the net and be incorporated anywhere without even leaving the browser. This activity is safe because the user interfaces are simply a shell for the underlying web services, which remain protected at the server. If for some reason a service owner wishes to protect or stop integration, they can use DreamFactory's project security features to password, limit, or completely stop this functionality. Aggregation and integration opens up entirely new business models based on syndication, co-branding, cross-selling, joint offerings, and outsourcing. This will be key to the next stage of the web services revolution, and a great way to reach millions of new customers.

DreamFactory is the ultimate tool-building environment. User interfaces can be built on the fly, and rich media graphics, movies and sounds can be created, imported, and exported all under manual or script control. Supported media formats include BMP, PICT, GIF, JPEG, PSD, WAV, AIFF, MPEG, MP3, MOV and WMV. DreamFactory also has great facility with TEXT, XML, and SOAP. Rich media features include DirectX hardware acceleration, page flipping in the browser, scriptable sound channels, sound mixing, high speed sprites and bitmaps, photographic quality images, and support for 16, 24, and 32 bit color monitors. This kind of power enables the creation of highly visual environments where user scripting is not a requirement. Everything is saved in a persistent and highly compressed single document format, which allows for fast downloads and delivery as a binary MIME type anywhere. DreamFactory also has a role in content creation and management. Because it can create powerful tools, content management applications are naturally written in DreamFactory itself, and one project can be used to add functionality or media to another.


Back to top

DreamFactory and Java

Java is the dominant scripting language for servers, and has been successfully used for building server-side components and middleware; especially J2EE application severs like WebSphere and WebLogic. But on the client side there has been criticism and disappointment. Java applets are not much easier to program than traditional C++ applications. There are inherent speed problems with Java Swing and the Abstract Widget Toolkit, especially when applied to complex user interfaces and rich-media applications. Like ants trying to carry away a picnic, the basic problem is that Java tries to do all the heavy lifting by itself. Various Java class files are often downloaded on an as-needed basis, further compromising speed and performance. Another issue is Microsoft's attempt to exclude the Java virtual machine from their next generation operating systems. The JVM is a major download, usually 10 to 20 MB, while DreamFactory is only 400 K.

The main reason that Java is in use today on the client side is because of a vacuum created by the lack of viable alternatives. Instead of a low level language that attempts to do everything, DreamFactory uses a high level language to coordinate polymorphic plugins written in object code. The plugins do all the heavy lifting and interface rendering. DreamFactory can download and cache files in a security sandbox for future use, cutting down on re-loading delays. This allows web applications to maintain intelligent client-side data files and projects for extremely rapid display and access. Because the plug-ins run in an API supported by DreamFactory, they are small in size and safe to run. They come complete with documentation, and are version controlled for backwards compatibility. This approach delivers dramatically faster performance capable of rotating large bitmaps, running animations, analyzing huge XML documents, and supporting blisteringly complex user interfaces. Sun's success with Java has been on servers, DreamFactory is a user interface engine designed for the desktop.

Web services are being used to integrate databases, mainframes, servers, and applications on the server side. But the most promising use of web services is to integrate client and server communications directly. Current J2EE application server platforms talk to the client browser with HTML or JSP, and web services from outside the enterprise are integrated on the middleware tier. This requires twice as many transactions as accessing the services directly from the client, and threatens to create bottlenecks in the middle, see the diagram, below.

J2EE Architecture for Web Services

DreamFactory takes a different approach. Bandwidth heavy graphics and interactivity are moved to the desktop, allowing the server side to focus on web services instead of HTML page generation. This streamlines design, reduces traffic, and lowers cost. Since DreamFactory projects are cached on the client side, rich media assets and detailed interfaces provide a much better user experience while simultaneously lowering bandwidth requirements. Business logic from the middleware tier can be combined with other web services right on the desktop. The costs saving of moving graphics and interactivity from overburdened servers to a powerful desktop client will be a major lever driving industry adoption. More important, this new division of labor between client and server results in dramatic new efficiencies for deploying web applications. Web services become the new building blocks of client side software, and DreamFactory provides the easy to use components for developing the blocks. This is essentially a component object model for web services designed to integrate with the middleware tier.

DreamFactory Architecture for Web Services


Back to top

DreamFactory and .Net

Client-side applications of Microsoft's .Net suffer from some of the same problems experienced with Java applets, discussed above. Like Java, .Net is a low-level virtual machine that seems to be mainly targeted at server-side scripting. Developers need an enormous amount of information about the frameworks and classes to benefit from the environment; the level of difficulty is similar to C++ programming. The framework is a large 30 MB download, and only runs on the latest versions of Microsoft's proprietary operating systems, namely Windows 2000 and XP, and also requires Microsoft software on the server side. Technically, .Net is capable of supporting the DreamFactory Runtime engine and MIME type, so there may be a future version of DreamFactory in C#, although the benefits of this are debatable because of the speed hit. There is no product equivalent in the .Net world to the DreamFactory MIME type. Instead a programmer would need to wade through the .Net framework to cobble together a user interface that does the required job on a case by case basis.

While .Net and Java are comprehensive and professional software developmentframeworks, there are some major advantages to the DreamFactory architecture.First, an integrated development and runtime environment is a dramatically easierway of building and customizing user interface software right in the browser,thereby eliminating the development cycle. This enables the delivery of a newclass of browser-based web service orchestration and assembly tools to the enduser. Second, .Net seems to miss the main point that the new core role of clientsoftware is connecting XML documents to user interfaces. DreamFactory is directlytargeted at this task, while .Net is focused on general purpose software development.This makes DreamFactory a faster, better, and cheaper alternative for many,many common web service deployment needs. Third, DreamFactory's ability to storethe entire project including graphics, scripts, XML data, and rich media assetsin a single file or as an XML envelope provides a dramatic new way to deploysoftware as a service without a server, indeed without even the need for a localcorporate Intranet. The entire project or any logical subset can simply be storedor re-assembled from an XML database or web service online. Lastly, DreamFactoryis already available on multiple platforms, is W3C standards based, and willshortly be available on Linux as well, which guarantees widespread and agnosticdeployment capabilities, even on older Microsoft operating systems like Windows95 and NT.


Bill Appleton, August 2001

Back to top