Affinity Technology Backgrounder

Software Pundits
25 Burlington Mall Rd
Burlington, MA 01803
617-229-6655,  fax 617-229-6660
-----------------------------------------------------------------

Current Trends in Application Integration

With the advent of graphical user interfaces (GUIs), client-server
computing, heterogeneous networks and object-oriented technology, the
computing environment of the nineties has become a complex integration of
information and tools. Software application integration technologies are
becoming an essential component of these complex computing environments.
Users can now integrate distributed applications seamlessly by sharing and
exchanging information between different applications to create one
document, called a compound document, that contains information from many
sources. This type of computing is changing the way that documents are
created and applications are used.

Currently, application integration technology has emerged in the form of
Microsoft Corporation's Object Linking and Embedding (OLE) and Object
Management Group's (OMG) Common Object Request Broker
Architecture(CORBA).

Since its release in 1990, OLE has provided users of Windows and Macintosh
systems with an easy method for creating documents that access information
from multiple applications, allowing seamless integration on these
systems. OMG's CORBA specification provides a framework for distributed
object computing that focuses on the areas of remote object network
access, encapsulation of existing applications and object database
interfaces. OMG continues to work on object services directed toward
addressing application to application linking, but CORBA-compliant
implementations are not expected to become commercially available for the
next couple of years.

These solutions support PC and Macintosh computing environments, yet have
excluded UNIX systems. UNIX users have had to use more traditional methods
of application integration such as file import/export and cut, copy and
paste. With the recent trend towards GUI's and heterogeneous networks,
users expect UNIX applications to provide similar features to those found
in applications developed for Windows and Macintosh. Now there's a
solution.

Affinity, a product from Software Pundits, provides a linking and embedding
technology similar to that of OLE for Windows and Macintosh environments.
UNIX users and developers can now take advantage of the power of
application integration that they have become accustomed to on their PC or
Macintosh.

The Affinity Technology

Affinity provides UNIX developers, users and vendors with the benefits of
an application integration solution similar to OLE for Windows. It
provides developers with a common set of services that allows application
integration and provides a standard interface for UNIX applications to
exchange data and to render objects across a heterogeneous network of UNIX
systems.

Affinity contains extensible applications protocols (APIs) that enable one
application to use the service of another application or enable client and
server applications to communicate with each other. Using the Affinity API
and a set of libraries, a software developer can create an
"Affinity-enabled" version of an application that gives users the power to
link and embed data objects created from other "Affinity-enabled"
applications into their documents.

An application will require user interface changes to support Affinity. The
Affinity user interface extends an application's user interface to support
inserting, editing, viewing and activating linked and embedded objects and
modifying the properties of these objects. The Affinity user interface is
consistent with the OLE user interface implemented in Windows and Mac
applications.

Why Use Affinity?

Affinity is the foundation of a new model of computing aimed at allowing
applications to interoperate more effectively and to provide an easier and
more efficient means of using available data to generate compound
documents. These documents incorporate data, or objects, of different
formats such as sound clips, spreadsheets, text, graphics or video clips.
Each object is created and maintained by its object application, but
through the use of Affinity, the services of the different object
applications are integrated.

Affinity provides benefits to both software developers and end users. End
users can double click on a data object within a compound document and the
tools needed to interact with that object become available directly within
the document. Users feel as if a single application, with all the
functionality of each of the object applications, is being used and they
do not have to concern themselves with managing and switching between the
various object applications; they focus only on the compound document and
the task being performed. Data objects can be transferred within and
across documents without the loss of functionality and documents can share
data so that one copy of an object can serve many users. Using the
Affinity technology, users can be more productive and manipulate and share
information in a much more intuitive manner.

The use of Affinity objects and interfaces gives software developers the
tools they need to create flexible applications that are easily maintained
and enhanced. Affinity applications can focus on providing a specialized
solution and take advantage of features implemented in other Affinity
applications to increase their usability. The extendibility that Affinity
provides will continue to benefit the software developer as the computing
environment moves more toward that of a truly object oriented model. The
Affinity architecture provides software developers and end-users with a
first step in presenting applications as a collection of independently
installable components.

What is Linking and Embedding?

When an object is incorporated into a document it maintains an association
with the object application that created it. Linking and embedding are two
different ways to associate objects in a compound document with their
object applications. The difference between linking and embedding lie in
how and where the actual source data that comprises the object is stored.
This affects the object's portability, its method of activation and the
size of the compound document.

