![]() |
BACKGROUND |
![]() |
NetDynamics |
NetDynamics has come a long way since 1995, when the company was founded as Spider Technologies. The first version of its product provided a tool to connect Web pages to databases. Within three years, NetDynamics went rapidly through three major releases to reach version 4.0.
NetDynamics describes its product as an "Enterprise Network Application Platform," seeking to emphasize its suitability for demanding corporate applications. It consists of the following five main pieces:
CORBA is the backbone of NetDynamics 4.0, which uses IIOP for all internal communications. Web clients connect using HTTP, and can then use VisiBroker for Java to talk to the Application Server over IIOP. They can also continue to use HTTP, or a mixture of HTTP and IIOP. Microsoft's DCOM is supported through a CORBA-to-DCOM bridge.
NetDynamics Application Server
The Application Server, the centerpiece of NetDynamics, is a sophisticated distributed system which has been implemented with CORBA and Java. It consists of two main parts: an infrastructure, and a set of Server Components that fit into it. Additional components can be added in through the PAC layer. The built-in Components include:
Each Server Component contains a Component Monitor, a Request Broker, component-level security services, and a pool of Workers. The Application Server also includes a Component Locator and a Component Manager.
NetDynamics 4.0 is particularly strong in the areas of load balancing, scaling, fault tolerance and security.
Server Component
Each Server Component includes a Component Monitor and a "resource pool" of Workers. In NetDynamics 4.0 these are implemented as CORBA objects.
Component Monitor: Each Server Component has a Component Monitor, which is responsible for supervising the operation of that Component's Workers. It adds new Workers as required, starts and stops them, and maintains one or more sets of configuration properties for the local partition. For each Worker, the Component Monitor:
Request Broker: The Request Broker (not to be confused with an object request broker), is used within a Component to find the most suitable Worker for a new task.
Security Services: Each Component includes a set of internal security services.
Workers: A Worker is an instance of a CORBA server object that performs specific tasks such as database query, session data fetch and the like. In NetDynamics 4.0 all Workers are implemented in either Java or C++. A typical Worker is instantiated by the Component Monitor -- either on system startup or on demand -- and waits passively until it receives a request for one of its methods. The Worker executes the method with any parameters that accompanied the request, and returns the result (if any). Then it goes back to sleep.
This way of doing things -- essentially the CORBA way -- has many advantages. All the productive work delivered by a NetDynamics Application Server is done by Workers, but they are isolated from the rest of the system. Thus they can easily be started, stopped, redeployed or even reconfigured to meet fluctuating demand. Also, like watertight compartments in a ship, they confine any damage to a small part of the overall system. A single bug in a trivial routine can crash a monolithic application, but if a NetDynamics Worker or Component fails, the system just starts up a replacement.
Following sound software engineering practice, each Worker does just one thing, and does it right. This simplifies the task of developing and maintaining NetDynamics applications, which in turn shortens time frames and reduces overall cost.
Component Locator: The Component Locator is a load balancing name service that maintains a repository of Server Components, their names and properties. For example, the repository might contain an entry for the Database Component with the name "RDBMS," a handle to its Component Monitor, and a set of properties that would include the specific database types supported.
When a client request arrives, the Component Locator assigns it to the least loaded Component of the appropriate type. Once a Component has been selected, its Component Manager assigns the least loaded Worker to the new request. If no Worker is available, the request is added to the Component's wait queue, and in due course assigned to the next Worker that comes free. Once a Worker has been assigned, a handle to that Worker is returned to the client. From then on the client communicates directly with the Worker.
Component Manager: The Component Manager is responsible for instantiating the Component Locator and all the Components on a given server machine. For each Component, the Component Manager instantiates the Component Monitor which then takes over and instantiates its own Worker pool.
The Component Manager also exports an administrative interface that supports the definition of new Components, starting and stopping of Components, and changing the properties of a Component.
Standard Server Components
NetDynamics provides a standard set of predefined Server Components, which between them deliver much of the system's functionality.
Logic Engine: The Logic Engine Component provides a Java Virtual Machine (JVM) for executing custom server-side methods. It currently supports server-side logic for HTML applications, and both client-side (applets) and server-side (servlets) logic for Java applications. This is where most of an application's business logic executes.
Database Component: The Database Component provides interfaces and operations for DBMS-independent database access. All SQL2 operations are supported, whether concerned with SQL execution or with metadata. NetDynamics lets developers build up SQL statements by pointing and clicking, although an expert would often get better results by hand-coding. NetDynamics has built-in support for auto-commit and rollback on SQL actions, and also supports developer-controlled transaction blocks.
Native APIs are provided for the "big five" RDBMSs -- Oracle, Informix, Sybase, DB2, and Microsoft SQL Server. Special measures are taken to optimize throughput -- for instance by caching database connections and multiplexing users over available links.
A generic ODBC interface is also provided for access to most other data sources. Rather surprisingly, there is no support for JDBC in version 4.0, but NetDynamics has committed to have it in a future release.
Persistence Engine: Like a lightweight ODBMS, the Persistence Service provides interfaces and operations to save entire Java object class hierarchies. This is the mechanism by which NetDynamics preserves state across Web requests. Each user's session information -- from login information and privileges to the exact database row currently being viewed -- is kept in a hash table indexed by session ID.
The Persistence Engine has methods for generating, locking, setting and retrieving data, as well as session signing. The session IDs created are encrypted using the Security Component. They prevent users from moving to pages they are not authorized to read.
Application developers are free to use the Persistence Engine as a convenient and transparent way of storing information.
Log Service: The Log Service provides an interface for gathering runtime information such as errors, debugging data, timing, statistics, and audit trail data. The default implementation writes this information to a file that can be viewed with the Command Center. Application developers could use the service for any kind of data collection and delivery.
Security Component: NetDynamics handles security on two levels. With Component Security, server security is set up and controlled from the Command Center. NetDynamics sets security parameters on a Component by Component basis. Access is granted to users, groups and access control lists (ACLs) at the service, interface or operation levels. The Security Component provides an interface that can validate client access to other Components. After checking authorization, it furnishes clients with tickets that permit them to use the services of a particular Component. Each Server Component contains a Security Object which can interrogate the Security Component to find out whether a particular client has the necessary permissions to execute a requested method. The Security Component is extensible, so that it can be modified to conform to future standards or specific customer requirements. NetDynamics is working with Gradient Technologies to provide single login through the latter's WebCrusader.
The other approach, application security, is controlled through the Security Object and a corresponding wizard in the Studio. Developers can program the Security Object to impose whatever security measures are required within the application.
Platform Adapter Components (PACs)
PACs are NetDynamics' way of encapsulating third-party applications and data. Just as with PC hardware, "plug and play" confers the necessary ability to reuse previously sunk investments. As software investments often dwarf hardware expenditures, it is particularly important for a radical new product like NetDynamics to interoperate with pre-existing "legacy" systems. PACs have already been written for enterprise applications like PeopleSoft and SAP, transaction processing monitors such as Tuxedo and CICS, and a wide variety of other packages from push technology to text search. More than 40 vendors have committed to writing PACs.
During development, adapted systems -- which become available as CORBA Components -- are fully supported by the Studio wizards. This makes it possible to reuse functions from external third-party systems, without needing to see the source code. If a PAC is present, its services are automatically available to NetDynamics developers and can be invoked from their own Java code. A wizard queries the PAC, which then describes its methods and their parameters. These details can be used immediately or stored for future use. Method calls can be bound to Data Objects, which can also be associated with visual fields for display.
At deployment time, PACs automatically inherit all the load balancing, availability, and management services provided by the Application Server. Connections to external services can be multiplexed over a PAC, cached, cloned and load balanced. New PAC Workers can be launched, either on demand, or when the workload reaches a given level.
NetDynamics Integration Assistant
This visual CORBA component builder, which is itself written in Java, is supplied as part of the PAC SDK. With appropriate information from developers, the Assistant can generate a new PAC's code skeleton in the form of CORBA IDL, supplemented by either Java or C++, and a set of property files. It also creates a set of Java classes that permit the new PAC to be administered through the Command Center, including configuration, statistics, and error messages -- all of which are customizable.
System management is one of the most challenging and expensive aspects of downsizing from mainframes to client/server. Standard frameworks do monitor and control entire distributed systems, but they are expensive, and do not usually understand the specifics of individual applications. On the other hand, most client-server development tools make little provision for system management, or even for collecting information. Forté and Unify Vision are honorable exceptions to this generalization, and NetDynamics is another.
The Command Center is NetDynamics' own GUI-based Java console for local and remote system management. As an applet, it can be downloaded and run on any platform. It allows administrators to create and activate multiple system configurations, monitor statistics, and add new Server Components. It is even possible to redistribute Server Components in order to optimize system operation.
The main features of the Command Center are:
Configuration: Administrators have great flexibility in tuning the configuration of a NetDynamics system. Several preset configurations are shipped with the product, to make it easier to get started.
Statistics: Each component provides its own set of statistics to the Command Center. Developers can also modify the reporting of existing components and specify the statistics to be returned by the components that they write. The Command Center has a customizable log viewer to filter and view server audit information, as well as a statistics monitor for selecting and graphing runtime performance data.
Management APIs: Every Application Server component provides a management interface that is used by the Component Manager for inbound (configuration) and outbound (monitoring) operations. The Component Manager is in turn called by the Command Center when it requires information on the components or needs to adjust configuration parameters. This API is extensible, so that each organization can define its own inbound and outbound operations.
PAC support: All PACs, whether written by NetDynamics, third parties, or customers, have standard interfaces to Command Center that enable them to be monitored and controlled like any other Server Components.
A dedicated visual Java IDE, Studio comes complete with an automatic code generator, a remote debugger, and wizards to help create HTML and Java applications. Each developer can choose a preferred HTML editor -- from HotMetal Pro to HotDog or FrontPage -- as Studio is focused on programming with Java. JavaScript, VBscript and other scripting languages can be freely embedded in HTML pages for use with NetDynamics.
NetDynamics offers the choice of an "optimal weight" client, ranging from a lightweight client using pure HTML, to a more powerful pure Java client. HTML and Java can also be mixed in various proportions according to the specific requirements of each system. What is more, pages written in HTML can subsequently be converted to Java, and vice versa. Studio also permits changing the peer classes for Java visual objects, which allows relatively easy upgrading from the basic AWT to Sun's JFC or Microsoft's AFC. Studio includes the following tools:
Code Editor: The context-sensitive Studio editor highlights Java keywords in color, and provides search and replace, bookmarks, and integration with the help system. Documentation for a highlighted API can be displayed on the screen, avoiding time-consuming consultation of paper manuals. Alternatively, an external text editor can be linked into Studio -- another example of NetDynamics' philosophy of openness.
Wizards: A set of wizards automates the construction of data objects, page objects (Java or HTML), frames, session objects, and other project components. The Frameset Wizard simplifies the tricky job of creating a site with frames.
Java Bean Editor: The Bean Editor gives access to the methods and properties of any Java container or Java Bean, allowing them to be set up at design time. This is a convenient way of moving and resizing fields, changing layout and colors, and adding new visual objects to a page. Third-party Beans can also be modified with the Editor.
Live Data Viewer: Once data objects have been created, they can immediately be tested against live data instead of having to wait until the whole application is up and running. This means that they can immediately be advanced to "tested and working correctly" status.
Integrated Debugger: Supports local or remote sessions through the JDK 1.1 debugging interface. This means a developer can run Studio on a local machine and attach to a JVM running on a different server. All the normal debug functions, such as single stepping and setting breakpoints, are still available, for instance:
Team Development Support: NetDynamics provides version control facilities through the standard SCC (Source Code Control) API. The Starbase StarTeam product is included with NetDynamics, but any other compatible product can be used -- for instance ClearCase from Rational, PVCS from Intersolv, or Source Integrity from Mortice Kern Systems.
Supplied with Studio and the Application Server, this is a library of 400 Java classes and 4,000 methods that can be reused and refined to provide much of the functionality of an original application. It is fully compatible with Sun's JDK 1.1 and backwards compatible with earlier versions of the JDK and NetDynamics. JOF classes can be used when programming visually with Studio, or when coding directly with an editor.
The Framework supplies the following objects: visual presentation, data access, transaction control, dynamic page management, business functionality, security, session management, and utility functions.
One set of classes confers interaction between Java and HTML pages -- so that, for instance, an applet in a frame set can display related HTML pages in a neighboring frame.
NetDynamics owes its success in large measure to the exploitation of reusable software technology. By building on standards like CORBA, Java, and the Web, it saved a huge amount of time and effort -- not least debugging effort. Then it plowed the time thus gained back into a thoughtful analysis of what organizations really need. The foundations of the product are firm -- a sound technical architecture based on the latest distributed object technology that has a long life ahead of it, and carefully designed to meet some of the most urgent needs of today's corporations. Its architecture is also open at a number of levels -- notably the PACs which allow almost any external system to be hooked in to the Application Server -- and dozens of Isis have already signed up to integrate their products. About the only major risk is the heavy reliance on Java, but turning that around it is clear that NetDynamics has done as much as anyone to ensure that Java is a commercial success.
NetDynamics' sophisticated marketing strategy of focusing on "lighthouse" customers quickly yielded a number of prestigious reference sites. Together with the product's long list of desirable features, these helped sales to grow at 50 percent per quarter ? equivalent to 500% per year. Now the word is spreading among Web developers and IT managers alike -- NetDynamics has an edge.