When an object is linked, the source data or link source continues to
physically reside wherever it was initially created. This can be either
within a different document or at another point within the same document.
Only a reference, or link, to the object and appropriate presentation data
is kept with the compound document.

Linking is efficient and keeps the size of the compound document small.
Users may choose to link when the source object is owned or maintained by
someone else, because a single instance of the object's data can serve
many documents. Changes made to the source object are automatically
reflected in any compound documents that have a link to the object. From
the user's point of view, a linked object appears to be wholly contained
within the document.

With an embedded object, a copy of the original object is physically stored
in the compound document as is all of the information needed to manage the
object. As a result, the object becomes a physical part of the document. A
compound document containing embedded objects will be larger than one
containing the same objects as links. Embedding offers several advantages
that may make using more storage worth it to the user. For example,
compound documents with embedded objects may be transferred to another
computer and be edited there. The new user of the document need not know
where the original data resides since a copy of the objects' source data
is contained within the compound document.

All maintenance to embedded objects can be done without ever leaving the
compound document. Changes made to an embedded object by one user will not
effect other compound documents containing an embedding of the same
original object.

An Overview of the Affinity Architecture

Client/Server Applications

Affinity is a network-oriented linking and embedding solution. Affinity
refers to Affinity-enabled applications as either server applications or
client applications. Most applications can be implemented as both an
Affinity client and an Affinity server. The difference being:

* Server applications are the type that allow users to create
  or edit objects

* Client applications are the type that allow users to create
  a compound document that can contain objects from multiple
  server applications

A client or server application need not be running on the same system that
actually supports the user's display. While many applications will execute
locally, other applications may execute on other machines, sending
requests across the network to a particular Affinity daemon and receiving
requests from it.

Client and server applications communicate with the server by means of
calls to a set of Affinity libraries. The Affinity function calls are
translated to Affinity protocol requests that are passed either to the
local Affinity daemon or to another Affinity daemon across the network.
The Affinity communications adapter provides the underlying transport
mechanism for communicating between the client and server applications.

There are two libraries that allow communication between the client and
server: a client library and a server library. Using these libraries,
applications require no knowledge of the Affinity protocols.

The client library handles the client application's communications with a
server application. It provides the client application with certain
services such as enumerating registered documents and objects; loading
objects from compound documents; requesting the launch of an appropriate
server application to handle a specific object upon object activation;
updating of object data from a server application as required; and
rendering of an object to the screen or printer.

The server library handles the server application's communication with a
client application. It provides the server application with an embedded
object's data upon activation of the embedded object within a client
application, updates linked objects in real-time if appropriate and
updates embedded objects after editing.

Affinity Components

Affinity Client and Server Libraries - Applications use the client and
server libraries to perform Affinity functions. The libraries are designed
to isolate the network layer from the rest of the Affinity software.
Affinity enabled applications are not concerned with which network adapter
is currently in use, or whether Affinity applications are using different
network adapters.

The client library provides the calls to communicate with the client
application, Affinity daemon, and clipboard. The server library provides
the calls to communicate with the server application, the Affinity daemon
and the Affinity clipboard.

Affinity Daemon - To link, embed or launch an application, you must use the
Affinity daemon. The Affinity daemon communicates with the client and the
server libraries when it needs to perform Affinity functions. The Affinity
daemon performs the following:

* Supports linking and embedding by multiple client and
  server applications
* Interprets network messages from client and server applications
* Manages the enhanced (Affinity) clipboard, especially the
  cutting and pasting of linked or embedded objects between
  server and client applications
* Handles the integration of text objects between the Affinity
  clipboard and the Motif and X Window System clipboards
* Manages the registration of all server applications in the
  configuration file
* Handles communication with other Affinity daemons and launches
  server applications when requested
* Provides the client application with a list of registered
  server applications and linked objects
* Loads and displays objects contained in compound documents
* Launches appropriate server applications when an object is
  activated
* Updates objects in client document

When the Affinity daemon is initialized, it reads the Affinity
configuration file for information on registered server applications and
for the location of the Affinity Net Manager. The Affinity daemon then
handles requests from the client application to create and edit objects.

Affinity Communications Adapter - The Affinity libraries and the Affinity
daemon use the Affinity communications adapter to provide communications
between Affinity-enabled applications and the Affinity daemon. Each
Affinity client or server application is initialized with a single
communications adapter, which it uses for the lifetime of each process.
The Communications Adapter API is a simple communications interface that
isolates the underlying message transport mechanism from the Affinity
libraries and Affinity daemon and can support any message service.
Affinity provides Communications Adapters to support TCP/IP sockets and
SunSoft's Tooltalk.

Affinity Net Manager - The Affinity Net Manager is used when an
Affinity-enabled application is initialized with the Berkeley sockets
communications adapter. This daemon handles communication among all the
Affinity daemons in the local network.

Affinity Clipboard - Affinity provides its own clipboard to transfer data
more efficiently between Affinity-enabled applications. This clipboard
also provides synchronization for text objects with the Motif/X
clipboard.

Affinity Presentation Format Adapter- The optional Presentation format is
used to create and display the object in the client application. An object
is usually assigned to the Text, Bitmap or Metafile format when it is
placed on the clipboard by the server application. The order of the
presentation data helps to determine which standard format is assigned to
the object.

Affinity Registration File - Affinity uses a configuration file to register
server applications that are Affinity-enabled. Users must register all
server applications in the Affinity configuration file so that the
Affinity daemon can locate the specific server application when it is
requested to launch. All users on a network or within a domain should use
the same configuration file since it provides the locations of the server
applications as well as the class name, executable filenames, object
classes and verbs.

Affinity Features

Compound Document Support - Affinity supports both linked and embedded
objects and allows end users to exchange data between both local and
networked applications to create compound documents. This support creates
a "documentcentric" rather than "application-centric" view for users of
multiple applications.

Network-based Object Clipboard - The object clipboard is an integral part
of liking and embedding. The X Window System and OSF/Motif only support
the transfer of textual data. To support the transfer of embedded and
linked objects of different types, Affinity provides an enhanced
clipboard. The enhanced clipboard supports a set of object data formats
and presentation features and provides a means of interpreting the object
data for printing and displaying.

Format Conversion - Affinity provides presentation format adapter (PFAs) to
create, manage, display and print presentation formats. Affinity provides
PFA's to support Windows metafile and device-dependent and
device-independent bitmaps. A PFA API provides calls to create and manage
formats and utilizes the Xlib programming interface for rendering,
printing and recording presentation formats. PFA's can be easily added to
support other presentation formats such as PICT.

Unified Rendering and Printing - Affinity provides support for rendering
and printing of all presentation formats. Affinity is equipped with a
simple mechanism that converts presentation formats and provides a means
to scale and display an object to a user's screen or within a printed
document.

Local and Remote Application Launching - When a user double clicks on an
embedded object in a compound document, a server application specified by
the object's class, will be launched. The server application can either be
on the user's workstation or on another workstation on the network. If a
server application is not available on the user's workstation, a message
is broadcast to all Affinity daemons on the network inquiring if they have
that server application registered. By this means, a server application
can be launched on a remote machine and displayed on the user's machine to
handle the creation and editing of objects.

Transport Independence -Affinity uses a reliable message delivery service
and is capable of interfacing to any available service through a simple
communication interface. Affinity defines a simple communications
interface, thus enabling a Communications Adapter to be built to any
message transport service for all communications. TCP/IP sockets,
SunSoft's ToolTalk, HP's BMS or another message transport service can by
used by Affinity to communicate across the network. Affinity-enabled
applications can link and embed across the network and across UNIX
platforms by using these communications mechanisms to manipulate data on
the object clipboard.

How Affinity Works

Affinity applications communicate with each other using the Affinity
daemon. The Affinity daemon checks the registration database and manages
the Affinity clipboard by placing objects on the clipboard from the server
or retrieving objects from the clipboard for the client.

When the Affinity daemon is started, it reads the registration database and
stores the data in a file. The Affinity daemon opens a connection to a
communications adapter, for example Tooltalk. Initially, Tooltalk launches
the network daemon file to start network processes. The network daemon is
started and it reads the information in the registration database. Now,
objects can be copied, cut or pasted, or an Affinity server application
can be launched to create or edit an object. A request to launch a server
application is received by the Affinity daemon and it checks the Affinity
configuration file for the location of the server application and then
launches the application. The Affinity daemon and the Affinity application
establish communications.

 ============================================================
 From the  'New Product Information'  Electronic News Service
 ============================================================
 This information was processed from data provided by the
 above mentioned company. For additional details, contact 
 the company at the address or telephone number indicated.
 OmniPage Pro is now used for converting all printed input! 
 ============================================================
 All submissions for this service should be addressed to:
 BAKER ENTERPRISES,  20 Ferro Dr,  Sewell, NJ  08080  U.S.A.
 Email: RBakerPC (AOL/Delphi), rbakerpc@delphi.com (Internet)
 ============================================================
